less 3.13.1 → 4.1.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.
- package/Gruntfile.js +1 -1
- package/bin/lessc +14 -3
- package/dist/less.js +11156 -11157
- package/dist/less.min.js +3 -3
- package/dist/less.min.js.map +1 -1
- package/lib/less/constants.js +2 -2
- package/lib/less/constants.js.map +1 -1
- package/lib/less/contexts.js +88 -110
- package/lib/less/contexts.js.map +1 -1
- package/lib/less/data/index.js +3 -5
- package/lib/less/data/index.js.map +1 -1
- package/lib/less/default-options.js +57 -53
- package/lib/less/default-options.js.map +1 -1
- package/lib/less/environment/abstract-file-manager.js +6 -6
- package/lib/less/environment/abstract-file-manager.js.map +1 -1
- package/lib/less/environment/abstract-plugin-loader.js +7 -13
- package/lib/less/environment/abstract-plugin-loader.js.map +1 -1
- package/lib/less/environment/environment.js +9 -11
- package/lib/less/environment/environment.js.map +1 -1
- package/lib/less/functions/boolean.js +14 -6
- package/lib/less/functions/boolean.js.map +1 -1
- package/lib/less/functions/color-blending.js +2 -4
- package/lib/less/functions/color-blending.js.map +1 -1
- package/lib/less/functions/color.js +41 -9
- package/lib/less/functions/color.js.map +1 -1
- package/lib/less/functions/data-uri.js +5 -26
- package/lib/less/functions/data-uri.js.map +1 -1
- package/lib/less/functions/default.js +2 -4
- package/lib/less/functions/default.js.map +1 -1
- package/lib/less/functions/function-caller.js +19 -35
- package/lib/less/functions/function-caller.js.map +1 -1
- package/lib/less/functions/index.js +14 -16
- package/lib/less/functions/index.js.map +1 -1
- package/lib/less/functions/list.js +21 -12
- package/lib/less/functions/list.js.map +1 -1
- package/lib/less/functions/math-helper.js +2 -4
- package/lib/less/functions/math-helper.js.map +1 -1
- package/lib/less/functions/math.js +2 -4
- package/lib/less/functions/math.js.map +1 -1
- package/lib/less/functions/number.js +12 -8
- package/lib/less/functions/number.js.map +1 -1
- package/lib/less/functions/string.js +4 -6
- package/lib/less/functions/string.js.map +1 -1
- package/lib/less/functions/svg.js +6 -8
- package/lib/less/functions/svg.js.map +1 -1
- package/lib/less/functions/types.js +9 -11
- package/lib/less/functions/types.js.map +1 -1
- package/lib/less/import-manager.js +6 -27
- package/lib/less/import-manager.js.map +1 -1
- package/lib/less/index.js +48 -82
- package/lib/less/index.js.map +1 -1
- package/lib/less/less-error.js +6 -24
- package/lib/less/less-error.js.map +1 -1
- package/lib/less/parse-tree.js +8 -8
- package/lib/less/parse-tree.js.map +1 -1
- package/lib/less/parse.js +11 -31
- package/lib/less/parse.js.map +1 -1
- package/lib/less/parser/chunker.js +4 -2
- package/lib/less/parser/chunker.js.map +1 -1
- package/lib/less/parser/parser-input.js +2 -4
- package/lib/less/parser/parser-input.js.map +1 -1
- package/lib/less/parser/parser.js +8 -29
- package/lib/less/parser/parser.js.map +1 -1
- package/lib/less/plugin-manager.js +2 -3
- package/lib/less/plugin-manager.js.map +1 -1
- package/lib/less/render.js +6 -22
- package/lib/less/render.js.map +1 -1
- package/lib/less/source-map-builder.js +4 -2
- package/lib/less/source-map-builder.js.map +1 -1
- package/lib/less/source-map-output.js +5 -7
- package/lib/less/source-map-output.js.map +1 -1
- package/lib/less/transform-tree.js +9 -9
- package/lib/less/transform-tree.js.map +1 -1
- package/lib/less/tree/anonymous.js +19 -20
- package/lib/less/tree/anonymous.js.map +1 -1
- package/lib/less/tree/assignment.js +22 -23
- package/lib/less/tree/assignment.js.map +1 -1
- package/lib/less/tree/atrule.js +105 -116
- package/lib/less/tree/atrule.js.map +1 -1
- package/lib/less/tree/attribute.js +18 -19
- package/lib/less/tree/attribute.js.map +1 -1
- package/lib/less/tree/call.js +68 -69
- package/lib/less/tree/call.js.map +1 -1
- package/lib/less/tree/color.js +163 -172
- package/lib/less/tree/color.js.map +1 -1
- package/lib/less/tree/combinator.js +9 -10
- package/lib/less/tree/combinator.js.map +1 -1
- package/lib/less/tree/comment.js +15 -16
- package/lib/less/tree/comment.js.map +1 -1
- package/lib/less/tree/condition.js +29 -30
- package/lib/less/tree/condition.js.map +1 -1
- package/lib/less/tree/debug-info.js +32 -30
- package/lib/less/tree/debug-info.js.map +1 -1
- package/lib/less/tree/declaration.js +71 -95
- package/lib/less/tree/declaration.js.map +1 -1
- package/lib/less/tree/detached-ruleset.js +18 -38
- package/lib/less/tree/detached-ruleset.js.map +1 -1
- package/lib/less/tree/dimension.js +126 -129
- package/lib/less/tree/dimension.js.map +1 -1
- package/lib/less/tree/element.js +40 -41
- package/lib/less/tree/element.js.map +1 -1
- package/lib/less/tree/expression.js +55 -74
- package/lib/less/tree/expression.js.map +1 -1
- package/lib/less/tree/extend.js +28 -34
- package/lib/less/tree/extend.js.map +1 -1
- package/lib/less/tree/import.js +120 -140
- package/lib/less/tree/import.js.map +1 -1
- package/lib/less/tree/index.js +37 -39
- package/lib/less/tree/index.js.map +1 -1
- package/lib/less/tree/javascript.js +23 -24
- package/lib/less/tree/javascript.js.map +1 -1
- package/lib/less/tree/js-eval-node.js +51 -50
- package/lib/less/tree/js-eval-node.js.map +1 -1
- package/lib/less/tree/keyword.js +10 -11
- package/lib/less/tree/keyword.js.map +1 -1
- package/lib/less/tree/media.js +111 -131
- package/lib/less/tree/media.js.map +1 -1
- package/lib/less/tree/mixin-call.js +156 -160
- package/lib/less/tree/mixin-call.js.map +1 -1
- package/lib/less/tree/mixin-definition.js +164 -184
- package/lib/less/tree/mixin-definition.js.map +1 -1
- package/lib/less/tree/namespace-value.js +53 -57
- package/lib/less/tree/namespace-value.js.map +1 -1
- package/lib/less/tree/negative.js +16 -17
- package/lib/less/tree/negative.js.map +1 -1
- package/lib/less/tree/node.js +39 -39
- package/lib/less/tree/node.js.map +1 -1
- package/lib/less/tree/operation.js +41 -63
- package/lib/less/tree/operation.js.map +1 -1
- package/lib/less/tree/paren.js +13 -14
- package/lib/less/tree/paren.js.map +1 -1
- package/lib/less/tree/property.js +48 -49
- package/lib/less/tree/property.js.map +1 -1
- package/lib/less/tree/quoted.js +50 -51
- package/lib/less/tree/quoted.js.map +1 -1
- package/lib/less/tree/ruleset.js +665 -702
- package/lib/less/tree/ruleset.js.map +1 -1
- package/lib/less/tree/selector.js +105 -106
- package/lib/less/tree/selector.js.map +1 -1
- package/lib/less/tree/unicode-descriptor.js +5 -6
- package/lib/less/tree/unicode-descriptor.js.map +1 -1
- package/lib/less/tree/unit.js +99 -120
- package/lib/less/tree/unit.js.map +1 -1
- package/lib/less/tree/url.js +44 -45
- package/lib/less/tree/url.js.map +1 -1
- package/lib/less/tree/value.js +27 -26
- package/lib/less/tree/value.js.map +1 -1
- package/lib/less/tree/variable-call.js +30 -31
- package/lib/less/tree/variable-call.js.map +1 -1
- package/lib/less/tree/variable.js +46 -48
- package/lib/less/tree/variable.js.map +1 -1
- package/lib/less/utils.js +5 -23
- package/lib/less/utils.js.map +1 -1
- package/lib/less/visitors/extend-visitor.js +14 -41
- package/lib/less/visitors/extend-visitor.js.map +1 -1
- package/lib/less/visitors/import-sequencer.js +2 -7
- package/lib/less/visitors/import-sequencer.js.map +1 -1
- package/lib/less/visitors/import-visitor.js +7 -33
- package/lib/less/visitors/import-visitor.js.map +1 -1
- package/lib/less/visitors/index.js +7 -9
- package/lib/less/visitors/index.js.map +1 -1
- package/lib/less/visitors/join-selector-visitor.js +2 -4
- package/lib/less/visitors/join-selector-visitor.js.map +1 -1
- package/lib/less/visitors/to-css-visitor.js +4 -6
- package/lib/less/visitors/to-css-visitor.js.map +1 -1
- package/lib/less/visitors/visitor.js +4 -12
- package/lib/less/visitors/visitor.js.map +1 -1
- package/lib/less-browser/add-default-options.js +2 -4
- package/lib/less-browser/add-default-options.js.map +1 -1
- package/lib/less-browser/bootstrap.js +4 -6
- package/lib/less-browser/bootstrap.js.map +1 -1
- package/lib/less-browser/browser.js +2 -20
- package/lib/less-browser/browser.js.map +1 -1
- package/lib/less-browser/error-reporting.js +3 -24
- package/lib/less-browser/error-reporting.js.map +1 -1
- package/lib/less-browser/file-manager.js +17 -36
- package/lib/less-browser/file-manager.js.map +1 -1
- package/lib/less-browser/image-size.js +2 -4
- package/lib/less-browser/image-size.js.map +1 -1
- package/lib/less-browser/index.js +9 -11
- package/lib/less-browser/index.js.map +1 -1
- package/lib/less-browser/plugin-loader.js +10 -29
- package/lib/less-browser/plugin-loader.js.map +1 -1
- package/lib/less-node/file-manager.js +15 -34
- package/lib/less-node/file-manager.js.map +1 -1
- package/lib/less-node/image-size.js +4 -6
- package/lib/less-node/image-size.js.map +1 -1
- package/lib/less-node/index.js +10 -16
- package/lib/less-node/index.js.map +1 -1
- package/lib/less-node/plugin-loader.js +23 -42
- package/lib/less-node/plugin-loader.js.map +1 -1
- package/lib/less-node/url-file-manager.js +23 -38
- package/lib/less-node/url-file-manager.js.map +1 -1
- package/package.json +12 -9
- package/test/browser/less/errors/image-height-error.txt +1 -1
- package/test/browser/less/errors/image-size-error.txt +1 -1
- package/test/browser/less/errors/image-width-error.txt +1 -1
- package/test/index.js +28 -9
- package/test/less-test.js +36 -16
- package/tsconfig.json +1 -0
|
@@ -1,46 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
var
|
|
20
|
-
var
|
|
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"));
|
|
21
6
|
/**
|
|
22
7
|
* Node Plugin Loader
|
|
23
8
|
*/
|
|
24
|
-
var PluginLoader =
|
|
25
|
-
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
else {
|
|
37
|
-
return require(id);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
9
|
+
var PluginLoader = function (less) {
|
|
10
|
+
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);
|
|
15
|
+
if (str === '..' || str === './') {
|
|
16
|
+
return require(path_1.default.join(prefix, id));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return require(id);
|
|
20
|
+
}
|
|
40
21
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
PluginLoader.prototype = Object.assign(new abstract_plugin_loader_js_1.default(), {
|
|
25
|
+
loadPlugin: function (filename, basePath, context, environment, fileManager) {
|
|
44
26
|
var prefix = filename.slice(0, 1);
|
|
45
27
|
var explicit = prefix === '.' || prefix === '/' || filename.slice(-3).toLowerCase() === '.js';
|
|
46
28
|
if (!explicit) {
|
|
@@ -62,12 +44,11 @@ var PluginLoader = /** @class */ (function (_super) {
|
|
|
62
44
|
reject(err);
|
|
63
45
|
});
|
|
64
46
|
});
|
|
65
|
-
}
|
|
66
|
-
|
|
47
|
+
},
|
|
48
|
+
loadPluginSync: function (filename, basePath, context, environment, fileManager) {
|
|
67
49
|
context.syncImport = true;
|
|
68
50
|
return this.loadPlugin(filename, basePath, context, environment, fileManager);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
}(abstract_plugin_loader_js_1.default));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
72
53
|
exports.default = PluginLoader;
|
|
73
54
|
//# sourceMappingURL=plugin-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/less-node/plugin-loader.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/less-node/plugin-loader.js"],"names":[],"mappings":";;;AAAA,sDAAwB;AACxB,oHAAiF;AAEjF;;GAEG;AACH,IAAM,YAAY,GAAG,UAAS,IAAI;IAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,UAAA,MAAM;QACjB,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,UAAA,EAAE;YACL,IAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;gBAC9B,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;aACzC;iBACI;gBACD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;aACtB;QACL,CAAC,CAAC;IACN,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,mCAAoB,EAAE,EAAE;IAC/D,UAAU,YAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;QAC5D,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAM,QAAQ,GAAG,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;QAChG,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,CAAC,QAAQ,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SAC3C;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SAC7E;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAC/D,UAAA,IAAI;gBACA,IAAI;oBACA,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;gBACD,OAAO,CAAC,EAAE;oBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM,CAAC,CAAC,CAAC,CAAC;iBACb;YACL,CAAC,CACJ,CAAC,KAAK,CAAC,UAAA,GAAG;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,cAAc,YAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;QAChE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,YAAY,CAAC","sourcesContent":["import path from 'path';\nimport AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';\n\n/**\n * Node Plugin Loader\n */\nconst PluginLoader = function(less) {\n this.less = less;\n this.require = prefix => {\n prefix = path.dirname(prefix);\n return id => {\n const str = id.substr(0, 2);\n if (str === '..' || str === './') {\n return require(path.join(prefix, id));\n }\n else {\n return require(id);\n }\n };\n };\n};\n\nPluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {\n loadPlugin(filename, basePath, context, environment, fileManager) {\n const prefix = filename.slice(0, 1);\n const explicit = prefix === '.' || prefix === '/' || filename.slice(-3).toLowerCase() === '.js';\n if (!explicit) {\n context.prefixes = ['less-plugin-', ''];\n }\n\n if (context.syncImport) {\n return fileManager.loadFileSync(filename, basePath, context, environment);\n }\n\n return new Promise((fulfill, reject) => {\n fileManager.loadFile(filename, basePath, context, environment).then(\n data => {\n try {\n fulfill(data);\n }\n catch (e) {\n console.log(e);\n reject(e);\n }\n }\n ).catch(err => {\n reject(err);\n });\n });\n },\n\n loadPluginSync(filename, basePath, context, environment, fileManager) {\n context.syncImport = true;\n return this.loadPlugin(filename, basePath, context, environment, fileManager);\n }\n});\n\nexport default PluginLoader;\n\n"]}
|
|
@@ -1,39 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
19
4
|
var isUrlRe = /^(?:https?:)?\/\//i;
|
|
20
|
-
var url_1 = __importDefault(require("url"));
|
|
5
|
+
var url_1 = tslib_1.__importDefault(require("url"));
|
|
21
6
|
var request;
|
|
22
|
-
var abstract_file_manager_js_1 = __importDefault(require("../less/environment/abstract-file-manager.js"));
|
|
23
|
-
var logger_1 = __importDefault(require("../less/logger"));
|
|
24
|
-
var UrlFileManager =
|
|
25
|
-
|
|
26
|
-
function
|
|
27
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
28
|
-
}
|
|
29
|
-
UrlFileManager.prototype.supports = function (filename, currentDirectory, options, environment) {
|
|
7
|
+
var abstract_file_manager_js_1 = tslib_1.__importDefault(require("../less/environment/abstract-file-manager.js"));
|
|
8
|
+
var logger_1 = tslib_1.__importDefault(require("../less/logger"));
|
|
9
|
+
var UrlFileManager = function () { };
|
|
10
|
+
UrlFileManager.prototype = Object.assign(new abstract_file_manager_js_1.default(), {
|
|
11
|
+
supports: function (filename, currentDirectory, options, environment) {
|
|
30
12
|
return isUrlRe.test(filename) || isUrlRe.test(currentDirectory);
|
|
31
|
-
}
|
|
32
|
-
|
|
13
|
+
},
|
|
14
|
+
loadFile: function (filename, currentDirectory, options, environment) {
|
|
33
15
|
return new Promise(function (fulfill, reject) {
|
|
34
16
|
if (request === undefined) {
|
|
35
17
|
try {
|
|
36
|
-
request = require('
|
|
18
|
+
request = require('needle');
|
|
37
19
|
}
|
|
38
20
|
catch (e) {
|
|
39
21
|
request = null;
|
|
@@ -46,23 +28,26 @@ var UrlFileManager = /** @class */ (function (_super) {
|
|
|
46
28
|
var urlStr = isUrlRe.test(filename) ? filename : url_1.default.resolve(currentDirectory, filename);
|
|
47
29
|
/** native-request currently has a bug */
|
|
48
30
|
var hackUrlStr = urlStr.indexOf('?') === -1 ? urlStr + '?' : urlStr;
|
|
49
|
-
request.get(hackUrlStr, function (
|
|
50
|
-
if (
|
|
51
|
-
|
|
31
|
+
request.get(hackUrlStr, { follow_max: 5 }, function (err, resp, body) {
|
|
32
|
+
if (err || resp.statusCode >= 400) {
|
|
33
|
+
var message = resp.statusCode === 404
|
|
34
|
+
? "resource '" + urlStr + "' was not found\n"
|
|
35
|
+
: "resource '" + urlStr + "' gave this Error:\n " + (err || resp.statusMessage || resp.statusCode) + "\n";
|
|
36
|
+
reject({ type: 'File', message: message });
|
|
52
37
|
return;
|
|
53
38
|
}
|
|
54
|
-
if (
|
|
55
|
-
reject({ type: 'File', message: "resource '" + urlStr + "'
|
|
39
|
+
if (resp.statusCode >= 300) {
|
|
40
|
+
reject({ type: 'File', message: "resource '" + urlStr + "' caused too many redirects" });
|
|
56
41
|
return;
|
|
57
42
|
}
|
|
43
|
+
body = body.toString('utf8');
|
|
58
44
|
if (!body) {
|
|
59
|
-
logger_1.default.warn("Warning: Empty body (HTTP " +
|
|
45
|
+
logger_1.default.warn("Warning: Empty body (HTTP " + resp.statusCode + ") returned by \"" + urlStr + "\"");
|
|
60
46
|
}
|
|
61
|
-
fulfill({ contents: body, filename: urlStr });
|
|
47
|
+
fulfill({ contents: body || '', filename: urlStr });
|
|
62
48
|
});
|
|
63
49
|
});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
}(abstract_file_manager_js_1.default));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
67
52
|
exports.default = UrlFileManager;
|
|
68
53
|
//# sourceMappingURL=url-file-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-file-manager.js","sourceRoot":"","sources":["../../src/less-node/url-file-manager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-file-manager.js","sourceRoot":"","sources":["../../src/less-node/url-file-manager.js"],"names":[],"mappings":";;;AAAA,IAAM,OAAO,GAAG,oBAAoB,CAAC;AACrC,oDAAsB;AACtB,IAAI,OAAO,CAAC;AACZ,kHAA+E;AAC/E,kEAAoC;AAEpC,IAAM,cAAc,GAAG,cAAY,CAAC,CAAA;AACpC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,kCAAmB,EAAE,EAAE;IAChE,QAAQ,YAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;QACrD,OAAO,OAAO,CAAC,IAAI,CAAE,QAAQ,CAAE,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ,YAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;QACrD,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,IAAI;oBAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;iBAAE;gBACpC,OAAO,CAAC,EAAE;oBAAE,OAAO,GAAG,IAAI,CAAC;iBAAE;aAChC;YACD,IAAI,CAAC,OAAO,EAAE;gBACV,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0EAA0E,EAAE,CAAC,CAAC;gBAC9G,OAAO;aACV;YAED,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAE3F,yCAAyC;YACzC,IAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;YAErE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAC,GAAG,EAAE,IAAI,EAAE,IAAI;gBACvD,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE;oBAC/B,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,GAAG;wBACnC,CAAC,CAAC,eAAa,MAAM,sBAAmB;wBACxC,CAAC,CAAC,eAAa,MAAM,+BAAyB,GAAG,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,QAAI,CAAC;oBACnG,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;oBAClC,OAAO;iBACV;gBACD,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE;oBACxB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAa,MAAM,gCAA6B,EAAE,CAAC,CAAC;oBACpF,OAAO;iBACV;gBACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,EAAE;oBACP,gBAAM,CAAC,IAAI,CAAC,+BAA6B,IAAI,CAAC,UAAU,wBAAkB,MAAM,OAAG,CAAC,CAAC;iBACxF;gBACD,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,cAAc,CAAC","sourcesContent":["const isUrlRe = /^(?:https?:)?\\/\\//i;\nimport url from 'url';\nlet request;\nimport AbstractFileManager from '../less/environment/abstract-file-manager.js';\nimport logger from '../less/logger';\n\nconst UrlFileManager = function() {}\nUrlFileManager.prototype = Object.assign(new AbstractFileManager(), {\n supports(filename, currentDirectory, options, environment) {\n return isUrlRe.test( filename ) || isUrlRe.test(currentDirectory);\n },\n\n loadFile(filename, currentDirectory, options, environment) {\n return new Promise((fulfill, reject) => {\n if (request === undefined) {\n try { request = require('needle'); }\n catch (e) { request = null; }\n }\n if (!request) {\n reject({ type: 'File', message: 'optional dependency \\'native-request\\' required to import over http(s)\\n' });\n return;\n }\n\n let urlStr = isUrlRe.test( filename ) ? filename : url.resolve(currentDirectory, filename);\n\n /** native-request currently has a bug */\n const hackUrlStr = urlStr.indexOf('?') === -1 ? urlStr + '?' : urlStr\n\n request.get(hackUrlStr, { follow_max: 5 }, (err, resp, body) => {\n if (err || resp.statusCode >= 400) {\n const message = resp.statusCode === 404\n ? `resource '${urlStr}' was not found\\n`\n : `resource '${urlStr}' gave this Error:\\n ${err || resp.statusMessage || resp.statusCode}\\n`;\n reject({ type: 'File', message });\n return;\n }\n if (resp.statusCode >= 300) {\n reject({ type: 'File', message: `resource '${urlStr}' caused too many redirects` });\n return;\n }\n body = body.toString('utf8');\n if (!body) {\n logger.warn(`Warning: Empty body (HTTP ${resp.statusCode}) returned by \"${urlStr}\"`);\n }\n fulfill({ contents: body || '', filename: urlStr });\n });\n });\n }\n});\n\nexport default UrlFileManager;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "less",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Leaner CSS",
|
|
5
5
|
"homepage": "http://lesscss.org",
|
|
6
6
|
"author": {
|
|
@@ -50,12 +50,15 @@
|
|
|
50
50
|
"image-size": "~0.5.0",
|
|
51
51
|
"make-dir": "^2.1.0",
|
|
52
52
|
"mime": "^1.4.1",
|
|
53
|
-
"
|
|
53
|
+
"needle": "^2.5.2",
|
|
54
54
|
"source-map": "~0.6.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@less/test-data": "^
|
|
58
|
-
"@less/test-import-module": "^
|
|
57
|
+
"@less/test-data": "^4.1.0",
|
|
58
|
+
"@less/test-import-module": "^4.0.0",
|
|
59
|
+
"@rollup/plugin-commonjs": "^17.0.0",
|
|
60
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
61
|
+
"@rollup/plugin-node-resolve": "^11.0.0",
|
|
59
62
|
"@typescript-eslint/eslint-plugin": "^3.3.0",
|
|
60
63
|
"@typescript-eslint/parser": "^3.3.0",
|
|
61
64
|
"benny": "^3.6.12",
|
|
@@ -81,22 +84,21 @@
|
|
|
81
84
|
"mocha": "^6.2.1",
|
|
82
85
|
"mocha-headless-chrome": "^2.0.3",
|
|
83
86
|
"mocha-teamcity-reporter": "^3.0.0",
|
|
87
|
+
"nock": "^11.8.2",
|
|
84
88
|
"npm-run-all": "^4.1.5",
|
|
85
89
|
"performance-now": "^0.2.0",
|
|
86
90
|
"phin": "^2.2.3",
|
|
87
91
|
"promise": "^7.1.1",
|
|
88
92
|
"read-glob": "^3.0.0",
|
|
89
93
|
"resolve": "^1.17.0",
|
|
90
|
-
"rollup": "^
|
|
91
|
-
"rollup-plugin-commonjs": "^10.0.1",
|
|
92
|
-
"rollup-plugin-node-resolve": "^5.2.0",
|
|
94
|
+
"rollup": "^2.34.1",
|
|
93
95
|
"rollup-plugin-terser": "^5.1.1",
|
|
94
|
-
"rollup-plugin-typescript2": "^0.
|
|
96
|
+
"rollup-plugin-typescript2": "^0.29.0",
|
|
95
97
|
"semver": "^6.3.0",
|
|
96
98
|
"shx": "^0.3.2",
|
|
97
99
|
"time-grunt": "^1.3.0",
|
|
98
100
|
"ts-node": "^8.4.1",
|
|
99
|
-
"typescript": "^
|
|
101
|
+
"typescript": "^4.1.3",
|
|
100
102
|
"uikit": "2.27.4"
|
|
101
103
|
},
|
|
102
104
|
"keywords": [
|
|
@@ -128,6 +130,7 @@
|
|
|
128
130
|
"sourcearchive": "https://github.com/less/less.js/archive/v",
|
|
129
131
|
"dependencies": {
|
|
130
132
|
"copy-anything": "^2.0.1",
|
|
133
|
+
"parse-node-version": "^1.0.1",
|
|
131
134
|
"tslib": "^1.10.0"
|
|
132
135
|
}
|
|
133
136
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
RuntimeError:
|
|
1
|
+
RuntimeError: Error evaluating function `image-height`: Image size functions are not supported in browser version of less in image-height-error.less on line 2, column 11:
|
|
2
2
|
1 .test-height{
|
|
3
3
|
2 height: image-height("../data/image.jpg")
|
|
4
4
|
3 }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
RuntimeError:
|
|
1
|
+
RuntimeError: Error evaluating function `image-size`: Image size functions are not supported in browser version of less in image-size-error.less on line 2, column 9:
|
|
2
2
|
1 .test-size{
|
|
3
3
|
2 size: image-size("../data/image.jpg")
|
|
4
4
|
3 }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
RuntimeError:
|
|
1
|
+
RuntimeError: Error evaluating function `image-width`: Image size functions are not supported in browser version of less in image-width-error.less on line 2, column 10:
|
|
2
2
|
1 .test-width{
|
|
3
3
|
2 width: image-width("../data/image.jpg")
|
|
4
4
|
3 }
|
package/test/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
var lessTest = require('./less-test'),
|
|
2
2
|
lessTester = lessTest(),
|
|
3
3
|
path = require('path'),
|
|
4
|
-
stylize = require('../lib/less-node/lessc-helper').stylize
|
|
4
|
+
stylize = require('../lib/less-node/lessc-helper').stylize,
|
|
5
|
+
nock = require('nock');
|
|
5
6
|
|
|
6
7
|
console.log('\n' + stylize('Less', 'underline') + '\n');
|
|
7
8
|
|
|
@@ -13,15 +14,15 @@ var testMap = [
|
|
|
13
14
|
javascriptEnabled: true
|
|
14
15
|
}, '_main/'],
|
|
15
16
|
[{}, 'namespacing/'],
|
|
16
|
-
[{
|
|
17
|
-
math: 'strict-legacy'
|
|
18
|
-
}, 'math/strict-legacy/'],
|
|
19
17
|
[{
|
|
20
18
|
math: 'parens'
|
|
21
19
|
}, 'math/strict/'],
|
|
22
20
|
[{
|
|
23
21
|
math: 'parens-division'
|
|
24
22
|
}, 'math/parens-division/'],
|
|
23
|
+
[{
|
|
24
|
+
math: 'always'
|
|
25
|
+
}, 'math/always/'],
|
|
25
26
|
// Use legacy strictMath: true here to demonstrate it still works
|
|
26
27
|
[{strictMath: true, strictUnits: true, javascriptEnabled: true}, '../errors/eval/',
|
|
27
28
|
lessTester.testErrors, null],
|
|
@@ -39,8 +40,10 @@ var testMap = [
|
|
|
39
40
|
// TODO: Change this to rewriteUrls: false once the relativeUrls option is removed
|
|
40
41
|
[{math: 'strict', relativeUrls: false, rootpath: 'folder (1)/'}, 'static-urls/'],
|
|
41
42
|
[{math: 'strict', compress: true}, 'compression/'],
|
|
42
|
-
|
|
43
|
-
[{}, '
|
|
43
|
+
|
|
44
|
+
[{math: 0, strictUnits: true}, 'units/strict/'],
|
|
45
|
+
[{math: 0, strictUnits: false}, 'units/no-strict/'],
|
|
46
|
+
|
|
44
47
|
[{math: 'strict', strictUnits: true, sourceMap: true, globalVars: true }, 'sourcemaps/',
|
|
45
48
|
lessTester.testSourcemap, null, null,
|
|
46
49
|
function(filename, type, baseFolder) {
|
|
@@ -74,8 +77,7 @@ var testMap = [
|
|
|
74
77
|
[{plugin: 'test/plugins/preprocess/'}, 'preProcessorPlugin/'],
|
|
75
78
|
[{plugin: 'test/plugins/visitor/'}, 'visitorPlugin/'],
|
|
76
79
|
[{plugin: 'test/plugins/filemanager/'}, 'filemanagerPlugin/'],
|
|
77
|
-
[{}, '
|
|
78
|
-
[{}, '3rd-party/'],
|
|
80
|
+
[{math: 0}, '3rd-party/'],
|
|
79
81
|
[{ processImports: false }, 'process-imports/']
|
|
80
82
|
];
|
|
81
83
|
testMap.forEach(function(args) {
|
|
@@ -83,7 +85,24 @@ testMap.forEach(function(args) {
|
|
|
83
85
|
});
|
|
84
86
|
lessTester.testSyncronous({syncImport: true}, '_main/import');
|
|
85
87
|
lessTester.testSyncronous({syncImport: true}, '_main/plugin');
|
|
86
|
-
lessTester.testSyncronous({syncImport: true}, 'math/strict
|
|
88
|
+
lessTester.testSyncronous({syncImport: true}, 'math/strict/css');
|
|
87
89
|
lessTester.testNoOptions();
|
|
88
90
|
lessTester.testJSImport();
|
|
89
91
|
lessTester.finished();
|
|
92
|
+
|
|
93
|
+
(() => {
|
|
94
|
+
// Create new tester, since tests are not independent and tests
|
|
95
|
+
// above modify tester in a way that breaks remote imports.
|
|
96
|
+
lessTester = lessTest();
|
|
97
|
+
var scope = nock('https://example.com')
|
|
98
|
+
.get('/redirect.less').query(true)
|
|
99
|
+
.reply(301, null, { location: '/target.less' })
|
|
100
|
+
.get('/target.less').query(true)
|
|
101
|
+
.reply(200);
|
|
102
|
+
lessTester.runTestSet(
|
|
103
|
+
{},
|
|
104
|
+
'import-redirect/',
|
|
105
|
+
lessTester.testImportRedirect(scope)
|
|
106
|
+
);
|
|
107
|
+
lessTester.finished();
|
|
108
|
+
})();
|
package/test/less-test.js
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
/* jshint latedef: nofunc */
|
|
2
2
|
|
|
3
|
+
var logger = require('../lib/less/logger').default;
|
|
4
|
+
|
|
5
|
+
var isVerbose = process.env.npm_config_loglevel !== 'concise';
|
|
6
|
+
logger.addListener({
|
|
7
|
+
info(msg) {
|
|
8
|
+
if (isVerbose) {
|
|
9
|
+
process.stdout.write(msg + '\n');
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
warn(msg) {
|
|
13
|
+
process.stdout.write(msg + '\n');
|
|
14
|
+
},
|
|
15
|
+
erro(msg) {
|
|
16
|
+
process.stdout.write(msg + '\n');
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
|
|
3
21
|
module.exports = function() {
|
|
4
22
|
var path = require('path'),
|
|
5
23
|
fs = require('fs'),
|
|
@@ -14,8 +32,6 @@ module.exports = function() {
|
|
|
14
32
|
var oneTestOnly = process.argv[2],
|
|
15
33
|
isFinished = false;
|
|
16
34
|
|
|
17
|
-
var isVerbose = process.env.npm_config_loglevel !== 'concise';
|
|
18
|
-
|
|
19
35
|
var testFolder = path.dirname(require.resolve('@less/test-data'));
|
|
20
36
|
var lessFolder = path.join(testFolder, 'less');
|
|
21
37
|
|
|
@@ -27,20 +43,6 @@ module.exports = function() {
|
|
|
27
43
|
}
|
|
28
44
|
}
|
|
29
45
|
|
|
30
|
-
less.logger.addListener({
|
|
31
|
-
info: function(msg) {
|
|
32
|
-
if (isVerbose) {
|
|
33
|
-
process.stdout.write(msg + '\n');
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
warn: function(msg) {
|
|
37
|
-
process.stdout.write(msg + '\n');
|
|
38
|
-
},
|
|
39
|
-
error: function(msg) {
|
|
40
|
-
process.stdout.write(msg + '\n');
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
46
|
var queueList = [],
|
|
45
47
|
queueRunning = false;
|
|
46
48
|
function queue(func) {
|
|
@@ -519,6 +521,23 @@ module.exports = function() {
|
|
|
519
521
|
ok(stylize('OK\n', 'green'));
|
|
520
522
|
}
|
|
521
523
|
|
|
524
|
+
function testImportRedirect(nockScope) {
|
|
525
|
+
return (name, err, css, doReplacements, sourcemap, baseFolder) => {
|
|
526
|
+
process.stdout.write('- ' + path.join(baseFolder, name) + ': ');
|
|
527
|
+
if (err) {
|
|
528
|
+
fail('FAIL: ' + (err && err.message));
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
const expected = 'h1 {\n color: red;\n}\n';
|
|
532
|
+
if (css !== expected) {
|
|
533
|
+
difference('FAIL', expected, css);
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
nockScope.done();
|
|
537
|
+
ok('OK');
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
|
|
522
541
|
return {
|
|
523
542
|
runTestSet: runTestSet,
|
|
524
543
|
runTestSetNormalOnly: runTestSetNormalOnly,
|
|
@@ -527,6 +546,7 @@ module.exports = function() {
|
|
|
527
546
|
testSourcemap: testSourcemap,
|
|
528
547
|
testSourcemapWithoutUrlAnnotation: testSourcemapWithoutUrlAnnotation,
|
|
529
548
|
testImports: testImports,
|
|
549
|
+
testImportRedirect: testImportRedirect,
|
|
530
550
|
testEmptySourcemap: testEmptySourcemap,
|
|
531
551
|
testNoOptions: testNoOptions,
|
|
532
552
|
testJSImport: testJSImport,
|