less 4.5.1 → 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 (338) hide show
  1. package/bin/lessc +37 -23
  2. package/dist/less.js +14497 -11745
  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 -55
  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 +36 -26
  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 +63 -45
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +52 -53
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +151 -113
  40. package/lib/less/parser/parser.js +864 -658
  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 +56 -43
  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 +28 -15
  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 +20 -21
  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 +25 -18
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -403
  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/parser-input.js.map +0 -1
  159. package/lib/less/parser/parser.js.map +0 -1
  160. package/lib/less/plugin-manager.js.map +0 -1
  161. package/lib/less/render.js.map +0 -1
  162. package/lib/less/source-map-builder.js.map +0 -1
  163. package/lib/less/source-map-output.js.map +0 -1
  164. package/lib/less/transform-tree.js.map +0 -1
  165. package/lib/less/tree/anonymous.js.map +0 -1
  166. package/lib/less/tree/assignment.js.map +0 -1
  167. package/lib/less/tree/atrule-syntax.js.map +0 -1
  168. package/lib/less/tree/atrule.js.map +0 -1
  169. package/lib/less/tree/attribute.js.map +0 -1
  170. package/lib/less/tree/call.js.map +0 -1
  171. package/lib/less/tree/color.js.map +0 -1
  172. package/lib/less/tree/combinator.js.map +0 -1
  173. package/lib/less/tree/comment.js.map +0 -1
  174. package/lib/less/tree/condition.js.map +0 -1
  175. package/lib/less/tree/container.js.map +0 -1
  176. package/lib/less/tree/debug-info.js.map +0 -1
  177. package/lib/less/tree/declaration.js.map +0 -1
  178. package/lib/less/tree/detached-ruleset.js.map +0 -1
  179. package/lib/less/tree/dimension.js.map +0 -1
  180. package/lib/less/tree/element.js.map +0 -1
  181. package/lib/less/tree/expression.js.map +0 -1
  182. package/lib/less/tree/extend.js.map +0 -1
  183. package/lib/less/tree/import.js.map +0 -1
  184. package/lib/less/tree/index.js.map +0 -1
  185. package/lib/less/tree/javascript.js.map +0 -1
  186. package/lib/less/tree/js-eval-node.js.map +0 -1
  187. package/lib/less/tree/keyword.js.map +0 -1
  188. package/lib/less/tree/media.js.map +0 -1
  189. package/lib/less/tree/mixin-call.js.map +0 -1
  190. package/lib/less/tree/mixin-definition.js.map +0 -1
  191. package/lib/less/tree/namespace-value.js.map +0 -1
  192. package/lib/less/tree/negative.js.map +0 -1
  193. package/lib/less/tree/nested-at-rule.js.map +0 -1
  194. package/lib/less/tree/node.js.map +0 -1
  195. package/lib/less/tree/operation.js.map +0 -1
  196. package/lib/less/tree/paren.js.map +0 -1
  197. package/lib/less/tree/property.js.map +0 -1
  198. package/lib/less/tree/query-in-parens.js.map +0 -1
  199. package/lib/less/tree/quoted.js.map +0 -1
  200. package/lib/less/tree/ruleset.js.map +0 -1
  201. package/lib/less/tree/selector.js.map +0 -1
  202. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  203. package/lib/less/tree/unit.js.map +0 -1
  204. package/lib/less/tree/url.js.map +0 -1
  205. package/lib/less/tree/value.js.map +0 -1
  206. package/lib/less/tree/variable-call.js.map +0 -1
  207. package/lib/less/tree/variable.js.map +0 -1
  208. package/lib/less/utils.js.map +0 -1
  209. package/lib/less/visitors/extend-visitor.js.map +0 -1
  210. package/lib/less/visitors/import-sequencer.js.map +0 -1
  211. package/lib/less/visitors/import-visitor.js.map +0 -1
  212. package/lib/less/visitors/index.js.map +0 -1
  213. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  214. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  215. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  216. package/lib/less/visitors/visitor.js.map +0 -1
  217. package/lib/less-browser/add-default-options.js.map +0 -1
  218. package/lib/less-browser/bootstrap.js.map +0 -1
  219. package/lib/less-browser/browser.js.map +0 -1
  220. package/lib/less-browser/cache.js.map +0 -1
  221. package/lib/less-browser/error-reporting.js.map +0 -1
  222. package/lib/less-browser/file-manager.js.map +0 -1
  223. package/lib/less-browser/image-size.js.map +0 -1
  224. package/lib/less-browser/index.js.map +0 -1
  225. package/lib/less-browser/log-listener.js.map +0 -1
  226. package/lib/less-browser/plugin-loader.js.map +0 -1
  227. package/lib/less-browser/utils.js.map +0 -1
  228. package/lib/less-node/environment.js.map +0 -1
  229. package/lib/less-node/file-manager.js.map +0 -1
  230. package/lib/less-node/fs.js.map +0 -1
  231. package/lib/less-node/image-size.js.map +0 -1
  232. package/lib/less-node/index.js.map +0 -1
  233. package/lib/less-node/lessc-helper.js.map +0 -1
  234. package/lib/less-node/plugin-loader.js.map +0 -1
  235. package/lib/less-node/url-file-manager.js.map +0 -1
  236. package/scripts/coverage-lines.js +0 -207
  237. package/scripts/coverage-report.js +0 -158
  238. package/scripts/postinstall.js +0 -61
  239. package/test/.eslintrc.json +0 -9
  240. package/test/README.md +0 -3
  241. package/test/browser/common.js +0 -251
  242. package/test/browser/css/global-vars/simple.css +0 -3
  243. package/test/browser/css/modify-vars/simple.css +0 -8
  244. package/test/browser/css/plugin/plugin.css +0 -3
  245. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  246. package/test/browser/css/relative-urls/urls.css +0 -36
  247. package/test/browser/css/rewrite-urls/urls.css +0 -36
  248. package/test/browser/css/rootpath/urls.css +0 -35
  249. package/test/browser/css/rootpath-relative/urls.css +0 -35
  250. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  251. package/test/browser/css/urls.css +0 -54
  252. package/test/browser/generator/benchmark.config.js +0 -50
  253. package/test/browser/generator/generate.js +0 -78
  254. package/test/browser/generator/runner.config.js +0 -184
  255. package/test/browser/generator/runner.js +0 -2
  256. package/test/browser/generator/template.js +0 -104
  257. package/test/browser/generator/utils.js +0 -14
  258. package/test/browser/less/console-errors/test-error.less +0 -3
  259. package/test/browser/less/console-errors/test-error.txt +0 -2
  260. package/test/browser/less/errors/image-height-error.less +0 -3
  261. package/test/browser/less/errors/image-height-error.txt +0 -4
  262. package/test/browser/less/errors/image-size-error.less +0 -3
  263. package/test/browser/less/errors/image-size-error.txt +0 -4
  264. package/test/browser/less/errors/image-width-error.less +0 -3
  265. package/test/browser/less/errors/image-width-error.txt +0 -4
  266. package/test/browser/less/global-vars/simple.less +0 -3
  267. package/test/browser/less/imports/urls.less +0 -4
  268. package/test/browser/less/imports/urls2.less +0 -4
  269. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  270. package/test/browser/less/modify-vars/simple.less +0 -8
  271. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  272. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  273. package/test/browser/less/plugin/plugin.js +0 -4
  274. package/test/browser/less/plugin/plugin.less +0 -4
  275. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  276. package/test/browser/less/relative-urls/urls.less +0 -34
  277. package/test/browser/less/rewrite-urls/urls.less +0 -34
  278. package/test/browser/less/rootpath/urls.less +0 -33
  279. package/test/browser/less/rootpath-relative/urls.less +0 -33
  280. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  281. package/test/browser/less/urls.less +0 -62
  282. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  283. package/test/browser/runner-VisitorPlugin.js +0 -3
  284. package/test/browser/runner-browser-options.js +0 -51
  285. package/test/browser/runner-browser-spec.js +0 -12
  286. package/test/browser/runner-console-errors.js +0 -5
  287. package/test/browser/runner-errors-options.js +0 -6
  288. package/test/browser/runner-errors-spec.js +0 -3
  289. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  290. package/test/browser/runner-filemanagerPlugin.js +0 -3
  291. package/test/browser/runner-global-vars-options.js +0 -7
  292. package/test/browser/runner-global-vars-spec.js +0 -3
  293. package/test/browser/runner-main-options.js +0 -17
  294. package/test/browser/runner-main-spec.js +0 -7
  295. package/test/browser/runner-modify-vars-options.js +0 -5
  296. package/test/browser/runner-modify-vars-spec.js +0 -33
  297. package/test/browser/runner-no-js-errors-options.js +0 -4
  298. package/test/browser/runner-no-js-errors-spec.js +0 -3
  299. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin.js +0 -3
  301. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin.js +0 -3
  303. package/test/browser/runner-production-options.js +0 -3
  304. package/test/browser/runner-production-spec.js +0 -5
  305. package/test/browser/runner-relative-urls-options.js +0 -3
  306. package/test/browser/runner-relative-urls-spec.js +0 -3
  307. package/test/browser/runner-rewrite-urls-options.js +0 -3
  308. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  309. package/test/browser/runner-rootpath-options.js +0 -3
  310. package/test/browser/runner-rootpath-relative-options.js +0 -4
  311. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  312. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  313. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  314. package/test/browser/runner-rootpath-spec.js +0 -3
  315. package/test/browser/runner-strict-units-options.js +0 -5
  316. package/test/browser/runner-strict-units-spec.js +0 -3
  317. package/test/index.js +0 -307
  318. package/test/less-test.js +0 -984
  319. package/test/mocha-playwright/runner.js +0 -210
  320. package/test/modify-vars.js +0 -28
  321. package/test/plugins/filemanager/index.js +0 -19
  322. package/test/plugins/postprocess/index.js +0 -14
  323. package/test/plugins/preprocess/index.js +0 -19
  324. package/test/plugins/visitor/index.js +0 -24
  325. package/test/sourcemaps/basic.json +0 -1
  326. package/test/sourcemaps/comprehensive.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  330. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  331. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-url.json +0 -1
  333. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  334. package/test/sourcemaps-variable-selector/basic.json +0 -1
  335. package/test/test-es6.ts +0 -17
  336. package/test.less +0 -1
  337. package/tsconfig.build.json +0 -7
  338. package/tsconfig.json +0 -21
