less 4.4.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/bin/lessc +67 -58
  2. package/dist/less.js +14496 -11811
  3. package/dist/less.min.js +4 -4
  4. package/dist/less.min.js.map +1 -1
  5. package/lib/less/constants.js +5 -7
  6. package/lib/less/contexts.js +71 -56
  7. package/lib/less/data/colors.js +150 -153
  8. package/lib/less/data/index.js +4 -7
  9. package/lib/less/data/unit-conversions.js +2 -5
  10. package/lib/less/default-options.js +52 -23
  11. package/lib/less/deprecation.js +67 -0
  12. package/lib/less/environment/abstract-file-manager.js +62 -50
  13. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  14. package/lib/less/environment/environment-api.ts +21 -0
  15. package/lib/less/environment/environment.js +34 -30
  16. package/lib/less/environment/file-manager-api.ts +77 -0
  17. package/lib/less/functions/boolean.js +13 -13
  18. package/lib/less/functions/color-blending.js +39 -31
  19. package/lib/less/functions/color.js +153 -137
  20. package/lib/less/functions/data-uri.js +73 -64
  21. package/lib/less/functions/default.js +9 -11
  22. package/lib/less/functions/function-caller.js +35 -34
  23. package/lib/less/functions/function-registry.js +16 -17
  24. package/lib/less/functions/index.js +33 -33
  25. package/lib/less/functions/list.js +88 -75
  26. package/lib/less/functions/math-helper.js +8 -11
  27. package/lib/less/functions/math.js +21 -21
  28. package/lib/less/functions/number.js +42 -53
  29. package/lib/less/functions/string.js +18 -22
  30. package/lib/less/functions/style.js +21 -20
  31. package/lib/less/functions/svg.js +83 -82
  32. package/lib/less/functions/types.js +28 -32
  33. package/lib/less/import-manager.js +73 -64
  34. package/lib/less/index.js +65 -65
  35. package/lib/less/less-error.js +65 -46
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +94 -38
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +152 -131
  40. package/lib/less/parser/parser.js +866 -672
  41. package/lib/less/plugin-manager.js +57 -46
  42. package/lib/less/render.js +17 -23
  43. package/lib/less/source-map-builder.js +52 -43
  44. package/lib/less/source-map-output.js +57 -44
  45. package/lib/less/transform-tree.js +40 -30
  46. package/lib/less/tree/anonymous.js +52 -28
  47. package/lib/less/tree/assignment.js +44 -27
  48. package/lib/less/tree/atrule-syntax.js +4 -6
  49. package/lib/less/tree/atrule.js +247 -140
  50. package/lib/less/tree/attribute.js +55 -24
  51. package/lib/less/tree/call.js +70 -42
  52. package/lib/less/tree/color.js +194 -145
  53. package/lib/less/tree/combinator.js +31 -21
  54. package/lib/less/tree/comment.js +44 -23
  55. package/lib/less/tree/condition.js +61 -36
  56. package/lib/less/tree/container.js +90 -34
  57. package/lib/less/tree/debug-info.js +53 -11
  58. package/lib/less/tree/declaration.js +97 -52
  59. package/lib/less/tree/detached-ruleset.js +42 -24
  60. package/lib/less/tree/dimension.js +127 -71
  61. package/lib/less/tree/element.js +82 -52
  62. package/lib/less/tree/expression.js +75 -50
  63. package/lib/less/tree/extend.js +71 -42
  64. package/lib/less/tree/import.js +184 -110
  65. package/lib/less/tree/index.js +52 -81
  66. package/lib/less/tree/javascript.js +43 -32
  67. package/lib/less/tree/js-eval-node.js +46 -32
  68. package/lib/less/tree/keyword.js +25 -17
  69. package/lib/less/tree/media.js +77 -35
  70. package/lib/less/tree/merge-rules.js +47 -0
  71. package/lib/less/tree/mixin-call.js +181 -98
  72. package/lib/less/tree/mixin-definition.js +211 -117
  73. package/lib/less/tree/namespace-value.js +63 -44
  74. package/lib/less/tree/negative.js +34 -21
  75. package/lib/less/tree/nested-at-rule.js +149 -66
  76. package/lib/less/tree/node.js +225 -90
  77. package/lib/less/tree/operation.js +59 -34
  78. package/lib/less/tree/paren.js +34 -17
  79. package/lib/less/tree/property.js +66 -35
  80. package/lib/less/tree/query-in-parens.js +52 -60
  81. package/lib/less/tree/quoted.js +93 -44
  82. package/lib/less/tree/ruleset.js +632 -318
  83. package/lib/less/tree/selector.js +151 -77
  84. package/lib/less/tree/unicode-descriptor.js +14 -12
  85. package/lib/less/tree/unit.js +111 -63
  86. package/lib/less/tree/url.js +62 -38
  87. package/lib/less/tree/value.js +50 -34
  88. package/lib/less/tree/variable-call.js +47 -30
  89. package/lib/less/tree/variable.js +53 -31
  90. package/lib/less/utils.js +44 -47
  91. package/lib/less/visitors/extend-visitor.js +233 -172
  92. package/lib/less/visitors/import-sequencer.js +24 -24
  93. package/lib/less/visitors/import-visitor.js +62 -52
  94. package/lib/less/visitors/index.js +14 -17
  95. package/lib/less/visitors/join-selector-visitor.js +40 -37
  96. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  97. package/lib/less/visitors/to-css-visitor.js +135 -128
  98. package/lib/less/visitors/visitor.js +60 -45
  99. package/lib/less-browser/add-default-options.js +23 -13
  100. package/lib/less-browser/bootstrap.js +23 -17
  101. package/lib/less-browser/browser.js +24 -21
  102. package/lib/less-browser/cache.js +17 -19
  103. package/lib/less-browser/error-reporting.js +52 -44
  104. package/lib/less-browser/file-manager.js +52 -42
  105. package/lib/less-browser/image-size.js +12 -12
  106. package/lib/less-browser/index.js +131 -105
  107. package/lib/less-browser/log-listener.js +30 -31
  108. package/lib/less-browser/plugin-loader.js +10 -10
  109. package/lib/less-browser/utils.js +19 -21
  110. package/lib/less-node/environment.js +32 -8
  111. package/lib/less-node/file-manager.js +62 -45
  112. package/lib/less-node/fs.js +11 -8
  113. package/lib/less-node/image-size.js +40 -31
  114. package/lib/less-node/index.js +28 -19
  115. package/lib/less-node/lessc-helper.js +28 -28
  116. package/lib/less-node/plugin-loader.js +35 -27
  117. package/lib/less-node/url-file-manager.js +33 -31
  118. package/package.json +31 -19
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -404
  122. package/bower.json +0 -22
  123. package/lib/less/constants.js.map +0 -1
  124. package/lib/less/contexts.js.map +0 -1
  125. package/lib/less/data/colors.js.map +0 -1
  126. package/lib/less/data/index.js.map +0 -1
  127. package/lib/less/data/unit-conversions.js.map +0 -1
  128. package/lib/less/default-options.js.map +0 -1
  129. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  130. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  131. package/lib/less/environment/environment-api.js +0 -3
  132. package/lib/less/environment/environment-api.js.map +0 -1
  133. package/lib/less/environment/environment.js.map +0 -1
  134. package/lib/less/environment/file-manager-api.js +0 -3
  135. package/lib/less/environment/file-manager-api.js.map +0 -1
  136. package/lib/less/functions/boolean.js.map +0 -1
  137. package/lib/less/functions/color-blending.js.map +0 -1
  138. package/lib/less/functions/color.js.map +0 -1
  139. package/lib/less/functions/data-uri.js.map +0 -1
  140. package/lib/less/functions/default.js.map +0 -1
  141. package/lib/less/functions/function-caller.js.map +0 -1
  142. package/lib/less/functions/function-registry.js.map +0 -1
  143. package/lib/less/functions/index.js.map +0 -1
  144. package/lib/less/functions/list.js.map +0 -1
  145. package/lib/less/functions/math-helper.js.map +0 -1
  146. package/lib/less/functions/math.js.map +0 -1
  147. package/lib/less/functions/number.js.map +0 -1
  148. package/lib/less/functions/string.js.map +0 -1
  149. package/lib/less/functions/style.js.map +0 -1
  150. package/lib/less/functions/svg.js.map +0 -1
  151. package/lib/less/functions/types.js.map +0 -1
  152. package/lib/less/import-manager.js.map +0 -1
  153. package/lib/less/index.js.map +0 -1
  154. package/lib/less/less-error.js.map +0 -1
  155. package/lib/less/logger.js.map +0 -1
  156. package/lib/less/parse-tree.js.map +0 -1
  157. package/lib/less/parse.js.map +0 -1
  158. package/lib/less/parser/chunker.js +0 -148
  159. package/lib/less/parser/chunker.js.map +0 -1
  160. package/lib/less/parser/parser-input.js.map +0 -1
  161. package/lib/less/parser/parser.js.map +0 -1
  162. package/lib/less/plugin-manager.js.map +0 -1
  163. package/lib/less/render.js.map +0 -1
  164. package/lib/less/source-map-builder.js.map +0 -1
  165. package/lib/less/source-map-output.js.map +0 -1
  166. package/lib/less/transform-tree.js.map +0 -1
  167. package/lib/less/tree/anonymous.js.map +0 -1
  168. package/lib/less/tree/assignment.js.map +0 -1
  169. package/lib/less/tree/atrule-syntax.js.map +0 -1
  170. package/lib/less/tree/atrule.js.map +0 -1
  171. package/lib/less/tree/attribute.js.map +0 -1
  172. package/lib/less/tree/call.js.map +0 -1
  173. package/lib/less/tree/color.js.map +0 -1
  174. package/lib/less/tree/combinator.js.map +0 -1
  175. package/lib/less/tree/comment.js.map +0 -1
  176. package/lib/less/tree/condition.js.map +0 -1
  177. package/lib/less/tree/container.js.map +0 -1
  178. package/lib/less/tree/debug-info.js.map +0 -1
  179. package/lib/less/tree/declaration.js.map +0 -1
  180. package/lib/less/tree/detached-ruleset.js.map +0 -1
  181. package/lib/less/tree/dimension.js.map +0 -1
  182. package/lib/less/tree/element.js.map +0 -1
  183. package/lib/less/tree/expression.js.map +0 -1
  184. package/lib/less/tree/extend.js.map +0 -1
  185. package/lib/less/tree/import.js.map +0 -1
  186. package/lib/less/tree/index.js.map +0 -1
  187. package/lib/less/tree/javascript.js.map +0 -1
  188. package/lib/less/tree/js-eval-node.js.map +0 -1
  189. package/lib/less/tree/keyword.js.map +0 -1
  190. package/lib/less/tree/media.js.map +0 -1
  191. package/lib/less/tree/mixin-call.js.map +0 -1
  192. package/lib/less/tree/mixin-definition.js.map +0 -1
  193. package/lib/less/tree/namespace-value.js.map +0 -1
  194. package/lib/less/tree/negative.js.map +0 -1
  195. package/lib/less/tree/nested-at-rule.js.map +0 -1
  196. package/lib/less/tree/node.js.map +0 -1
  197. package/lib/less/tree/operation.js.map +0 -1
  198. package/lib/less/tree/paren.js.map +0 -1
  199. package/lib/less/tree/property.js.map +0 -1
  200. package/lib/less/tree/query-in-parens.js.map +0 -1
  201. package/lib/less/tree/quoted.js.map +0 -1
  202. package/lib/less/tree/ruleset.js.map +0 -1
  203. package/lib/less/tree/selector.js.map +0 -1
  204. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  205. package/lib/less/tree/unit.js.map +0 -1
  206. package/lib/less/tree/url.js.map +0 -1
  207. package/lib/less/tree/value.js.map +0 -1
  208. package/lib/less/tree/variable-call.js.map +0 -1
  209. package/lib/less/tree/variable.js.map +0 -1
  210. package/lib/less/utils.js.map +0 -1
  211. package/lib/less/visitors/extend-visitor.js.map +0 -1
  212. package/lib/less/visitors/import-sequencer.js.map +0 -1
  213. package/lib/less/visitors/import-visitor.js.map +0 -1
  214. package/lib/less/visitors/index.js.map +0 -1
  215. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  216. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  217. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  218. package/lib/less/visitors/visitor.js.map +0 -1
  219. package/lib/less-browser/add-default-options.js.map +0 -1
  220. package/lib/less-browser/bootstrap.js.map +0 -1
  221. package/lib/less-browser/browser.js.map +0 -1
  222. package/lib/less-browser/cache.js.map +0 -1
  223. package/lib/less-browser/error-reporting.js.map +0 -1
  224. package/lib/less-browser/file-manager.js.map +0 -1
  225. package/lib/less-browser/image-size.js.map +0 -1
  226. package/lib/less-browser/index.js.map +0 -1
  227. package/lib/less-browser/log-listener.js.map +0 -1
  228. package/lib/less-browser/plugin-loader.js.map +0 -1
  229. package/lib/less-browser/utils.js.map +0 -1
  230. package/lib/less-node/environment.js.map +0 -1
  231. package/lib/less-node/file-manager.js.map +0 -1
  232. package/lib/less-node/fs.js.map +0 -1
  233. package/lib/less-node/image-size.js.map +0 -1
  234. package/lib/less-node/index.js.map +0 -1
  235. package/lib/less-node/lessc-helper.js.map +0 -1
  236. package/lib/less-node/plugin-loader.js.map +0 -1
  237. package/lib/less-node/url-file-manager.js.map +0 -1
  238. package/test/.eslintrc.json +0 -9
  239. package/test/README.md +0 -3
  240. package/test/browser/common.js +0 -230
  241. package/test/browser/css/global-vars/simple.css +0 -3
  242. package/test/browser/css/modify-vars/simple.css +0 -8
  243. package/test/browser/css/plugin/plugin.css +0 -3
  244. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  245. package/test/browser/css/relative-urls/urls.css +0 -36
  246. package/test/browser/css/rewrite-urls/urls.css +0 -36
  247. package/test/browser/css/rootpath/urls.css +0 -35
  248. package/test/browser/css/rootpath-relative/urls.css +0 -35
  249. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  250. package/test/browser/css/urls.css +0 -54
  251. package/test/browser/generator/benchmark.config.js +0 -50
  252. package/test/browser/generator/generate.js +0 -78
  253. package/test/browser/generator/runner.config.js +0 -188
  254. package/test/browser/generator/runner.js +0 -2
  255. package/test/browser/generator/template.js +0 -93
  256. package/test/browser/generator/utils.js +0 -14
  257. package/test/browser/less/console-errors/test-error.less +0 -3
  258. package/test/browser/less/console-errors/test-error.txt +0 -2
  259. package/test/browser/less/errors/image-height-error.less +0 -3
  260. package/test/browser/less/errors/image-height-error.txt +0 -4
  261. package/test/browser/less/errors/image-size-error.less +0 -3
  262. package/test/browser/less/errors/image-size-error.txt +0 -4
  263. package/test/browser/less/errors/image-width-error.less +0 -3
  264. package/test/browser/less/errors/image-width-error.txt +0 -4
  265. package/test/browser/less/global-vars/simple.less +0 -3
  266. package/test/browser/less/imports/urls.less +0 -4
  267. package/test/browser/less/imports/urls2.less +0 -4
  268. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  269. package/test/browser/less/modify-vars/simple.less +0 -8
  270. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  271. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  272. package/test/browser/less/plugin/plugin.js +0 -4
  273. package/test/browser/less/plugin/plugin.less +0 -4
  274. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  275. package/test/browser/less/relative-urls/urls.less +0 -34
  276. package/test/browser/less/rewrite-urls/urls.less +0 -34
  277. package/test/browser/less/rootpath/urls.less +0 -33
  278. package/test/browser/less/rootpath-relative/urls.less +0 -33
  279. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  280. package/test/browser/less/urls.less +0 -62
  281. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  282. package/test/browser/runner-VisitorPlugin.js +0 -3
  283. package/test/browser/runner-browser-options.js +0 -51
  284. package/test/browser/runner-browser-spec.js +0 -12
  285. package/test/browser/runner-console-errors.js +0 -5
  286. package/test/browser/runner-errors-options.js +0 -6
  287. package/test/browser/runner-errors-spec.js +0 -3
  288. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  289. package/test/browser/runner-filemanagerPlugin.js +0 -3
  290. package/test/browser/runner-global-vars-options.js +0 -7
  291. package/test/browser/runner-global-vars-spec.js +0 -3
  292. package/test/browser/runner-legacy-options.js +0 -6
  293. package/test/browser/runner-legacy-spec.js +0 -3
  294. package/test/browser/runner-main-options.js +0 -17
  295. package/test/browser/runner-main-spec.js +0 -7
  296. package/test/browser/runner-modify-vars-options.js +0 -5
  297. package/test/browser/runner-modify-vars-spec.js +0 -33
  298. package/test/browser/runner-no-js-errors-options.js +0 -4
  299. package/test/browser/runner-no-js-errors-spec.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  301. package/test/browser/runner-postProcessorPlugin.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  303. package/test/browser/runner-preProcessorPlugin.js +0 -3
  304. package/test/browser/runner-production-options.js +0 -3
  305. package/test/browser/runner-production-spec.js +0 -5
  306. package/test/browser/runner-relative-urls-options.js +0 -3
  307. package/test/browser/runner-relative-urls-spec.js +0 -3
  308. package/test/browser/runner-rewrite-urls-options.js +0 -3
  309. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  310. package/test/browser/runner-rootpath-options.js +0 -3
  311. package/test/browser/runner-rootpath-relative-options.js +0 -4
  312. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  313. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  314. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  315. package/test/browser/runner-rootpath-spec.js +0 -3
  316. package/test/browser/runner-strict-units-options.js +0 -5
  317. package/test/browser/runner-strict-units-spec.js +0 -3
  318. package/test/index.js +0 -112
  319. package/test/less-test.js +0 -625
  320. package/test/mocha-playwright/runner.js +0 -210
  321. package/test/modify-vars.js +0 -28
  322. package/test/plugins/filemanager/index.js +0 -19
  323. package/test/plugins/postprocess/index.js +0 -14
  324. package/test/plugins/preprocess/index.js +0 -19
  325. package/test/plugins/visitor/index.js +0 -24
  326. package/test/sourcemaps/basic.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  330. package/test/sourcemaps-variable-selector/basic.json +0 -1
  331. package/test/test-es6.ts +0 -17
  332. package/tsconfig.build.json +0 -7
  333. package/tsconfig.json +0 -21
