less 4.5.1 → 4.6.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 (340) hide show
  1. package/README.md +70 -5
  2. package/bin/lessc +37 -23
  3. package/dist/less.js +14501 -11745
  4. package/dist/less.min.js +4 -4
  5. package/dist/less.min.js.map +1 -1
  6. package/index.cjs +41 -0
  7. package/lib/less/constants.js +5 -7
  8. package/lib/less/contexts.js +71 -55
  9. package/lib/less/data/colors.js +150 -153
  10. package/lib/less/data/index.js +4 -7
  11. package/lib/less/data/unit-conversions.js +2 -5
  12. package/lib/less/default-options.js +36 -26
  13. package/lib/less/deprecation.js +67 -0
  14. package/lib/less/environment/abstract-file-manager.js +62 -50
  15. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  16. package/lib/less/environment/environment-api.ts +21 -0
  17. package/lib/less/environment/environment.js +34 -30
  18. package/lib/less/environment/file-manager-api.ts +77 -0
  19. package/lib/less/functions/boolean.js +13 -13
  20. package/lib/less/functions/color-blending.js +39 -31
  21. package/lib/less/functions/color.js +153 -137
  22. package/lib/less/functions/data-uri.js +73 -64
  23. package/lib/less/functions/default.js +9 -11
  24. package/lib/less/functions/function-caller.js +35 -34
  25. package/lib/less/functions/function-registry.js +16 -17
  26. package/lib/less/functions/index.js +33 -33
  27. package/lib/less/functions/list.js +88 -75
  28. package/lib/less/functions/math-helper.js +8 -11
  29. package/lib/less/functions/math.js +21 -21
  30. package/lib/less/functions/number.js +42 -53
  31. package/lib/less/functions/string.js +18 -22
  32. package/lib/less/functions/style.js +21 -20
  33. package/lib/less/functions/svg.js +83 -82
  34. package/lib/less/functions/types.js +28 -32
  35. package/lib/less/import-manager.js +73 -64
  36. package/lib/less/index.js +65 -65
  37. package/lib/less/less-error.js +63 -45
  38. package/lib/less/logger.js +11 -14
  39. package/lib/less/parse-tree.js +52 -53
  40. package/lib/less/parse.js +44 -44
  41. package/lib/less/parser/parser-input.js +151 -113
  42. package/lib/less/parser/parser.js +864 -658
  43. package/lib/less/plugin-manager.js +57 -46
  44. package/lib/less/render.js +17 -23
  45. package/lib/less/source-map-builder.js +52 -43
  46. package/lib/less/source-map-output.js +56 -43
  47. package/lib/less/transform-tree.js +40 -30
  48. package/lib/less/tree/anonymous.js +52 -28
  49. package/lib/less/tree/assignment.js +44 -27
  50. package/lib/less/tree/atrule-syntax.js +4 -6
  51. package/lib/less/tree/atrule.js +247 -140
  52. package/lib/less/tree/attribute.js +55 -24
  53. package/lib/less/tree/call.js +70 -42
  54. package/lib/less/tree/color.js +194 -145
  55. package/lib/less/tree/combinator.js +31 -21
  56. package/lib/less/tree/comment.js +44 -23
  57. package/lib/less/tree/condition.js +61 -36
  58. package/lib/less/tree/container.js +90 -34
  59. package/lib/less/tree/debug-info.js +28 -15
  60. package/lib/less/tree/declaration.js +97 -52
  61. package/lib/less/tree/detached-ruleset.js +42 -24
  62. package/lib/less/tree/dimension.js +127 -71
  63. package/lib/less/tree/element.js +82 -52
  64. package/lib/less/tree/expression.js +75 -50
  65. package/lib/less/tree/extend.js +71 -42
  66. package/lib/less/tree/import.js +184 -110
  67. package/lib/less/tree/index.js +52 -81
  68. package/lib/less/tree/javascript.js +43 -32
  69. package/lib/less/tree/js-eval-node.js +46 -32
  70. package/lib/less/tree/keyword.js +25 -17
  71. package/lib/less/tree/media.js +77 -35
  72. package/lib/less/tree/merge-rules.js +47 -0
  73. package/lib/less/tree/mixin-call.js +181 -98
  74. package/lib/less/tree/mixin-definition.js +211 -117
  75. package/lib/less/tree/namespace-value.js +63 -44
  76. package/lib/less/tree/negative.js +34 -21
  77. package/lib/less/tree/nested-at-rule.js +149 -66
  78. package/lib/less/tree/node.js +225 -90
  79. package/lib/less/tree/operation.js +59 -34
  80. package/lib/less/tree/paren.js +34 -17
  81. package/lib/less/tree/property.js +66 -35
  82. package/lib/less/tree/query-in-parens.js +52 -60
  83. package/lib/less/tree/quoted.js +93 -44
  84. package/lib/less/tree/ruleset.js +632 -318
  85. package/lib/less/tree/selector.js +151 -77
  86. package/lib/less/tree/unicode-descriptor.js +14 -12
  87. package/lib/less/tree/unit.js +111 -63
  88. package/lib/less/tree/url.js +62 -38
  89. package/lib/less/tree/value.js +50 -34
  90. package/lib/less/tree/variable-call.js +47 -30
  91. package/lib/less/tree/variable.js +53 -31
  92. package/lib/less/utils.js +44 -47
  93. package/lib/less/visitors/extend-visitor.js +233 -172
  94. package/lib/less/visitors/import-sequencer.js +24 -24
  95. package/lib/less/visitors/import-visitor.js +62 -52
  96. package/lib/less/visitors/index.js +14 -17
  97. package/lib/less/visitors/join-selector-visitor.js +40 -37
  98. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  99. package/lib/less/visitors/to-css-visitor.js +135 -128
  100. package/lib/less/visitors/visitor.js +60 -45
  101. package/lib/less-browser/add-default-options.js +23 -13
  102. package/lib/less-browser/bootstrap.js +23 -17
  103. package/lib/less-browser/browser.js +24 -21
  104. package/lib/less-browser/cache.js +17 -19
  105. package/lib/less-browser/error-reporting.js +52 -44
  106. package/lib/less-browser/file-manager.js +52 -42
  107. package/lib/less-browser/image-size.js +12 -12
  108. package/lib/less-browser/index.js +131 -105
  109. package/lib/less-browser/log-listener.js +30 -31
  110. package/lib/less-browser/plugin-loader.js +10 -10
  111. package/lib/less-browser/utils.js +19 -21
  112. package/lib/less-node/environment.js +32 -8
  113. package/lib/less-node/file-manager.js +62 -45
  114. package/lib/less-node/fs.js +11 -8
  115. package/lib/less-node/image-size.js +40 -31
  116. package/lib/less-node/index.js +28 -19
  117. package/lib/less-node/lessc-helper.js +20 -21
  118. package/lib/less-node/plugin-loader.js +35 -27
  119. package/lib/less-node/url-file-manager.js +33 -31
  120. package/package.json +29 -18
  121. package/.eslintignore +0 -6
  122. package/.eslintrc.js +0 -63
  123. package/Gruntfile.js +0 -403
  124. package/bower.json +0 -22
  125. package/lib/less/constants.js.map +0 -1
  126. package/lib/less/contexts.js.map +0 -1
  127. package/lib/less/data/colors.js.map +0 -1
  128. package/lib/less/data/index.js.map +0 -1
  129. package/lib/less/data/unit-conversions.js.map +0 -1
  130. package/lib/less/default-options.js.map +0 -1
  131. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  132. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  133. package/lib/less/environment/environment-api.js +0 -3
  134. package/lib/less/environment/environment-api.js.map +0 -1
  135. package/lib/less/environment/environment.js.map +0 -1
  136. package/lib/less/environment/file-manager-api.js +0 -3
  137. package/lib/less/environment/file-manager-api.js.map +0 -1
  138. package/lib/less/functions/boolean.js.map +0 -1
  139. package/lib/less/functions/color-blending.js.map +0 -1
  140. package/lib/less/functions/color.js.map +0 -1
  141. package/lib/less/functions/data-uri.js.map +0 -1
  142. package/lib/less/functions/default.js.map +0 -1
  143. package/lib/less/functions/function-caller.js.map +0 -1
  144. package/lib/less/functions/function-registry.js.map +0 -1
  145. package/lib/less/functions/index.js.map +0 -1
  146. package/lib/less/functions/list.js.map +0 -1
  147. package/lib/less/functions/math-helper.js.map +0 -1
  148. package/lib/less/functions/math.js.map +0 -1
  149. package/lib/less/functions/number.js.map +0 -1
  150. package/lib/less/functions/string.js.map +0 -1
  151. package/lib/less/functions/style.js.map +0 -1
  152. package/lib/less/functions/svg.js.map +0 -1
  153. package/lib/less/functions/types.js.map +0 -1
  154. package/lib/less/import-manager.js.map +0 -1
  155. package/lib/less/index.js.map +0 -1
  156. package/lib/less/less-error.js.map +0 -1
  157. package/lib/less/logger.js.map +0 -1
  158. package/lib/less/parse-tree.js.map +0 -1
  159. package/lib/less/parse.js.map +0 -1
  160. package/lib/less/parser/parser-input.js.map +0 -1
  161. package/lib/less/parser/parser.js.map +0 -1
  162. package/lib/less/plugin-manager.js.map +0 -1
  163. package/lib/less/render.js.map +0 -1
  164. package/lib/less/source-map-builder.js.map +0 -1
  165. package/lib/less/source-map-output.js.map +0 -1
  166. package/lib/less/transform-tree.js.map +0 -1
  167. package/lib/less/tree/anonymous.js.map +0 -1
  168. package/lib/less/tree/assignment.js.map +0 -1
  169. package/lib/less/tree/atrule-syntax.js.map +0 -1
  170. package/lib/less/tree/atrule.js.map +0 -1
  171. package/lib/less/tree/attribute.js.map +0 -1
  172. package/lib/less/tree/call.js.map +0 -1
  173. package/lib/less/tree/color.js.map +0 -1
  174. package/lib/less/tree/combinator.js.map +0 -1
  175. package/lib/less/tree/comment.js.map +0 -1
  176. package/lib/less/tree/condition.js.map +0 -1
  177. package/lib/less/tree/container.js.map +0 -1
  178. package/lib/less/tree/debug-info.js.map +0 -1
  179. package/lib/less/tree/declaration.js.map +0 -1
  180. package/lib/less/tree/detached-ruleset.js.map +0 -1
  181. package/lib/less/tree/dimension.js.map +0 -1
  182. package/lib/less/tree/element.js.map +0 -1
  183. package/lib/less/tree/expression.js.map +0 -1
  184. package/lib/less/tree/extend.js.map +0 -1
  185. package/lib/less/tree/import.js.map +0 -1
  186. package/lib/less/tree/index.js.map +0 -1
  187. package/lib/less/tree/javascript.js.map +0 -1
  188. package/lib/less/tree/js-eval-node.js.map +0 -1
  189. package/lib/less/tree/keyword.js.map +0 -1
  190. package/lib/less/tree/media.js.map +0 -1
  191. package/lib/less/tree/mixin-call.js.map +0 -1
  192. package/lib/less/tree/mixin-definition.js.map +0 -1
  193. package/lib/less/tree/namespace-value.js.map +0 -1
  194. package/lib/less/tree/negative.js.map +0 -1
  195. package/lib/less/tree/nested-at-rule.js.map +0 -1
  196. package/lib/less/tree/node.js.map +0 -1
  197. package/lib/less/tree/operation.js.map +0 -1
  198. package/lib/less/tree/paren.js.map +0 -1
  199. package/lib/less/tree/property.js.map +0 -1
  200. package/lib/less/tree/query-in-parens.js.map +0 -1
  201. package/lib/less/tree/quoted.js.map +0 -1
  202. package/lib/less/tree/ruleset.js.map +0 -1
  203. package/lib/less/tree/selector.js.map +0 -1
  204. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  205. package/lib/less/tree/unit.js.map +0 -1
  206. package/lib/less/tree/url.js.map +0 -1
  207. package/lib/less/tree/value.js.map +0 -1
  208. package/lib/less/tree/variable-call.js.map +0 -1
  209. package/lib/less/tree/variable.js.map +0 -1
  210. package/lib/less/utils.js.map +0 -1
  211. package/lib/less/visitors/extend-visitor.js.map +0 -1
  212. package/lib/less/visitors/import-sequencer.js.map +0 -1
  213. package/lib/less/visitors/import-visitor.js.map +0 -1
  214. package/lib/less/visitors/index.js.map +0 -1
  215. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  216. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  217. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  218. package/lib/less/visitors/visitor.js.map +0 -1
  219. package/lib/less-browser/add-default-options.js.map +0 -1
  220. package/lib/less-browser/bootstrap.js.map +0 -1
  221. package/lib/less-browser/browser.js.map +0 -1
  222. package/lib/less-browser/cache.js.map +0 -1
  223. package/lib/less-browser/error-reporting.js.map +0 -1
  224. package/lib/less-browser/file-manager.js.map +0 -1
  225. package/lib/less-browser/image-size.js.map +0 -1
  226. package/lib/less-browser/index.js.map +0 -1
  227. package/lib/less-browser/log-listener.js.map +0 -1
  228. package/lib/less-browser/plugin-loader.js.map +0 -1
  229. package/lib/less-browser/utils.js.map +0 -1
  230. package/lib/less-node/environment.js.map +0 -1
  231. package/lib/less-node/file-manager.js.map +0 -1
  232. package/lib/less-node/fs.js.map +0 -1
  233. package/lib/less-node/image-size.js.map +0 -1
  234. package/lib/less-node/index.js.map +0 -1
  235. package/lib/less-node/lessc-helper.js.map +0 -1
  236. package/lib/less-node/plugin-loader.js.map +0 -1
  237. package/lib/less-node/url-file-manager.js.map +0 -1
  238. package/scripts/coverage-lines.js +0 -207
  239. package/scripts/coverage-report.js +0 -158
  240. package/scripts/postinstall.js +0 -61
  241. package/test/.eslintrc.json +0 -9
  242. package/test/README.md +0 -3
  243. package/test/browser/common.js +0 -251
  244. package/test/browser/css/global-vars/simple.css +0 -3
  245. package/test/browser/css/modify-vars/simple.css +0 -8
  246. package/test/browser/css/plugin/plugin.css +0 -3
  247. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  248. package/test/browser/css/relative-urls/urls.css +0 -36
  249. package/test/browser/css/rewrite-urls/urls.css +0 -36
  250. package/test/browser/css/rootpath/urls.css +0 -35
  251. package/test/browser/css/rootpath-relative/urls.css +0 -35
  252. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  253. package/test/browser/css/urls.css +0 -54
  254. package/test/browser/generator/benchmark.config.js +0 -50
  255. package/test/browser/generator/generate.js +0 -78
  256. package/test/browser/generator/runner.config.js +0 -184
  257. package/test/browser/generator/runner.js +0 -2
  258. package/test/browser/generator/template.js +0 -104
  259. package/test/browser/generator/utils.js +0 -14
  260. package/test/browser/less/console-errors/test-error.less +0 -3
  261. package/test/browser/less/console-errors/test-error.txt +0 -2
  262. package/test/browser/less/errors/image-height-error.less +0 -3
  263. package/test/browser/less/errors/image-height-error.txt +0 -4
  264. package/test/browser/less/errors/image-size-error.less +0 -3
  265. package/test/browser/less/errors/image-size-error.txt +0 -4
  266. package/test/browser/less/errors/image-width-error.less +0 -3
  267. package/test/browser/less/errors/image-width-error.txt +0 -4
  268. package/test/browser/less/global-vars/simple.less +0 -3
  269. package/test/browser/less/imports/urls.less +0 -4
  270. package/test/browser/less/imports/urls2.less +0 -4
  271. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  272. package/test/browser/less/modify-vars/simple.less +0 -8
  273. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  274. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  275. package/test/browser/less/plugin/plugin.js +0 -4
  276. package/test/browser/less/plugin/plugin.less +0 -4
  277. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  278. package/test/browser/less/relative-urls/urls.less +0 -34
  279. package/test/browser/less/rewrite-urls/urls.less +0 -34
  280. package/test/browser/less/rootpath/urls.less +0 -33
  281. package/test/browser/less/rootpath-relative/urls.less +0 -33
  282. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  283. package/test/browser/less/urls.less +0 -62
  284. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  285. package/test/browser/runner-VisitorPlugin.js +0 -3
  286. package/test/browser/runner-browser-options.js +0 -51
  287. package/test/browser/runner-browser-spec.js +0 -12
  288. package/test/browser/runner-console-errors.js +0 -5
  289. package/test/browser/runner-errors-options.js +0 -6
  290. package/test/browser/runner-errors-spec.js +0 -3
  291. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  292. package/test/browser/runner-filemanagerPlugin.js +0 -3
  293. package/test/browser/runner-global-vars-options.js +0 -7
  294. package/test/browser/runner-global-vars-spec.js +0 -3
  295. package/test/browser/runner-main-options.js +0 -17
  296. package/test/browser/runner-main-spec.js +0 -7
  297. package/test/browser/runner-modify-vars-options.js +0 -5
  298. package/test/browser/runner-modify-vars-spec.js +0 -33
  299. package/test/browser/runner-no-js-errors-options.js +0 -4
  300. package/test/browser/runner-no-js-errors-spec.js +0 -3
  301. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-postProcessorPlugin.js +0 -3
  303. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  304. package/test/browser/runner-preProcessorPlugin.js +0 -3
  305. package/test/browser/runner-production-options.js +0 -3
  306. package/test/browser/runner-production-spec.js +0 -5
  307. package/test/browser/runner-relative-urls-options.js +0 -3
  308. package/test/browser/runner-relative-urls-spec.js +0 -3
  309. package/test/browser/runner-rewrite-urls-options.js +0 -3
  310. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  311. package/test/browser/runner-rootpath-options.js +0 -3
  312. package/test/browser/runner-rootpath-relative-options.js +0 -4
  313. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  314. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  315. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  316. package/test/browser/runner-rootpath-spec.js +0 -3
  317. package/test/browser/runner-strict-units-options.js +0 -5
  318. package/test/browser/runner-strict-units-spec.js +0 -3
  319. package/test/index.js +0 -307
  320. package/test/less-test.js +0 -984
  321. package/test/mocha-playwright/runner.js +0 -210
  322. package/test/modify-vars.js +0 -28
  323. package/test/plugins/filemanager/index.js +0 -19
  324. package/test/plugins/postprocess/index.js +0 -14
  325. package/test/plugins/preprocess/index.js +0 -19
  326. package/test/plugins/visitor/index.js +0 -24
  327. package/test/sourcemaps/basic.json +0 -1
  328. package/test/sourcemaps/comprehensive.json +0 -1
  329. package/test/sourcemaps/custom-props.json +0 -1
  330. package/test/sourcemaps/index.html +0 -17
  331. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  333. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  334. package/test/sourcemaps/sourcemaps-url.json +0 -1
  335. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  336. package/test/sourcemaps-variable-selector/basic.json +0 -1
  337. package/test/test-es6.ts +0 -17
  338. package/test.less +0 -1
  339. package/tsconfig.build.json +0 -7
  340. package/tsconfig.json +0 -21
