less 4.1.3 → 4.2.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 (200) hide show
  1. package/.eslintrc.js +63 -0
  2. package/Gruntfile.js +4 -14
  3. package/dist/less.js +7240 -7042
  4. package/dist/less.min.js +3 -3
  5. package/dist/less.min.js.map +1 -1
  6. package/lib/less/contexts.js +2 -2
  7. package/lib/less/contexts.js.map +1 -1
  8. package/lib/less/default-options.js +0 -1
  9. package/lib/less/default-options.js.map +1 -1
  10. package/lib/less/environment/abstract-file-manager.js +12 -6
  11. package/lib/less/environment/abstract-file-manager.js.map +1 -1
  12. package/lib/less/environment/abstract-plugin-loader.js +2 -2
  13. package/lib/less/environment/abstract-plugin-loader.js.map +1 -1
  14. package/lib/less/environment/environment-api.js +0 -25
  15. package/lib/less/environment/environment-api.js.map +1 -1
  16. package/lib/less/environment/environment.js +2 -2
  17. package/lib/less/environment/environment.js.map +1 -1
  18. package/lib/less/environment/file-manager-api.js +0 -103
  19. package/lib/less/environment/file-manager-api.js.map +1 -1
  20. package/lib/less/functions/color-blending.js +1 -0
  21. package/lib/less/functions/color-blending.js.map +1 -1
  22. package/lib/less/functions/color.js +20 -20
  23. package/lib/less/functions/color.js.map +1 -1
  24. package/lib/less/functions/data-uri.js +3 -3
  25. package/lib/less/functions/data-uri.js.map +1 -1
  26. package/lib/less/functions/default.js +2 -1
  27. package/lib/less/functions/default.js.map +1 -1
  28. package/lib/less/functions/function-caller.js +1 -1
  29. package/lib/less/functions/function-caller.js.map +1 -1
  30. package/lib/less/functions/function-registry.js +1 -0
  31. package/lib/less/functions/function-registry.js.map +1 -1
  32. package/lib/less/functions/index.js +4 -2
  33. package/lib/less/functions/index.js.map +1 -1
  34. package/lib/less/functions/list.js +2 -2
  35. package/lib/less/functions/list.js.map +1 -1
  36. package/lib/less/functions/math-helper.js +1 -1
  37. package/lib/less/functions/math-helper.js.map +1 -1
  38. package/lib/less/functions/math.js +2 -1
  39. package/lib/less/functions/math.js.map +1 -1
  40. package/lib/less/functions/number.js +10 -6
  41. package/lib/less/functions/number.js.map +1 -1
  42. package/lib/less/functions/style.js +28 -0
  43. package/lib/less/functions/style.js.map +1 -0
  44. package/lib/less/functions/svg.js +6 -6
  45. package/lib/less/functions/svg.js.map +1 -1
  46. package/lib/less/functions/types.js +1 -1
  47. package/lib/less/functions/types.js.map +1 -1
  48. package/lib/less/import-manager.js +2 -3
  49. package/lib/less/import-manager.js.map +1 -1
  50. package/lib/less/index.js +8 -9
  51. package/lib/less/index.js.map +1 -1
  52. package/lib/less/less-error.js +11 -12
  53. package/lib/less/less-error.js.map +1 -1
  54. package/lib/less/parse-tree.js +2 -3
  55. package/lib/less/parse-tree.js.map +1 -1
  56. package/lib/less/parse.js +1 -2
  57. package/lib/less/parse.js.map +1 -1
  58. package/lib/less/parser/chunker.js +1 -2
  59. package/lib/less/parser/chunker.js.map +1 -1
  60. package/lib/less/parser/parser-input.js +11 -5
  61. package/lib/less/parser/parser-input.js.map +1 -1
  62. package/lib/less/parser/parser.js +150 -104
  63. package/lib/less/parser/parser.js.map +1 -1
  64. package/lib/less/render.js +1 -2
  65. package/lib/less/render.js.map +1 -1
  66. package/lib/less/source-map-builder.js +2 -3
  67. package/lib/less/source-map-builder.js.map +1 -1
  68. package/lib/less/source-map-output.js +1 -1
  69. package/lib/less/source-map-output.js.map +1 -1
  70. package/lib/less/transform-tree.js +1 -2
  71. package/lib/less/transform-tree.js.map +1 -1
  72. package/lib/less/tree/assignment.js +1 -1
  73. package/lib/less/tree/assignment.js.map +1 -1
  74. package/lib/less/tree/atrule-syntax.js +10 -0
  75. package/lib/less/tree/atrule-syntax.js.map +1 -0
  76. package/lib/less/tree/atrule.js +4 -4
  77. package/lib/less/tree/atrule.js.map +1 -1
  78. package/lib/less/tree/attribute.js +2 -2
  79. package/lib/less/tree/attribute.js.map +1 -1
  80. package/lib/less/tree/call.js +3 -2
  81. package/lib/less/tree/call.js.map +1 -1
  82. package/lib/less/tree/color.js +8 -6
  83. package/lib/less/tree/color.js.map +1 -1
  84. package/lib/less/tree/comment.js +1 -1
  85. package/lib/less/tree/comment.js.map +1 -1
  86. package/lib/less/tree/container.js +48 -0
  87. package/lib/less/tree/container.js.map +1 -0
  88. package/lib/less/tree/debug-info.js +6 -6
  89. package/lib/less/tree/debug-info.js.map +1 -1
  90. package/lib/less/tree/declaration.js +1 -1
  91. package/lib/less/tree/declaration.js.map +1 -1
  92. package/lib/less/tree/dimension.js +6 -4
  93. package/lib/less/tree/dimension.js.map +1 -1
  94. package/lib/less/tree/expression.js +5 -1
  95. package/lib/less/tree/expression.js.map +1 -1
  96. package/lib/less/tree/extend.js +2 -0
  97. package/lib/less/tree/extend.js.map +1 -1
  98. package/lib/less/tree/import.js +1 -1
  99. package/lib/less/tree/import.js.map +1 -1
  100. package/lib/less/tree/index.js +4 -0
  101. package/lib/less/tree/index.js.map +1 -1
  102. package/lib/less/tree/javascript.js +1 -1
  103. package/lib/less/tree/javascript.js.map +1 -1
  104. package/lib/less/tree/js-eval-node.js +6 -6
  105. package/lib/less/tree/js-eval-node.js.map +1 -1
  106. package/lib/less/tree/media.js +4 -88
  107. package/lib/less/tree/media.js.map +1 -1
  108. package/lib/less/tree/mixin-call.js +6 -6
  109. package/lib/less/tree/mixin-call.js.map +1 -1
  110. package/lib/less/tree/mixin-definition.js +2 -2
  111. package/lib/less/tree/mixin-definition.js.map +1 -1
  112. package/lib/less/tree/namespace-value.js +6 -6
  113. package/lib/less/tree/namespace-value.js.map +1 -1
  114. package/lib/less/tree/nested-at-rule.js +91 -0
  115. package/lib/less/tree/nested-at-rule.js.map +1 -0
  116. package/lib/less/tree/node.js +6 -4
  117. package/lib/less/tree/node.js.map +1 -1
  118. package/lib/less/tree/property.js +2 -2
  119. package/lib/less/tree/property.js.map +1 -1
  120. package/lib/less/tree/query-in-parens.js +41 -0
  121. package/lib/less/tree/query-in-parens.js.map +1 -0
  122. package/lib/less/tree/quoted.js +3 -3
  123. package/lib/less/tree/quoted.js.map +1 -1
  124. package/lib/less/tree/ruleset.js +14 -11
  125. package/lib/less/tree/ruleset.js.map +1 -1
  126. package/lib/less/tree/selector.js +5 -3
  127. package/lib/less/tree/selector.js.map +1 -1
  128. package/lib/less/tree/unit.js +4 -2
  129. package/lib/less/tree/unit.js.map +1 -1
  130. package/lib/less/tree/url.js +2 -2
  131. package/lib/less/tree/url.js.map +1 -1
  132. package/lib/less/tree/variable-call.js +1 -1
  133. package/lib/less/tree/variable-call.js.map +1 -1
  134. package/lib/less/tree/variable.js +3 -3
  135. package/lib/less/tree/variable.js.map +1 -1
  136. package/lib/less/utils.js +9 -5
  137. package/lib/less/utils.js.map +1 -1
  138. package/lib/less/visitors/extend-visitor.js +8 -4
  139. package/lib/less/visitors/extend-visitor.js.map +1 -1
  140. package/lib/less/visitors/import-visitor.js +4 -0
  141. package/lib/less/visitors/import-visitor.js.map +1 -1
  142. package/lib/less/visitors/join-selector-visitor.js +4 -0
  143. package/lib/less/visitors/join-selector-visitor.js.map +1 -1
  144. package/lib/less/visitors/to-css-visitor.js +9 -5
  145. package/lib/less/visitors/to-css-visitor.js.map +1 -1
  146. package/lib/less/visitors/visitor.js +2 -2
  147. package/lib/less/visitors/visitor.js.map +1 -1
  148. package/lib/less-browser/add-default-options.js +1 -1
  149. package/lib/less-browser/add-default-options.js.map +1 -1
  150. package/lib/less-browser/bootstrap.js +6 -7
  151. package/lib/less-browser/bootstrap.js.map +1 -1
  152. package/lib/less-browser/browser.js +1 -1
  153. package/lib/less-browser/browser.js.map +1 -1
  154. package/lib/less-browser/cache.js +7 -7
  155. package/lib/less-browser/cache.js.map +1 -1
  156. package/lib/less-browser/error-reporting.js +11 -11
  157. package/lib/less-browser/error-reporting.js.map +1 -1
  158. package/lib/less-browser/file-manager.js +4 -5
  159. package/lib/less-browser/file-manager.js.map +1 -1
  160. package/lib/less-browser/index.js +17 -13
  161. package/lib/less-browser/index.js.map +1 -1
  162. package/lib/less-browser/plugin-loader.js +3 -2
  163. package/lib/less-browser/plugin-loader.js.map +1 -1
  164. package/lib/less-browser/utils.js +4 -4
  165. package/lib/less-browser/utils.js.map +1 -1
  166. package/lib/less-node/file-manager.js +17 -17
  167. package/lib/less-node/file-manager.js.map +1 -1
  168. package/lib/less-node/image-size.js +1 -1
  169. package/lib/less-node/image-size.js.map +1 -1
  170. package/lib/less-node/index.js +1 -1
  171. package/lib/less-node/index.js.map +1 -1
  172. package/lib/less-node/lessc-helper.js +2 -1
  173. package/lib/less-node/lessc-helper.js.map +1 -1
  174. package/lib/less-node/url-file-manager.js +9 -4
  175. package/lib/less-node/url-file-manager.js.map +1 -1
  176. package/package.json +140 -137
  177. package/test/browser/css/plugin/plugin.css +1 -1
  178. package/test/browser/css/relative-urls/urls.css +8 -8
  179. package/test/browser/css/rewrite-urls/urls.css +8 -8
  180. package/test/browser/css/urls.css +12 -12
  181. package/test/browser/generator/benchmark.config.js +19 -19
  182. package/test/browser/generator/generate.js +1 -1
  183. package/test/browser/generator/runner.config.js +76 -74
  184. package/test/browser/generator/template.js +17 -7
  185. package/test/browser/generator/utils.js +14 -0
  186. package/test/browser/less/relative-urls/urls.less +1 -1
  187. package/test/browser/less/rewrite-urls/urls.less +1 -1
  188. package/test/browser/less/rootpath/urls.less +1 -1
  189. package/test/browser/less/rootpath-relative/urls.less +1 -1
  190. package/test/browser/less/rootpath-rewrite-urls/urls.less +1 -1
  191. package/test/browser/less/urls.less +2 -2
  192. package/test/browser/runner-rewrite-urls-spec.js +1 -1
  193. package/test/index.js +2 -0
  194. package/test/less-test.js +33 -9
  195. package/test/plugins/filemanager/index.js +1 -1
  196. package/test/sourcemaps-variable-selector/basic.json +1 -0
  197. package/test/test-es6.ts +5 -5
  198. package/tsconfig.build.json +7 -0
  199. package/tsconfig.json +20 -18
  200. package/.eslintrc.json +0 -71