@@ -1,68 +1,124 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var less_error_1 = tslib_1.__importDefault(require("./less-error"));
5
- var transform_tree_1 = tslib_1.__importDefault(require("./transform-tree"));
6
- var logger_1 = tslib_1.__importDefault(require("./logger"));
7
- function default_1(SourceMapBuilder) {
8
- var ParseTree = /** @class */ (function () {
9
- function ParseTree(root, imports) {
1
+ import LessError from './less-error.js';
2
+ import transformTree from './transform-tree.js';
3
+ import logger from './logger.js';
4
+
5
+ export default function(SourceMapBuilder) {
6
+ class ParseTree {
7
+ constructor(root, imports) {
10
8
  this.root = root;
11
9
  this.imports = imports;
12
10
  }
13
- ParseTree.prototype.toCSS = function (options) {
14
- var evaldRoot;
15
- var result = {};
16
- var sourceMapBuilder;
11
+
12
+ toCSS(options) {
13
+ let evaldRoot;
14
+ const result = {};
15
+ let sourceMapBuilder;
17
16
  try {
18
- evaldRoot = (0, transform_tree_1.default)(this.root, options);
19
- }
20
- catch (e) {
21
- throw new less_error_1.default(e, this.imports);
17
+ evaldRoot = transformTree(this.root, options);
18
+ } catch (e) {
19
+ throw new LessError(e, this.imports);
22
20
  }
21
+
23
22
  try {
24
- var compress = Boolean(options.compress);
23
+ const compress = Boolean(options.compress);
25
24
  if (compress) {
26
- logger_1.default.warn('The compress option has been deprecated. ' +
25
+ logger.warn('The compress option has been deprecated. ' +
27
26
  'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');
28
27
  }
29
- var toCSSOptions = {
30
- compress: compress,
28
+
29
+ const toCSSOptions = {
30
+ compress,
31
+ // @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead. All modes will be removed in a future version.
31
32
  dumpLineNumbers: options.dumpLineNumbers,
32
33
  strictUnits: Boolean(options.strictUnits),
33
- numPrecision: 8
34
- };
34
+ numPrecision: 8};
35
+
35
36
  if (options.sourceMap) {
36
- sourceMapBuilder = new SourceMapBuilder(options.sourceMap);
37
+ // Normalize sourceMap option: if it's just true, convert to object
38
+ if (options.sourceMap === true) {
39
+ options.sourceMap = {};
40
+ }
41
+ const sourceMapOpts = options.sourceMap;
42
+
43
+ // Set sourceMapInputFilename if not set and filename is available
44
+ if (!sourceMapOpts.sourceMapInputFilename && options.filename) {
45
+ sourceMapOpts.sourceMapInputFilename = options.filename;
46
+ }
47
+
48
+ // Default sourceMapBasepath to the input file's directory if not set
49
+ // This matches the behavior documented and implemented in bin/lessc
50
+ if (sourceMapOpts.sourceMapBasepath === undefined && options.filename) {
51
+ // Get directory from filename using string manipulation (works cross-platform)
52
+ const lastSlash = Math.max(options.filename.lastIndexOf('/'), options.filename.lastIndexOf('\\'));
53
+ if (lastSlash >= 0) {
54
+ sourceMapOpts.sourceMapBasepath = options.filename.substring(0, lastSlash);
55
+ } else {
56
+ // No directory separator found, use current directory
57
+ sourceMapOpts.sourceMapBasepath = '.';
58
+ }
59
+ }
60
+
61
+ // Handle sourceMapFullFilename (CLI-specific: --source-map=filename)
62
+ // This is converted to sourceMapFilename and sourceMapOutputFilename
63
+ if (sourceMapOpts.sourceMapFullFilename && !sourceMapOpts.sourceMapFileInline) {
64
+ // This case is handled by lessc before calling render
65
+ // We just need to ensure sourceMapFilename is set if sourceMapFullFilename is provided
66
+ if (!sourceMapOpts.sourceMapFilename && !sourceMapOpts.sourceMapURL) {
67
+ // Extract just the basename for the sourceMappingURL comment
68
+ const mapBase = sourceMapOpts.sourceMapFullFilename.split(/[/\\]/).pop();
69
+ sourceMapOpts.sourceMapFilename = mapBase;
70
+ }
71
+ } else if (!sourceMapOpts.sourceMapFilename && !sourceMapOpts.sourceMapURL) {
72
+ // If sourceMapFilename is not set and sourceMapURL is not set,
73
+ // derive it from the output filename (if available) or input filename
74
+ if (sourceMapOpts.sourceMapOutputFilename) {
75
+ // Use output filename + .map
76
+ sourceMapOpts.sourceMapFilename = sourceMapOpts.sourceMapOutputFilename + '.map';
77
+ } else if (options.filename) {
78
+ // Fallback to input filename + .css.map (basename only)
79
+ const inputBasename = options.filename.split(/[/\\]/).pop().replace(/\.[^/.]+$/, '');
80
+ sourceMapOpts.sourceMapFilename = inputBasename + '.css.map';
81
+ }
82
+ }
83
+
84
+ // Default sourceMapOutputFilename if not set
85
+ if (!sourceMapOpts.sourceMapOutputFilename) {
86
+ if (options.filename) {
87
+ const inputBasename = options.filename.split(/[/\\]/).pop().replace(/\.[^/.]+$/, '');
88
+ sourceMapOpts.sourceMapOutputFilename = inputBasename + '.css';
89
+ } else {
90
+ sourceMapOpts.sourceMapOutputFilename = 'output.css';
91
+ }
92
+ }
93
+
94
+ sourceMapBuilder = new SourceMapBuilder(sourceMapOpts);
37
95
  result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);
38
- }
39
- else {
96
+ } else {
40
97
  result.css = evaldRoot.toCSS(toCSSOptions);
41
98
  }
99
+ } catch (e) {
100
+ throw new LessError(e, this.imports);
42
101
  }
43
- catch (e) {
44
- throw new less_error_1.default(e, this.imports);
45
- }
102
+
46
103
  if (options.pluginManager) {
47
- var postProcessors = options.pluginManager.getPostProcessors();
48
- for (var i = 0; i < postProcessors.length; i++) {
49
- result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options: options, imports: this.imports });
104
+ const postProcessors = options.pluginManager.getPostProcessors();
105
+ for (let i = 0; i < postProcessors.length; i++) {
106
+ result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });
50
107
  }
51
108
  }
52
109
  if (options.sourceMap) {
53
110
  result.map = sourceMapBuilder.getExternalSourceMap();
54
111
  }
112
+
55
113
  result.imports = [];
56
- for (var file in this.imports.files) {
114
+ for (const file in this.imports.files) {
57
115
  if (Object.prototype.hasOwnProperty.call(this.imports.files, file) && file !== this.imports.rootFilename) {
58
116
  result.imports.push(file);
59
117
  }
60
118
  }
61
119
  return result;
62
- };
63
- return ParseTree;
64
- }());
120
+ }
121
+ }
122
+
65
123
  return ParseTree;
66
124
  }
