less 3.9.0 → 3.10.1

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 (511) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintignore +4 -1
  3. package/.eslintrc.json +69 -87
  4. package/CHANGELOG.md +7 -0
  5. package/Gruntfile.js +336 -330
  6. package/bin/lessc +13110 -481
  7. package/dist/less.cjs.js +12571 -0
  8. package/dist/less.js +12878 -11507
  9. package/dist/less.min.js +7 -14
  10. package/dist/less.min.js.map +1 -0
  11. package/index.js +1 -1
  12. package/lib/less/constants.js +12 -12
  13. package/lib/less/contexts.js +93 -95
  14. package/lib/less/data/colors.js +1 -1
  15. package/lib/less/data/index.js +4 -4
  16. package/lib/less/data/unit-conversions.js +1 -1
  17. package/lib/less/default-options.js +53 -58
  18. package/lib/less/environment/abstract-file-manager.js +114 -110
  19. package/lib/less/environment/abstract-plugin-loader.js +139 -141
  20. package/lib/less/environment/environment-api.js +1 -1
  21. package/lib/less/environment/environment.js +44 -41
  22. package/lib/less/environment/file-manager-api.js +1 -1
  23. package/lib/less/functions/boolean.js +10 -12
  24. package/lib/less/functions/color-blending.js +20 -10
  25. package/lib/less/functions/color.js +63 -49
  26. package/lib/less/functions/data-uri.js +25 -39
  27. package/lib/less/functions/default.js +5 -7
  28. package/lib/less/functions/function-caller.js +42 -39
  29. package/lib/less/functions/function-registry.js +3 -3
  30. package/lib/less/functions/index.js +28 -16
  31. package/lib/less/functions/list.js +34 -28
  32. package/lib/less/functions/math-helper.js +4 -5
  33. package/lib/less/functions/math.js +8 -9
  34. package/lib/less/functions/number.js +26 -18
  35. package/lib/less/functions/string.js +13 -13
  36. package/lib/less/functions/svg.js +25 -25
  37. package/lib/less/functions/types.js +23 -27
  38. package/lib/less/import-manager.js +140 -138
  39. package/lib/less/index.js +72 -35
  40. package/lib/less/less-error.js +29 -30
  41. package/lib/less/logger.js +4 -4
  42. package/lib/less/parse-tree.js +53 -47
  43. package/lib/less/parse.js +23 -25
  44. package/lib/less/parser/chunker.js +17 -7
  45. package/lib/less/parser/parser-input.js +100 -93
  46. package/lib/less/parser/parser.js +310 -170
  47. package/lib/less/plugin-manager.js +146 -133
  48. package/lib/less/render.js +10 -13
  49. package/lib/less/source-map-builder.js +62 -57
  50. package/lib/less/source-map-output.js +118 -112
  51. package/lib/less/transform-tree.js +21 -18
  52. package/lib/less/tree/anonymous.js +35 -27
  53. package/lib/less/tree/assignment.js +29 -23
  54. package/lib/less/tree/atrule.js +150 -121
  55. package/lib/less/tree/attribute.js +32 -25
  56. package/lib/less/tree/call.js +87 -79
  57. package/lib/less/tree/color.js +202 -185
  58. package/lib/less/tree/combinator.js +25 -19
  59. package/lib/less/tree/comment.js +27 -21
  60. package/lib/less/tree/condition.js +41 -35
  61. package/lib/less/tree/debug-info.js +13 -17
  62. package/lib/less/tree/declaration.js +101 -88
  63. package/lib/less/tree/detached-ruleset.js +27 -20
  64. package/lib/less/tree/dimension.js +142 -124
  65. package/lib/less/tree/element.js +67 -58
  66. package/lib/less/tree/expression.js +66 -57
  67. package/lib/less/tree/extend.js +61 -53
  68. package/lib/less/tree/import.js +144 -141
  69. package/lib/less/tree/index.js +52 -40
  70. package/lib/less/tree/javascript.js +29 -25
  71. package/lib/less/tree/js-eval-node.js +50 -53
  72. package/lib/less/tree/keyword.js +15 -8
  73. package/lib/less/tree/media.js +137 -124
  74. package/lib/less/tree/mixin-call.js +178 -149
  75. package/lib/less/tree/mixin-definition.js +198 -178
  76. package/lib/less/tree/namespace-value.js +75 -67
  77. package/lib/less/tree/negative.js +24 -18
  78. package/lib/less/tree/node.js +138 -117
  79. package/lib/less/tree/operation.js +57 -49
  80. package/lib/less/tree/paren.js +20 -14
  81. package/lib/less/tree/property.js +65 -58
  82. package/lib/less/tree/quoted.js +62 -53
  83. package/lib/less/tree/ruleset.js +739 -680
  84. package/lib/less/tree/selector.js +129 -114
  85. package/lib/less/tree/unicode-descriptor.js +10 -6
  86. package/lib/less/tree/unit.js +117 -97
  87. package/lib/less/tree/url.js +54 -47
  88. package/lib/less/tree/value.js +38 -33
  89. package/lib/less/tree/variable-call.js +41 -34
  90. package/lib/less/tree/variable.js +58 -51
  91. package/lib/less/utils.js +110 -108
  92. package/lib/less/visitors/extend-visitor.js +157 -114
  93. package/lib/less/visitors/import-sequencer.js +47 -43
  94. package/lib/less/visitors/import-visitor.js +22 -23
  95. package/lib/less/visitors/index.js +14 -9
  96. package/lib/less/visitors/join-selector-visitor.js +32 -26
  97. package/lib/less/visitors/set-tree-visibility-visitor.js +37 -30
  98. package/lib/less/visitors/to-css-visitor.js +60 -57
  99. package/lib/less/visitors/visitor.js +44 -35
  100. package/lib/less-browser/add-default-options.js +4 -4
  101. package/lib/less-browser/bootstrap.js +11 -9
  102. package/lib/less-browser/browser.js +13 -12
  103. package/lib/less-browser/cache.js +9 -9
  104. package/lib/less-browser/error-reporting.js +27 -27
  105. package/lib/less-browser/file-manager.js +37 -35
  106. package/lib/less-browser/image-size.js +3 -3
  107. package/lib/less-browser/index.js +78 -73
  108. package/lib/less-browser/log-listener.js +6 -7
  109. package/lib/less-browser/plugin-loader.js +15 -13
  110. package/lib/less-browser/utils.js +20 -20
  111. package/lib/less-node/environment.js +4 -2
  112. package/lib/less-node/file-manager.js +128 -127
  113. package/lib/less-node/fs.js +2 -2
  114. package/lib/less-node/image-size.js +19 -18
  115. package/lib/less-node/index.js +16 -12
  116. package/lib/less-node/lessc-helper.js +4 -5
  117. package/lib/less-node/plugin-loader.js +41 -40
  118. package/lib/less-node/url-file-manager.js +41 -48
  119. package/lib/lessc.js +557 -0
  120. package/package.json +21 -11
  121. package/test/.DS_Store +0 -0
  122. package/test/browser/common.js +34 -30
  123. package/test/browser/css/urls.css +0 -3
  124. package/test/browser/less/plugin/plugin.js +4 -7
  125. package/test/browser/less/urls.less +0 -3
  126. package/test/browser/less.min.js +11 -0
  127. package/test/browser/less.min.js.map +1 -0
  128. package/test/browser/onload.js +13 -0
  129. package/test/browser/runner-browser-options.js +0 -5
  130. package/test/browser/test-runner-template.tmpl +39 -52
  131. package/test/browser/vendor/boot.js +148 -0
  132. package/test/browser/{jasmine-jsreporter.js → vendor/jasmine-jsreporter.js} +0 -0
  133. package/test/copy-bom.js +2 -1
  134. package/test/css/.DS_Store +0 -0
  135. package/test/css/functions-each.css +10 -0
  136. package/test/css/math/.DS_Store +0 -0
  137. package/test/css/namespacing/namespacing-1.css +4 -0
  138. package/test/css/urls.css +0 -1
  139. package/test/index.js +2 -5
  140. package/test/less/.DS_Store +0 -0
  141. package/test/less/colors.less +1 -1
  142. package/test/less/errors/color-func-invalid-color-2.less +2 -0
  143. package/test/less/errors/color-func-invalid-color-2.txt +3 -0
  144. package/test/less/functions-each.less +32 -0
  145. package/test/less/math/.DS_Store +0 -0
  146. package/test/less/namespacing/namespacing-1.less +10 -0
  147. package/test/less/urls.less +0 -1
  148. package/test/less-test.js +20 -11
  149. package/test/modify-vars.js +11 -2
  150. package/.travis.yml +0 -33
  151. package/appveyor.yml +0 -32
  152. package/browser.js +0 -1
  153. package/test/browser/less.js +0 -12956
  154. package/test/less-bom/3rd-party/bootstrap4.less +0 -1
  155. package/test/less-bom/3rd-party/uikit.less +0 -1
  156. package/test/less-bom/calc.less +0 -30
  157. package/test/less-bom/charsets.less +0 -3
  158. package/test/less-bom/colors.less +0 -116
  159. package/test/less-bom/comments.less +0 -102
  160. package/test/less-bom/comments2.less +0 -31
  161. package/test/less-bom/compression/compression.less +0 -36
  162. package/test/less-bom/css-3.less +0 -153
  163. package/test/less-bom/css-escapes.less +0 -42
  164. package/test/less-bom/css-grid.less +0 -30
  165. package/test/less-bom/css-guards.less +0 -103
  166. package/test/less-bom/debug/import/test.less +0 -25
  167. package/test/less-bom/debug/linenumbers.less +0 -33
  168. package/test/less-bom/detached-rulesets.less +0 -112
  169. package/test/less-bom/directives-bubling.less +0 -142
  170. package/test/less-bom/empty.less +0 -1
  171. package/test/less-bom/errors/add-mixed-units.less +0 -3
  172. package/test/less-bom/errors/add-mixed-units.txt +0 -4
  173. package/test/less-bom/errors/add-mixed-units2.less +0 -3
  174. package/test/less-bom/errors/add-mixed-units2.txt +0 -4
  175. package/test/less-bom/errors/at-rules-undefined-var.less +0 -4
  176. package/test/less-bom/errors/at-rules-undefined-var.txt +0 -4
  177. package/test/less-bom/errors/at-rules-unmatching-block.less +0 -4
  178. package/test/less-bom/errors/at-rules-unmatching-block.txt +0 -3
  179. package/test/less-bom/errors/bad-variable-declaration1.less +0 -1
  180. package/test/less-bom/errors/bad-variable-declaration1.txt +0 -2
  181. package/test/less-bom/errors/color-func-invalid-color.less +0 -3
  182. package/test/less-bom/errors/color-func-invalid-color.txt +0 -4
  183. package/test/less-bom/errors/css-guard-default-func.less +0 -4
  184. package/test/less-bom/errors/css-guard-default-func.txt +0 -4
  185. package/test/less-bom/errors/custom-property-unmatched-block-1.less +0 -6
  186. package/test/less-bom/errors/custom-property-unmatched-block-1.txt +0 -4
  187. package/test/less-bom/errors/custom-property-unmatched-block-2.less +0 -6
  188. package/test/less-bom/errors/custom-property-unmatched-block-2.txt +0 -4
  189. package/test/less-bom/errors/custom-property-unmatched-block-3.less +0 -6
  190. package/test/less-bom/errors/custom-property-unmatched-block-3.txt +0 -4
  191. package/test/less-bom/errors/detached-ruleset-1.less +0 -6
  192. package/test/less-bom/errors/detached-ruleset-1.txt +0 -4
  193. package/test/less-bom/errors/detached-ruleset-2.less +0 -6
  194. package/test/less-bom/errors/detached-ruleset-2.txt +0 -4
  195. package/test/less-bom/errors/detached-ruleset-3.less +0 -4
  196. package/test/less-bom/errors/detached-ruleset-3.txt +0 -4
  197. package/test/less-bom/errors/detached-ruleset-5.less +0 -4
  198. package/test/less-bom/errors/detached-ruleset-5.txt +0 -3
  199. package/test/less-bom/errors/detached-ruleset-6.less +0 -5
  200. package/test/less-bom/errors/detached-ruleset-6.txt +0 -4
  201. package/test/less-bom/errors/divide-mixed-units.less +0 -3
  202. package/test/less-bom/errors/divide-mixed-units.txt +0 -4
  203. package/test/less-bom/errors/extend-no-selector.less +0 -3
  204. package/test/less-bom/errors/extend-no-selector.txt +0 -3
  205. package/test/less-bom/errors/extend-not-at-end.less +0 -3
  206. package/test/less-bom/errors/extend-not-at-end.txt +0 -3
  207. package/test/less-bom/errors/functions-1.less +0 -2
  208. package/test/less-bom/errors/functions-1.txt +0 -3
  209. package/test/less-bom/errors/functions-10-keyword.less +0 -2
  210. package/test/less-bom/errors/functions-10-keyword.txt +0 -3
  211. package/test/less-bom/errors/functions-11-operation.less +0 -2
  212. package/test/less-bom/errors/functions-11-operation.txt +0 -3
  213. package/test/less-bom/errors/functions-12-quoted.less +0 -2
  214. package/test/less-bom/errors/functions-12-quoted.txt +0 -3
  215. package/test/less-bom/errors/functions-13-selector.less +0 -2
  216. package/test/less-bom/errors/functions-13-selector.txt +0 -3
  217. package/test/less-bom/errors/functions-14-url.less +0 -2
  218. package/test/less-bom/errors/functions-14-url.txt +0 -3
  219. package/test/less-bom/errors/functions-15-value.less +0 -2
  220. package/test/less-bom/errors/functions-15-value.txt +0 -3
  221. package/test/less-bom/errors/functions-3-assignment.less +0 -2
  222. package/test/less-bom/errors/functions-3-assignment.txt +0 -3
  223. package/test/less-bom/errors/functions-4-call.less +0 -2
  224. package/test/less-bom/errors/functions-4-call.txt +0 -3
  225. package/test/less-bom/errors/functions-5-color-2.less +0 -1
  226. package/test/less-bom/errors/functions-5-color-2.txt +0 -2
  227. package/test/less-bom/errors/functions-5-color.less +0 -2
  228. package/test/less-bom/errors/functions-5-color.txt +0 -3
  229. package/test/less-bom/errors/functions-6-condition.less +0 -2
  230. package/test/less-bom/errors/functions-6-condition.txt +0 -3
  231. package/test/less-bom/errors/functions-7-dimension.less +0 -2
  232. package/test/less-bom/errors/functions-7-dimension.txt +0 -3
  233. package/test/less-bom/errors/functions-8-element.less +0 -2
  234. package/test/less-bom/errors/functions-8-element.txt +0 -3
  235. package/test/less-bom/errors/functions-9-expression.less +0 -2
  236. package/test/less-bom/errors/functions-9-expression.txt +0 -3
  237. package/test/less-bom/errors/import-malformed.less +0 -1
  238. package/test/less-bom/errors/import-malformed.txt +0 -3
  239. package/test/less-bom/errors/import-missing.less +0 -6
  240. package/test/less-bom/errors/import-missing.txt +0 -3
  241. package/test/less-bom/errors/import-no-semi.less +0 -1
  242. package/test/less-bom/errors/import-no-semi.txt +0 -2
  243. package/test/less-bom/errors/import-subfolder1.less +0 -1
  244. package/test/less-bom/errors/import-subfolder1.txt +0 -3
  245. package/test/less-bom/errors/import-subfolder2.less +0 -1
  246. package/test/less-bom/errors/import-subfolder2.txt +0 -4
  247. package/test/less-bom/errors/imports/import-subfolder1.less +0 -1
  248. package/test/less-bom/errors/imports/import-subfolder2.less +0 -1
  249. package/test/less-bom/errors/imports/import-test.less +0 -4
  250. package/test/less-bom/errors/imports/subfolder/mixin-not-defined.less +0 -1
  251. package/test/less-bom/errors/imports/subfolder/parse-error-curly-bracket.less +0 -1
  252. package/test/less-bom/errors/javascript-error.less +0 -3
  253. package/test/less-bom/errors/javascript-error.txt +0 -4
  254. package/test/less-bom/errors/javascript-undefined-var.less +0 -3
  255. package/test/less-bom/errors/javascript-undefined-var.txt +0 -4
  256. package/test/less-bom/errors/mixed-mixin-definition-args-1.less +0 -6
  257. package/test/less-bom/errors/mixed-mixin-definition-args-1.txt +0 -4
  258. package/test/less-bom/errors/mixed-mixin-definition-args-2.less +0 -6
  259. package/test/less-bom/errors/mixed-mixin-definition-args-2.txt +0 -4
  260. package/test/less-bom/errors/mixin-not-defined-2.less +0 -7
  261. package/test/less-bom/errors/mixin-not-defined-2.txt +0 -4
  262. package/test/less-bom/errors/mixin-not-defined.less +0 -11
  263. package/test/less-bom/errors/mixin-not-defined.txt +0 -3
  264. package/test/less-bom/errors/mixin-not-matched.less +0 -6
  265. package/test/less-bom/errors/mixin-not-matched.txt +0 -3
  266. package/test/less-bom/errors/mixin-not-matched2.less +0 -6
  267. package/test/less-bom/errors/mixin-not-matched2.txt +0 -3
  268. package/test/less-bom/errors/mixin-not-visible-in-scope-1.less +0 -9
  269. package/test/less-bom/errors/mixin-not-visible-in-scope-1.txt +0 -4
  270. package/test/less-bom/errors/mixins-guards-cond-expected.less +0 -5
  271. package/test/less-bom/errors/mixins-guards-cond-expected.txt +0 -3
  272. package/test/less-bom/errors/mixins-guards-default-func-1.less +0 -9
  273. package/test/less-bom/errors/mixins-guards-default-func-1.txt +0 -4
  274. package/test/less-bom/errors/mixins-guards-default-func-2.less +0 -9
  275. package/test/less-bom/errors/mixins-guards-default-func-2.txt +0 -4
  276. package/test/less-bom/errors/mixins-guards-default-func-3.less +0 -9
  277. package/test/less-bom/errors/mixins-guards-default-func-3.txt +0 -4
  278. package/test/less-bom/errors/multiple-guards-on-css-selectors.less +0 -4
  279. package/test/less-bom/errors/multiple-guards-on-css-selectors.txt +0 -4
  280. package/test/less-bom/errors/multiple-guards-on-css-selectors2.less +0 -4
  281. package/test/less-bom/errors/multiple-guards-on-css-selectors2.txt +0 -4
  282. package/test/less-bom/errors/multiply-mixed-units.less +0 -7
  283. package/test/less-bom/errors/multiply-mixed-units.txt +0 -4
  284. package/test/less-bom/errors/namespacing-2.less +0 -7
  285. package/test/less-bom/errors/namespacing-2.txt +0 -4
  286. package/test/less-bom/errors/namespacing-3.less +0 -8
  287. package/test/less-bom/errors/namespacing-3.txt +0 -4
  288. package/test/less-bom/errors/namespacing-4.less +0 -7
  289. package/test/less-bom/errors/namespacing-4.txt +0 -4
  290. package/test/less-bom/errors/parens-error-1.less +0 -3
  291. package/test/less-bom/errors/parens-error-1.txt +0 -4
  292. package/test/less-bom/errors/parens-error-2.less +0 -3
  293. package/test/less-bom/errors/parens-error-2.txt +0 -4
  294. package/test/less-bom/errors/parens-error-3.less +0 -3
  295. package/test/less-bom/errors/parens-error-3.txt +0 -4
  296. package/test/less-bom/errors/parse-error-curly-bracket.less +0 -4
  297. package/test/less-bom/errors/parse-error-curly-bracket.txt +0 -4
  298. package/test/less-bom/errors/parse-error-media-no-block-1.less +0 -5
  299. package/test/less-bom/errors/parse-error-media-no-block-1.txt +0 -3
  300. package/test/less-bom/errors/parse-error-media-no-block-2.less +0 -1
  301. package/test/less-bom/errors/parse-error-media-no-block-2.txt +0 -2
  302. package/test/less-bom/errors/parse-error-media-no-block-3.less +0 -4
  303. package/test/less-bom/errors/parse-error-media-no-block-3.txt +0 -3
  304. package/test/less-bom/errors/parse-error-missing-bracket.less +0 -2
  305. package/test/less-bom/errors/parse-error-missing-bracket.txt +0 -3
  306. package/test/less-bom/errors/parse-error-missing-parens.less +0 -5
  307. package/test/less-bom/errors/parse-error-missing-parens.txt +0 -3
  308. package/test/less-bom/errors/parse-error-with-import.less +0 -13
  309. package/test/less-bom/errors/parse-error-with-import.txt +0 -4
  310. package/test/less-bom/errors/percentage-missing-space.less +0 -3
  311. package/test/less-bom/errors/percentage-missing-space.txt +0 -4
  312. package/test/less-bom/errors/percentage-non-number-argument.less +0 -3
  313. package/test/less-bom/errors/percentage-non-number-argument.txt +0 -4
  314. package/test/less-bom/errors/plugin/plugin-error-2.js +0 -5
  315. package/test/less-bom/errors/plugin/plugin-error-3.js +0 -5
  316. package/test/less-bom/errors/plugin/plugin-error.js +0 -1
  317. package/test/less-bom/errors/plugin-1.less +0 -1
  318. package/test/less-bom/errors/plugin-1.txt +0 -2
  319. package/test/less-bom/errors/plugin-2.less +0 -1
  320. package/test/less-bom/errors/plugin-2.txt +0 -5
  321. package/test/less-bom/errors/plugin-3.less +0 -1
  322. package/test/less-bom/errors/plugin-3.txt +0 -5
  323. package/test/less-bom/errors/property-asterisk-only-name.less +0 -3
  324. package/test/less-bom/errors/property-asterisk-only-name.txt +0 -4
  325. package/test/less-bom/errors/property-ie5-hack.less +0 -3
  326. package/test/less-bom/errors/property-ie5-hack.txt +0 -3
  327. package/test/less-bom/errors/property-in-root.less +0 -4
  328. package/test/less-bom/errors/property-in-root.txt +0 -4
  329. package/test/less-bom/errors/property-in-root2.less +0 -1
  330. package/test/less-bom/errors/property-in-root2.txt +0 -4
  331. package/test/less-bom/errors/property-in-root3.less +0 -4
  332. package/test/less-bom/errors/property-in-root3.txt +0 -3
  333. package/test/less-bom/errors/property-interp-not-defined.less +0 -1
  334. package/test/less-bom/errors/property-interp-not-defined.txt +0 -2
  335. package/test/less-bom/errors/recursive-variable.less +0 -1
  336. package/test/less-bom/errors/recursive-variable.txt +0 -2
  337. package/test/less-bom/errors/root-func-undefined-1.less +0 -1
  338. package/test/less-bom/errors/root-func-undefined-1.txt +0 -2
  339. package/test/less-bom/errors/root-func-undefined-2.less +0 -2
  340. package/test/less-bom/errors/root-func-undefined-2.txt +0 -3
  341. package/test/less-bom/errors/single-character.less +0 -1
  342. package/test/less-bom/errors/single-character.txt +0 -2
  343. package/test/less-bom/errors/svg-gradient1.less +0 -3
  344. package/test/less-bom/errors/svg-gradient1.txt +0 -4
  345. package/test/less-bom/errors/svg-gradient2.less +0 -3
  346. package/test/less-bom/errors/svg-gradient2.txt +0 -4
  347. package/test/less-bom/errors/svg-gradient3.less +0 -3
  348. package/test/less-bom/errors/svg-gradient3.txt +0 -4
  349. package/test/less-bom/errors/svg-gradient4.less +0 -4
  350. package/test/less-bom/errors/svg-gradient4.txt +0 -4
  351. package/test/less-bom/errors/svg-gradient5.less +0 -4
  352. package/test/less-bom/errors/svg-gradient5.txt +0 -4
  353. package/test/less-bom/errors/svg-gradient6.less +0 -4
  354. package/test/less-bom/errors/svg-gradient6.txt +0 -4
  355. package/test/less-bom/errors/unit-function.less +0 -3
  356. package/test/less-bom/errors/unit-function.txt +0 -4
  357. package/test/less-bom/extend-chaining.less +0 -91
  358. package/test/less-bom/extend-clearfix.less +0 -19
  359. package/test/less-bom/extend-exact.less +0 -46
  360. package/test/less-bom/extend-media.less +0 -24
  361. package/test/less-bom/extend-nest.less +0 -65
  362. package/test/less-bom/extend-selector.less +0 -110
  363. package/test/less-bom/extend.less +0 -81
  364. package/test/less-bom/extract-and-length.less +0 -146
  365. package/test/less-bom/filemanagerPlugin/colors.test +0 -1
  366. package/test/less-bom/filemanagerPlugin/filemanager.less +0 -4
  367. package/test/less-bom/functions-each.less +0 -131
  368. package/test/less-bom/functions.less +0 -279
  369. package/test/less-bom/globalVars/extended.json +0 -5
  370. package/test/less-bom/globalVars/extended.less +0 -10
  371. package/test/less-bom/globalVars/simple.json +0 -3
  372. package/test/less-bom/globalVars/simple.less +0 -3
  373. package/test/less-bom/ie-filters.less +0 -15
  374. package/test/less-bom/import/css-import.less +0 -1
  375. package/test/less-bom/import/deeper/deeper-2/url-import-2.less +0 -3
  376. package/test/less-bom/import/deeper/deeper-2/url-import.less +0 -1
  377. package/test/less-bom/import/deeper/import-once-test-a.less +0 -1
  378. package/test/less-bom/import/deeper/url-import.less +0 -1
  379. package/test/less-bom/import/import-and-relative-paths-test.less +0 -17
  380. package/test/less-bom/import/import-charset-test.less +0 -1
  381. package/test/less-bom/import/import-inline-invalid-css.less +0 -1
  382. package/test/less-bom/import/import-interpolation.less +0 -2
  383. package/test/less-bom/import/import-interpolation2.less +0 -5
  384. package/test/less-bom/import/import-once-test-c.less +0 -6
  385. package/test/less-bom/import/import-reference.less +0 -98
  386. package/test/less-bom/import/import-test-a.less +0 -5
  387. package/test/less-bom/import/import-test-b.less +0 -8
  388. package/test/less-bom/import/import-test-c.less +0 -6
  389. package/test/less-bom/import/import-test-d.css +0 -1
  390. package/test/less-bom/import/import-test-e.less +0 -2
  391. package/test/less-bom/import/import-test-f.less +0 -5
  392. package/test/less-bom/import/imports/font.less +0 -8
  393. package/test/less-bom/import/imports/logo.less +0 -6
  394. package/test/less-bom/import/interpolation-vars.less +0 -6
  395. package/test/less-bom/import/invalid-css.less +0 -1
  396. package/test/less-bom/import/urls.less +0 -1
  397. package/test/less-bom/import-inline.less +0 -3
  398. package/test/less-bom/import-interpolation.less +0 -8
  399. package/test/less-bom/import-module.less +0 -3
  400. package/test/less-bom/import-once.less +0 -6
  401. package/test/less-bom/import-reference-issues/appender-reference-1968.less +0 -6
  402. package/test/less-bom/import-reference-issues/global-scope-import.less +0 -13
  403. package/test/less-bom/import-reference-issues/global-scope-nested.less +0 -3
  404. package/test/less-bom/import-reference-issues/mixin-1968.less +0 -8
  405. package/test/less-bom/import-reference-issues/multiple-import-nested.less +0 -12
  406. package/test/less-bom/import-reference-issues/multiple-import.less +0 -10
  407. package/test/less-bom/import-reference-issues/simple-mixin.css +0 -3
  408. package/test/less-bom/import-reference-issues/simple-ruleset-2162.less +0 -3
  409. package/test/less-bom/import-reference-issues.less +0 -50
  410. package/test/less-bom/import-reference.less +0 -26
  411. package/test/less-bom/import.less +0 -29
  412. package/test/less-bom/include-path/include-path.less +0 -8
  413. package/test/less-bom/include-path-string/include-path-string.less +0 -3
  414. package/test/less-bom/javascript.less +0 -39
  415. package/test/less-bom/lazy-eval.less +0 -6
  416. package/test/less-bom/legacy/legacy.less +0 -21
  417. package/test/less-bom/math/parens-division/media-math.less +0 -9
  418. package/test/less-bom/math/parens-division/mixins-args.less +0 -264
  419. package/test/less-bom/math/parens-division/new-division.less +0 -17
  420. package/test/less-bom/math/parens-division/parens.less +0 -46
  421. package/test/less-bom/math/strict/css.less +0 -108
  422. package/test/less-bom/math/strict/media-math.less +0 -9
  423. package/test/less-bom/math/strict/mixins-args.less +0 -264
  424. package/test/less-bom/math/strict/parens.less +0 -46
  425. package/test/less-bom/math/strict-legacy/css.less +0 -108
  426. package/test/less-bom/math/strict-legacy/media-math.less +0 -9
  427. package/test/less-bom/math/strict-legacy/mixins-args.less +0 -263
  428. package/test/less-bom/math/strict-legacy/parens.less +0 -50
  429. package/test/less-bom/media.less +0 -241
  430. package/test/less-bom/merge.less +0 -81
  431. package/test/less-bom/mixins-closure.less +0 -26
  432. package/test/less-bom/mixins-guards-default-func.less +0 -195
  433. package/test/less-bom/mixins-guards.less +0 -358
  434. package/test/less-bom/mixins-important.less +0 -53
  435. package/test/less-bom/mixins-interpolated.less +0 -75
  436. package/test/less-bom/mixins-named-args.less +0 -36
  437. package/test/less-bom/mixins-nested.less +0 -22
  438. package/test/less-bom/mixins-pattern.less +0 -102
  439. package/test/less-bom/mixins.less +0 -145
  440. package/test/less-bom/modifyVars/extended.json +0 -5
  441. package/test/less-bom/modifyVars/extended.less +0 -11
  442. package/test/less-bom/namespacing/imports/a-better-bootstrap.less +0 -13
  443. package/test/less-bom/namespacing/imports/library.less +0 -14
  444. package/test/less-bom/namespacing/namespacing-1.less +0 -42
  445. package/test/less-bom/namespacing/namespacing-2.less +0 -27
  446. package/test/less-bom/namespacing/namespacing-3.less +0 -28
  447. package/test/less-bom/namespacing/namespacing-4.less +0 -33
  448. package/test/less-bom/namespacing/namespacing-5.less +0 -32
  449. package/test/less-bom/namespacing/namespacing-6.less +0 -26
  450. package/test/less-bom/namespacing/namespacing-7.less +0 -48
  451. package/test/less-bom/namespacing/namespacing-functions.less +0 -11
  452. package/test/less-bom/namespacing/namespacing-media.less +0 -26
  453. package/test/less-bom/namespacing/namespacing-operations.less +0 -15
  454. package/test/less-bom/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  455. package/test/less-bom/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  456. package/test/less-bom/no-js-errors/no-js-errors.less +0 -3
  457. package/test/less-bom/no-js-errors/no-js-errors.txt +0 -4
  458. package/test/less-bom/no-output.less +0 -2
  459. package/test/less-bom/no-strict-math/mixins-guards.less +0 -25
  460. package/test/less-bom/no-strict-math/no-sm-operations.less +0 -16
  461. package/test/less-bom/operations.less +0 -63
  462. package/test/less-bom/parse-interpolation.less +0 -53
  463. package/test/less-bom/permissive-parse.less +0 -50
  464. package/test/less-bom/plugin/plugin-collection.js +0 -9
  465. package/test/less-bom/plugin/plugin-global.js +0 -9
  466. package/test/less-bom/plugin/plugin-local.js +0 -14
  467. package/test/less-bom/plugin/plugin-preeval.js +0 -27
  468. package/test/less-bom/plugin/plugin-scope1.js +0 -3
  469. package/test/less-bom/plugin/plugin-scope2.js +0 -3
  470. package/test/less-bom/plugin/plugin-set-options-v2.js +0 -33
  471. package/test/less-bom/plugin/plugin-set-options-v3.js +0 -31
  472. package/test/less-bom/plugin/plugin-set-options.js +0 -32
  473. package/test/less-bom/plugin/plugin-simple.js +0 -7
  474. package/test/less-bom/plugin/plugin-transitive.js +0 -6
  475. package/test/less-bom/plugin/plugin-transitive.less +0 -5
  476. package/test/less-bom/plugin/plugin-tree-nodes.js +0 -82
  477. package/test/less-bom/plugin-module.less +0 -7
  478. package/test/less-bom/plugin-preeval.less +0 -15
  479. package/test/less-bom/plugin.less +0 -142
  480. package/test/less-bom/postProcessorPlugin/postProcessor.less +0 -4
  481. package/test/less-bom/preProcessorPlugin/preProcessor.less +0 -3
  482. package/test/less-bom/property-accessors.less +0 -67
  483. package/test/less-bom/property-name-interp.less +0 -56
  484. package/test/less-bom/rewrite-urls-all/folder/file.less +0 -8
  485. package/test/less-bom/rewrite-urls-all/rewrite-urls-all.less +0 -11
  486. package/test/less-bom/rewrite-urls-local/folder/file.less +0 -8
  487. package/test/less-bom/rewrite-urls-local/rewrite-urls-local.less +0 -11
  488. package/test/less-bom/root-registry/file.less +0 -1
  489. package/test/less-bom/root-registry/root.less +0 -3
  490. package/test/less-bom/rootpath-rewrite-urls-all/folder/file.less +0 -8
  491. package/test/less-bom/rootpath-rewrite-urls-all/rootpath-rewrite-urls-all.less +0 -11
  492. package/test/less-bom/rootpath-rewrite-urls-local/folder/file.less +0 -8
  493. package/test/less-bom/rootpath-rewrite-urls-local/rootpath-rewrite-urls-local.less +0 -11
  494. package/test/less-bom/rulesets.less +0 -30
  495. package/test/less-bom/scope.less +0 -104
  496. package/test/less-bom/selectors.less +0 -184
  497. package/test/less-bom/sourcemaps/basic.json +0 -3
  498. package/test/less-bom/sourcemaps/basic.less +0 -27
  499. package/test/less-bom/sourcemaps/custom-props.less +0 -8
  500. package/test/less-bom/sourcemaps/imported.css +0 -7
  501. package/test/less-bom/sourcemaps-empty/empty.less +0 -1
  502. package/test/less-bom/sourcemaps-empty/var-defs.less +0 -1
  503. package/test/less-bom/static-urls/urls.less +0 -33
  504. package/test/less-bom/strict-units/strict-units.less +0 -4
  505. package/test/less-bom/strings.less +0 -73
  506. package/test/less-bom/url-args/urls.less +0 -63
  507. package/test/less-bom/urls.less +0 -94
  508. package/test/less-bom/variables-in-at-rules.less +0 -20
  509. package/test/less-bom/variables.less +0 -127
  510. package/test/less-bom/visitorPlugin/visitor.less +0 -4
  511. package/test/less-bom/whitespace.less +0 -44