@@ -1,9 +1,11 @@
1
1
  var path = require('path');
2
2
  var resolve = require('resolve')
3
+ var { forceCovertToBrowserPath } = require('./utils');
3
4
 
4
- var rootFolder = path.resolve(__dirname, '../../../');
5
- var testFolder = path.relative(rootFolder, path.dirname(resolve.sync('@less/test-data')))
6
- var lessFolder = path.join(testFolder, 'less');
5
+ /** Root of repo */
6
+ var testFolder = forceCovertToBrowserPath(path.dirname(resolve.sync('@less/test-data')));
7
+ var lessFolder = forceCovertToBrowserPath(path.join(testFolder, 'less'));
8
+ var localTests = forceCovertToBrowserPath(path.resolve(__dirname, '..'));
7
9
 
8
10
  module.exports = {
9
11
  main: {
@@ -19,168 +21,168 @@ module.exports = {
19
21
  `!${lessFolder}/_main/empty.less`
20
22
  ],
21
23
  options: {
22
- helpers: "test/browser/runner-main-options.js",
23
- specs: "test/browser/runner-main-spec.js",
24
- outfile: "tmp/browser/test-runner-main.html"
24
+ helpers: 'test/browser/runner-main-options.js',
25
+ specs: 'test/browser/runner-main-spec.js',
26
+ outfile: 'tmp/browser/test-runner-main.html'
25
27
  }
26
28
  },
27
29
  legacy: {
28
30
  src: [`${lessFolder}/legacy/*.less`],
29
31
  options: {
30
- helpers: "test/browser/runner-legacy-options.js",
31
- specs: "test/browser/runner-legacy-spec.js",
32
- outfile: "tmp/browser/test-runner-legacy.html"
32
+ helpers: 'test/browser/runner-legacy-options.js',
33
+ specs: 'test/browser/runner-legacy-spec.js',
34
+ outfile: 'tmp/browser/test-runner-legacy.html'
33
35
  }
34
36
  },
35
37
  strictUnits: {
36
- src: [`${lessFolder}/strict-units/*.less`],
38
+ src: [`${lessFolder}/units/strict/*.less`],
37
39
  options: {
38
- helpers: "test/browser/runner-strict-units-options.js",
39
- specs: "test/browser/runner-strict-units-spec.js",
40
- outfile: "tmp/browser/test-runner-strict-units.html"
40
+ helpers: 'test/browser/runner-strict-units-options.js',
41
+ specs: 'test/browser/runner-strict-units-spec.js',
42
+ outfile: 'tmp/browser/test-runner-strict-units.html'
41
43
  }
42
44
  },
43
45
  errors: {
44
46
  src: [
45
47
  `${lessFolder}/errors/*.less`,
46
48
  `${testFolder}/errors/javascript-error.less`,
47
- "test/browser/less/errors/*.less"
49
+ `${localTests}/less/errors/*.less`
48
50
  ],
49
51
  options: {
50
52
  timeout: 20000,
51
- helpers: "test/browser/runner-errors-options.js",
52
- specs: "test/browser/runner-errors-spec.js",
53
- outfile: "tmp/browser/test-runner-errors.html"
53
+ helpers: 'test/browser/runner-errors-options.js',
54
+ specs: 'test/browser/runner-errors-spec.js',
55
+ outfile: 'tmp/browser/test-runner-errors.html'
54
56
  }
55
57
  },
56
58
  noJsErrors: {
57
59
  src: [`${lessFolder}/no-js-errors/*.less`],
58
60
  options: {
59
- helpers: "test/browser/runner-no-js-errors-options.js",
60
- specs: "test/browser/runner-no-js-errors-spec.js",
61
- outfile: "tmp/browser/test-runner-no-js-errors.html"
61
+ helpers: 'test/browser/runner-no-js-errors-options.js',
62
+ specs: 'test/browser/runner-no-js-errors-spec.js',
63
+ outfile: 'tmp/browser/test-runner-no-js-errors.html'
62
64
  }
63
65
  },
64
66
  browser: {
65
67
  src: [
66
- "test/browser/less/*.less",
67
- "test/browser/less/plugin/*.less"
68
+ `${localTests}/less/*.less`,
69
+ `${localTests}/less/plugin/*.less`
68
70
  ],
69
71
  options: {
70
- helpers: "test/browser/runner-browser-options.js",
71
- specs: "test/browser/runner-browser-spec.js",
72
- outfile: "tmp/browser/test-runner-browser.html"
72
+ helpers: 'test/browser/runner-browser-options.js',
73
+ specs: 'test/browser/runner-browser-spec.js',
74
+ outfile: 'tmp/browser/test-runner-browser.html'
73
75
  }
74
76
  },
75
77
  relativeUrls: {
76
- src: ["test/browser/less/relative-urls/*.less"],
78
+ src: [`${localTests}/less/relative-urls/*.less`],
77
79
  options: {
78
- helpers: "test/browser/runner-relative-urls-options.js",
79
- specs: "test/browser/runner-relative-urls-spec.js",
80
- outfile: "tmp/browser/test-runner-relative-urls.html"
80
+ helpers: 'test/browser/runner-relative-urls-options.js',
81
+ specs: 'test/browser/runner-relative-urls-spec.js',
82
+ outfile: 'tmp/browser/test-runner-relative-urls.html'
81
83
  }
82
84
  },
83
85
  rewriteUrls: {
84
- src: ["test/browser/less/rewrite-urls/*.less"],
86
+ src: [`${localTests}/less/rewrite-urls/*.less`],
85
87
  options: {
86
- helpers: "test/browser/runner-rewrite-urls-options.js",
87
- specs: "test/browser/runner-rewrite-urls-spec.js",
88
- outfile: "tmp/browser/test-runner-rewrite-urls.html"
88
+ helpers: 'test/browser/runner-rewrite-urls-options.js',
89
+ specs: 'test/browser/runner-rewrite-urls-spec.js',
90
+ outfile: 'tmp/browser/test-runner-rewrite-urls.html'
89
91
  }
90
92
  },
91
93
  rootpath: {
92
- src: ["test/browser/less/rootpath/*.less"],
94
+ src: [`${localTests}/less/rootpath/*.less`],
93
95
  options: {
94
- helpers: "test/browser/runner-rootpath-options.js",
95
- specs: "test/browser/runner-rootpath-spec.js",
96
- outfile: "tmp/browser/test-runner-rootpath.html"
96
+ helpers: 'test/browser/runner-rootpath-options.js',
97
+ specs: 'test/browser/runner-rootpath-spec.js',
98
+ outfile: 'tmp/browser/test-runner-rootpath.html'
97
99
  }
98
100
  },
99
101
  rootpathRelative: {
100
- src: ["test/browser/less/rootpath-relative/*.less"],
102
+ src: [`${localTests}/less/rootpath-relative/*.less`],
101
103
  options: {
102
- helpers: "test/browser/runner-rootpath-relative-options.js",
103
- specs: "test/browser/runner-rootpath-relative-spec.js",
104
- outfile: "tmp/browser/test-runner-rootpath-relative.html"
104
+ helpers: 'test/browser/runner-rootpath-relative-options.js',
105
+ specs: 'test/browser/runner-rootpath-relative-spec.js',
106
+ outfile: 'tmp/browser/test-runner-rootpath-relative.html'
105
107
  }
106
108
  },
107
109
  rootpathRewriteUrls: {
108
- src: ["test/browser/less/rootpath-rewrite-urls/*.less"],
110
+ src: [`${localTests}/less/rootpath-rewrite-urls/*.less`],
109
111
  options: {
110
112
  helpers:
111
- "test/browser/runner-rootpath-rewrite-urls-options.js",
112
- specs: "test/browser/runner-rootpath-rewrite-urls-spec.js",
113
+ 'test/browser/runner-rootpath-rewrite-urls-options.js',
114
+ specs: 'test/browser/runner-rootpath-rewrite-urls-spec.js',
113
115
  outfile:
114
- "tmp/browser/test-runner-rootpath-rewrite-urls.html"
116
+ 'tmp/browser/test-runner-rootpath-rewrite-urls.html'
115
117
  }
116
118
  },
117
119
  production: {
118
- src: ["test/browser/less/production/*.less"],
120
+ src: [`${localTests}/less/production/*.less`],
119
121
  options: {
120
- helpers: "test/browser/runner-production-options.js",
121
- specs: "test/browser/runner-production-spec.js",
122
- outfile: "tmp/browser/test-runner-production.html"
122
+ helpers: 'test/browser/runner-production-options.js',
123
+ specs: 'test/browser/runner-production-spec.js',
124
+ outfile: 'tmp/browser/test-runner-production.html'
123
125
  }
124
126
  },
125
127
  modifyVars: {
126
- src: ["test/browser/less/modify-vars/*.less"],
128
+ src: [`${localTests}/less/modify-vars/*.less`],
127
129
  options: {
128
- helpers: "test/browser/runner-modify-vars-options.js",
129
- specs: "test/browser/runner-modify-vars-spec.js",
130
- outfile: "tmp/browser/test-runner-modify-vars.html"
130
+ helpers: 'test/browser/runner-modify-vars-options.js',
131
+ specs: 'test/browser/runner-modify-vars-spec.js',
132
+ outfile: 'tmp/browser/test-runner-modify-vars.html'
131
133
  }
132
134
  },
133
135
  globalVars: {
134
- src: ["test/browser/less/global-vars/*.less"],
136
+ src: [`${localTests}/less/global-vars/*.less`],
135
137
  options: {
136
- helpers: "test/browser/runner-global-vars-options.js",
137
- specs: "test/browser/runner-global-vars-spec.js",
138
- outfile: "tmp/browser/test-runner-global-vars.html"
138
+ helpers: 'test/browser/runner-global-vars-options.js',
139
+ specs: 'test/browser/runner-global-vars-spec.js',
140
+ outfile: 'tmp/browser/test-runner-global-vars.html'
139
141
  }
140
142
  },
141
143
  postProcessorPlugin: {
142
144
  src: [`${lessFolder}/postProcessorPlugin/*.less`],
143
145
  options: {
144
146
  helpers: [
145
- `test/plugins/postprocess/index.js`,
146
- "test/browser/runner-postProcessorPlugin-options.js"
147
+ 'test/plugins/postprocess/index.js',
148
+ 'test/browser/runner-postProcessorPlugin-options.js'
147
149
  ],
148
- specs: "test/browser/runner-postProcessorPlugin.js",
150
+ specs: 'test/browser/runner-postProcessorPlugin.js',
149
151
  outfile:
150
- "tmp/browser/test-runner-post-processor-plugin.html"
152
+ 'tmp/browser/test-runner-post-processor-plugin.html'
151
153
  }
152
154
  },
153
155
  preProcessorPlugin: {
154
156
  src: [`${lessFolder}/preProcessorPlugin/*.less`],
155
157
  options: {
156
158
  helpers: [
157
- `test/plugins/preprocess/index.js`,
158
- "test/browser/runner-preProcessorPlugin-options.js"
159
+ 'test/plugins/preprocess/index.js',
160
+ 'test/browser/runner-preProcessorPlugin-options.js'
159
161
  ],
160
- specs: "test/browser/runner-preProcessorPlugin.js",
161
- outfile: "tmp/browser/test-runner-pre-processor-plugin.html"
162
+ specs: 'test/browser/runner-preProcessorPlugin.js',
163
+ outfile: 'tmp/browser/test-runner-pre-processor-plugin.html'
162
164
  }
163
165
  },
164
166
  visitorPlugin: {
165
167
  src: [`${lessFolder}/visitorPlugin/*.less`],
166
168
  options: {
167
169
  helpers: [
168
- `test/plugins/visitor/index.js`,
169
- "test/browser/runner-VisitorPlugin-options.js"
170
+ 'test/plugins/visitor/index.js',
171
+ 'test/browser/runner-VisitorPlugin-options.js'
170
172
  ],
171
- specs: "test/browser/runner-VisitorPlugin.js",
172
- outfile: "tmp/browser/test-runner-visitor-plugin.html"
173
+ specs: 'test/browser/runner-VisitorPlugin.js',
174
+ outfile: 'tmp/browser/test-runner-visitor-plugin.html'
173
175
  }
174
176
  },
175
177
  filemanagerPlugin: {
176
178
  src: [`${lessFolder}/filemanagerPlugin/*.less`],
177
179
  options: {
178
180
  helpers: [
179
- `test/plugins/filemanager/index.js`,
180
- "test/browser/runner-filemanagerPlugin-options.js"
181
+ 'test/plugins/filemanager/index.js',
182
+ 'test/browser/runner-filemanagerPlugin-options.js'
181
183
  ],
182
- specs: "test/browser/runner-filemanagerPlugin.js",
183
- outfile: "tmp/browser/test-runner-filemanager-plugin.html"
184
+ specs: 'test/browser/runner-filemanagerPlugin.js',
185
+ outfile: 'tmp/browser/test-runner-filemanager-plugin.html'
184
186
  }
185
187
  }
186
- }
188
+ }
@@ -1,4 +1,11 @@
1
1
  const html = require('html-template-tag')