67
- exports.default = default_1;
68
- //# sourceMappingURL=parse-tree.js.map
package/lib/less/parse.js CHANGED
@@ -1,13 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var contexts_1 = tslib_1.__importDefault(require("./contexts"));
5
- var parser_1 = tslib_1.__importDefault(require("./parser/parser"));
6
- var plugin_manager_1 = tslib_1.__importDefault(require("./plugin-manager"));
7
- var less_error_1 = tslib_1.__importDefault(require("./less-error"));
8
- var utils = tslib_1.__importStar(require("./utils"));
9
- function default_1(environment, ParseTree, ImportManager) {
10
- var parse = function (input, options, callback) {
1
+ import contexts from './contexts.js';
2
+ import Parser from './parser/parser.js';
3
+ import PluginManager from './plugin-manager.js';
4
+ import LessError from './less-error.js';
5
+ import * as utils from './utils.js';
6
+
7
+ export default function(environment, ParseTree, ImportManager) {
8
+ const parse = function (input, options, callback) {
9
+
11
10
  if (typeof options === 'function') {
12
11
  callback = options;
13
12
  options = utils.copyOptions(this.options, {});
@@ -15,37 +14,38 @@ function default_1(environment, ParseTree, ImportManager) {
15
14
  else {
16
15
  options = utils.copyOptions(this.options, options || {});
17
16
  }
17
+
18
18
  if (!callback) {
19
- var self_1 = this;
19
+ const self = this;
20
20
  return new Promise(function (resolve, reject) {
21
- parse.call(self_1, input, options, function (err, output) {
21
+ parse.call(self, input, options, function(err, output) {
22
22
  if (err) {
23
23
  reject(err);
24
- }
25
- else {
24
+ } else {
26
25
  resolve(output);
27
26
  }
28
27
  });
29
28
  });
30
- }
31
- else {
32
- var context_1;
33
- var rootFileInfo = void 0;
34
- var pluginManager_1 = new plugin_manager_1.default(this, !options.reUsePluginManager);
35
- options.pluginManager = pluginManager_1;
36
- context_1 = new contexts_1.default.Parse(options);
29
+ } else {
30
+ let context;
31
+ let rootFileInfo;
32
+ const pluginManager = new PluginManager(this, !options.reUsePluginManager);
33
+
34
+ options.pluginManager = pluginManager;
35
+
36
+ context = new contexts.Parse(options);
37
+
37
38
  if (options.rootFileInfo) {
38
39
  rootFileInfo = options.rootFileInfo;
39
- }
40
- else {
41
- var filename = options.filename || 'input';
42
- var entryPath = filename.replace(/[^/\\]*$/, '');
40
+ } else {
41
+ const filename = options.filename || 'input';
42
+ const entryPath = filename.replace(/[^/\\]*$/, '');
43
43
  rootFileInfo = {
44
- filename: filename,
45
- rewriteUrls: context_1.rewriteUrls,
46
- rootpath: context_1.rootpath || '',
44
+ filename,
45
+ rewriteUrls: context.rewriteUrls,
46
+ rootpath: context.rootpath || '',
47
47
  currentDirectory: entryPath,
48
- entryPath: entryPath,
48
+ entryPath,
49
49
  rootFilename: filename
50
50
  };
51
51
  // add in a missing trailing slash
@@ -53,35 +53,35 @@ function default_1(environment, ParseTree, ImportManager) {
53
53
  rootFileInfo.rootpath += '/';
54
54
  }
55
55
  }
56
- var imports_1 = new ImportManager(this, context_1, rootFileInfo);
57
- this.importManager = imports_1;
56
+
57
+ const imports = new ImportManager(this, context, rootFileInfo);
58
+ this.importManager = imports;
59
+
58
60
  // TODO: allow the plugins to be just a list of paths or names
59
61
  // Do an async plugin queue like lessc
62
+
60
63
  if (options.plugins) {
61
- options.plugins.forEach(function (plugin) {
62
- var evalResult, contents;
64
+ options.plugins.forEach(function(plugin) {
65
+ let evalResult, contents;
63
66
  if (plugin.fileContent) {
64
67
  contents = plugin.fileContent.replace(/^\uFEFF/, '');
65
- evalResult = pluginManager_1.Loader.evalPlugin(contents, context_1, imports_1, plugin.options, plugin.filename);
66
- if (evalResult instanceof less_error_1.default) {
68
+ evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);
69
+ if (evalResult instanceof LessError) {
67
70
  return callback(evalResult);
68
71
  }
69
72
  }
70
73
  else {
71
- pluginManager_1.addPlugin(plugin);
74
+ pluginManager.addPlugin(plugin);
72
75
  }
73
76
  });
74
77
  }
75
- new parser_1.default(context_1, imports_1, rootFileInfo)
78
+
79
+ new Parser(context, imports, rootFileInfo)
76
80
  .parse(input, function (e, root) {
77
- if (e) {
78
- return callback(e);
79
- }
80
- callback(null, root, imports_1, options);
81
- }, options);
81
+ if (e) { return callback(e); }
82
+ callback(null, root, imports, options);
83
+ }, options);
82
84
  }
83
85
  };
84
86
  return parse;
85
87
  }
86
- exports.default = default_1;
87
- //# sourceMappingURL=parse.js.map