less 4.5.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/bin/lessc +37 -23
  2. package/dist/less.js +14497 -11745
  3. package/dist/less.min.js +4 -4
  4. package/dist/less.min.js.map +1 -1
  5. package/lib/less/constants.js +5 -7
  6. package/lib/less/contexts.js +71 -55
  7. package/lib/less/data/colors.js +150 -153
  8. package/lib/less/data/index.js +4 -7
  9. package/lib/less/data/unit-conversions.js +2 -5
  10. package/lib/less/default-options.js +36 -26
  11. package/lib/less/deprecation.js +67 -0
  12. package/lib/less/environment/abstract-file-manager.js +62 -50
  13. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  14. package/lib/less/environment/environment-api.ts +21 -0
  15. package/lib/less/environment/environment.js +34 -30
  16. package/lib/less/environment/file-manager-api.ts +77 -0
  17. package/lib/less/functions/boolean.js +13 -13
  18. package/lib/less/functions/color-blending.js +39 -31
  19. package/lib/less/functions/color.js +153 -137
  20. package/lib/less/functions/data-uri.js +73 -64
  21. package/lib/less/functions/default.js +9 -11
  22. package/lib/less/functions/function-caller.js +35 -34
  23. package/lib/less/functions/function-registry.js +16 -17
  24. package/lib/less/functions/index.js +33 -33
  25. package/lib/less/functions/list.js +88 -75
  26. package/lib/less/functions/math-helper.js +8 -11
  27. package/lib/less/functions/math.js +21 -21
  28. package/lib/less/functions/number.js +42 -53
  29. package/lib/less/functions/string.js +18 -22
  30. package/lib/less/functions/style.js +21 -20
  31. package/lib/less/functions/svg.js +83 -82
  32. package/lib/less/functions/types.js +28 -32
  33. package/lib/less/import-manager.js +73 -64
  34. package/lib/less/index.js +65 -65
  35. package/lib/less/less-error.js +63 -45
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +52 -53
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +151 -113
  40. package/lib/less/parser/parser.js +864 -658
  41. package/lib/less/plugin-manager.js +57 -46
  42. package/lib/less/render.js +17 -23
  43. package/lib/less/source-map-builder.js +52 -43
  44. package/lib/less/source-map-output.js +56 -43
  45. package/lib/less/transform-tree.js +40 -30
  46. package/lib/less/tree/anonymous.js +52 -28
  47. package/lib/less/tree/assignment.js +44 -27
  48. package/lib/less/tree/atrule-syntax.js +4 -6
  49. package/lib/less/tree/atrule.js +247 -140
  50. package/lib/less/tree/attribute.js +55 -24
  51. package/lib/less/tree/call.js +70 -42
  52. package/lib/less/tree/color.js +194 -145
  53. package/lib/less/tree/combinator.js +31 -21
  54. package/lib/less/tree/comment.js +44 -23
  55. package/lib/less/tree/condition.js +61 -36
  56. package/lib/less/tree/container.js +90 -34
  57. package/lib/less/tree/debug-info.js +28 -15
  58. package/lib/less/tree/declaration.js +97 -52
  59. package/lib/less/tree/detached-ruleset.js +42 -24
  60. package/lib/less/tree/dimension.js +127 -71
  61. package/lib/less/tree/element.js +82 -52
  62. package/lib/less/tree/expression.js +75 -50
  63. package/lib/less/tree/extend.js +71 -42
  64. package/lib/less/tree/import.js +184 -110
  65. package/lib/less/tree/index.js +52 -81
  66. package/lib/less/tree/javascript.js +43 -32
  67. package/lib/less/tree/js-eval-node.js +46 -32
  68. package/lib/less/tree/keyword.js +25 -17
  69. package/lib/less/tree/media.js +77 -35
  70. package/lib/less/tree/merge-rules.js +47 -0
  71. package/lib/less/tree/mixin-call.js +181 -98
  72. package/lib/less/tree/mixin-definition.js +211 -117
  73. package/lib/less/tree/namespace-value.js +63 -44
  74. package/lib/less/tree/negative.js +34 -21
  75. package/lib/less/tree/nested-at-rule.js +149 -66
  76. package/lib/less/tree/node.js +225 -90
  77. package/lib/less/tree/operation.js +59 -34
  78. package/lib/less/tree/paren.js +34 -17
  79. package/lib/less/tree/property.js +66 -35
  80. package/lib/less/tree/query-in-parens.js +52 -60
  81. package/lib/less/tree/quoted.js +93 -44
  82. package/lib/less/tree/ruleset.js +632 -318
  83. package/lib/less/tree/selector.js +151 -77
  84. package/lib/less/tree/unicode-descriptor.js +14 -12
  85. package/lib/less/tree/unit.js +111 -63
  86. package/lib/less/tree/url.js +62 -38
  87. package/lib/less/tree/value.js +50 -34
  88. package/lib/less/tree/variable-call.js +47 -30
  89. package/lib/less/tree/variable.js +53 -31
  90. package/lib/less/utils.js +44 -47
  91. package/lib/less/visitors/extend-visitor.js +233 -172
  92. package/lib/less/visitors/import-sequencer.js +24 -24
  93. package/lib/less/visitors/import-visitor.js +62 -52
  94. package/lib/less/visitors/index.js +14 -17
  95. package/lib/less/visitors/join-selector-visitor.js +40 -37
  96. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  97. package/lib/less/visitors/to-css-visitor.js +135 -128
  98. package/lib/less/visitors/visitor.js +60 -45
  99. package/lib/less-browser/add-default-options.js +23 -13
  100. package/lib/less-browser/bootstrap.js +23 -17
  101. package/lib/less-browser/browser.js +24 -21
  102. package/lib/less-browser/cache.js +17 -19
  103. package/lib/less-browser/error-reporting.js +52 -44
  104. package/lib/less-browser/file-manager.js +52 -42
  105. package/lib/less-browser/image-size.js +12 -12
  106. package/lib/less-browser/index.js +131 -105
  107. package/lib/less-browser/log-listener.js +30 -31
  108. package/lib/less-browser/plugin-loader.js +10 -10
  109. package/lib/less-browser/utils.js +19 -21
  110. package/lib/less-node/environment.js +32 -8
  111. package/lib/less-node/file-manager.js +62 -45
  112. package/lib/less-node/fs.js +11 -8
  113. package/lib/less-node/image-size.js +40 -31
  114. package/lib/less-node/index.js +28 -19
  115. package/lib/less-node/lessc-helper.js +20 -21
  116. package/lib/less-node/plugin-loader.js +35 -27
  117. package/lib/less-node/url-file-manager.js +33 -31
  118. package/package.json +25 -18
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -403
  122. package/bower.json +0 -22
  123. package/lib/less/constants.js.map +0 -1
  124. package/lib/less/contexts.js.map +0 -1
  125. package/lib/less/data/colors.js.map +0 -1
  126. package/lib/less/data/index.js.map +0 -1
  127. package/lib/less/data/unit-conversions.js.map +0 -1
  128. package/lib/less/default-options.js.map +0 -1
  129. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  130. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  131. package/lib/less/environment/environment-api.js +0 -3
  132. package/lib/less/environment/environment-api.js.map +0 -1
  133. package/lib/less/environment/environment.js.map +0 -1
  134. package/lib/less/environment/file-manager-api.js +0 -3
  135. package/lib/less/environment/file-manager-api.js.map +0 -1
  136. package/lib/less/functions/boolean.js.map +0 -1
  137. package/lib/less/functions/color-blending.js.map +0 -1
  138. package/lib/less/functions/color.js.map +0 -1
  139. package/lib/less/functions/data-uri.js.map +0 -1
  140. package/lib/less/functions/default.js.map +0 -1
  141. package/lib/less/functions/function-caller.js.map +0 -1
  142. package/lib/less/functions/function-registry.js.map +0 -1
  143. package/lib/less/functions/index.js.map +0 -1
  144. package/lib/less/functions/list.js.map +0 -1
  145. package/lib/less/functions/math-helper.js.map +0 -1
  146. package/lib/less/functions/math.js.map +0 -1
  147. package/lib/less/functions/number.js.map +0 -1
  148. package/lib/less/functions/string.js.map +0 -1
  149. package/lib/less/functions/style.js.map +0 -1
  150. package/lib/less/functions/svg.js.map +0 -1
  151. package/lib/less/functions/types.js.map +0 -1
  152. package/lib/less/import-manager.js.map +0 -1
  153. package/lib/less/index.js.map +0 -1
  154. package/lib/less/less-error.js.map +0 -1
  155. package/lib/less/logger.js.map +0 -1
  156. package/lib/less/parse-tree.js.map +0 -1
  157. package/lib/less/parse.js.map +0 -1
  158. package/lib/less/parser/parser-input.js.map +0 -1
  159. package/lib/less/parser/parser.js.map +0 -1
  160. package/lib/less/plugin-manager.js.map +0 -1
  161. package/lib/less/render.js.map +0 -1
  162. package/lib/less/source-map-builder.js.map +0 -1
  163. package/lib/less/source-map-output.js.map +0 -1
  164. package/lib/less/transform-tree.js.map +0 -1
  165. package/lib/less/tree/anonymous.js.map +0 -1
  166. package/lib/less/tree/assignment.js.map +0 -1
  167. package/lib/less/tree/atrule-syntax.js.map +0 -1
  168. package/lib/less/tree/atrule.js.map +0 -1
  169. package/lib/less/tree/attribute.js.map +0 -1
  170. package/lib/less/tree/call.js.map +0 -1
  171. package/lib/less/tree/color.js.map +0 -1
  172. package/lib/less/tree/combinator.js.map +0 -1
  173. package/lib/less/tree/comment.js.map +0 -1
  174. package/lib/less/tree/condition.js.map +0 -1
  175. package/lib/less/tree/container.js.map +0 -1
  176. package/lib/less/tree/debug-info.js.map +0 -1
  177. package/lib/less/tree/declaration.js.map +0 -1
  178. package/lib/less/tree/detached-ruleset.js.map +0 -1
  179. package/lib/less/tree/dimension.js.map +0 -1
  180. package/lib/less/tree/element.js.map +0 -1
  181. package/lib/less/tree/expression.js.map +0 -1
  182. package/lib/less/tree/extend.js.map +0 -1
  183. package/lib/less/tree/import.js.map +0 -1
  184. package/lib/less/tree/index.js.map +0 -1
  185. package/lib/less/tree/javascript.js.map +0 -1
  186. package/lib/less/tree/js-eval-node.js.map +0 -1
  187. package/lib/less/tree/keyword.js.map +0 -1
  188. package/lib/less/tree/media.js.map +0 -1
  189. package/lib/less/tree/mixin-call.js.map +0 -1
  190. package/lib/less/tree/mixin-definition.js.map +0 -1
  191. package/lib/less/tree/namespace-value.js.map +0 -1
  192. package/lib/less/tree/negative.js.map +0 -1
  193. package/lib/less/tree/nested-at-rule.js.map +0 -1
  194. package/lib/less/tree/node.js.map +0 -1
  195. package/lib/less/tree/operation.js.map +0 -1
  196. package/lib/less/tree/paren.js.map +0 -1
  197. package/lib/less/tree/property.js.map +0 -1
  198. package/lib/less/tree/query-in-parens.js.map +0 -1
  199. package/lib/less/tree/quoted.js.map +0 -1
  200. package/lib/less/tree/ruleset.js.map +0 -1
  201. package/lib/less/tree/selector.js.map +0 -1
  202. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  203. package/lib/less/tree/unit.js.map +0 -1
  204. package/lib/less/tree/url.js.map +0 -1
  205. package/lib/less/tree/value.js.map +0 -1
  206. package/lib/less/tree/variable-call.js.map +0 -1
  207. package/lib/less/tree/variable.js.map +0 -1
  208. package/lib/less/utils.js.map +0 -1
  209. package/lib/less/visitors/extend-visitor.js.map +0 -1
  210. package/lib/less/visitors/import-sequencer.js.map +0 -1
  211. package/lib/less/visitors/import-visitor.js.map +0 -1
  212. package/lib/less/visitors/index.js.map +0 -1
  213. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  214. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  215. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  216. package/lib/less/visitors/visitor.js.map +0 -1
  217. package/lib/less-browser/add-default-options.js.map +0 -1
  218. package/lib/less-browser/bootstrap.js.map +0 -1
  219. package/lib/less-browser/browser.js.map +0 -1
  220. package/lib/less-browser/cache.js.map +0 -1
  221. package/lib/less-browser/error-reporting.js.map +0 -1
  222. package/lib/less-browser/file-manager.js.map +0 -1
  223. package/lib/less-browser/image-size.js.map +0 -1
  224. package/lib/less-browser/index.js.map +0 -1
  225. package/lib/less-browser/log-listener.js.map +0 -1
  226. package/lib/less-browser/plugin-loader.js.map +0 -1
  227. package/lib/less-browser/utils.js.map +0 -1
  228. package/lib/less-node/environment.js.map +0 -1
  229. package/lib/less-node/file-manager.js.map +0 -1
  230. package/lib/less-node/fs.js.map +0 -1
  231. package/lib/less-node/image-size.js.map +0 -1
  232. package/lib/less-node/index.js.map +0 -1
  233. package/lib/less-node/lessc-helper.js.map +0 -1
  234. package/lib/less-node/plugin-loader.js.map +0 -1
  235. package/lib/less-node/url-file-manager.js.map +0 -1
  236. package/scripts/coverage-lines.js +0 -207
  237. package/scripts/coverage-report.js +0 -158
  238. package/scripts/postinstall.js +0 -61
  239. package/test/.eslintrc.json +0 -9
  240. package/test/README.md +0 -3
  241. package/test/browser/common.js +0 -251
  242. package/test/browser/css/global-vars/simple.css +0 -3
  243. package/test/browser/css/modify-vars/simple.css +0 -8
  244. package/test/browser/css/plugin/plugin.css +0 -3
  245. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  246. package/test/browser/css/relative-urls/urls.css +0 -36
  247. package/test/browser/css/rewrite-urls/urls.css +0 -36
  248. package/test/browser/css/rootpath/urls.css +0 -35
  249. package/test/browser/css/rootpath-relative/urls.css +0 -35
  250. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  251. package/test/browser/css/urls.css +0 -54
  252. package/test/browser/generator/benchmark.config.js +0 -50
  253. package/test/browser/generator/generate.js +0 -78
  254. package/test/browser/generator/runner.config.js +0 -184
  255. package/test/browser/generator/runner.js +0 -2
  256. package/test/browser/generator/template.js +0 -104
  257. package/test/browser/generator/utils.js +0 -14
  258. package/test/browser/less/console-errors/test-error.less +0 -3
  259. package/test/browser/less/console-errors/test-error.txt +0 -2
  260. package/test/browser/less/errors/image-height-error.less +0 -3
  261. package/test/browser/less/errors/image-height-error.txt +0 -4
  262. package/test/browser/less/errors/image-size-error.less +0 -3
  263. package/test/browser/less/errors/image-size-error.txt +0 -4
  264. package/test/browser/less/errors/image-width-error.less +0 -3
  265. package/test/browser/less/errors/image-width-error.txt +0 -4
  266. package/test/browser/less/global-vars/simple.less +0 -3
  267. package/test/browser/less/imports/urls.less +0 -4
  268. package/test/browser/less/imports/urls2.less +0 -4
  269. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  270. package/test/browser/less/modify-vars/simple.less +0 -8
  271. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  272. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  273. package/test/browser/less/plugin/plugin.js +0 -4
  274. package/test/browser/less/plugin/plugin.less +0 -4
  275. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  276. package/test/browser/less/relative-urls/urls.less +0 -34
  277. package/test/browser/less/rewrite-urls/urls.less +0 -34
  278. package/test/browser/less/rootpath/urls.less +0 -33
  279. package/test/browser/less/rootpath-relative/urls.less +0 -33
  280. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  281. package/test/browser/less/urls.less +0 -62
  282. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  283. package/test/browser/runner-VisitorPlugin.js +0 -3
  284. package/test/browser/runner-browser-options.js +0 -51
  285. package/test/browser/runner-browser-spec.js +0 -12
  286. package/test/browser/runner-console-errors.js +0 -5
  287. package/test/browser/runner-errors-options.js +0 -6
  288. package/test/browser/runner-errors-spec.js +0 -3
  289. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  290. package/test/browser/runner-filemanagerPlugin.js +0 -3
  291. package/test/browser/runner-global-vars-options.js +0 -7
  292. package/test/browser/runner-global-vars-spec.js +0 -3
  293. package/test/browser/runner-main-options.js +0 -17
  294. package/test/browser/runner-main-spec.js +0 -7
  295. package/test/browser/runner-modify-vars-options.js +0 -5
  296. package/test/browser/runner-modify-vars-spec.js +0 -33
  297. package/test/browser/runner-no-js-errors-options.js +0 -4
  298. package/test/browser/runner-no-js-errors-spec.js +0 -3
  299. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin.js +0 -3
  301. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin.js +0 -3
  303. package/test/browser/runner-production-options.js +0 -3
  304. package/test/browser/runner-production-spec.js +0 -5
  305. package/test/browser/runner-relative-urls-options.js +0 -3
  306. package/test/browser/runner-relative-urls-spec.js +0 -3
  307. package/test/browser/runner-rewrite-urls-options.js +0 -3
  308. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  309. package/test/browser/runner-rootpath-options.js +0 -3
  310. package/test/browser/runner-rootpath-relative-options.js +0 -4
  311. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  312. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  313. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  314. package/test/browser/runner-rootpath-spec.js +0 -3
  315. package/test/browser/runner-strict-units-options.js +0 -5
  316. package/test/browser/runner-strict-units-spec.js +0 -3
  317. package/test/index.js +0 -307
  318. package/test/less-test.js +0 -984
  319. package/test/mocha-playwright/runner.js +0 -210
  320. package/test/modify-vars.js +0 -28
  321. package/test/plugins/filemanager/index.js +0 -19
  322. package/test/plugins/postprocess/index.js +0 -14
  323. package/test/plugins/preprocess/index.js +0 -19
  324. package/test/plugins/visitor/index.js +0 -24
  325. package/test/sourcemaps/basic.json +0 -1
  326. package/test/sourcemaps/comprehensive.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  330. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  331. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-url.json +0 -1
  333. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  334. package/test/sourcemaps-variable-selector/basic.json +0 -1
  335. package/test/test-es6.ts +0 -17
  336. package/test.less +0 -1
  337. package/tsconfig.build.json +0 -7
  338. package/tsconfig.json +0 -21