@@ -1,12 +1,10 @@
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 less_error_1 = tslib_1.__importDefault(require("./less-error"));
7
- var utils = tslib_1.__importStar(require("./utils"));
8
- var logger_1 = tslib_1.__importDefault(require("./logger"));
9
- function default_1(environment) {
1
+ import contexts from './contexts.js';
2
+ import Parser from './parser/parser.js';
3
+ import LessError from './less-error.js';
4
+ import * as utils from './utils.js';
5
+ import logger from './logger.js';
6
+
7
+ export default function(environment) {
10
8
  // FileInfo = {
11
9
  // 'rewriteUrls' - option - whether to adjust URL's to be relative
12
10
  // 'filename' - full resolved filename of current file
@@ -15,20 +13,22 @@ function default_1(environment) {
15
13
  // 'rootFilename' - filename of the base file
16
14
  // 'entryPath' - absolute path to the entry file
17
15
  // 'reference' - whether the file should not be output and only output parts that are referenced
18
- var ImportManager = /** @class */ (function () {
19
- function ImportManager(less, context, rootFileInfo) {
16
+
17
+ class ImportManager {
18
+ constructor(less, context, rootFileInfo) {
20
19
  this.less = less;
21
20
  this.rootFilename = rootFileInfo.filename;
22
- this.paths = context.paths || []; // Search paths, when importing
23
- this.contents = {}; // map - filename to contents of all the files
21
+ this.paths = context.paths || []; // Search paths, when importing
22
+ this.contents = {}; // map - filename to contents of all the files
24
23
  this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore
25
24
  this.mime = context.mime;
26
25
  this.error = null;
27
26
  this.context = context;
28
27
  // Deprecated? Unused outside of here, could be useful.
29
- this.queue = []; // Files which haven't been imported yet
30
- this.files = {}; // Holds the imported parse trees.
28
+ this.queue = []; // Files which haven't been imported yet
29
+ this.files = {}; // Holds the imported parse trees.
31
30
  }
31
+
32
32
  /**
33
33
  * Add an import to be imported
34
34
  * @param path - the raw path
@@ -37,44 +37,50 @@ function default_1(environment) {
37
37
  * @param importOptions - import options
38
38
  * @param callback - callback for when it is imported
39
39
  */
40
- ImportManager.prototype.push = function (path, tryAppendExtension, currentFileInfo, importOptions, callback) {
41
- var importManager = this, pluginLoader = this.context.pluginManager.Loader;
40
+ push(path, tryAppendExtension, currentFileInfo, importOptions, callback) {
41
+ const importManager = this, pluginLoader = this.context.pluginManager.Loader;
42
+
42
43
  this.queue.push(path);
43
- var fileParsedFunc = function (e, root, fullPath) {
44
+
45
+ const fileParsedFunc = function (e, root, fullPath) {
44
46
  importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue
45
- var importedEqualsRoot = fullPath === importManager.rootFilename;
47
+
48
+ const importedEqualsRoot = fullPath === importManager.rootFilename;
46
49
  if (importOptions.optional && e) {
47
- callback(null, { rules: [] }, false, null);
48
- logger_1.default.info("The file ".concat(fullPath, " was skipped because it was not found and the import was marked optional."));
50
+ callback(null, {rules:[]}, false, null);
51
+ logger.info(`The file ${fullPath} was skipped because it was not found and the import was marked optional.`);
49
52
  }
50
53
  else {
51
54
  // Inline imports aren't cached here.
52
55
  // If we start to cache them, please make sure they won't conflict with non-inline imports of the
53
56
  // same name as they used to do before this comment and the condition below have been added.
54
57
  if (!importManager.files[fullPath] && !importOptions.inline) {
55
- importManager.files[fullPath] = { root: root, options: importOptions };
56
- }
57
- if (e && !importManager.error) {
58
- importManager.error = e;
58
+ importManager.files[fullPath] = { root, options: importOptions };
59
59
  }
60
+ if (e && !importManager.error) { importManager.error = e; }
60
61
  callback(e, root, importedEqualsRoot, fullPath);
61
62
  }
62
63
  };
63
- var newFileInfo = {
64
+
65
+ const newFileInfo = {
64
66
  rewriteUrls: this.context.rewriteUrls,
65
67
  entryPath: currentFileInfo.entryPath,
66
68
  rootpath: currentFileInfo.rootpath,
67
69
  rootFilename: currentFileInfo.rootFilename
68
70
  };
69
- var fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);
71
+
72
+ const fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);
73
+
70
74
  if (!fileManager) {
71
- fileParsedFunc({ message: "Could not find a file-manager for ".concat(path) });
75
+ fileParsedFunc({ message: `Could not find a file-manager for ${path}` });
72
76
  return;
73
77
  }
74
- var loadFileCallback = function (loadedFile) {
75
- var plugin;
76
- var resolvedFilename = loadedFile.filename;
77
- var contents = loadedFile.contents.replace(/^\uFEFF/, '');
78
+
79
+ const loadFileCallback = function(loadedFile) {
80
+ let plugin;
81
+ const resolvedFilename = loadedFile.filename;
82
+ const contents = loadedFile.contents.replace(/^\uFEFF/, '');
83
+
78
84
  // Pass on an updated rootpath if path of imported file is relative and file
79
85
  // is in a (sub|sup) directory
80
86
  //
@@ -85,90 +91,93 @@ function default_1(environment) {
85
91
  // then rootpath should become 'less/../'
86
92
  newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);
87
93
  if (newFileInfo.rewriteUrls) {
88
- newFileInfo.rootpath = fileManager.join((importManager.context.rootpath || ''), fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));
94
+ newFileInfo.rootpath = fileManager.join(
95
+ (importManager.context.rootpath || ''),
96
+ fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));
97
+
89
98
  if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {
90
99
  newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);
91
100
  }
92
101
  }
93
102
  newFileInfo.filename = resolvedFilename;
94
- var newEnv = new contexts_1.default.Parse(importManager.context);
103
+
104
+ const newEnv = new contexts.Parse(importManager.context);
105
+
95
106
  newEnv.processImports = false;
96
107
  importManager.contents[resolvedFilename] = contents;
108
+
97
109
  if (currentFileInfo.reference || importOptions.reference) {
98
110
  newFileInfo.reference = true;
99
111
  }
112
+
100
113
  if (importOptions.isPlugin) {
101
114
  plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);
102
- if (plugin instanceof less_error_1.default) {
115
+ if (plugin instanceof LessError) {
103
116
  fileParsedFunc(plugin, null, resolvedFilename);
104
117
  }
105
118
  else {
106
119
  fileParsedFunc(null, plugin, resolvedFilename);
107
120
  }
108
- }
109
- else if (importOptions.inline) {
121
+ } else if (importOptions.inline) {
110
122
  fileParsedFunc(null, contents, resolvedFilename);
111
- }
112
- else {
123
+ } else {
113
124
  // import (multiple) parse trees apparently get altered and can't be cached.
114
125
  // TODO: investigate why this is
115
126
  if (importManager.files[resolvedFilename]
116
127
  && !importManager.files[resolvedFilename].options.multiple
117
128
  && !importOptions.multiple) {
129
+
118
130
  fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);
119
131
  }
120
132
  else {
121
- new parser_1.default(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {
133
+ new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {
122
134
  fileParsedFunc(e, root, resolvedFilename);
123
135
  });
124
136
  }
125
137
  }
126
138
  };
127
- var loadedFile;
128
- var promise;
129
- var context = utils.clone(this.context);
139
+ let loadedFile;
140
+ let promise;
141
+ const context = utils.clone(this.context);
142
+
130
143
  if (tryAppendExtension) {
131
144
  context.ext = importOptions.isPlugin ? '.js' : '.less';
132
145
  }
146
+
133
147
  if (importOptions.isPlugin) {
134
148
  context.mime = 'application/javascript';
149
+
135
150
  if (context.syncImport) {
136
151
  loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);
137
- }
138
- else {
152
+ } else {
139
153
  promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);
140
154
  }
141
155
  }
142
156
  else {
143
157
  if (context.syncImport) {
144
158
  loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);
145
- }
146
- else {
147
- promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment, function (err, loadedFile) {
148
- if (err) {
149
- fileParsedFunc(err);
150
- }
151
- else {
152
- loadFileCallback(loadedFile);
153
- }
154
- });
159
+ } else {
160
+ promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment,
161
+ (err, loadedFile) => {
162
+ if (err) {
163
+ fileParsedFunc(err);
164
+ } else {
165
+ loadFileCallback(loadedFile);
166
+ }
167
+ });
155
168
  }
156
169
  }
157
170
  if (loadedFile) {
158
171
  if (!loadedFile.filename) {
159
172
  fileParsedFunc(loadedFile);
160
- }
161
- else {
173
+ } else {
162
174
  loadFileCallback(loadedFile);
163
175
  }
164
- }
165
- else if (promise) {
176
+ } else if (promise) {
166
177
  promise.then(loadFileCallback, fileParsedFunc);
167
178
  }
168
- };
169
- return ImportManager;
170
- }());
179
+ }
180
+ }
181
+
171
182
  return ImportManager;