2
+ const path = require('path')
3
+ const { forceCovertToBrowserPath } = require('./utils')
4
+
5
+ const webRoot = path.resolve(__dirname, '../../../../../');
6
+ const mochaDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha'))))
7
+ const chaiDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('chai'))))
8
+ const mochaTeamCityDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha-teamcity-reporter'))))
2
9
 
3
10
  /**
4
11
  * Generates HTML templates from list of test sheets
@@ -18,28 +25,30 @@ module.exports = (stylesheets, helpers, spec, less) => {
18
25
  <!-- for each test, generate CSS/LESS link tags -->
19
26
  $${stylesheets.map(function(fullLessName) {
20
27
  var pathParts = fullLessName.split('/');
21
- var fullCssName = fullLessName.replace(/\/less\//g, '/css/').replace(/less$/, 'css')
28
+ var fullCssName = fullLessName
29
+ .replace(/\/(browser|test-data)\/less\//g, '/$1/css/')
30
+ .replace(/less$/, 'css')
22
31
  var lessName = pathParts[pathParts.length - 1];
23
32
  var name = lessName.split('.')[0];
24
33
  return `
25
34
  <!-- the tags to be generated -->
26
- <link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="../../${fullLessName}">
27
- <link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="../../${fullCssName}">
35
+ <link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="/${path.relative(webRoot, fullLessName)}">
36
+ <link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="/${path.relative(webRoot, fullCssName)}">
28
37
  ` }).join('')}
29
38
 
30
39
  $${helpers.map(helper => `
31
40
  <script src="../../${helper}"></script>
32
41
  `).join('')}
33
42
 
34
- <link rel="stylesheet" href="../../node_modules/mocha/mocha.css">
43
+ <link rel="stylesheet" href="/${mochaDir}/mocha.css">
35
44
  </head>
36
45
 
37
46
  <body>
38
47
  <!-- content -->
39
48
  <div id="mocha"></div>
40
- <script src="../../node_modules/mocha/mocha.js"></script>
41
- <script src="../../node_modules/mocha-teamcity-reporter/lib/teamcityBrowser.js"></script>
42
- <script src="../../node_modules/chai/chai.js"></script>
49
+ <script src="/${mochaDir}/mocha.js"></script>
50
+ <script src="/${mochaTeamCityDir}/teamcityBrowser.js"></script>
51
+ <script src="/${chaiDir}/chai.js"></script>
43
52
  <script>
44
53
  expect = chai.expect
45
54
  mocha.setup({
@@ -76,6 +85,7 @@ module.exports = (stylesheets, helpers, spec, less) => {
76
85
  failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
77
86
  };
78
87
  };
88
+
79
89
  </script>
80
90
  </body>
81
91
  </html>
@@ -0,0 +1,14 @@
1
+ /**
2
+ * utils for covert browser paths,
3
+ * fix https://github.com/less/less.js/pull/4213
4
+ *
5
+ * @param {string} path
6
+ * @returns {string}
7
+ */
8
+ function forceCovertToBrowserPath (path) {
9
+ return (path || '').replace(/\\/g, '/');
10
+ }
11
+
12
+ module.exports = {
13
+ forceCovertToBrowserPath
14
+ }
@@ -1,5 +1,5 @@
1
1
  @import ".././imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