@@ -1,10 +1,15 @@
1
- var visitors = {
2
- Visitor: require('./visitor'),
3
- ImportVisitor: require('./import-visitor'),
4
- MarkVisibleSelectorsVisitor: require('./set-tree-visibility-visitor'),
5
- ExtendVisitor: require('./extend-visitor'),
6
- JoinSelectorVisitor: require('./join-selector-visitor'),
7
- ToCSSVisitor: require('./to-css-visitor')
8
- };
1
+ import Visitor from './visitor';
2
+ import ImportVisitor from './import-visitor';
3
+ import MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor';
4
+ import ExtendVisitor from './extend-visitor';
5
+ import JoinSelectorVisitor from './join-selector-visitor';
6
+ import ToCSSVisitor from './to-css-visitor';
9
7
 
10
- module.exports = visitors;
8
+ export default {
9
+ Visitor,
10
+ ImportVisitor,
11
+ MarkVisibleSelectorsVisitor,
12
+ ExtendVisitor,
13
+ JoinSelectorVisitor,
14
+ ToCSSVisitor
15
+ };
@@ -1,51 +1,57 @@
1
- var Visitor = require('./visitor');
1
+ import Visitor from './visitor';
2
2
 
3
- var JoinSelectorVisitor = function() {
4
- this.contexts = [[]];
5
- this._visitor = new Visitor(this);
6
- };
3
+ class JoinSelectorVisitor {
4
+ constructor() {
5
+ this.contexts = [[]];
6
+ this._visitor = new Visitor(this);
7
+ }
7
8
 
8
- JoinSelectorVisitor.prototype = {
9
- run: function (root) {
9
+ run(root) {
10
10
  return this._visitor.visit(root);
11
- },
12
- visitDeclaration: function (declNode, visitArgs) {
11
+ }
12
+
13
+ visitDeclaration(declNode, visitArgs) {
13
14
  visitArgs.visitDeeper = false;
14
- },
15
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
15
+ }
16
+
17
+ visitMixinDefinition(mixinDefinitionNode, visitArgs) {
16
18
  visitArgs.visitDeeper = false;
17
- },
19
+ }
18
20
 
19
- visitRuleset: function (rulesetNode, visitArgs) {
20
- var context = this.contexts[this.contexts.length - 1],
21
- paths = [], selectors;
21
+ visitRuleset(rulesetNode, visitArgs) {
22
+ const context = this.contexts[this.contexts.length - 1];
23
+ const paths = [];
24
+ let selectors;
22
25
 
23
26
  this.contexts.push(paths);
24
27
 
25
28
  if (!rulesetNode.root) {
26
29
  selectors = rulesetNode.selectors;
27
30
  if (selectors) {
28
- selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });
31
+ selectors = selectors.filter(selector => selector.getIsOutput());
29
32
  rulesetNode.selectors = selectors.length ? selectors : (selectors = null);
30
33
  if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }
31
34
  }
32
35
  if (!selectors) { rulesetNode.rules = null; }
33
36
  rulesetNode.paths = paths;
34
37
  }