172
183
  }
173
- exports.default = default_1;
174
- //# sourceMappingURL=import-manager.js.map
package/lib/less/index.js CHANGED
@@ -1,73 +1,73 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var environment_1 = tslib_1.__importDefault(require("./environment/environment"));
5
- var data_1 = tslib_1.__importDefault(require("./data"));
6
- var tree_1 = tslib_1.__importDefault(require("./tree"));
7
- var abstract_file_manager_1 = tslib_1.__importDefault(require("./environment/abstract-file-manager"));
8
- var abstract_plugin_loader_1 = tslib_1.__importDefault(require("./environment/abstract-plugin-loader"));
9
- var visitors_1 = tslib_1.__importDefault(require("./visitors"));
10
- var parser_1 = tslib_1.__importDefault(require("./parser/parser"));
11
- var functions_1 = tslib_1.__importDefault(require("./functions"));
12
- var contexts_1 = tslib_1.__importDefault(require("./contexts"));
13
- var less_error_1 = tslib_1.__importDefault(require("./less-error"));
14
- var transform_tree_1 = tslib_1.__importDefault(require("./transform-tree"));
15
- var utils = tslib_1.__importStar(require("./utils"));
16
- var plugin_manager_1 = tslib_1.__importDefault(require("./plugin-manager"));
17
- var logger_1 = tslib_1.__importDefault(require("./logger"));
18
- var source_map_output_1 = tslib_1.__importDefault(require("./source-map-output"));
19
- var source_map_builder_1 = tslib_1.__importDefault(require("./source-map-builder"));
20
- var parse_tree_1 = tslib_1.__importDefault(require("./parse-tree"));
21
- var import_manager_1 = tslib_1.__importDefault(require("./import-manager"));
22
- var parse_1 = tslib_1.__importDefault(require("./parse"));
23
- var render_1 = tslib_1.__importDefault(require("./render"));
24
- var package_json_1 = require("../../package.json");
25
- var parse_node_version_1 = tslib_1.__importDefault(require("parse-node-version"));
26
- function default_1(environment, fileManagers) {
27
- var sourceMapOutput, sourceMapBuilder, parseTree, importManager;
28
- environment = new environment_1.default(environment, fileManagers);
29
- sourceMapOutput = (0, source_map_output_1.default)(environment);
30
- sourceMapBuilder = (0, source_map_builder_1.default)(sourceMapOutput, environment);
31
- parseTree = (0, parse_tree_1.default)(sourceMapBuilder);
32
- importManager = (0, import_manager_1.default)(environment);
33
- var render = (0, render_1.default)(environment, parseTree, importManager);
34
- var parse = (0, parse_1.default)(environment, parseTree, importManager);
35
- var v = (0, parse_node_version_1.default)("v".concat(package_json_1.version));
36
- var initial = {
1
+ import Environment from './environment/environment.js';
2
+ import data from './data/index.js';
3
+ import tree from './tree/index.js';
4
+ import AbstractFileManager from './environment/abstract-file-manager.js';
5
+ import AbstractPluginLoader from './environment/abstract-plugin-loader.js';
6
+ import visitors from './visitors/index.js';
7
+ import Parser from './parser/parser.js';
8
+ import functions from './functions/index.js';
9
+ import contexts from './contexts.js';
10
+ import LessError from './less-error.js';
11
+ import transformTree from './transform-tree.js';
12
+ import * as utils from './utils.js';
13
+ import PluginManager from './plugin-manager.js';
14
+ import logger from './logger.js';
15
+ import SourceMapOutput from './source-map-output.js';
16
+ import SourceMapBuilder from './source-map-builder.js';
17
+ import ParseTree from './parse-tree.js';
18
+ import ImportManager from './import-manager.js';
19
+ import Parse from './parse.js';
20
+ import Render from './render.js';
21
+ import parseVersion from 'parse-node-version';
22
+
23
+ export default function(environment, fileManagers, version = '0.0.0') {
24
+ let sourceMapOutput, sourceMapBuilder, parseTree, importManager;
25
+
26
+ environment = new Environment(environment, fileManagers);
27
+ sourceMapOutput = SourceMapOutput(environment);
28
+ sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);
29
+ parseTree = ParseTree(sourceMapBuilder);
30
+ importManager = ImportManager(environment);
31
+
32
+ const render = Render(environment, parseTree, importManager);
33
+ const parse = Parse(environment, parseTree, importManager);
34
+
35
+ const v = parseVersion(`v${version}`);
36
+ const initial = {
37
37
  version: [v.major, v.minor, v.patch],
38
- data: data_1.default,
39
- tree: tree_1.default,
40
- Environment: environment_1.default,
41
- AbstractFileManager: abstract_file_manager_1.default,
42
- AbstractPluginLoader: abstract_plugin_loader_1.default,
43
- environment: environment,
44
- visitors: visitors_1.default,
45
- Parser: parser_1.default,
46
- functions: (0, functions_1.default)(environment),
47
- contexts: contexts_1.default,
38
+ data,
39
+ tree,
40
+ Environment,
41
+ AbstractFileManager,
42
+ AbstractPluginLoader,
43
+ environment,
44
+ visitors,
45
+ Parser,
46
+ functions: functions(environment),
47
+ contexts,
48
48
  SourceMapOutput: sourceMapOutput,
49
49
  SourceMapBuilder: sourceMapBuilder,
50
50
  ParseTree: parseTree,
51
51
  ImportManager: importManager,
52
- render: render,
53
- parse: parse,
54
- LessError: less_error_1.default,
55
- transformTree: transform_tree_1.default,
56
- utils: utils,
57
- PluginManager: plugin_manager_1.default,
58
- logger: logger_1.default
52
+ render,
53
+ parse,
54
+ LessError,
55
+ transformTree,
56
+ utils,
57
+ PluginManager,
58
+ logger
59
59
  };
60
+
60
61
  // Create a public API
61
- var ctor = function (t) {
62
- return function () {
63
- var obj = Object.create(t.prototype);
64
- t.apply(obj, Array.prototype.slice.call(arguments, 0));
65
- return obj;
62
+
63
+ const ctor = function(t) {
64
+ return function(...args) {
65
+ return new t(...args);
66
66
  };
67
67
  };
68
- var t;
69
- var api = Object.create(initial);
70
- for (var n in initial.tree) {
68
+ let t;
69
+ const api = Object.create(initial);
70
+ for (const n in initial.tree) {
71
71
  /* eslint guard-for-in: 0 */
72
72
  t = initial.tree[n];
73
73
  if (typeof t === 'function') {
@@ -75,21 +75,21 @@ function default_1(environment, fileManagers) {
75
75
  }
76
76
  else {
77
77
  api[n] = Object.create(null);
78
- for (var o in t) {
78
+ for (const o in t) {
79
79
  /* eslint guard-for-in: 0 */
80
80
  api[n][o.toLowerCase()] = ctor(t[o]);
81
81
  }
82
82
  }
83
83
  }
84
+
84
85
  /**
85
86
  * Some of the functions assume a `this` context of the API object,
86
87
  * which causes it to fail when wrapped for ES6 imports.
87
- *
88
+ *
88
89
  * An assumed `this` should be removed in the future.
89
90
  */
90
91
  initial.parse = initial.parse.bind(api);
91
92
  initial.render = initial.render.bind(api);
93
+
92
94
  return api;
93
95
  }
94
- exports.default = default_1;
95
- //# sourceMappingURL=index.js.map
@@ -1,8 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var utils = tslib_1.__importStar(require("./utils"));
5
- var anonymousFunc = /(<anonymous>|Function):(\d+):(\d+)/;
1
+ import * as utils from './utils.js';
2
+
3
+ const anonymousFunc = /(<anonymous>|Function):(\d+):(\d+)/;
4
+
6
5
  /**
7
6
  * This is a centralized class of any error that could be thrown internally (mostly by the parser).
8
7
  * Besides standard .message it keeps some additional data like a path to the file where the error
@@ -25,26 +24,33 @@ var anonymousFunc = /(<anonymous>|Function):(\d+):(\d+)/;
25
24
  * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?
26
25
  * @param {string} [currentFilename]
27
26
  */
28
- var LessError = function (e, fileContentMap, currentFilename) {
27
+ const LessError = function(e, fileContentMap, currentFilename) {
29
28
  Error.call(this);
30
- var filename = e.filename || currentFilename;
29
+
30
+ const filename = e.filename || currentFilename;
31
+
31
32
  this.message = e.message;
32
33
  this.stack = e.stack;
34
+
33
35
  // Set type early so it's always available, even if fileContentMap is missing
34
36
  this.type = e.type || 'Syntax';
37
+
35
38
  if (fileContentMap && filename) {
36
- var input = fileContentMap.contents[filename];
37
- var loc = utils.getLocation(e.index, input);
39
+ const input = fileContentMap.contents[filename];
40
+ const loc = utils.getLocation(e.index, input);
38
41
  var line = loc.line;
39
- var col = loc.column;
40
- var callLine = e.call && utils.getLocation(e.call, input).line;
41
- var lines = input ? input.split('\n') : '';
42
+ const col = loc.column;
43
+ const callLine = e.call && utils.getLocation(e.call, input).line;
44
+ const lines = input ? input.split('\n') : '';
45
+
42
46
  this.filename = filename;
43
47
  this.index = e.index;
44
48
  this.line = typeof line === 'number' ? line + 1 : null;
45
49
  this.column = col;
50
+
46
51
  if (!this.line && this.stack) {
47
- var found = this.stack.match(anonymousFunc);
52
+ const found = this.stack.match(anonymousFunc);
53
+
48
54
  /**
49
55
  * We have to figure out how this environment stringifies anonymous functions
50
56
  * so we can correctly map plugin errors.
@@ -52,15 +58,15 @@ var LessError = function (e, fileContentMap, currentFilename) {
52
58
  * Note, in Node 8, the output of anonymous funcs varied based on parameters
53
59
  * being present or not, so we inject dummy params.
54
60
  */
55
- var func = new Function('a', 'throw new Error()');
56
- var lineAdjust = 0;
61
+ const func = new Function('a', 'throw new Error()');
62
+ let lineAdjust = 0;
57
63
  try {
58
64
  func();
59
- }
60
- catch (e) {
61
- var match = e.stack.match(anonymousFunc);
65
+ } catch (e) {
66
+ const match = e.stack.match(anonymousFunc);
62
67
  lineAdjust = 1 - parseInt(match[2]);
63
68
  }
69
+
64
70
  if (found) {
65
71
  if (found[2]) {
66
72
  this.line = parseInt(found[2]) + lineAdjust;
@@ -70,24 +76,29 @@ var LessError = function (e, fileContentMap, currentFilename) {
70
76
  }
71
77
  }
72
78
  }
79
+
73
80
  this.callLine = callLine + 1;
74
81
  this.callExtract = lines[callLine];
82
+
75
83
  this.extract = [
76
84
  lines[this.line - 2],
77
85
  lines[this.line - 1],
78
86
  lines[this.line]
79
87
  ];
80
88
  }
89
+
81
90
  };
91
+
82
92
  if (typeof Object.create === 'undefined') {
83
- var F = function () { };
93
+ const F = function () {};
84
94
  F.prototype = Error.prototype;
85
95
  LessError.prototype = new F();
86
- }
87
- else {
96
+ } else {
88
97
  LessError.prototype = Object.create(Error.prototype);
89
98
  }
99
+
90
100
  LessError.prototype.constructor = LessError;
101
+
91
102
  /**
92
103
  * An overridden version of the default Object.prototype.toString
93
104
  * which uses additional information to create a helpful message.
@@ -95,54 +106,61 @@ LessError.prototype.constructor = LessError;
95
106
  * @param {Object} options
96
107
  * @returns {string}
97
108
  */
98
- LessError.prototype.toString = function (options) {
99
- var _a;
109
+ LessError.prototype.toString = function(options) {
100
110
  options = options || {};
101
- var isWarning = ((_a = this.type) !== null && _a !== void 0 ? _a : '').toLowerCase().includes('warning');
102
- var type = isWarning ? this.type : "".concat(this.type, "Error");
103
- var color = isWarning ? 'yellow' : 'red';
104
- var message = '';
105
- var extract = this.extract || [];
106
- var error = [];
107
- var stylize = function (str) { return str; };
111
+ const isWarning = (this.type ?? '').toLowerCase().includes('warning');
112
+ const type = isWarning ? this.type : `${this.type}Error`;
113
+ const color = isWarning ? 'yellow' : 'red';
114
+
115
+ let message = '';
116
+ const extract = this.extract || [];
117
+ let error = [];
118
+ let stylize = function (str) { return str; };
108
119
  if (options.stylize) {
109
- var type_1 = typeof options.stylize;
110
- if (type_1 !== 'function') {
111
- throw Error("options.stylize should be a function, got a ".concat(type_1, "!"));
120
+ const type = typeof options.stylize;
121
+ if (type !== 'function') {
122
+ throw Error(`options.stylize should be a function, got a ${type}!`);
112
123
  }
113
124
  stylize = options.stylize;
114
125
  }
126
+
115
127
  if (this.line !== null) {
116
128
  if (!isWarning && typeof extract[0] === 'string') {
117
- error.push(stylize("".concat(this.line - 1, " ").concat(extract[0]), 'grey'));
129
+ error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));
118
130
  }
131
+
119
132
  if (typeof extract[1] === 'string') {
120
- var errorTxt = "".concat(this.line, " ");
133
+ let errorTxt = `${this.line} `;
121
134
  if (extract[1]) {
122
135
  errorTxt += extract[1].slice(0, this.column) +
123
- stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +
136
+ stylize(stylize(stylize(extract[1].slice(this.column, this.column + 1), 'bold') +
124
137
  extract[1].slice(this.column + 1), 'red'), 'inverse');
125
138
  }
126
139
  error.push(errorTxt);
127
140
  }
141
+
128
142
  if (!isWarning && typeof extract[2] === 'string') {
129
- error.push(stylize("".concat(this.line + 1, " ").concat(extract[2]), 'grey'));
143
+ error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));
130
144
  }
131
- error = "".concat(error.join('\n') + stylize('', 'reset'), "\n");
145
+ error = `${error.join('\n') + stylize('', 'reset')}\n`;
132
146
  }
133
- message += stylize("".concat(type, ": ").concat(this.message), color);
147
+
148
+ message += stylize(`${type}: ${this.message}`, color);
134
149
  if (this.filename) {
135
150
  message += stylize(' in ', color) + this.filename;
136
151
  }
137
152
  if (this.line) {
138
- message += stylize(" on line ".concat(this.line, ", column ").concat(this.column + 1, ":"), 'grey');
153
+ message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');
139
154
  }
140
- message += "\n".concat(error);
155
+
156
+ message += `\n${error}`;
157
+
141
158
  if (this.callLine) {
142
- message += "".concat(stylize('from ', color) + (this.filename || ''), "/n");
143
- message += "".concat(stylize(this.callLine, 'grey'), " ").concat(this.callExtract, "/n");
159
+ message += `${stylize('from ', color) + (this.filename || '')}/n`;
160
+ message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;
144
161
  }
162
+
145
163
  return message;
146
164
  };
147
- exports.default = LessError;
148
- //# sourceMappingURL=less-error.js.map
165
+
166
+ export default LessError;
@@ -1,32 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- error: function (msg) {
1
+ export default {
2
+ error: function(msg) {
5
3
  this._fireEvent('error', msg);
6
4
  },
7
- warn: function (msg) {
5
+ warn: function(msg) {
8
6
  this._fireEvent('warn', msg);
9
7
  },
10
- info: function (msg) {
8
+ info: function(msg) {
11
9
  this._fireEvent('info', msg);
12
10
  },
13
- debug: function (msg) {
11
+ debug: function(msg) {
14
12
  this._fireEvent('debug', msg);
15
13
  },
16
- addListener: function (listener) {
14
+ addListener: function(listener) {
17
15
  this._listeners.push(listener);
18
16
  },
19
- removeListener: function (listener) {
20
- for (var i = 0; i < this._listeners.length; i++) {
17
+ removeListener: function(listener) {
18
+ for (let i = 0; i < this._listeners.length; i++) {
21
19
  if (this._listeners[i] === listener) {
22
20
  this._listeners.splice(i, 1);
23
21
  return;
24
22
  }
25
23
  }
26
24
  },
27
- _fireEvent: function (type, msg) {
28
- for (var i = 0; i < this._listeners.length; i++) {
29
- var logFunction = this._listeners[i][type];
25
+ _fireEvent: function(type, msg) {
26
+ for (let i = 0; i < this._listeners.length; i++) {
27
+ const logFunction = this._listeners[i][type];
30
28
  if (logFunction) {
31
29
  logFunction(msg);
32
30
  }
@@ -34,4 +32,3 @@ exports.default = {
34
32
  },
35
33
  _listeners: []
36
34
  };
37
- //# sourceMappingURL=logger.js.map