3
  @font-face {
4
4
  src: url("/fonts/garamond-pro.ttf");
5
5
  src: local(Futura-Medium),
@@ -1,5 +1,5 @@
1
1
  @import ".././imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
3
  @font-face {
4
4
  src: url("/fonts/garamond-pro.ttf");
5
5
  src: local(Futura-Medium),
@@ -1,5 +1,5 @@
1
1
  @import "../imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
3
  @font-face {
4
4
  src: url("/fonts/garamond-pro.ttf");
5
5
  src: local(Futura-Medium),
@@ -1,5 +1,5 @@
1
1
  @import "../imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
3
  @font-face {
4
4
  src: url("/fonts/garamond-pro.ttf");
5
5
  src: local(Futura-Medium),
@@ -1,5 +1,5 @@
1
1
  @import "../imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
3
  @font-face {
4
4
  src: url("/fonts/garamond-pro.ttf");
5
5
  src: local(Futura-Medium),
@@ -1,6 +1,6 @@
1
1
  @import "imports/urls.less";
2
- @import "http://localhost:8081/test/browser/less/imports/urls2.less";
3
- @import "http://localhost:8081/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less";
2
+ @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
+ @import "http://localhost:8081/packages/less/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less";
4
4
  @font-face {
5
5
  src: url("/fonts/garamond-pro.ttf");
6
6
  src: local(Futura-Medium),
@@ -1,3 +1,3 @@
1
- describe("less.js browser test - rewrite urls", function() {
1
+ describe('less.js browser test - rewrite urls', function() {
2
2
  testLessEqualsInDocument();
3
3
  });
package/test/index.js CHANGED
@@ -63,6 +63,8 @@ var testMap = [
63
63
  'sourcemaps-empty/', lessTester.testEmptySourcemap],
64
64
  [{math: 'strict', strictUnits: true, sourceMap: {disableSourcemapAnnotation: true}},
65
65
  'sourcemaps-disable-annotation/', lessTester.testSourcemapWithoutUrlAnnotation],
66
+ [{math: 'strict', strictUnits: true, sourceMap: true},
67
+ 'sourcemaps-variable-selector/', lessTester.testSourcemapWithVariableInSelector],
66
68
  [{globalVars: true, banner: '/**\n * Test\n */\n'}, 'globalVars/',
67
69
  null, null, null, function(name, type, baseFolder) { return path.join(baseFolder, name) + '.json'; }],
68
70
  [{modifyVars: true}, 'modifyVars/',
package/test/less-test.js CHANGED
@@ -169,6 +169,29 @@ module.exports = function() {
169
169
  }
170
170
  }
171
171
 
172
+ function testSourcemapWithVariableInSelector(name, err, compiledLess, doReplacements, sourcemap, baseFolder) {
173
+ if (err) {
174
+ fail('ERROR: ' + (err && err.message));
175
+ return;
176
+ }
177
+
178
+ // Even if annotation is not necessary, the map file should be there.
179
+ fs.readFile(path.join('test/', name) + '.json', 'utf8', function (e, expectedSourcemap) {
180
+ process.stdout.write('- ' + path.join(baseFolder, name) + ': ');
181
+ if (sourcemap === expectedSourcemap) {
182
+ ok('OK');
183
+ } else if (err) {
184
+ fail('ERROR: ' + (err && err.message));
185
+ if (isVerbose) {
186
+ process.stdout.write('\n');
187
+ process.stdout.write(err.stack + '\n');
188
+ }
189
+ } else {
190
+ difference('FAIL', expectedSourcemap, sourcemap);
191
+ }
192
+ });
193
+ }
194
+
172
195
  function testImports(name, err, compiledLess, doReplacements, sourcemap, baseFolder, imports) {
173
196
  if (err) {
174
197
  fail('ERROR: ' + (err && err.message));
@@ -228,7 +251,7 @@ module.exports = function() {
228
251
 
229
252
  // To fix ci fail about error format change in upstream v8 project
230
253
  // https://github.com/v8/v8/commit/c0fd89c3c089e888c4f4e8582e56db7066fa779b
231
- // Node 16.9.0+ include this change via https://github.com/nodejs/node/pull/39947
254
+ // Node 16.9.0+ include this change via https://github.com/nodejs/node/pull/39947
232
255
  function testTypeErrors(name, err, compiledLess, doReplacements, sourcemap, baseFolder) {
233
256
  const fileSuffix = semver.gte(process.version, 'v16.9.0') ? '-2.txt' : '.txt';
234
257
  fs.readFile(path.join(baseFolder, name) + fileSuffix, 'utf8', function (e, expectedErr) {
@@ -254,7 +277,7 @@ module.exports = function() {
254
277
  // https://github.com/less/less.js/issues/3112
255
278
  function testJSImport() {
256
279
  process.stdout.write('- Testing root function registry');
257
- less.functions.functionRegistry.add('ext', function() {
280
+ less.functions.functionRegistry.add('ext', function() {
258
281
  return new less.tree.Anonymous('file');
259
282
  });
260
283
  var expected = '@charset "utf-8";\n';
@@ -282,7 +305,7 @@ module.exports = function() {
282
305
  .replace(/\{pathhref\}/g, '')
283
306
  .replace(/\{404status\}/g, '')
284
307
  .replace(/\{nodepath\}/g, path.join(process.cwd(), 'node_modules', '/'))
285
- .replace(/\{pathrel\}/g, path.join(path.relative(lessFolder, p), '/'))
308
+ .replace(/\{pathrel\}/g, path.join(path.relative(lessFolder, p), '/'))
286
309
  .replace(/\{pathesc\}/g, pathesc)
287
310
  .replace(/\{pathimport\}/g, pathimport)
288
311
  .replace(/\{pathimportesc\}/g, pathimportesc)
@@ -327,7 +350,7 @@ module.exports = function() {
327
350
 
328
351
  function runTestSetInternal(baseFolder, opts, foldername, verifyFunction, nameModifier, doReplacements, getFilename) {
329
352
  foldername = foldername || '';
330
-
353
+
331
354
  var originalOptions = opts || {};
332
355
 
333
356
  if (!doReplacements) {
@@ -497,10 +520,10 @@ module.exports = function() {
497
520
  }
498
521
 
499
522
  /**
500
- *
501
- * @param {Object} options
502
- * @param {string} filePath
503
- * @param {Function} callback
523
+ *
524
+ * @param {Object} options
525
+ * @param {string} filePath
526
+ * @param {Function} callback
504
527
  */
505
528
  function toCSS(options, filePath, callback) {
506
529
  options = options || {};
@@ -577,7 +600,7 @@ module.exports = function() {
577
600
  }
578
601
  ok(stylize('OK\n', 'green'));
579
602
  }
580
- );
603
+ );
581
604
  }
582
605
 
583
606
  return {
@@ -588,6 +611,7 @@ module.exports = function() {
588
611
  testTypeErrors: testTypeErrors,
589
612
  testSourcemap: testSourcemap,
590
613
  testSourcemapWithoutUrlAnnotation: testSourcemapWithoutUrlAnnotation,
614
+ testSourcemapWithVariableInSelector: testSourcemapWithVariableInSelector,
591
615
  testImports: testImports,
592
616
  testImportRedirect: testImportRedirect,
593
617
  testEmptySourcemap: testEmptySourcemap,
@@ -1,7 +1,7 @@
1
1
  (function(exports) {
2
2
  var plugin = function(less) {
3
3
  var FileManager = less.FileManager, TestFileManager = new FileManager();
4
- function TestFileManager() { };
4
+ function TestFileManager() { }
5
5
  TestFileManager.loadFile = function (filename, currentDirectory, options, environment, callback) {
6
6
  if (filename.match(/.*\.test$/)) {
7
7
  return less.environment.fileManagers[0].loadFile('colors.test', currentDirectory, options, environment, callback);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["testweb/sourcemaps-variable-selector/basic.less"],"names":[],"mappings":"AAEC;EACG,eAAA","file":"sourcemaps-variable-selector/basic.css"}
package/test/test-es6.ts CHANGED
@@ -2,16 +2,16 @@
2
2
  console.log('Testing ES6 imports...')
3
3
 
4
4
  import less from '..';
5
- let lessRender = less.render;
5
+ const lessRender = less.render;
6
6
 
7
7
  // then I call lessRender on something
8
- let y = lessRender(`
8
+ lessRender(`
9
9
  body {
10
10
  a: 1;
11
11
  b: 2;
12
12
  c: 30;
13
13
  d: 4;
14
- }`, {sourceMap: {}}, function(error, output) {
15
- if (error)
16
- console.error(error)
14
+ }`, {sourceMap: {}}, function(error: any, output: any) {
15
+ if (error)
16
+ console.error(error)
17
17
  })
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "./tsconfig",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ },
6
+ "include": ["src/**/*"]
7
+ }
package/tsconfig.json CHANGED
@@ -1,19 +1,21 @@
1
- {
2
- "compilerOptions": {
3
- "outDir": "./lib",
4
- "rootDir": "./src",
5
- "allowJs": true,
6
- "sourceMap": true,
7
- "inlineSources": true,
8
- "esModuleInterop": true,
9
- "importHelpers": true,
10
- "target": "ES5"
11
- },
12
- "ts-node": {
13
- "compilerOptions": {
14
- "rootDir": "."
15
- }
16
- },
17
- "include": ["src/**/*"],
18
- "exclude": ["node_modules"]
1
+ {
2
+ "compilerOptions": {
3
+ "outDir": "./lib",
4
+ "moduleResolution": "node",
5
+ "rootDir": ".",
6
+ "allowJs": true,
7
+ "sourceMap": true,
8
+ "inlineSources": true,
9
+ "esModuleInterop": true,
10
+ "importHelpers": true,
11
+ "noImplicitAny": true,
12
+ "target": "ES5"
13
+ },
14
+ "ts-node": {
15
+ "compilerOptions": {
16
+ "rootDir": "."
17
+ }
18
+ },
19
+ "include": ["**/*"],
20
+ "exclude": ["node_modules", "lib/**/*"]
19
21
  }