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,18 +1,19 @@
1
- var utils = require('./utils');
2
- module.exports = {
1
+ import * as utils from './utils';
2
+
3
+ export default {
3
4
  createCSS: function (document, styles, sheet) {
4
5
  // Strip the query-string
5
- var href = sheet.href || '';
6
+ const href = sheet.href || '';
6
7
 
7
8
  // If there is no title set, use the filename, minus the extension
8
- var id = 'less:' + (sheet.title || utils.extractId(href));
9
+ const id = `less:${sheet.title || utils.extractId(href)}`;
9
10
 
10
11
  // If this has already been inserted into the DOM, we may need to replace it
11
- var oldStyleNode = document.getElementById(id);
12
- var keepOldStyleNode = false;
12
+ const oldStyleNode = document.getElementById(id);
13
+ let keepOldStyleNode = false;
13
14
 
14
15
  // Create a new stylesheet node for insertion or (if necessary) replacement
15
- var styleNode = document.createElement('style');
16
+ const styleNode = document.createElement('style');
16
17
  styleNode.setAttribute('type', 'text/css');
17
18
  if (sheet.media) {
18
19
  styleNode.setAttribute('media', sheet.media);
@@ -27,12 +28,12 @@ module.exports = {
27
28
  oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);
28
29
  }
29
30
 
30
- var head = document.getElementsByTagName('head')[0];
31
+ const head = document.getElementsByTagName('head')[0];
31
32
 
32
33
  // If there is no oldStyleNode, just append; otherwise, only append if we need
33
34
  // to replace oldStyleNode with an updated stylesheet
34
35
  if (oldStyleNode === null || keepOldStyleNode === false) {
35
- var nextEl = sheet && sheet.nextSibling || null;
36
+ const nextEl = sheet && sheet.nextSibling || null;
36
37
  if (nextEl) {
37
38
  nextEl.parentNode.insertBefore(styleNode, nextEl);
38
39
  } else {
@@ -55,9 +56,9 @@ module.exports = {
55
56
  }
56
57
  },
57
58
  currentScript: function(window) {
58
- var document = window.document;
59
- return document.currentScript || (function() {
60
- var scripts = document.getElementsByTagName('script');
59
+ const document = window.document;
60
+ return document.currentScript || (() => {
61
+ const scripts = document.getElementsByTagName('script');
61
62
  return scripts[scripts.length - 1];
62
63
  })();
63
64
  }
@@ -1,7 +1,7 @@
1
1
  // Cache system is a bit outdated and could do with work
2
2
 
3
- module.exports = function(window, options, logger) {
4
- var cache = null;
3
+ export default (window, options, logger) => {
4
+ let cache = null;
5
5
  if (options.env !== 'development') {
6
6
  try {
7
7
  cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;
@@ -10,23 +10,23 @@ module.exports = function(window, options, logger) {
10
10
  return {
11
11
  setCSS: function(path, lastModified, modifyVars, styles) {
12
12
  if (cache) {
13
- logger.info('saving ' + path + ' to cache.');
13
+ logger.info(`saving ${path} to cache.`);
14
14
  try {
15
15
  cache.setItem(path, styles);
16
- cache.setItem(path + ':timestamp', lastModified);
16
+ cache.setItem(`${path}:timestamp`, lastModified);
17
17
  if (modifyVars) {
18
- cache.setItem(path + ':vars', JSON.stringify(modifyVars));
18
+ cache.setItem(`${path}:vars`, JSON.stringify(modifyVars));
19
19
  }
20
20
  } catch (e) {
21
21
  // TODO - could do with adding more robust error handling
22
- logger.error('failed to save "' + path + '" to local storage for caching.');
22
+ logger.error(`failed to save "${path}" to local storage for caching.`);
23
23
  }
24
24
  }
25
25
  },
26
26
  getCSS: function(path, webInfo, modifyVars) {
27
- var css = cache && cache.getItem(path),
28
- timestamp = cache && cache.getItem(path + ':timestamp'),
29
- vars = cache && cache.getItem(path + ':vars');
27
+ const css = cache && cache.getItem(path);
28
+ const timestamp = cache && cache.getItem(`${path}:timestamp`);
29
+ let vars = cache && cache.getItem(`${path}:vars`);
30
30
 
31
31
  modifyVars = modifyVars || {};
32
32
  vars = vars || "{}"; // if not set, treat as the JSON representation of an empty object
@@ -1,22 +1,25 @@
1
- var utils = require('./utils'),
2
- browser = require('./browser');
1
+ import * as utils from './utils';
2
+ import browser from './browser';
3
3
 
4
- module.exports = function(window, less, options) {
4
+ export default (window, less, options) => {
5
5
 
6
6
  function errorHTML(e, rootHref) {
7
- var id = 'less-error-message:' + utils.extractId(rootHref || '');
8
- var template = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>';
9
- var elem = window.document.createElement('div'), timer, content, errors = [];
10
- var filename = e.filename || rootHref;
11
- var filenameNoPath = filename.match(/([^\/]+(\?.*)?)$/)[1];
7
+ const id = `less-error-message:${utils.extractId(rootHref || '')}`;
8
+ const template = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>';
9
+ const elem = window.document.createElement('div');
10
+ let timer;
11
+ let content;
12
+ const errors = [];
13
+ const filename = e.filename || rootHref;
14
+ const filenameNoPath = filename.match(/([^\/]+(\?.*)?)$/)[1];
12
15
 
13
16
  elem.id = id;
14
17
  elem.className = 'less-error-message';
15
18
 
16
- content = '<h3>' + (e.type || 'Syntax') + 'Error: ' + (e.message || 'There is an error in your .less file') +
17
- '</h3>' + '<p>in <a href="' + filename + '">' + filenameNoPath + '</a> ';
19
+ content = `<h3>${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'}` +
20
+ `</h3><p>in <a href="${filename}">${filenameNoPath}</a> `;
18
21
 
19
- var errorline = function (e, i, classname) {
22
+ const errorline = (e, i, classname) => {
20
23
  if (e.extract[i] !== undefined) {
21
24
  errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1))
22
25
  .replace(/\{class\}/, classname)
@@ -28,11 +31,10 @@ module.exports = function(window, less, options) {
28
31
  errorline(e, 0, '');
29
32
  errorline(e, 1, 'line');
30
33
  errorline(e, 2, '');
31
- content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':</p>' +
32
- '<ul>' + errors.join('') + '</ul>';
34
+ content += `on line ${e.line}, column ${e.column + 1}:</p><ul>${errors.join('')}</ul>`;
33
35
  }
34
36
  if (e.stack && (e.extract || options.logLevel >= 4)) {
35
- content += '<br/>Stack Trace</br />' + e.stack.split('\n').slice(1).join('<br/>');
37
+ content += `<br/>Stack Trace</br />${e.stack.split('\n').slice(1).join('<br/>')}`;
36
38
  }
37
39
  elem.innerHTML = content;
38
40
 
@@ -89,9 +91,9 @@ module.exports = function(window, less, options) {
89
91
  ].join(';');
90
92
 
91
93
  if (options.env === 'development') {
92
- timer = setInterval(function () {
93
- var document = window.document,
94
- body = document.body;
94
+ timer = setInterval(() => {
95
+ const document = window.document;
96
+ const body = document.body;
95
97
  if (body) {
96
98
  if (document.getElementById(id)) {
97
99
  body.replaceChild(elem, document.getElementById(id));
@@ -105,7 +107,7 @@ module.exports = function(window, less, options) {
105
107
  }
106
108
 
107
109
  function removeErrorHTML(path) {
108
- var node = window.document.getElementById('less-error-message:' + utils.extractId(path));
110
+ const node = window.document.getElementById(`less-error-message:${utils.extractId(path)}`);
109
111
  if (node) {
110
112
  node.parentNode.removeChild(node);
111
113
  }
@@ -126,13 +128,12 @@ module.exports = function(window, less, options) {
126
128
  }
127
129
 
128
130
  function errorConsole(e, rootHref) {
129
- var template = '{line} {content}';
130
- var filename = e.filename || rootHref;
131
- var errors = [];
132
- var content = (e.type || 'Syntax') + 'Error: ' + (e.message || 'There is an error in your .less file') +
133
- ' in ' + filename;
131
+ const template = '{line} {content}';
132
+ const filename = e.filename || rootHref;
133
+ const errors = [];
134
+ let content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'} in ${filename}`;
134
135
 
135
- var errorline = function (e, i, classname) {
136
+ const errorline = (e, i, classname) => {
136
137
  if (e.extract[i] !== undefined) {
137
138
  errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1))
138
139
  .replace(/\{class\}/, classname)
@@ -144,11 +145,10 @@ module.exports = function(window, less, options) {
144
145
  errorline(e, 0, '');
145
146
  errorline(e, 1, 'line');
146
147
  errorline(e, 2, '');
147
- content += ' on line ' + e.line + ', column ' + (e.column + 1) + ':\n' +
148
- errors.join('\n');
148
+ content += ` on line ${e.line}, column ${e.column + 1}:\n${errors.join('\n')}`;
149
149
  }
150
150
  if (e.stack && (e.extract || options.logLevel >= 4)) {
151
- content += '\nStack Trace\n' + e.stack;
151
+ content += `\nStack Trace\n${e.stack}`;
152
152
  }
153
153
  less.logger.error(content);
154
154
  }
@@ -1,35 +1,32 @@
1
1
  /* global window, XMLHttpRequest */
2
2
 
3
- module.exports = function(options, logger) {
3
+ import AbstractFileManager from '../less/environment/abstract-file-manager.js';
4
4
 
5
- var AbstractFileManager = require('../less/environment/abstract-file-manager.js');
5
+ let options;
6
+ let logger;
7
+ let fileCache = {};
6
8
 
7
- var fileCache = {};
8
-
9
- // TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load
10
- var FileManager = function() {
11
- };
12
-
13
- FileManager.prototype = new AbstractFileManager();
14
-
15
- FileManager.prototype.alwaysMakePathsAbsolute = function alwaysMakePathsAbsolute() {
9
+ // TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load
10
+ class FileManager extends AbstractFileManager {
11
+ alwaysMakePathsAbsolute() {
16
12
  return true;
17
- };
18
- FileManager.prototype.join = function join(basePath, laterPath) {
13
+ }
14
+
15
+ join(basePath, laterPath) {
19
16
  if (!basePath) {
20
17
  return laterPath;
21
18
  }
22
19
  return this.extractUrlParts(laterPath, basePath).path;
23
- };
24
- FileManager.prototype.doXHR = function doXHR(url, type, callback, errback) {
20
+ }
25
21
 
26
- var xhr = new XMLHttpRequest();
27
- var async = options.isFileProtocol ? options.fileAsync : true;
22
+ doXHR(url, type, callback, errback) {
23
+ const xhr = new XMLHttpRequest();
24
+ const async = options.isFileProtocol ? options.fileAsync : true;
28
25
 
29
26
  if (typeof xhr.overrideMimeType === 'function') {
30
27
  xhr.overrideMimeType('text/css');
31
28
  }
32
- logger.debug('XHR: Getting \'' + url + '\'');
29
+ logger.debug(`XHR: Getting '${url}'`);
33
30
  xhr.open('GET', url, async);
34
31
  xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');
35
32
  xhr.send(null);
@@ -50,7 +47,7 @@ module.exports = function(options, logger) {
50
47
  errback(xhr.status, url);
51
48
  }
52
49
  } else if (async) {
53
- xhr.onreadystatechange = function () {
50
+ xhr.onreadystatechange = () => {
54
51
  if (xhr.readyState == 4) {
55
52
  handleResponse(xhr, callback, errback);
56
53
  }
@@ -58,16 +55,17 @@ module.exports = function(options, logger) {
58
55
  } else {
59
56
  handleResponse(xhr, callback, errback);
60
57
  }
61
- };
62
- FileManager.prototype.supports = function(filename, currentDirectory, options, environment) {
58
+ }
59
+
60
+ supports() {
63
61
  return true;
64
- };
62
+ }
65
63
 
66
- FileManager.prototype.clearFileCache = function() {
64
+ clearFileCache() {
67
65
  fileCache = {};
68
- };
66
+ }
69
67
 
70
- FileManager.prototype.loadFile = function loadFile(filename, currentDirectory, options, environment) {
68
+ loadFile(filename, currentDirectory, options, environment) {
71
69
  // TODO: Add prefix support like less-node?
72
70
  // What about multiple paths?
73
71
 
@@ -81,17 +79,17 @@ module.exports = function(options, logger) {
81
79
 
82
80
  // sheet may be set to the stylesheet for the initial load or a collection of properties including
83
81
  // some context variables for imports
84
- var hrefParts = this.extractUrlParts(filename, window.location.href);
85
- var href = hrefParts.url;
86
- var self = this;
82
+ const hrefParts = this.extractUrlParts(filename, window.location.href);
83
+ const href = hrefParts.url;
84
+ const self = this;
87
85
 
88
- return new Promise(function(resolve, reject) {
86
+ return new Promise((resolve, reject) => {
89
87
  if (options.useFileCache && fileCache[href]) {
90
88
  try {
91
- var lessText = fileCache[href];
89
+ const lessText = fileCache[href];
92
90
  return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() }});
93
91
  } catch (e) {
94
- return reject({ filename: href, message: 'Error loading file ' + href + ' error was ' + e.message });
92
+ return reject({ filename: href, message: `Error loading file ${href} error was ${e.message}` });
95
93
  }
96
94
  }
97
95
 
@@ -100,12 +98,16 @@ module.exports = function(options, logger) {
100
98
  fileCache[href] = data;
101
99
 
102
100
  // Use remote copy (re-parse)
103
- resolve({ contents: data, filename: href, webInfo: { lastModified: lastModified }});
101
+ resolve({ contents: data, filename: href, webInfo: { lastModified }});
104
102
  }, function doXHRError(status, url) {
105
- reject({ type: 'File', message: '\'' + url + '\' wasn\'t found (' + status + ')', href: href });
103
+ reject({ type: 'File', message: `'${url}' wasn't found (${status})`, href });
106
104
  });
107
105
  });
108
- };
106
+ }
107
+ }
109
108
 
109
+ export default (opts, log) => {
110
+ options = opts;
111
+ logger = log;
110
112
  return FileManager;
111
- };
113
+ }
@@ -1,7 +1,7 @@
1
- module.exports = function() {
2
1
 
3
- var functionRegistry = require('./../less/functions/function-registry');
2
+ import functionRegistry from './../less/functions/function-registry';
4
3
 
4
+ export default () => {
5
5
  function imageSize() {
6
6
  throw {
7
7
  type: 'Runtime',
@@ -9,7 +9,7 @@ module.exports = function() {
9
9
  };
10
10
  }
11
11
 
12
- var imageFunctions = {
12
+ const imageFunctions = {
13
13
  'image-size': function(filePathNode) {
14
14
  imageSize(this, filePathNode);
15
15
  return -1;
@@ -2,36 +2,43 @@
2
2
  // index.js
3
3
  // Should expose the additional browser functions on to the less object
4
4
  //
5
- var addDataAttr = require('./utils').addDataAttr,
6
- browser = require('./browser');
5
+ import {addDataAttr} from './utils';
6
+ import lessRoot from '../less';
7
+ import browser from './browser';
8
+ import FM from './file-manager';
9
+ import PluginLoader from './plugin-loader';
10
+ import LogListener from './log-listener';
11
+ import ErrorReporting from './error-reporting';
12
+ import Cache from './cache';
13
+ import ImageSize from './image-size';
14
+
15
+ export default (window, options) => {
16
+ const document = window.document;
17
+ const less = lessRoot();
7
18
 
8
- module.exports = function(window, options) {
9
- var document = window.document;
10
- var less = require('../less')();
11
-
12
19
  less.options = options;
13
- var environment = less.environment,
14
- FileManager = require('./file-manager')(options, less.logger),
15
- fileManager = new FileManager();
20
+ const environment = less.environment;
21
+ const FileManager = FM(options, less.logger);
22
+ const fileManager = new FileManager();
16
23
  environment.addFileManager(fileManager);
17
24
  less.FileManager = FileManager;
18
- less.PluginLoader = require('./plugin-loader');
25
+ less.PluginLoader = PluginLoader;
19
26
 
20
- require('./log-listener')(less, options);
21
- var errors = require('./error-reporting')(window, less, options);
22
- var cache = less.cache = options.cache || require('./cache')(window, options, less.logger);
23
- require('./image-size')(less.environment);
27
+ LogListener(less, options);
28
+ const errors = ErrorReporting(window, less, options);
29
+ const cache = less.cache = options.cache || Cache(window, options, less.logger);
30
+ ImageSize(less.environment);
24
31
 
25
32
  // Setup user functions - Deprecate?
26
33
  if (options.functions) {
27
34
  less.functions.functionRegistry.addMultiple(options.functions);
28
35
  }
29
36
 
30
- var typePattern = /^text\/(x-)?less$/;
37
+ const typePattern = /^text\/(x-)?less$/;
31
38
 
32
39
  function clone(obj) {
33
- var cloned = {};
34
- for (var prop in obj) {
40
+ const cloned = {};
41
+ for (const prop in obj) {
35
42
  if (obj.hasOwnProperty(prop)) {
36
43
  cloned[prop] = obj[prop];
37
44
  }
@@ -41,47 +48,47 @@ module.exports = function(window, options) {
41
48
 
42
49
  // only really needed for phantom
43
50
  function bind(func, thisArg) {
44
- var curryArgs = Array.prototype.slice.call(arguments, 2);
51
+ const curryArgs = Array.prototype.slice.call(arguments, 2);
45
52
  return function() {
46
- var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
53
+ const args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
47
54
  return func.apply(thisArg, args);
48
55
  };
49
56
  }
50
57
 
51
58
  function loadStyles(modifyVars) {
52
- var styles = document.getElementsByTagName('style'),
53
- style;
59
+ const styles = document.getElementsByTagName('style');
60
+ let style;
54
61
 
55
- for (var i = 0; i < styles.length; i++) {
62
+ for (let i = 0; i < styles.length; i++) {
56
63
  style = styles[i];
57
64
  if (style.type.match(typePattern)) {
58
- var instanceOptions = clone(options);
65
+ const instanceOptions = clone(options);
59
66
  instanceOptions.modifyVars = modifyVars;
60
- var lessText = style.innerHTML || '';
67
+ const lessText = style.innerHTML || '';
61
68
  instanceOptions.filename = document.location.href.replace(/#.*$/, '');
62
69
 
63
70
  /* jshint loopfunc:true */
64
71
  // use closure to store current style
65
72
  less.render(lessText, instanceOptions,
66
- bind(function(style, e, result) {
67
- if (e) {
68
- errors.add(e, 'inline');
73
+ bind((style, e, result) => {
74
+ if (e) {
75
+ errors.add(e, 'inline');
76
+ } else {
77
+ style.type = 'text/css';
78
+ if (style.styleSheet) {
79
+ style.styleSheet.cssText = result.css;
69
80
  } else {
70
- style.type = 'text/css';
71
- if (style.styleSheet) {
72
- style.styleSheet.cssText = result.css;
73
- } else {
74
- style.innerHTML = result.css;
75
- }
81
+ style.innerHTML = result.css;
76
82
  }
77
- }, null, style));
83
+ }
84
+ }, null, style));
78
85
  }
79
86
  }
80
87
  }
81
88
 
82
89
  function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {
83
90
 
84
- var instanceOptions = clone(options);
91
+ const instanceOptions = clone(options);
85
92
  addDataAttr(instanceOptions, sheet);
86
93
  instanceOptions.mime = sheet.type;
87
94
 
@@ -90,12 +97,11 @@ module.exports = function(window, options) {
90
97
  }
91
98
 
92
99
  function loadInitialFileCallback(loadedFile) {
100
+ const data = loadedFile.contents;
101
+ const path = loadedFile.filename;
102
+ const webInfo = loadedFile.webInfo;
93
103
 
94
- var data = loadedFile.contents,
95
- path = loadedFile.filename,
96
- webInfo = loadedFile.webInfo;
97
-
98
- var newFileInfo = {
104
+ const newFileInfo = {
99
105
  currentDirectory: fileManager.getPath(path),
100
106
  filename: path,
101
107
  rootFilename: path,
@@ -108,7 +114,7 @@ module.exports = function(window, options) {
108
114
  if (webInfo) {
109
115
  webInfo.remaining = remaining;
110
116
 
111
- var css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);
117
+ const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);
112
118
  if (!reload && css) {
113
119
  webInfo.local = true;
114
120
  callback(null, css, data, sheet, webInfo, path);
@@ -121,7 +127,7 @@ module.exports = function(window, options) {
121
127
  errors.remove(path);
122
128
 
123
129
  instanceOptions.rootFileInfo = newFileInfo;
124
- less.render(data, instanceOptions, function(e, result) {
130
+ less.render(data, instanceOptions, (e, result) => {
125
131
  if (e) {
126
132
  e.href = path;
127
133
  callback(e);
@@ -133,9 +139,9 @@ module.exports = function(window, options) {
133
139
  }
134
140
 
135
141
  fileManager.loadFile(sheet.href, null, instanceOptions, environment)
136
- .then(function(loadedFile) {
142
+ .then(loadedFile => {
137
143
  loadInitialFileCallback(loadedFile);
138
- }).catch(function(err) {
144
+ }).catch(err => {
139
145
  console.log(err);
140
146
  callback(err);
141
147
  });
@@ -143,17 +149,17 @@ module.exports = function(window, options) {
143
149
  }
144
150
 
145
151
  function loadStyleSheets(callback, reload, modifyVars) {
146
- for (var i = 0; i < less.sheets.length; i++) {
152
+ for (let i = 0; i < less.sheets.length; i++) {
147
153
  loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);
148
154
  }
149
155
  }
150
156
 
151
157
  function initRunningMode() {
152
158
  if (less.env === 'development') {
153
- less.watchTimer = setInterval(function () {
159
+ less.watchTimer = setInterval(() => {
154
160
  if (less.watchMode) {
155
161
  fileManager.clearFileCache();
156
- loadStyleSheets(function (e, css, _, sheet, webInfo) {
162
+ loadStyleSheets((e, css, _, sheet, webInfo) => {
157
163
  if (e) {
158
164
  errors.add(e, e.href || sheet.href);
159
165
  } else if (css) {
@@ -183,11 +189,11 @@ module.exports = function(window, options) {
183
189
  // Synchronously get all <link> tags with the 'rel' attribute set to
184
190
  // "stylesheet/less".
185
191
  //
186
- less.registerStylesheetsImmediately = function() {
187
- var links = document.getElementsByTagName('link');
192
+ less.registerStylesheetsImmediately = () => {
193
+ const links = document.getElementsByTagName('link');
188
194
  less.sheets = [];
189
195
 
190
- for (var i = 0; i < links.length; i++) {
196
+ for (let i = 0; i < links.length; i++) {
191
197
  if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&
192
198
  (links[i].type.match(typePattern)))) {
193
199
  less.sheets.push(links[i]);
@@ -199,27 +205,26 @@ module.exports = function(window, options) {
199
205
  // Asynchronously get all <link> tags with the 'rel' attribute set to
200
206
  // "stylesheet/less", returning a Promise.
201
207
  //
202
- less.registerStylesheets = function() {
203
- return new Promise(function(resolve, reject) {
204
- less.registerStylesheetsImmediately();
205
- resolve();
206
- });
207
- };
208
+ less.registerStylesheets = () => new Promise((resolve, reject) => {
209
+ less.registerStylesheetsImmediately();
210
+ resolve();
211
+ });
208
212
 
209
213
  //
210
214
  // With this function, it's possible to alter variables and re-render
211
215
  // CSS without reloading less-files
212
216
  //
213
- less.modifyVars = function(record) {
214
- return less.refresh(true, record, false);
215
- };
217
+ less.modifyVars = record => less.refresh(true, record, false);
216
218
 
217
- less.refresh = function (reload, modifyVars, clearFileCache) {
219
+ less.refresh = (reload, modifyVars, clearFileCache) => {
218
220
  if ((reload || clearFileCache) && clearFileCache !== false) {
219
221
  fileManager.clearFileCache();
220
222
  }
221
- return new Promise(function (resolve, reject) {
222
- var startTime, endTime, totalMilliseconds, remainingSheets;
223
+ return new Promise((resolve, reject) => {
224
+ let startTime;
225
+ let endTime;
226
+ let totalMilliseconds;
227
+ let remainingSheets;
223
228
  startTime = endTime = new Date();
224
229
 
225
230
  // Set counter for remaining unprocessed sheets
@@ -231,27 +236,27 @@ module.exports = function(window, options) {
231
236
  totalMilliseconds = endTime - startTime;
232
237
  less.logger.info('Less has finished and no sheets were loaded.');
233
238
  resolve({
234
- startTime: startTime,
235
- endTime: endTime,
236
- totalMilliseconds: totalMilliseconds,
239
+ startTime,
240
+ endTime,
241
+ totalMilliseconds,
237
242
  sheets: less.sheets.length
238
243
  });
239
244
 
240
245
  } else {
241
246
  // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array
242
- loadStyleSheets(function (e, css, _, sheet, webInfo) {
247
+ loadStyleSheets((e, css, _, sheet, webInfo) => {
243
248
  if (e) {
244
249
  errors.add(e, e.href || sheet.href);
245
250
  reject(e);
246
251
  return;
247
252
  }
248
253
  if (webInfo.local) {
249
- less.logger.info('Loading ' + sheet.href + ' from cache.');
254
+ less.logger.info(`Loading ${sheet.href} from cache.`);
250
255
  } else {
251
- less.logger.info('Rendered ' + sheet.href + ' successfully.');
256
+ less.logger.info(`Rendered ${sheet.href} successfully.`);
252
257
  }
253
258
  browser.createCSS(window.document, css, sheet);
254
- less.logger.info('CSS for ' + sheet.href + ' generated in ' + (new Date() - endTime) + 'ms');
259
+ less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);
255
260
 
256
261
  // Count completed sheet
257
262
  remainingSheets--;
@@ -259,11 +264,11 @@ module.exports = function(window, options) {
259
264
  // Check if the last remaining sheet was processed and then call the promise
260
265
  if (remainingSheets === 0) {
261
266
  totalMilliseconds = new Date() - startTime;
262
- less.logger.info('Less has finished. CSS generated in ' + totalMilliseconds + 'ms');
267
+ less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);
263
268
  resolve({
264
- startTime: startTime,
265
- endTime: endTime,
266
- totalMilliseconds: totalMilliseconds,
269
+ startTime,
270
+ endTime,
271
+ totalMilliseconds,
267
272
  sheets: less.sheets.length
268
273
  });
269
274
  }