@@ -1,34 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var ImportSequencer = /** @class */ (function () {
4
- function ImportSequencer(onSequencerEmpty) {
1
+ class ImportSequencer {
2
+ constructor(onSequencerEmpty) {
5
3
  this.imports = [];
6
4
  this.variableImports = [];
7
5
  this._onSequencerEmpty = onSequencerEmpty;
8
6
  this._currentDepth = 0;
9
7
  }
10
- ImportSequencer.prototype.addImport = function (callback) {
11
- var importSequencer = this, importItem = {
12
- callback: callback,
13
- args: null,
14
- isReady: false
15
- };
8
+
9
+ addImport(callback) {
10
+ const importSequencer = this,
11
+ importItem = {
12
+ callback,
13
+ args: null,
14
+ isReady: false
15
+ };
16
16
  this.imports.push(importItem);
17
- return function () {
17
+ return function() {
18
18
  importItem.args = Array.prototype.slice.call(arguments, 0);
19
19
  importItem.isReady = true;
20
20
  importSequencer.tryRun();
21
21
  };
22
- };
23
- ImportSequencer.prototype.addVariableImport = function (callback) {
22
+ }
23
+
24
+ addVariableImport(callback) {
24
25
  this.variableImports.push(callback);
25
- };
26
- ImportSequencer.prototype.tryRun = function () {
26
+ }
27
+
28
+ tryRun() {
27
29
  this._currentDepth++;
28
30
  try {
29
31
  while (true) {
30
32
  while (this.imports.length > 0) {
31
- var importItem = this.imports[0];
33
+ const importItem = this.imports[0];
32
34
  if (!importItem.isReady) {
33
35
  return;
34
36
  }
@@ -38,19 +40,17 @@ var ImportSequencer = /** @class */ (function () {
38
40
  if (this.variableImports.length === 0) {
39
41
  break;
40
42
  }
41
- var variableImport = this.variableImports[0];
43
+ const variableImport = this.variableImports[0];
42
44
  this.variableImports = this.variableImports.slice(1);
43
45
  variableImport();
44
46
  }
45
- }
46
- finally {
47
+ } finally {
47
48
  this._currentDepth--;
48
49
  }
49
50
  if (this._currentDepth === 0 && this._onSequencerEmpty) {
50
51
  this._onSequencerEmpty();
51
52
  }
52
- };
53
- return ImportSequencer;
54
- }());
55
- exports.default = ImportSequencer;
56
- //# sourceMappingURL=import-sequencer.js.map
53
+ }
54
+ }
55
+
56
+ export default ImportSequencer;
@@ -1,24 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
1
  /* eslint-disable no-unused-vars */
5
2
  /**
6
3
  * @todo - Remove unused when JSDoc types are added for visitor methods
7
4
  */
8
- var contexts_1 = tslib_1.__importDefault(require("../contexts"));
9
- var visitor_1 = tslib_1.__importDefault(require("./visitor"));
10
- var import_sequencer_1 = tslib_1.__importDefault(require("./import-sequencer"));
11
- var utils = tslib_1.__importStar(require("../utils"));
12
- var ImportVisitor = function (importer, finish) {
13
- this._visitor = new visitor_1.default(this);
5
+ import contexts from '../contexts.js';
6
+ import Visitor from './visitor.js';
7
+ import ImportSequencer from './import-sequencer.js';
8
+ import * as utils from '../utils.js';
9
+
10
+ const ImportVisitor = function(importer, finish) {
11
+
12
+ this._visitor = new Visitor(this);
14
13
  this._importer = importer;
15
14
  this._finish = finish;
16
- this.context = new contexts_1.default.Eval();
15
+ this.context = new contexts.Eval();
17
16
  this.importCount = 0;
18
17
  this.onceFileDetectionMap = {};
19
18
  this.recursionDetector = {};
20
- this._sequencer = new import_sequencer_1.default(this._onSequencerEmpty.bind(this));
19
+ this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));
21
20
  };
21
+
22
22
  ImportVisitor.prototype = {
23
23
  isReplacing: false,
24
24
  run: function (root) {
@@ -29,62 +29,68 @@ ImportVisitor.prototype = {
29
29
  catch (e) {
30
30
  this.error = e;
31
31
  }
32
+
32
33
  this.isFinished = true;
33
34
  this._sequencer.tryRun();
34
35
  },
35
- _onSequencerEmpty: function () {
36
+ _onSequencerEmpty: function() {
36
37
  if (!this.isFinished) {
37
38
  return;
38
39
  }
39
40
  this._finish(this.error);
40
41
  },
41
42
  visitImport: function (importNode, visitArgs) {
42
- var inlineCSS = importNode.options.inline;
43
+ const inlineCSS = importNode.options.inline;
44
+
43
45
  if (!importNode.css || inlineCSS) {
44
- var context = new contexts_1.default.Eval(this.context, utils.copyArray(this.context.frames));
45
- var importParent = context.frames[0];
46
+
47
+ const context = new contexts.Eval(this.context, utils.copyArray(this.context.frames));
48
+ const importParent = context.frames[0];
49
+
46
50
  this.importCount++;
47
51
  if (importNode.isVariableImport()) {
48
52
  this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));
49
- }
50
- else {
53
+ } else {
51
54
  this.processImportNode(importNode, context, importParent);
52
55
  }
53
56
  }
54
57
  visitArgs.visitDeeper = false;
55
58
  },
56
- processImportNode: function (importNode, context, importParent) {
57
- var evaldImportNode;
58
- var inlineCSS = importNode.options.inline;
59
+ processImportNode: function(importNode, context, importParent) {
60
+ let evaldImportNode;
61
+ const inlineCSS = importNode.options.inline;
62
+
59
63
  try {
60
64
  evaldImportNode = importNode.evalForImport(context);
61
- }
62
- catch (e) {
63
- if (!e.filename) {
64
- e.index = importNode.getIndex();
65
- e.filename = importNode.fileInfo().filename;
66
- }
65
+ } catch (e) {
66
+ if (!e.filename) { e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename; }
67
67
  // attempt to eval properly and treat as css
68
68
  importNode.css = true;
69
69
  // if that fails, this error will be thrown
70
70
  importNode.error = e;
71
71
  }
72
+
72
73
  if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {
74
+
73
75
  if (evaldImportNode.options.multiple) {
74
76
  context.importMultiple = true;
75
77
  }
78
+
76
79
  // try appending if we haven't determined if it is css or not
77
- var tryAppendLessExtension = evaldImportNode.css === undefined;
78
- for (var i = 0; i < importParent.rules.length; i++) {
80
+ const tryAppendLessExtension = evaldImportNode.css === undefined;
81
+
82
+ for (let i = 0; i < importParent.rules.length; i++) {
79
83
  if (importParent.rules[i] === importNode) {
80
84
  importParent.rules[i] = evaldImportNode;
81
85
  break;
82
86
  }
83
87
  }
84
- var onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);
85
- this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(), evaldImportNode.options, sequencedOnImported);
86
- }
87
- else {
88
+
89
+ const onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);
90
+
91
+ this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(),
92
+ evaldImportNode.options, sequencedOnImported);
93
+ } else {
88
94
  this.importCount--;
89
95
  if (this.isFinished) {
90
96
  this._sequencer.tryRun();
@@ -94,18 +100,22 @@ ImportVisitor.prototype = {
94
100
  onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {
95
101
  if (e) {
96
102
  if (!e.filename) {
97
- e.index = importNode.getIndex();
98
- e.filename = importNode.fileInfo().filename;
103
+ e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename;
99
104
  }
100
105
  this.error = e;
101
106
  }
102
- var importVisitor = this, inlineCSS = importNode.options.inline, isPlugin = importNode.options.isPlugin, isOptional = importNode.options.optional, duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;
107
+
108
+ const importVisitor = this,
109
+ inlineCSS = importNode.options.inline,
110
+ isPlugin = importNode.options.isPlugin,
111
+ isOptional = importNode.options.optional,
112
+ duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;
113
+
103
114
  if (!context.importMultiple) {
104
115
  if (duplicateImport) {
105
116
  importNode.skip = true;
106
- }
107
- else {
108
- importNode.skip = function () {
117
+ } else {
118
+ importNode.skip = function() {
109
119
  if (fullPath in importVisitor.onceFileDetectionMap) {
110
120
  return true;
111
121
  }
@@ -114,26 +124,31 @@ ImportVisitor.prototype = {
114
124
  };
115
125
  }
116
126
  }
127
+
117
128
  if (!fullPath && isOptional) {
118
129
  importNode.skip = true;
119
130
  }
131
+
120
132
  if (root) {
121
133
  importNode.root = root;
122
134
  importNode.importedFilename = fullPath;
135
+
123
136
  if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {
124
137
  importVisitor.recursionDetector[fullPath] = true;
125
- var oldContext = this.context;
138
+
139
+ const oldContext = this.context;
126
140
  this.context = context;
127
141
  try {
128
142
  this._visitor.visit(root);
129
- }
130
- catch (e) {
143
+ } catch (e) {
131
144
  this.error = e;
132
145
  }
133
146
  this.context = oldContext;
134
147
  }
135
148
  }
149
+
136
150
  importVisitor.importCount--;
151
+
137
152
  if (importVisitor.isFinished) {
138
153
  importVisitor._sequencer.tryRun();
139
154
  }
@@ -141,12 +156,11 @@ ImportVisitor.prototype = {
141
156
  visitDeclaration: function (declNode, visitArgs) {
142
157
  if (declNode.value.type === 'DetachedRuleset') {
143
158
  this.context.frames.unshift(declNode);
144
- }
145
- else {
159
+ } else {
146
160
  visitArgs.visitDeeper = false;
147
161
  }
148
162
  },
149
- visitDeclarationOut: function (declNode) {
163
+ visitDeclarationOut: function(declNode) {
150
164
  if (declNode.value.type === 'DetachedRuleset') {
151
165
  this.context.frames.shift();
152
166
  }
@@ -154,16 +168,13 @@ ImportVisitor.prototype = {
154
168
  visitAtRule: function (atRuleNode, visitArgs) {
155
169
  if (atRuleNode.value) {
156
170
  this.context.frames.unshift(atRuleNode);
157
- }
158
- else if (atRuleNode.declarations && atRuleNode.declarations.length) {
171
+ } else if (atRuleNode.declarations && atRuleNode.declarations.length) {
159
172
  if (atRuleNode.isRooted) {
160
173
  this.context.frames.unshift(atRuleNode);
161
- }
162
- else {
174
+ } else {
163
175
  this.context.frames.unshift(atRuleNode.declarations[0]);
164
176
  }
165
- }
166
- else if (atRuleNode.rules && atRuleNode.rules.length) {
177
+ } else if (atRuleNode.rules && atRuleNode.rules.length) {
167
178
  this.context.frames.unshift(atRuleNode);
168
179
  }
169
180
  },
@@ -189,5 +200,4 @@ ImportVisitor.prototype = {
189
200
  this.context.frames.shift();
190
201
  }
191
202
  };
192
- exports.default = ImportVisitor;
193
- //# sourceMappingURL=import-visitor.js.map
203
+ export default ImportVisitor;
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var visitor_1 = tslib_1.__importDefault(require("./visitor"));
5
- var import_visitor_1 = tslib_1.__importDefault(require("./import-visitor"));
6
- var set_tree_visibility_visitor_1 = tslib_1.__importDefault(require("./set-tree-visibility-visitor"));
7
- var extend_visitor_1 = tslib_1.__importDefault(require("./extend-visitor"));
8
- var join_selector_visitor_1 = tslib_1.__importDefault(require("./join-selector-visitor"));
9
- var to_css_visitor_1 = tslib_1.__importDefault(require("./to-css-visitor"));
10
- exports.default = {
11
- Visitor: visitor_1.default,
12
- ImportVisitor: import_visitor_1.default,
13
- MarkVisibleSelectorsVisitor: set_tree_visibility_visitor_1.default,
14
- ExtendVisitor: extend_visitor_1.default,
15
- JoinSelectorVisitor: join_selector_visitor_1.default,
16
- ToCSSVisitor: to_css_visitor_1.default
1
+ import Visitor from './visitor.js';
2
+ import ImportVisitor from './import-visitor.js';
3
+ import MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor.js';
4
+ import ExtendVisitor from './extend-visitor.js';
5
+ import JoinSelectorVisitor from './join-selector-visitor.js';
6
+ import ToCSSVisitor from './to-css-visitor.js';
7
+
8
+ export default {
9
+ Visitor,
10
+ ImportVisitor,
11
+ MarkVisibleSelectorsVisitor,
12
+ ExtendVisitor,
13
+ JoinSelectorVisitor,
14
+ ToCSSVisitor
17
15
  };
18
- //# sourceMappingURL=index.js.map
@@ -1,62 +1,65 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
1
  /* eslint-disable no-unused-vars */
5
2
  /**
6
3
  * @todo - Remove unused when JSDoc types are added for visitor methods
7
4
  */
8
- var visitor_1 = tslib_1.__importDefault(require("./visitor"));
9
- var JoinSelectorVisitor = /** @class */ (function () {
10
- function JoinSelectorVisitor() {
5
+ import Visitor from './visitor.js';
6
+
7
+ class JoinSelectorVisitor {
8
+ constructor() {
11
9
  this.contexts = [[]];
12
- this._visitor = new visitor_1.default(this);
10
+ this._visitor = new Visitor(this);
13
11
  }
14
- JoinSelectorVisitor.prototype.run = function (root) {
12
+
13
+ run(root) {
15
14
  return this._visitor.visit(root);
16
- };
17
- JoinSelectorVisitor.prototype.visitDeclaration = function (declNode, visitArgs) {
15
+ }
16
+
17
+ visitDeclaration(declNode, visitArgs) {
18
18
  visitArgs.visitDeeper = false;
19
- };
20
- JoinSelectorVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
19
+ }
20
+
21
+ visitMixinDefinition(mixinDefinitionNode, visitArgs) {
21
22
  visitArgs.visitDeeper = false;
22
- };
23
- JoinSelectorVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
24
- var context = this.contexts[this.contexts.length - 1];
25
- var paths = [];
26
- var selectors;
23
+ }
24
+
25
+ visitRuleset(rulesetNode, visitArgs) {
26
+ const context = this.contexts[this.contexts.length - 1];
27
+ const paths = [];
28
+ let selectors;
29
+
27
30
  this.contexts.push(paths);
31
+
28
32
  if (!rulesetNode.root) {
29
33
  selectors = rulesetNode.selectors;
30
34
  if (selectors) {
31
- selectors = selectors.filter(function (selector) { return selector.getIsOutput(); });
35
+ selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });
32
36
  rulesetNode.selectors = selectors.length ? selectors : (selectors = null);
33
- if (selectors) {
34
- rulesetNode.joinSelectors(paths, context, selectors);
35
- }
36
- }
37
- if (!selectors) {
38
- rulesetNode.rules = null;
37
+ if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }
39
38
  }
39
+ if (!selectors) { rulesetNode.rules = null; }
40
40
  rulesetNode.paths = paths;
41
41
  }
42
- };
43
- JoinSelectorVisitor.prototype.visitRulesetOut = function (rulesetNode) {
42
+ }
43
+
44
+ visitRulesetOut(rulesetNode) {
44
45
  this.contexts.length = this.contexts.length - 1;
45
- };
46
- JoinSelectorVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
47
- var context = this.contexts[this.contexts.length - 1];
46
+ }
47
+
48
+ visitMedia(mediaNode, visitArgs) {
49
+ const context = this.contexts[this.contexts.length - 1];
48
50
  mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);
49
- };
50
- JoinSelectorVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
51
- var context = this.contexts[this.contexts.length - 1];
51
+ }
52
+
53
+ visitAtRule(atRuleNode, visitArgs) {
54
+ const context = this.contexts[this.contexts.length - 1];
55
+
52
56
  if (atRuleNode.declarations && atRuleNode.declarations.length) {
53
57
  atRuleNode.declarations[0].root = (context.length === 0 || context[0].multiMedia);
54
58
  }
55
59
  else if (atRuleNode.rules && atRuleNode.rules.length) {
56
60
  atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);
57
61
  }
58
- };
59
- return JoinSelectorVisitor;
60
- }());
61
- exports.default = JoinSelectorVisitor;
62
- //# sourceMappingURL=join-selector-visitor.js.map
62
+ }
63
+ }
64
+
65
+ export default JoinSelectorVisitor;
@@ -1,43 +1,57 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var SetTreeVisibilityVisitor = /** @class */ (function () {
4
- function SetTreeVisibilityVisitor(visible) {
1
+ import Node from '../tree/node.js';
2
+
3
+ class SetTreeVisibilityVisitor {
4
+ /** @param {boolean} visible */
5
+ constructor(visible) {
5
6
  this.visible = visible;
6
7
  }
7
- SetTreeVisibilityVisitor.prototype.run = function (root) {
8
+
9
+ /** @param {Node} root */
10
+ run(root) {
8
11
  this.visit(root);
9
- };
10
- SetTreeVisibilityVisitor.prototype.visitArray = function (nodes) {
12
+ }
13
+
14
+ /**
15
+ * @param {Node[]} nodes
16
+ * @returns {Node[]}
17
+ */
18
+ visitArray(nodes) {
11
19
  if (!nodes) {
12
20
  return nodes;
13
21
  }
14
- var cnt = nodes.length;
15
- var i;
22
+
23
+ const cnt = nodes.length;
24
+ let i;
16
25
  for (i = 0; i < cnt; i++) {
17
26
  this.visit(nodes[i]);
18
27
  }
19
28
  return nodes;
20
- };
21
- SetTreeVisibilityVisitor.prototype.visit = function (node) {
29
+ }
30
+
31
+ /**
32
+ * @param {*} node
33
+ * @returns {*}
34
+ */
35
+ visit(node) {
22
36
  if (!node) {
23
37
  return node;
24
38
  }
25
39
  if (node.constructor === Array) {
26
40
  return this.visitArray(node);
27
41
  }
42
+
28
43
  if (!node.blocksVisibility || node.blocksVisibility()) {
29
44
  return node;
30
45
  }
31
46
  if (this.visible) {
32
47
  node.ensureVisibility();
33
- }
34
- else {
48
+ } else {
35
49
  node.ensureInvisibility();
36
50
  }
51
+
37
52
  node.accept(this);
38
53
  return node;
39
- };
40
- return SetTreeVisibilityVisitor;
41
- }());
42
- exports.default = SetTreeVisibilityVisitor;
43
- //# sourceMappingURL=set-tree-visibility-visitor.js.map
54
+ }
55
+ }
56
+
57
+ export default SetTreeVisibilityVisitor;