35
- },
36
- visitRulesetOut: function (rulesetNode) {
38
+ }
39
+
40
+ visitRulesetOut(rulesetNode) {
37
41
  this.contexts.length = this.contexts.length - 1;
38
- },
39
- visitMedia: function (mediaNode, visitArgs) {
40
- var context = this.contexts[this.contexts.length - 1];
42
+ }
43
+
44
+ visitMedia(mediaNode, visitArgs) {
45
+ const context = this.contexts[this.contexts.length - 1];
41
46
  mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);
42
- },
43
- visitAtRule: function (atRuleNode, visitArgs) {
44
- var context = this.contexts[this.contexts.length - 1];
47
+ }
48
+
49
+ visitAtRule(atRuleNode, visitArgs) {
50
+ const context = this.contexts[this.contexts.length - 1];
45
51
  if (atRuleNode.rules && atRuleNode.rules.length) {
46
52
  atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);
47
53
  }
48
54
  }
49
- };
55
+ }
50
56
 
51
- module.exports = JoinSelectorVisitor;
57
+ export default JoinSelectorVisitor;
@@ -1,38 +1,45 @@
1
- var SetTreeVisibilityVisitor = function(visible) {
2
- this.visible = visible;
3
- };
4
- SetTreeVisibilityVisitor.prototype.run = function(root) {
5
- this.visit(root);
6
- };
7
- SetTreeVisibilityVisitor.prototype.visitArray = function(nodes) {
8
- if (!nodes) {
9
- return nodes;
1
+ class SetTreeVisibilityVisitor {
2
+ constructor(visible) {
3
+ this.visible = visible;
10
4
  }
11
5
 
12
- var cnt = nodes.length, i;
13
- for (i = 0; i < cnt; i++) {
14
- this.visit(nodes[i]);
15
- }
16
- return nodes;
17
- };
18
- SetTreeVisibilityVisitor.prototype.visit = function(node) {
19
- if (!node) {
20
- return node;
6
+ run(root) {
7
+ this.visit(root);
21
8
  }
22
- if (node.constructor === Array) {
23
- return this.visitArray(node);
9
+
10
+ visitArray(nodes) {
11
+ if (!nodes) {
12
+ return nodes;
13
+ }
14
+
15
+ const cnt = nodes.length;
16
+ let i;
17
+ for (i = 0; i < cnt; i++) {
18
+ this.visit(nodes[i]);
19
+ }
20
+ return nodes;
24
21
  }
25
22
 
26
- if (!node.blocksVisibility || node.blocksVisibility()) {
23
+ visit(node) {
24
+ if (!node) {
25
+ return node;
26
+ }
27
+ if (node.constructor === Array) {
28
+ return this.visitArray(node);
29
+ }
30
+
31
+ if (!node.blocksVisibility || node.blocksVisibility()) {
32
+ return node;
33
+ }
34
+ if (this.visible) {
35
+ node.ensureVisibility();
36
+ } else {
37
+ node.ensureInvisibility();
38
+ }
39
+
40
+ node.accept(this);
27
41
  return node;
28
42
  }
29
- if (this.visible) {
30
- node.ensureVisibility();
31
- } else {
32
- node.ensureInvisibility();
33
- }
43
+ }
34
44
 
35
- node.accept(this);
36
- return node;
37
- };
38
- module.exports = SetTreeVisibilityVisitor;
45
+ export default SetTreeVisibilityVisitor;
@@ -1,18 +1,18 @@
1
- var tree = require('../tree'),
2
- Visitor = require('./visitor');
1
+ import tree from '../tree';
2
+ import Visitor from './visitor';
3
3
 
4
- var CSSVisitorUtils = function(context) {
5
- this._visitor = new Visitor(this);
6
- this._context = context;
7
- };
4
+ class CSSVisitorUtils {
5
+ constructor(context) {
6
+ this._visitor = new Visitor(this);
7
+ this._context = context;
8
+ }
8
9
 
9
- CSSVisitorUtils.prototype = {
10
- containsSilentNonBlockedChild: function(bodyRules) {
11
- var rule;
10
+ containsSilentNonBlockedChild(bodyRules) {
11
+ let rule;
12
12
  if (!bodyRules) {
13
13
  return false;
14
14
  }
15
- for (var r = 0; r < bodyRules.length; r++) {
15
+ for (let r = 0; r < bodyRules.length; r++) {
16
16
  rule = bodyRules[r];
17
17
  if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {
18
18
  // the atrule contains something that was referenced (likely by extend)
@@ -21,27 +21,25 @@ CSSVisitorUtils.prototype = {
21
21
  }
22
22
  }
23
23
  return false;
24
- },
24
+ }
25
25
 
26
- keepOnlyVisibleChilds: function(owner) {
26
+ keepOnlyVisibleChilds(owner) {
27
27
  if (owner && owner.rules) {
28
- owner.rules = owner.rules.filter(function(thing) {
29
- return thing.isVisible();
30
- });
28
+ owner.rules = owner.rules.filter(thing => thing.isVisible());
31
29
  }
32
- },
30
+ }
33
31
 
34
- isEmpty: function(owner) {
32
+ isEmpty(owner) {
35
33
  return (owner && owner.rules)
36
34
  ? (owner.rules.length === 0) : true;
37
- },
35
+ }
38
36
 
39
- hasVisibleSelector: function(rulesetNode) {
37
+ hasVisibleSelector(rulesetNode) {
40
38
  return (rulesetNode && rulesetNode.paths)
41
39
  ? (rulesetNode.paths.length > 0) : false;
42
- },
40
+ }
43
41
 
44
- resolveVisibility: function (node, originalRules) {
42
+ resolveVisibility(node, originalRules) {
45
43
  if (!node.blocksVisibility()) {
46
44
  if (this.isEmpty(node) && !this.containsSilentNonBlockedChild(originalRules)) {
47
45
  return ;
@@ -50,7 +48,7 @@ CSSVisitorUtils.prototype = {
50
48
  return node;
51
49
  }
52
50
 
53
- var compiledRulesBody = node.rules[0];
51
+ const compiledRulesBody = node.rules[0];
54
52
  this.keepOnlyVisibleChilds(compiledRulesBody);
55
53
 
56
54
  if (this.isEmpty(compiledRulesBody)) {
@@ -61,9 +59,9 @@ CSSVisitorUtils.prototype = {
61
59
  node.removeVisibilityBlock();
62
60
 
63
61
  return node;
64
- },
62
+ }
65
63
 
66
- isVisibleRuleset: function(rulesetNode) {
64
+ isVisibleRuleset(rulesetNode) {
67
65
  if (rulesetNode.firstRoot) {
68
66
  return true;
69
67
  }
@@ -78,10 +76,9 @@ CSSVisitorUtils.prototype = {
78
76
 
79
77
  return true;
80
78
  }
79
+ }
81
80
 
82
- };
83
-
84
- var ToCSSVisitor = function(context) {
81
+ const ToCSSVisitor = function(context) {
85
82
  this._visitor = new Visitor(this);
86
83
  this._context = context;
87
84
  this.utils = new CSSVisitorUtils(context);
@@ -117,7 +114,7 @@ ToCSSVisitor.prototype = {
117
114
  },
118
115
 
119
116
  visitMedia: function(mediaNode, visitArgs) {
120
- var originalRules = mediaNode.rules[0].rules;
117
+ const originalRules = mediaNode.rules[0].rules;
121
118
  mediaNode.accept(this._visitor);
122
119
  visitArgs.visitDeeper = false;
123
120
 
@@ -150,11 +147,11 @@ ToCSSVisitor.prototype = {
150
147
  // if there is only one nested ruleset and that one has no path, then it is
151
148
  // just fake ruleset
152
149
  function hasFakeRuleset(atRuleNode) {
153
- var bodyRules = atRuleNode.rules;
150
+ const bodyRules = atRuleNode.rules;
154
151
  return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);
155
152
  }
156
153
  function getBodyRules(atRuleNode) {
157
- var nodeRules = atRuleNode.rules;
154
+ const nodeRules = atRuleNode.rules;
158
155
  if (hasFakeRuleset(atRuleNode)) {
159
156
  return nodeRules[0].rules;
160
157
  }
@@ -164,7 +161,7 @@ ToCSSVisitor.prototype = {
164
161
  // it is still true that it is only one ruleset in array
165
162
  // this is last such moment
166
163
  // process childs
167
- var originalRules = getBodyRules(atRuleNode);
164
+ const originalRules = getBodyRules(atRuleNode);
168
165
  atRuleNode.accept(this._visitor);
169
166
  visitArgs.visitDeeper = false;
170
167
 
@@ -186,7 +183,7 @@ ToCSSVisitor.prototype = {
186
183
  // be considered illegal css as it has to be on the first line
187
184
  if (this.charset) {
188
185
  if (atRuleNode.debugInfo) {
189
- var comment = new tree.Comment('/* ' + atRuleNode.toCSS(this._context).replace(/\n/g, '') + ' */\n');
186
+ const comment = new tree.Comment(`/* ${atRuleNode.toCSS(this._context).replace(/\n/g, '')} */\n`);
190
187
  comment.debugInfo = atRuleNode.debugInfo;
191
188
  return this._visitor.visit(comment);
192
189
  }
@@ -203,18 +200,18 @@ ToCSSVisitor.prototype = {
203
200
  return;
204
201
  }
205
202
 
206
- for (var i = 0; i < rules.length; i++) {
207
- var ruleNode = rules[i];
203
+ for (let i = 0; i < rules.length; i++) {
204
+ const ruleNode = rules[i];
208
205
  if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {
209
206
  throw { message: 'Properties must be inside selector blocks. They cannot be in the root',
210
207
  index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};
211
208
  }
212
209
  if (ruleNode instanceof tree.Call) {
213
- throw { message: 'Function \'' + ruleNode.name + '\' is undefined',
210
+ throw { message: `Function '${ruleNode.name}' is undefined`,
214
211
  index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};
215
212
  }
216
213
  if (ruleNode.type && !ruleNode.allowRoot) {
217
- throw { message: ruleNode.type + ' node returned by a function is not valid here',
214
+ throw { message: `${ruleNode.type} node returned by a function is not valid here`,
218
215
  index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};
219
216
  }
220
217
  }
@@ -222,7 +219,9 @@ ToCSSVisitor.prototype = {
222
219
 
223
220
  visitRuleset: function (rulesetNode, visitArgs) {
224
221
  // at this point rulesets are nested into each other
225
- var rule, rulesets = [];
222
+ let rule;
223
+
224
+ const rulesets = [];
226
225
 
227
226
  this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);
228
227
 
@@ -231,8 +230,10 @@ ToCSSVisitor.prototype = {
231
230
  this._compileRulesetPaths(rulesetNode);
232
231
 
233
232
  // remove rulesets from this ruleset body and compile them separately
234
- var nodeRules = rulesetNode.rules, nodeRuleCnt = nodeRules ? nodeRules.length : 0;
235
- for (var i = 0; i < nodeRuleCnt; ) {
233
+ const nodeRules = rulesetNode.rules;
234
+
235
+ let nodeRuleCnt = nodeRules ? nodeRules.length : 0;
236
+ for (let i = 0; i < nodeRuleCnt; ) {
236
237
  rule = nodeRules[i];
237
238
  if (rule && rule.rules) {
238
239
  // visit because we are moving them out from being a child
@@ -252,7 +253,6 @@ ToCSSVisitor.prototype = {
252
253
  rulesetNode.rules = null;
253
254
  }
254
255
  visitArgs.visitDeeper = false;
255
-
256
256
  } else { // if (! rulesetNode.root) {
257
257
  rulesetNode.accept(this._visitor);
258
258
  visitArgs.visitDeeper = false;
@@ -278,8 +278,8 @@ ToCSSVisitor.prototype = {
278
278
  _compileRulesetPaths: function(rulesetNode) {
279
279
  if (rulesetNode.paths) {
280
280
  rulesetNode.paths = rulesetNode.paths
281
- .filter(function(p) {
282
- var i;
281
+ .filter(p => {
282
+ let i;
283
283
  if (p[0].elements[0].combinator.value === ' ') {
284
284
  p[0].elements[0].combinator = new(tree.Combinator)('');
285
285
  }
@@ -297,8 +297,11 @@ ToCSSVisitor.prototype = {
297
297
  if (!rules) { return; }
298
298
 
299
299
  // remove duplicates
300
- var ruleCache = {},
301
- ruleList, rule, i;
300
+ const ruleCache = {};
301
+
302
+ let ruleList;
303
+ let rule;
304
+ let i;
302
305
 
303
306
  for (i = rules.length - 1; i >= 0 ; i--) {
304
307
  rule = rules[i];
@@ -310,7 +313,7 @@ ToCSSVisitor.prototype = {
310
313
  if (ruleList instanceof tree.Declaration) {
311
314
  ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];
312
315
  }
313
- var ruleCSS = rule.toCSS(this._context);
316
+ const ruleCSS = rule.toCSS(this._context);
314
317
  if (ruleList.indexOf(ruleCSS) !== -1) {
315
318
  rules.splice(i, 1);
316
319
  } else {
@@ -326,25 +329,25 @@ ToCSSVisitor.prototype = {
326
329
  return;
327
330
  }
328
331
 
329
- var groups = {},
330
- groupsArr = [];
331
-
332
- for (var i = 0; i < rules.length; i++) {
333
- var rule = rules[i];
332
+ const groups = {};
333
+ const groupsArr = [];
334
+
335
+ for (let i = 0; i < rules.length; i++) {
336
+ const rule = rules[i];
334
337
  if (rule.merge) {
335
- var key = rule.name;
338
+ const key = rule.name;
336
339
  groups[key] ? rules.splice(i--, 1) :
337
340
  groupsArr.push(groups[key] = []);
338
341
  groups[key].push(rule);
339
342
  }
340
343
  }
341
344
 
342
- groupsArr.forEach(function(group) {
345
+ groupsArr.forEach(group => {
343
346
  if (group.length > 0) {
344
- var result = group[0],
345
- space = [],
346
- comma = [new tree.Expression(space)];
347
- group.forEach(function(rule) {
347
+ const result = group[0];
348
+ let space = [];
349
+ const comma = [new tree.Expression(space)];
350
+ group.forEach(rule => {
348
351
  if ((rule.merge === '+') && (space.length > 0)) {
349
352
  comma.push(new tree.Expression(space = []));
350
353
  }
@@ -357,4 +360,4 @@ ToCSSVisitor.prototype = {
357
360
  }
358
361
  };
359
362
 
360
- module.exports = ToCSSVisitor;
363
+ export default ToCSSVisitor;
@@ -1,7 +1,6 @@
1
- var tree = require('../tree');
2
-
3
- var _visitArgs = { visitDeeper: true },
4
- _hasIndexed = false;
1
+ import tree from '../tree';
2
+ const _visitArgs = { visitDeeper: true };
3
+ let _hasIndexed = false;
5
4
 
6
5
  function _noop(node) {
7
6
  return node;
@@ -9,7 +8,9 @@ function _noop(node) {
9
8
 
10
9
  function indexNodeTypes(parent, ticker) {
11
10
  // add .typeIndex to tree node types for lookup table
12
- var key, child;
11
+ let key;
12
+
13
+ let child;
13
14
  for (key in parent) {
14
15
  /* eslint guard-for-in: 0 */
15
16
  child = parent[key];
@@ -30,24 +31,24 @@ function indexNodeTypes(parent, ticker) {
30
31
  return ticker;
31
32
  }
32
33
 
33
- var Visitor = function(implementation) {
34
- this._implementation = implementation;
35
- this._visitInCache = {};
36
- this._visitOutCache = {};
34
+ class Visitor {
35
+ constructor(implementation) {
36
+ this._implementation = implementation;
37
+ this._visitInCache = {};
38
+ this._visitOutCache = {};
37
39
 
38
- if (!_hasIndexed) {
39
- indexNodeTypes(tree, 1);
40
- _hasIndexed = true;
40
+ if (!_hasIndexed) {
41
+ indexNodeTypes(tree, 1);
42
+ _hasIndexed = true;
43
+ }
41
44
  }
42
- };
43
45
 
44
- Visitor.prototype = {
45
- visit: function(node) {
46
+ visit(node) {
46
47
  if (!node) {
47
48
  return node;
48
49
  }
49
50
 
50
- var nodeTypeIndex = node.typeIndex;
51
+ const nodeTypeIndex = node.typeIndex;
51
52
  if (!nodeTypeIndex) {
52
53
  // MixinCall args aren't a node type?
53
54
  if (node.value && node.value.typeIndex) {
@@ -56,24 +57,24 @@ Visitor.prototype = {
56
57
  return node;
57
58
  }
58
59
 
59
- var impl = this._implementation,
60
- func = this._visitInCache[nodeTypeIndex],
61
- funcOut = this._visitOutCache[nodeTypeIndex],
62
- visitArgs = _visitArgs,
63
- fnName;
60
+ const impl = this._implementation;
61
+ let func = this._visitInCache[nodeTypeIndex];
62
+ let funcOut = this._visitOutCache[nodeTypeIndex];
63
+ const visitArgs = _visitArgs;
64
+ let fnName;
64
65
 
65
66
  visitArgs.visitDeeper = true;
66
67
 
67
68
  if (!func) {
68
- fnName = 'visit' + node.type;
69
+ fnName = `visit${node.type}`;
69
70
  func = impl[fnName] || _noop;
70
- funcOut = impl[fnName + 'Out'] || _noop;
71
+ funcOut = impl[`${fnName}Out`] || _noop;
71
72
  this._visitInCache[nodeTypeIndex] = func;
72
73
  this._visitOutCache[nodeTypeIndex] = funcOut;
73
74
  }
74
75
 
75
76
  if (func !== _noop) {
76
- var newNode = func.call(impl, node, visitArgs);
77
+ const newNode = func.call(impl, node, visitArgs);
77
78
  if (node && impl.isReplacing) {
78
79
  node = newNode;
79
80
  }
@@ -88,13 +89,15 @@ Visitor.prototype = {
88
89
  }
89
90
 
90
91
  return node;
91
- },
92
- visitArray: function(nodes, nonReplacing) {
92
+ }
93
+
94
+ visitArray(nodes, nonReplacing) {
93
95
  if (!nodes) {
94
96
  return nodes;
95
97
  }
96
98
 
97
- var cnt = nodes.length, i;
99
+ const cnt = nodes.length;
100
+ let i;
98
101
 
99
102
  // Non-replacing
100
103
  if (nonReplacing || !this._implementation.isReplacing) {
@@ -105,9 +108,9 @@ Visitor.prototype = {
105
108
  }
106
109
 
107
110
  // Replacing
108
- var out = [];
111
+ const out = [];
109
112
  for (i = 0; i < cnt; i++) {
110
- var evald = this.visit(nodes[i]);
113
+ const evald = this.visit(nodes[i]);
111
114
  if (evald === undefined) { continue; }
112
115
  if (!evald.splice) {
113
116
  out.push(evald);
@@ -116,14 +119,19 @@ Visitor.prototype = {
116
119
  }
117
120
  }
118
121
  return out;
119
- },
120
- flatten: function(arr, out) {
122
+ }
123
+
124
+ flatten(arr, out) {
121
125
  if (!out) {
122
126
  out = [];
123
127
  }
124
128
 
125
- var cnt, i, item,
126
- nestedCnt, j, nestedItem;
129
+ let cnt;
130
+ let i;
131
+ let item;
132
+ let nestedCnt;
133
+ let j;
134
+ let nestedItem;
127
135
 
128
136
  for (i = 0, cnt = arr.length; i < cnt; i++) {
129
137
  item = arr[i];
@@ -150,5 +158,6 @@ Visitor.prototype = {
150
158
 
151
159
  return out;
152
160
  }
153
- };
154
- module.exports = Visitor;
161
+ }
162
+
163
+ export default Visitor;
@@ -1,7 +1,7 @@
1
- var addDataAttr = require('./utils').addDataAttr,
2
- browser = require('./browser');
1
+ import {addDataAttr} from './utils';
2
+ import browser from './browser';
3
3
 
4
- module.exports = function(window, options) {
4
+ export default (window, options) => {
5
5
 
6
6
  // use options from the current script tag data attribues
7
7
  addDataAttr(options, browser.currentScript(window));
@@ -30,7 +30,7 @@ module.exports = function(window, options) {
30
30
  options.isFileProtocol ? 'development'
31
31
  : 'production');
32
32
 
33
- var dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);
33
+ const dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);
34
34
  if (dumpLineNumbers) {
35
35
  options.dumpLineNumbers = dumpLineNumbers[1];
36
36
  }
@@ -5,21 +5,20 @@
5
5
  */
6
6
  /* global window, document */
7
7
 
8
- // TODO - consider switching this out for a recommendation for this polyfill?
9
- // <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>
10
- // Browsers have good Promise support
11
- require('promise/polyfill');
8
+ import defaultOptions from '../less/default-options';
9
+ import addDefaultOptions from './add-default-options';
10
+ import root from './index';
12
11
 
13
- var options = require('../less/default-options')();
12
+ const options = defaultOptions();
14
13
 
15
14
  if (window.less) {
16
- for (key in window.less) {
15
+ for (const key in window.less) {
17
16
  if (window.less.hasOwnProperty(key)) {
18
17
  options[key] = window.less[key];
19
18
  }
20
19
  }
21
20
  }
22
- require('./add-default-options')(window, options);
21
+ addDefaultOptions(window, options);
23
22
 
24
23
  options.plugins = options.plugins || [];
25
24
 
@@ -27,11 +26,14 @@ if (window.LESS_PLUGINS) {
27
26
  options.plugins = options.plugins.concat(window.LESS_PLUGINS);
28
27
  }
29
28
 
30
- var less = module.exports = require('./index')(window, options);
29
+ const less = root(window, options);
30
+ export default less;
31
31
 
32
32
  window.less = less;
33
33
 
34
- var css, head, style;
34
+ let css;
35
+ let head;
36
+ let style;
35
37
 
36
38
  // Always restore page visibility
37
39
  function resolveOrReject(data) {