@@ -1,37 +1,42 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var path_1 = tslib_1.__importDefault(require("path"));
5
- var fs_1 = tslib_1.__importDefault(require("./fs"));
6
- var abstract_file_manager_js_1 = tslib_1.__importDefault(require("../less/environment/abstract-file-manager.js"));
7
- var FileManager = function () { };
8
- FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(), {
9
- supports: function () {
1
+ import path from 'path';
2
+ import { createRequire } from 'module';
3
+ import fs from './fs.js';
4
+ import AbstractFileManager from '../less/environment/abstract-file-manager.js';
5
+
6
+ const require = createRequire(import.meta.url);
7
+
8
+ const FileManager = function() {}
9
+ FileManager.prototype = Object.assign(new AbstractFileManager(), {
10
+ supports() {
10
11
  return true;
11
12
  },
12
- supportsSync: function () {
13
+
14
+ supportsSync() {
13
15
  return true;
14
16
  },
15
- loadFile: function (filename, currentDirectory, options, environment, callback) {
16
- var fullFilename;
17
- var isAbsoluteFilename = this.isPathAbsolute(filename);
18
- var filenamesTried = [];
19
- var self = this;
20
- var prefix = filename.slice(0, 1);
21
- var explicit = prefix === '.' || prefix === '/';
22
- var result = null;
23
- var isNodeModule = false;
24
- var npmPrefix = 'npm://';
17
+
18
+ loadFile(filename, currentDirectory, options, environment, callback) {
19
+ let fullFilename;
20
+ const isAbsoluteFilename = this.isPathAbsolute(filename);
21
+ const filenamesTried = [];
22
+ const self = this;
23
+ const prefix = filename.slice(0, 1);
24
+ const explicit = prefix === '.' || prefix === '/';
25
+ let result = null;
26
+ let isNodeModule = false;
27
+ const npmPrefix = 'npm://';
28
+
25
29
  options = options || {};
26
- var paths = isAbsoluteFilename ? [''] : [currentDirectory];
27
- if (options.paths) {
28
- paths.push.apply(paths, options.paths);
29
- }
30
- if (!isAbsoluteFilename && paths.indexOf('.') === -1) {
31
- paths.push('.');
32
- }
33
- var prefixes = options.prefixes || [''];
34
- var fileParts = this.extractUrlParts(filename);
30
+
31
+ const paths = isAbsoluteFilename ? [''] : [currentDirectory];
32
+
33
+ if (options.paths) { paths.push.apply(paths, options.paths); }
34
+
35
+ if (!isAbsoluteFilename && paths.indexOf('.') === -1) { paths.push('.'); }
36
+
37
+ const prefixes = options.prefixes || [''];
38
+ const fileParts = this.extractUrlParts(filename);
39
+
35
40
  if (options.syncImport) {
36
41
  getFileData(returnData, returnData);
37
42
  if (callback) {
@@ -47,6 +52,7 @@ FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(),
47
52
  // to be closed before it continues with the next file
48
53
  return new Promise(getFileData);
49
54
  }
55
+
50
56
  function returnData(data) {
51
57
  if (!data.filename) {
52
58
  result = { error: data };
@@ -55,10 +61,12 @@ FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(),
55
61
  result = data;
56
62
  }
57
63
  }
64
+
58
65
  function getFileData(fulfill, reject) {
59
66
  (function tryPathIndex(i) {
60
67
  function tryWithExtension() {
61
- var extFilename = options.ext ? self.tryAppendExtension(fullFilename, options.ext) : fullFilename;
68
+ const extFilename = options.ext ? self.tryAppendExtension(fullFilename, options.ext) : fullFilename;
69
+
62
70
  if (extFilename !== fullFilename && !explicit && paths[i] === '.') {
63
71
  try {
64
72
  fullFilename = require.resolve(extFilename);
@@ -78,9 +86,16 @@ FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(),
78
86
  if (j < prefixes.length) {
79
87
  isNodeModule = false;
80
88
  fullFilename = fileParts.rawPath + prefixes[j] + fileParts.filename;
89
+
81
90
  if (paths[i]) {
82
- fullFilename = path_1.default.join(paths[i], fullFilename);
91
+ if (paths[i].startsWith('#')) {
92
+ // Handling paths starting with '#'
93
+ fullFilename = paths[i].substr(1) + fullFilename;
94
+ }else{
95
+ fullFilename = path.join(paths[i], fullFilename);
96
+ }
83
97
  }
98
+
84
99
  if (!explicit && paths[i] === '.') {
85
100
  try {
86
101
  fullFilename = require.resolve(fullFilename);
@@ -93,15 +108,16 @@ FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(),
93
108
  }
94
109
  else {
95
110
  tryWithExtension();
96
- }
97
- var readFileArgs = [fullFilename];
111
+ }
112
+
113
+ const readFileArgs = [fullFilename];
98
114
  if (!options.rawBuffer) {
99
115
  readFileArgs.push('utf-8');
100
116
  }
101
117
  if (options.syncImport) {
102
118
  try {
103
- var data = fs_1.default.readFileSync.apply(this, readFileArgs);
104
- fulfill({ contents: data, filename: fullFilename });
119
+ const data = fs.readFileSync.apply(this, readFileArgs);
120
+ fulfill({ contents: data, filename: fullFilename});
105
121
  }
106
122
  catch (e) {
107
123
  filenamesTried.push(isNodeModule ? npmPrefix + fullFilename : fullFilename);
@@ -109,31 +125,32 @@ FileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(),
109
125
  }
110
126
  }
111
127
  else {
112
- readFileArgs.push(function (e, data) {
128
+ readFileArgs.push(function(e, data) {
113
129
  if (e) {
114
130
  filenamesTried.push(isNodeModule ? npmPrefix + fullFilename : fullFilename);
115
131
  return tryPrefix(j + 1);
116
- }
117
- fulfill({ contents: data, filename: fullFilename });
132
+ }
133
+ fulfill({ contents: data, filename: fullFilename});
118
134
  });
119
- fs_1.default.readFile.apply(this, readFileArgs);
135
+ fs.readFile.apply(this, readFileArgs);
120
136
  }
137
+
121
138
  }
122
139
  else {
123
140
  tryPathIndex(i + 1);
124
141
  }
125
142
  })(0);
126
- }
127
- else {
128
- reject({ type: 'File', message: "'".concat(filename, "' wasn't found. Tried - ").concat(filenamesTried.join(',')) });
143
+ } else {
144
+ reject({ type: 'File', message: `'${filename}' wasn't found. Tried - ${filenamesTried.join(',')}` });
129
145
  }
130
146
  }(0));
131
147
  }
132
148
  },
133
- loadFileSync: function (filename, currentDirectory, options, environment) {
149
+
150
+ loadFileSync(filename, currentDirectory, options, environment) {
134
151
  options.syncImport = true;
135
152
  return this.loadFile(filename, currentDirectory, options, environment);
136
153
  }
137
154
  });
138
- exports.default = FileManager;
139
- //# sourceMappingURL=file-manager.js.map
155
+
156
+ export default FileManager;
@@ -1,11 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var fs;
1
+ /** @typedef {import('fs')} FS */
2
+ import nodeFs from 'fs';
3
+ import { createRequire } from 'module';
4
+
5
+ const require = createRequire(import.meta.url);
6
+
7
+ /** @type {FS} */
8
+ let fs;
4
9
  try {
5
10
  fs = require('graceful-fs');
11
+ } catch (e) {
12
+ fs = nodeFs;
6
13
  }
7
- catch (e) {
8
- fs = require('fs');
9
- }
10
- exports.default = fs;
11
- //# sourceMappingURL=fs.js.map
14
+ export default fs;
@@ -1,50 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var dimension_1 = tslib_1.__importDefault(require("../less/tree/dimension"));
5
- var expression_1 = tslib_1.__importDefault(require("../less/tree/expression"));
6
- var function_registry_1 = tslib_1.__importDefault(require("./../less/functions/function-registry"));
7
- exports.default = (function (environment) {
1
+ import { createRequire } from 'module';
2
+ import Dimension from '../less/tree/dimension.js';
3
+ import Expression from '../less/tree/expression.js';
4
+ import functionRegistry from './../less/functions/function-registry.js';
5
+
6
+ const require = createRequire(import.meta.url);
7
+
8
+ export default environment => {
9
+
8
10
  function imageSize(functionContext, filePathNode) {
9
- var filePath = filePathNode.value;
10
- var currentFileInfo = functionContext.currentFileInfo;
11
- var currentDirectory = currentFileInfo.rewriteUrls ?
11
+ let filePath = filePathNode.value;
12
+ const currentFileInfo = functionContext.currentFileInfo;
13
+ const currentDirectory = currentFileInfo.rewriteUrls ?
12
14
  currentFileInfo.currentDirectory : currentFileInfo.entryPath;
13
- var fragmentStart = filePath.indexOf('#');
15
+
16
+ const fragmentStart = filePath.indexOf('#');
14
17
  if (fragmentStart !== -1) {
15
18
  filePath = filePath.slice(0, fragmentStart);
16
19
  }
17
- var fileManager = environment.getFileManager(filePath, currentDirectory, functionContext.context, environment, true);
20
+
21
+ const fileManager = environment.getFileManager(filePath, currentDirectory, functionContext.context, environment, true);
22
+
18
23
  if (!fileManager) {
19
24
  throw {
20
25
  type: 'File',
21
- message: "Can not set up FileManager for ".concat(filePathNode)
26
+ message: `Can not set up FileManager for ${filePathNode}`
22
27
  };
23
28
  }
24
- var fileSync = fileManager.loadFileSync(filePath, currentDirectory, functionContext.context, environment);
29
+
30
+ const fileSync = fileManager.loadFileSync(filePath, currentDirectory, functionContext.context, environment);
31
+
25
32
  if (fileSync.error) {
26
33
  throw fileSync.error;
27
34
  }
28
- var sizeOf = require('image-size');
29
- return sizeOf(fileSync.filename);
35
+
36
+ const sizeOf = require('image-size');
37
+ return sizeOf ? sizeOf(fileSync.filename) : {width: 0, height: 0};
30
38
  }
31
- var imageFunctions = {
32
- 'image-size': function (filePathNode) {
33
- var size = imageSize(this, filePathNode);
34
- return new expression_1.default([
35
- new dimension_1.default(size.width, 'px'),
36
- new dimension_1.default(size.height, 'px')
39
+
40
+ const imageFunctions = {
41
+ 'image-size': function(filePathNode) {
42
+ const size = imageSize(this, filePathNode);
43
+ return new Expression([
44
+ new Dimension(size.width, 'px'),
45
+ new Dimension(size.height, 'px')
37
46
  ]);
38
47
  },
39
- 'image-width': function (filePathNode) {
40
- var size = imageSize(this, filePathNode);
41
- return new dimension_1.default(size.width, 'px');
48
+ 'image-width': function(filePathNode) {
49
+ const size = imageSize(this, filePathNode);
50
+ return new Dimension(size.width, 'px');
42
51
  },
43
- 'image-height': function (filePathNode) {
44
- var size = imageSize(this, filePathNode);
45
- return new dimension_1.default(size.height, 'px');
52
+ 'image-height': function(filePathNode) {
53
+ const size = imageSize(this, filePathNode);
54
+ return new Dimension(size.height, 'px');
46
55
  }
47
56
  };
48
- function_registry_1.default.addMultiple(imageFunctions);
49
- });
50
- //# sourceMappingURL=image-size.js.map
57
+
58
+ functionRegistry.addMultiple(imageFunctions);
59
+ };
@@ -1,22 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var environment_1 = tslib_1.__importDefault(require("./environment"));
5
- var file_manager_1 = tslib_1.__importDefault(require("./file-manager"));
6
- var url_file_manager_1 = tslib_1.__importDefault(require("./url-file-manager"));
7
- var less_1 = tslib_1.__importDefault(require("../less"));
8
- var less = (0, less_1.default)(environment_1.default, [new file_manager_1.default(), new url_file_manager_1.default()]);
9
- var lessc_helper_1 = tslib_1.__importDefault(require("./lessc-helper"));
1
+ import { createRequire } from 'module';
2
+ import environment from './environment.js';
3
+ import FileManager from './file-manager.js';
4
+ import UrlFileManager from './url-file-manager.js';
5
+ import createFromEnvironment from '../less/index.js';
6
+ import lesscHelper from './lessc-helper.js';
7
+ import PluginLoader from './plugin-loader.js';
8
+ import fs from './fs.js';
9
+ import defaultOptions from '../less/default-options.js';
10
+ import imageSize from './image-size.js';
11
+
12
+ const require = createRequire(import.meta.url);
13
+ const { version } = require('../../package.json');
14
+
15
+ const less = createFromEnvironment(environment, [new FileManager(), new UrlFileManager()], version);
16
+
10
17
  // allow people to create less with their own environment
11
- less.createFromEnvironment = less_1.default;
12
- less.lesscHelper = lessc_helper_1.default;
13
- less.PluginLoader = require('./plugin-loader').default;
14
- less.fs = require('./fs').default;
15
- less.FileManager = file_manager_1.default;
16
- less.UrlFileManager = url_file_manager_1.default;
18
+ less.createFromEnvironment = createFromEnvironment;
19
+ less.lesscHelper = lesscHelper;
20
+ less.PluginLoader = PluginLoader;
21
+ less.fs = fs;
22
+ less.FileManager = FileManager;
23
+ less.UrlFileManager = UrlFileManager;
24
+
17
25
  // Set up options
18
- less.options = require('../less/default-options').default();
26
+ less.options = defaultOptions();
27
+
19
28
  // provide image-size functionality
20
- require('./image-size').default(less.environment);
21
- exports.default = less;
22
- //# sourceMappingURL=index.js.map
29
+ imageSize(less.environment);
30
+
31
+ export default less;
@@ -1,23 +1,25 @@
1
1
  // lessc_helper.js
2
2
  //
3
3
  // helper functions for lessc
4
- var lessc_helper = {
4
+ const lessc_helper = {
5
+
5
6
  // Stylize a string
6
- stylize: function (str, style) {
7
- var styles = {
8
- 'reset': [0, 0],
9
- 'bold': [1, 22],
10
- 'inverse': [7, 27],
11
- 'underline': [4, 24],
12
- 'yellow': [33, 39],
13
- 'green': [32, 39],
14
- 'red': [31, 39],
15
- 'grey': [90, 39]
7
+ stylize : function(str, style) {
8
+ const styles = {
9
+ 'reset' : [0, 0],
10
+ 'bold' : [1, 22],
11
+ 'inverse' : [7, 27],
12
+ 'underline' : [4, 24],
13
+ 'yellow' : [33, 39],
14
+ 'green' : [32, 39],
15
+ 'red' : [31, 39],
16
+ 'grey' : [90, 39]
16
17
  };
17
- return "\u001B[".concat(styles[style][0], "m").concat(str, "\u001B[").concat(styles[style][1], "m");
18
+ return `\x1b[${styles[style][0]}m${str}\x1b[${styles[style][1]}m`;
18
19
  },
20
+
19
21
  // Print command line options
20
- printUsage: function () {
22
+ printUsage: function() {
21
23
  console.log('usage: lessc [option option=parameter ...] <source> [destination]');
22
24
  console.log('');
23
25
  console.log('If source is set to `-\' (dash or hyphen-minus), input is read from stdin.');
@@ -68,6 +70,8 @@ var lessc_helper = {
68
70
  console.log(' or --clean-css="advanced"');
69
71
  console.log(' --disable-plugin-rule Disallow @plugin statements');
70
72
  console.log('');
73
+ console.log(' --quiet-deprecations Suppress deprecation warnings only (keeps other warnings).');
74
+ console.log('');
71
75
  console.log('-------------------------- Deprecated ----------------');
72
76
  console.log(' -sm=on|off Legacy parens-only math. Use --math');
73
77
  console.log(' --strict-math=on|off ');
@@ -86,11 +90,6 @@ var lessc_helper = {
86
90
  console.log('Home page: <http://lesscss.org/>');
87
91
  }
88
92
  };
89
- // Exports helper functions
90
- // eslint-disable-next-line no-prototype-builtins
91
- for (var h in lessc_helper) {
92
- if (lessc_helper.hasOwnProperty(h)) {
93
- exports[h] = lessc_helper[h];
94
- }
95
- }
96
- //# sourceMappingURL=lessc-helper.js.map
93
+
94
+ export const { stylize, printUsage } = lessc_helper;
95
+ export default lessc_helper;
@@ -1,19 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var path_1 = tslib_1.__importDefault(require("path"));
5
- var abstract_plugin_loader_js_1 = tslib_1.__importDefault(require("../less/environment/abstract-plugin-loader.js"));
1
+ import path from 'path';
2
+ import { createRequire } from 'module';
3
+ import AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';
4
+
5
+ const require = createRequire(import.meta.url);
6
+
6
7
  /**
7
8
  * Node Plugin Loader
8
9
  */
9
- var PluginLoader = function (less) {
10
+ const PluginLoader = function(less) {
10
11
  this.less = less;
11
- this.require = function (prefix) {
12
- prefix = path_1.default.dirname(prefix);
13
- return function (id) {
14
- var str = id.substr(0, 2);
12
+ this.require = prefix => {
13
+ prefix = path.dirname(prefix);
14
+ return id => {
15
+ const str = id.slice(0, 2);
15
16
  if (str === '..' || str === './') {
16
- return require(path_1.default.join(prefix, id));
17
+ return require(path.join(prefix, id));
17
18
  }
18
19
  else {
19
20
  return require(id);
@@ -21,34 +22,41 @@ var PluginLoader = function (less) {
21
22
  };
22
23
  };
23
24
  };
24
- PluginLoader.prototype = Object.assign(new abstract_plugin_loader_js_1.default(), {
25
- loadPlugin: function (filename, basePath, context, environment, fileManager) {
26
- var prefix = filename.slice(0, 1);
27
- var explicit = prefix === '.' || prefix === '/' || filename.slice(-3).toLowerCase() === '.js';
25
+
26
+ PluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {
27
+ loadPlugin(filename, basePath, context, environment, fileManager) {
28
+ const prefix = filename.slice(0, 1);
29
+ const explicit = prefix === '.' || prefix === '/' || filename.slice(-3).toLowerCase() === '.js';
28
30
  if (!explicit) {
29
31
  context.prefixes = ['less-plugin-', ''];
30
32
  }
33
+
31
34
  if (context.syncImport) {
32
35
  return fileManager.loadFileSync(filename, basePath, context, environment);
33
36
  }
34
- return new Promise(function (fulfill, reject) {
35
- fileManager.loadFile(filename, basePath, context, environment).then(function (data) {
36
- try {
37
- fulfill(data);
37
+
38
+ return new Promise((fulfill, reject) => {
39
+ fileManager.loadFile(filename, basePath, context, environment).then(
40
+ data => {
41
+ try {
42
+ fulfill(data);
43
+ }
44
+ catch (e) {
45
+ console.log(e);
46
+ reject(e);
47
+ }
38
48
  }
39
- catch (e) {
40
- console.log(e);
41
- reject(e);
42
- }
43
- }).catch(function (err) {
49
+ ).catch(err => {
44
50
  reject(err);
45
51
  });
46
52
  });
47
53
  },
48
- loadPluginSync: function (filename, basePath, context, environment, fileManager) {
54
+
55
+ loadPluginSync(filename, basePath, context, environment, fileManager) {
49
56
  context.syncImport = true;
50
57
  return this.loadPlugin(filename, basePath, context, environment, fileManager);
51
58
  }
52
59
  });
53
- exports.default = PluginLoader;
54
- //# sourceMappingURL=plugin-loader.js.map
60
+
61
+ export default PluginLoader;
62
+
@@ -1,58 +1,60 @@
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 top eslint rule when FileManagers have JSDoc type
7
4
  * and are TS-type-checked
8
5
  */
9
- var isUrlRe = /^(?:https?:)?\/\//i;
10
- var url_1 = tslib_1.__importDefault(require("url"));
11
- var request;
12
- var abstract_file_manager_js_1 = tslib_1.__importDefault(require("../less/environment/abstract-file-manager.js"));
13
- var logger_1 = tslib_1.__importDefault(require("../less/logger"));
14
- var UrlFileManager = function () { };
15
- UrlFileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(), {
16
- supports: function (filename, currentDirectory, options, environment) {
17
- return isUrlRe.test(filename) || isUrlRe.test(currentDirectory);
6
+ import { createRequire } from 'module';
7
+
8
+ const require = createRequire(import.meta.url);
9
+
10
+ const isUrlRe = /^(?:https?:)?\/\//i;
11
+ import url from 'url';
12
+ let request;
13
+ import AbstractFileManager from '../less/environment/abstract-file-manager.js';
14
+ import logger from '../less/logger.js';
15
+
16
+ const UrlFileManager = function() {}
17
+ UrlFileManager.prototype = Object.assign(new AbstractFileManager(), {
18
+ supports(filename, currentDirectory, options, environment) {
19
+ return isUrlRe.test( filename ) || isUrlRe.test(currentDirectory);
18
20
  },
19
- loadFile: function (filename, currentDirectory, options, environment) {
20
- return new Promise(function (fulfill, reject) {
21
+
22
+ loadFile(filename, currentDirectory, options, environment) {
23
+ return new Promise((fulfill, reject) => {
21
24
  if (request === undefined) {
22
- try {
23
- request = require('needle');
24
- }
25
- catch (e) {
26
- request = null;
27
- }
25
+ try { request = require('needle'); }
26
+ catch (e) { request = null; }
28
27
  }
29
28
  if (!request) {
30
29
  reject({ type: 'File', message: 'optional dependency \'needle\' required to import over http(s)\n' });
31
30
  return;
32
31
  }
33
- var urlStr = isUrlRe.test(filename) ? filename : url_1.default.resolve(currentDirectory, filename);
32
+
33
+ let urlStr = isUrlRe.test( filename ) ? filename : url.resolve(currentDirectory, filename);
34
+
34
35
  /** native-request currently has a bug */
35
- var hackUrlStr = urlStr.indexOf('?') === -1 ? urlStr + '?' : urlStr;
36
- request.get(hackUrlStr, { follow_max: 5 }, function (err, resp, body) {
36
+ const hackUrlStr = urlStr.indexOf('?') === -1 ? urlStr + '?' : urlStr
37
+
38
+ request.get(hackUrlStr, { follow_max: 5 }, (err, resp, body) => {
37
39
  if (err || resp && resp.statusCode >= 400) {
38
- var message = resp && resp.statusCode === 404
39
- ? "resource '".concat(urlStr, "' was not found\n")
40
- : "resource '".concat(urlStr, "' gave this Error:\n ").concat(err || resp.statusMessage || resp.statusCode, "\n");
41
- reject({ type: 'File', message: message });
40
+ const message = resp && resp.statusCode === 404
41
+ ? `resource '${urlStr}' was not found\n`
42
+ : `resource '${urlStr}' gave this Error:\n ${err || resp.statusMessage || resp.statusCode}\n`;
43
+ reject({ type: 'File', message });
42
44
  return;
43
45
  }
44
46
  if (resp.statusCode >= 300) {
45
- reject({ type: 'File', message: "resource '".concat(urlStr, "' caused too many redirects") });
47
+ reject({ type: 'File', message: `resource '${urlStr}' caused too many redirects` });
46
48
  return;
47
49
  }
48
50
  body = body.toString('utf8');
49
51
  if (!body) {
50
- logger_1.default.warn("Warning: Empty body (HTTP ".concat(resp.statusCode, ") returned by \"").concat(urlStr, "\""));
52
+ logger.warn(`Warning: Empty body (HTTP ${resp.statusCode}) returned by "${urlStr}"`);
51
53
  }
52
54
  fulfill({ contents: body || '', filename: urlStr });
53
55
  });
54
56
  });
55
57
  }
56
58
  });
57
- exports.default = UrlFileManager;
58
- //# sourceMappingURL=url-file-manager.js.map
59
+
60
+ export default UrlFileManager;