less 4.5.1 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/lessc +37 -23
- package/dist/less.js +14497 -11745
- package/dist/less.min.js +4 -4
- package/dist/less.min.js.map +1 -1
- package/lib/less/constants.js +5 -7
- package/lib/less/contexts.js +71 -55
- package/lib/less/data/colors.js +150 -153
- package/lib/less/data/index.js +4 -7
- package/lib/less/data/unit-conversions.js +2 -5
- package/lib/less/default-options.js +36 -26
- package/lib/less/deprecation.js +67 -0
- package/lib/less/environment/abstract-file-manager.js +62 -50
- package/lib/less/environment/abstract-plugin-loader.js +69 -46
- package/lib/less/environment/environment-api.ts +21 -0
- package/lib/less/environment/environment.js +34 -30
- package/lib/less/environment/file-manager-api.ts +77 -0
- package/lib/less/functions/boolean.js +13 -13
- package/lib/less/functions/color-blending.js +39 -31
- package/lib/less/functions/color.js +153 -137
- package/lib/less/functions/data-uri.js +73 -64
- package/lib/less/functions/default.js +9 -11
- package/lib/less/functions/function-caller.js +35 -34
- package/lib/less/functions/function-registry.js +16 -17
- package/lib/less/functions/index.js +33 -33
- package/lib/less/functions/list.js +88 -75
- package/lib/less/functions/math-helper.js +8 -11
- package/lib/less/functions/math.js +21 -21
- package/lib/less/functions/number.js +42 -53
- package/lib/less/functions/string.js +18 -22
- package/lib/less/functions/style.js +21 -20
- package/lib/less/functions/svg.js +83 -82
- package/lib/less/functions/types.js +28 -32
- package/lib/less/import-manager.js +73 -64
- package/lib/less/index.js +65 -65
- package/lib/less/less-error.js +63 -45
- package/lib/less/logger.js +11 -14
- package/lib/less/parse-tree.js +52 -53
- package/lib/less/parse.js +44 -44
- package/lib/less/parser/parser-input.js +151 -113
- package/lib/less/parser/parser.js +864 -658
- package/lib/less/plugin-manager.js +57 -46
- package/lib/less/render.js +17 -23
- package/lib/less/source-map-builder.js +52 -43
- package/lib/less/source-map-output.js +56 -43
- package/lib/less/transform-tree.js +40 -30
- package/lib/less/tree/anonymous.js +52 -28
- package/lib/less/tree/assignment.js +44 -27
- package/lib/less/tree/atrule-syntax.js +4 -6
- package/lib/less/tree/atrule.js +247 -140
- package/lib/less/tree/attribute.js +55 -24
- package/lib/less/tree/call.js +70 -42
- package/lib/less/tree/color.js +194 -145
- package/lib/less/tree/combinator.js +31 -21
- package/lib/less/tree/comment.js +44 -23
- package/lib/less/tree/condition.js +61 -36
- package/lib/less/tree/container.js +90 -34
- package/lib/less/tree/debug-info.js +28 -15
- package/lib/less/tree/declaration.js +97 -52
- package/lib/less/tree/detached-ruleset.js +42 -24
- package/lib/less/tree/dimension.js +127 -71
- package/lib/less/tree/element.js +82 -52
- package/lib/less/tree/expression.js +75 -50
- package/lib/less/tree/extend.js +71 -42
- package/lib/less/tree/import.js +184 -110
- package/lib/less/tree/index.js +52 -81
- package/lib/less/tree/javascript.js +43 -32
- package/lib/less/tree/js-eval-node.js +46 -32
- package/lib/less/tree/keyword.js +25 -17
- package/lib/less/tree/media.js +77 -35
- package/lib/less/tree/merge-rules.js +47 -0
- package/lib/less/tree/mixin-call.js +181 -98
- package/lib/less/tree/mixin-definition.js +211 -117
- package/lib/less/tree/namespace-value.js +63 -44
- package/lib/less/tree/negative.js +34 -21
- package/lib/less/tree/nested-at-rule.js +149 -66
- package/lib/less/tree/node.js +225 -90
- package/lib/less/tree/operation.js +59 -34
- package/lib/less/tree/paren.js +34 -17
- package/lib/less/tree/property.js +66 -35
- package/lib/less/tree/query-in-parens.js +52 -60
- package/lib/less/tree/quoted.js +93 -44
- package/lib/less/tree/ruleset.js +632 -318
- package/lib/less/tree/selector.js +151 -77
- package/lib/less/tree/unicode-descriptor.js +14 -12
- package/lib/less/tree/unit.js +111 -63
- package/lib/less/tree/url.js +62 -38
- package/lib/less/tree/value.js +50 -34
- package/lib/less/tree/variable-call.js +47 -30
- package/lib/less/tree/variable.js +53 -31
- package/lib/less/utils.js +44 -47
- package/lib/less/visitors/extend-visitor.js +233 -172
- package/lib/less/visitors/import-sequencer.js +24 -24
- package/lib/less/visitors/import-visitor.js +62 -52
- package/lib/less/visitors/index.js +14 -17
- package/lib/less/visitors/join-selector-visitor.js +40 -37
- package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
- package/lib/less/visitors/to-css-visitor.js +135 -128
- package/lib/less/visitors/visitor.js +60 -45
- package/lib/less-browser/add-default-options.js +23 -13
- package/lib/less-browser/bootstrap.js +23 -17
- package/lib/less-browser/browser.js +24 -21
- package/lib/less-browser/cache.js +17 -19
- package/lib/less-browser/error-reporting.js +52 -44
- package/lib/less-browser/file-manager.js +52 -42
- package/lib/less-browser/image-size.js +12 -12
- package/lib/less-browser/index.js +131 -105
- package/lib/less-browser/log-listener.js +30 -31
- package/lib/less-browser/plugin-loader.js +10 -10
- package/lib/less-browser/utils.js +19 -21
- package/lib/less-node/environment.js +32 -8
- package/lib/less-node/file-manager.js +62 -45
- package/lib/less-node/fs.js +11 -8
- package/lib/less-node/image-size.js +40 -31
- package/lib/less-node/index.js +28 -19
- package/lib/less-node/lessc-helper.js +20 -21
- package/lib/less-node/plugin-loader.js +35 -27
- package/lib/less-node/url-file-manager.js +33 -31
- package/package.json +25 -18
- package/.eslintignore +0 -6
- package/.eslintrc.js +0 -63
- package/Gruntfile.js +0 -403
- package/bower.json +0 -22
- package/lib/less/constants.js.map +0 -1
- package/lib/less/contexts.js.map +0 -1
- package/lib/less/data/colors.js.map +0 -1
- package/lib/less/data/index.js.map +0 -1
- package/lib/less/data/unit-conversions.js.map +0 -1
- package/lib/less/default-options.js.map +0 -1
- package/lib/less/environment/abstract-file-manager.js.map +0 -1
- package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
- package/lib/less/environment/environment-api.js +0 -3
- package/lib/less/environment/environment-api.js.map +0 -1
- package/lib/less/environment/environment.js.map +0 -1
- package/lib/less/environment/file-manager-api.js +0 -3
- package/lib/less/environment/file-manager-api.js.map +0 -1
- package/lib/less/functions/boolean.js.map +0 -1
- package/lib/less/functions/color-blending.js.map +0 -1
- package/lib/less/functions/color.js.map +0 -1
- package/lib/less/functions/data-uri.js.map +0 -1
- package/lib/less/functions/default.js.map +0 -1
- package/lib/less/functions/function-caller.js.map +0 -1
- package/lib/less/functions/function-registry.js.map +0 -1
- package/lib/less/functions/index.js.map +0 -1
- package/lib/less/functions/list.js.map +0 -1
- package/lib/less/functions/math-helper.js.map +0 -1
- package/lib/less/functions/math.js.map +0 -1
- package/lib/less/functions/number.js.map +0 -1
- package/lib/less/functions/string.js.map +0 -1
- package/lib/less/functions/style.js.map +0 -1
- package/lib/less/functions/svg.js.map +0 -1
- package/lib/less/functions/types.js.map +0 -1
- package/lib/less/import-manager.js.map +0 -1
- package/lib/less/index.js.map +0 -1
- package/lib/less/less-error.js.map +0 -1
- package/lib/less/logger.js.map +0 -1
- package/lib/less/parse-tree.js.map +0 -1
- package/lib/less/parse.js.map +0 -1
- package/lib/less/parser/parser-input.js.map +0 -1
- package/lib/less/parser/parser.js.map +0 -1
- package/lib/less/plugin-manager.js.map +0 -1
- package/lib/less/render.js.map +0 -1
- package/lib/less/source-map-builder.js.map +0 -1
- package/lib/less/source-map-output.js.map +0 -1
- package/lib/less/transform-tree.js.map +0 -1
- package/lib/less/tree/anonymous.js.map +0 -1
- package/lib/less/tree/assignment.js.map +0 -1
- package/lib/less/tree/atrule-syntax.js.map +0 -1
- package/lib/less/tree/atrule.js.map +0 -1
- package/lib/less/tree/attribute.js.map +0 -1
- package/lib/less/tree/call.js.map +0 -1
- package/lib/less/tree/color.js.map +0 -1
- package/lib/less/tree/combinator.js.map +0 -1
- package/lib/less/tree/comment.js.map +0 -1
- package/lib/less/tree/condition.js.map +0 -1
- package/lib/less/tree/container.js.map +0 -1
- package/lib/less/tree/debug-info.js.map +0 -1
- package/lib/less/tree/declaration.js.map +0 -1
- package/lib/less/tree/detached-ruleset.js.map +0 -1
- package/lib/less/tree/dimension.js.map +0 -1
- package/lib/less/tree/element.js.map +0 -1
- package/lib/less/tree/expression.js.map +0 -1
- package/lib/less/tree/extend.js.map +0 -1
- package/lib/less/tree/import.js.map +0 -1
- package/lib/less/tree/index.js.map +0 -1
- package/lib/less/tree/javascript.js.map +0 -1
- package/lib/less/tree/js-eval-node.js.map +0 -1
- package/lib/less/tree/keyword.js.map +0 -1
- package/lib/less/tree/media.js.map +0 -1
- package/lib/less/tree/mixin-call.js.map +0 -1
- package/lib/less/tree/mixin-definition.js.map +0 -1
- package/lib/less/tree/namespace-value.js.map +0 -1
- package/lib/less/tree/negative.js.map +0 -1
- package/lib/less/tree/nested-at-rule.js.map +0 -1
- package/lib/less/tree/node.js.map +0 -1
- package/lib/less/tree/operation.js.map +0 -1
- package/lib/less/tree/paren.js.map +0 -1
- package/lib/less/tree/property.js.map +0 -1
- package/lib/less/tree/query-in-parens.js.map +0 -1
- package/lib/less/tree/quoted.js.map +0 -1
- package/lib/less/tree/ruleset.js.map +0 -1
- package/lib/less/tree/selector.js.map +0 -1
- package/lib/less/tree/unicode-descriptor.js.map +0 -1
- package/lib/less/tree/unit.js.map +0 -1
- package/lib/less/tree/url.js.map +0 -1
- package/lib/less/tree/value.js.map +0 -1
- package/lib/less/tree/variable-call.js.map +0 -1
- package/lib/less/tree/variable.js.map +0 -1
- package/lib/less/utils.js.map +0 -1
- package/lib/less/visitors/extend-visitor.js.map +0 -1
- package/lib/less/visitors/import-sequencer.js.map +0 -1
- package/lib/less/visitors/import-visitor.js.map +0 -1
- package/lib/less/visitors/index.js.map +0 -1
- package/lib/less/visitors/join-selector-visitor.js.map +0 -1
- package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
- package/lib/less/visitors/to-css-visitor.js.map +0 -1
- package/lib/less/visitors/visitor.js.map +0 -1
- package/lib/less-browser/add-default-options.js.map +0 -1
- package/lib/less-browser/bootstrap.js.map +0 -1
- package/lib/less-browser/browser.js.map +0 -1
- package/lib/less-browser/cache.js.map +0 -1
- package/lib/less-browser/error-reporting.js.map +0 -1
- package/lib/less-browser/file-manager.js.map +0 -1
- package/lib/less-browser/image-size.js.map +0 -1
- package/lib/less-browser/index.js.map +0 -1
- package/lib/less-browser/log-listener.js.map +0 -1
- package/lib/less-browser/plugin-loader.js.map +0 -1
- package/lib/less-browser/utils.js.map +0 -1
- package/lib/less-node/environment.js.map +0 -1
- package/lib/less-node/file-manager.js.map +0 -1
- package/lib/less-node/fs.js.map +0 -1
- package/lib/less-node/image-size.js.map +0 -1
- package/lib/less-node/index.js.map +0 -1
- package/lib/less-node/lessc-helper.js.map +0 -1
- package/lib/less-node/plugin-loader.js.map +0 -1
- package/lib/less-node/url-file-manager.js.map +0 -1
- package/scripts/coverage-lines.js +0 -207
- package/scripts/coverage-report.js +0 -158
- package/scripts/postinstall.js +0 -61
- package/test/.eslintrc.json +0 -9
- package/test/README.md +0 -3
- package/test/browser/common.js +0 -251
- package/test/browser/css/global-vars/simple.css +0 -3
- package/test/browser/css/modify-vars/simple.css +0 -8
- package/test/browser/css/plugin/plugin.css +0 -3
- package/test/browser/css/postProcessor/postProcessor.css +0 -4
- package/test/browser/css/relative-urls/urls.css +0 -36
- package/test/browser/css/rewrite-urls/urls.css +0 -36
- package/test/browser/css/rootpath/urls.css +0 -35
- package/test/browser/css/rootpath-relative/urls.css +0 -35
- package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
- package/test/browser/css/urls.css +0 -54
- package/test/browser/generator/benchmark.config.js +0 -50
- package/test/browser/generator/generate.js +0 -78
- package/test/browser/generator/runner.config.js +0 -184
- package/test/browser/generator/runner.js +0 -2
- package/test/browser/generator/template.js +0 -104
- package/test/browser/generator/utils.js +0 -14
- package/test/browser/less/console-errors/test-error.less +0 -3
- package/test/browser/less/console-errors/test-error.txt +0 -2
- package/test/browser/less/errors/image-height-error.less +0 -3
- package/test/browser/less/errors/image-height-error.txt +0 -4
- package/test/browser/less/errors/image-size-error.less +0 -3
- package/test/browser/less/errors/image-size-error.txt +0 -4
- package/test/browser/less/errors/image-width-error.less +0 -3
- package/test/browser/less/errors/image-width-error.txt +0 -4
- package/test/browser/less/global-vars/simple.less +0 -3
- package/test/browser/less/imports/urls.less +0 -4
- package/test/browser/less/imports/urls2.less +0 -4
- package/test/browser/less/modify-vars/imports/simple2.less +0 -4
- package/test/browser/less/modify-vars/simple.less +0 -8
- package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
- package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
- package/test/browser/less/plugin/plugin.js +0 -4
- package/test/browser/less/plugin/plugin.less +0 -4
- package/test/browser/less/postProcessor/postProcessor.less +0 -4
- package/test/browser/less/relative-urls/urls.less +0 -34
- package/test/browser/less/rewrite-urls/urls.less +0 -34
- package/test/browser/less/rootpath/urls.less +0 -33
- package/test/browser/less/rootpath-relative/urls.less +0 -33
- package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
- package/test/browser/less/urls.less +0 -62
- package/test/browser/runner-VisitorPlugin-options.js +0 -3
- package/test/browser/runner-VisitorPlugin.js +0 -3
- package/test/browser/runner-browser-options.js +0 -51
- package/test/browser/runner-browser-spec.js +0 -12
- package/test/browser/runner-console-errors.js +0 -5
- package/test/browser/runner-errors-options.js +0 -6
- package/test/browser/runner-errors-spec.js +0 -3
- package/test/browser/runner-filemanagerPlugin-options.js +0 -5
- package/test/browser/runner-filemanagerPlugin.js +0 -3
- package/test/browser/runner-global-vars-options.js +0 -7
- package/test/browser/runner-global-vars-spec.js +0 -3
- package/test/browser/runner-main-options.js +0 -17
- package/test/browser/runner-main-spec.js +0 -7
- package/test/browser/runner-modify-vars-options.js +0 -5
- package/test/browser/runner-modify-vars-spec.js +0 -33
- package/test/browser/runner-no-js-errors-options.js +0 -4
- package/test/browser/runner-no-js-errors-spec.js +0 -3
- package/test/browser/runner-postProcessorPlugin-options.js +0 -3
- package/test/browser/runner-postProcessorPlugin.js +0 -3
- package/test/browser/runner-preProcessorPlugin-options.js +0 -3
- package/test/browser/runner-preProcessorPlugin.js +0 -3
- package/test/browser/runner-production-options.js +0 -3
- package/test/browser/runner-production-spec.js +0 -5
- package/test/browser/runner-relative-urls-options.js +0 -3
- package/test/browser/runner-relative-urls-spec.js +0 -3
- package/test/browser/runner-rewrite-urls-options.js +0 -3
- package/test/browser/runner-rewrite-urls-spec.js +0 -3
- package/test/browser/runner-rootpath-options.js +0 -3
- package/test/browser/runner-rootpath-relative-options.js +0 -4
- package/test/browser/runner-rootpath-relative-spec.js +0 -3
- package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
- package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
- package/test/browser/runner-rootpath-spec.js +0 -3
- package/test/browser/runner-strict-units-options.js +0 -5
- package/test/browser/runner-strict-units-spec.js +0 -3
- package/test/index.js +0 -307
- package/test/less-test.js +0 -984
- package/test/mocha-playwright/runner.js +0 -210
- package/test/modify-vars.js +0 -28
- package/test/plugins/filemanager/index.js +0 -19
- package/test/plugins/postprocess/index.js +0 -14
- package/test/plugins/preprocess/index.js +0 -19
- package/test/plugins/visitor/index.js +0 -24
- package/test/sourcemaps/basic.json +0 -1
- package/test/sourcemaps/comprehensive.json +0 -1
- package/test/sourcemaps/custom-props.json +0 -1
- package/test/sourcemaps/index.html +0 -17
- package/test/sourcemaps/sourcemaps-basepath.json +0 -1
- package/test/sourcemaps/sourcemaps-include-source.json +0 -1
- package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
- package/test/sourcemaps/sourcemaps-url.json +0 -1
- package/test/sourcemaps-disable-annotation/basic.json +0 -1
- package/test/sourcemaps-variable-selector/basic.json +0 -1
- package/test/test-es6.ts +0 -17
- package/test.less +0 -1
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -21
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.default = (function () {
|
|
1
|
+
|
|
2
|
+
import functionRegistry from './../less/functions/function-registry.js';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
6
5
|
function imageSize() {
|
|
7
6
|
throw {
|
|
8
7
|
type: 'Runtime',
|
|
9
8
|
message: 'Image size functions are not supported in browser version of less'
|
|
10
9
|
};
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
|
|
12
|
+
const imageFunctions = {
|
|
13
|
+
'image-size': function(filePathNode) {
|
|
14
14
|
imageSize(this, filePathNode);
|
|
15
15
|
return -1;
|
|
16
16
|
},
|
|
17
|
-
'image-width': function
|
|
17
|
+
'image-width': function(filePathNode) {
|
|
18
18
|
imageSize(this, filePathNode);
|
|
19
19
|
return -1;
|
|
20
20
|
},
|
|
21
|
-
'image-height': function
|
|
21
|
+
'image-height': function(filePathNode) {
|
|
22
22
|
imageSize(this, filePathNode);
|
|
23
23
|
return -1;
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
|
|
27
|
+
functionRegistry.addMultiple(imageFunctions);
|
|
28
|
+
};
|
|
@@ -1,258 +1,284 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
1
|
//
|
|
5
2
|
// index.js
|
|
6
3
|
// Should expose the additional browser functions on to the less object
|
|
7
4
|
//
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
import {addDataAttr} from './utils.js';
|
|
6
|
+
import lessRoot from '../less/index.js';
|
|
7
|
+
import browser from './browser.js';
|
|
8
|
+
import FM from './file-manager.js';
|
|
9
|
+
import PluginLoader from './plugin-loader.js';
|
|
10
|
+
import LogListener from './log-listener.js';
|
|
11
|
+
import ErrorReporting from './error-reporting.js';
|
|
12
|
+
import Cache from './cache.js';
|
|
13
|
+
import ImageSize from './image-size.js';
|
|
14
|
+
import pkg from '../../package.json';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param {Window} window
|
|
18
|
+
* @param {Object} options
|
|
19
|
+
*/
|
|
20
|
+
export default (window, options) => {
|
|
21
|
+
const document = window.document;
|
|
22
|
+
const less = lessRoot(undefined, undefined, pkg.version);
|
|
23
|
+
|
|
20
24
|
less.options = options;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
const environment = less.environment;
|
|
26
|
+
const FileManager = FM(options, less.logger);
|
|
27
|
+
const fileManager = new FileManager();
|
|
24
28
|
environment.addFileManager(fileManager);
|
|
25
29
|
less.FileManager = FileManager;
|
|
26
|
-
less.PluginLoader =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
(
|
|
30
|
+
less.PluginLoader = PluginLoader;
|
|
31
|
+
|
|
32
|
+
LogListener(less, options);
|
|
33
|
+
const errors = ErrorReporting(window, less, options);
|
|
34
|
+
const cache = less.cache = options.cache || Cache(window, options, less.logger);
|
|
35
|
+
ImageSize(less.environment);
|
|
36
|
+
|
|
31
37
|
// Setup user functions - Deprecate?
|
|
32
38
|
if (options.functions) {
|
|
33
39
|
less.functions.functionRegistry.addMultiple(options.functions);
|
|
34
40
|
}
|
|
35
|
-
|
|
41
|
+
|
|
42
|
+
const typePattern = /^text\/(x-)?less$/;
|
|
43
|
+
|
|
36
44
|
function clone(obj) {
|
|
37
|
-
|
|
38
|
-
for (
|
|
45
|
+
const cloned = {};
|
|
46
|
+
for (const prop in obj) {
|
|
39
47
|
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
|
|
40
48
|
cloned[prop] = obj[prop];
|
|
41
49
|
}
|
|
42
50
|
}
|
|
43
51
|
return cloned;
|
|
44
52
|
}
|
|
45
|
-
|
|
46
|
-
function bind(func, thisArg) {
|
|
47
|
-
var curryArgs = Array.prototype.slice.call(arguments, 2);
|
|
48
|
-
return function () {
|
|
49
|
-
var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
|
|
50
|
-
return func.apply(thisArg, args);
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
+
|
|
53
54
|
function loadStyles(modifyVars) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
for (
|
|
57
|
-
style = styles[i];
|
|
55
|
+
const styles = document.getElementsByTagName('style');
|
|
56
|
+
|
|
57
|
+
for (let style of styles) {
|
|
58
58
|
if (style.type.match(typePattern)) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
const instanceOptions = {
|
|
60
|
+
...clone(options),
|
|
61
|
+
modifyVars,
|
|
62
|
+
filename: document.location.href.replace(/#.*$/, '')
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const lessText = style.innerHTML || '';
|
|
66
|
+
|
|
63
67
|
/* jshint loopfunc:true */
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
68
|
+
less.render(lessText, instanceOptions, (err, result) => {
|
|
69
|
+
if (err) {
|
|
70
|
+
errors.add(err, 'inline');
|
|
71
|
+
} else {
|
|
70
72
|
style.type = 'text/css';
|
|
71
73
|
if (style.styleSheet) {
|
|
72
74
|
style.styleSheet.cssText = result.css;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
+
} else {
|
|
75
76
|
style.innerHTML = result.css;
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
|
-
}
|
|
79
|
+
});
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
|
|
82
84
|
function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
|
|
86
|
+
const instanceOptions = clone(options);
|
|
87
|
+
addDataAttr(instanceOptions, sheet);
|
|
85
88
|
instanceOptions.mime = sheet.type;
|
|
89
|
+
|
|
86
90
|
if (modifyVars) {
|
|
87
91
|
instanceOptions.modifyVars = modifyVars;
|
|
88
92
|
}
|
|
93
|
+
|
|
89
94
|
function loadInitialFileCallback(loadedFile) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
const data = loadedFile.contents;
|
|
96
|
+
const path = loadedFile.filename;
|
|
97
|
+
const webInfo = loadedFile.webInfo;
|
|
98
|
+
|
|
99
|
+
const newFileInfo = {
|
|
94
100
|
currentDirectory: fileManager.getPath(path),
|
|
95
101
|
filename: path,
|
|
96
102
|
rootFilename: path,
|
|
97
103
|
rewriteUrls: instanceOptions.rewriteUrls
|
|
98
104
|
};
|
|
105
|
+
|
|
99
106
|
newFileInfo.entryPath = newFileInfo.currentDirectory;
|
|
100
107
|
newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;
|
|
108
|
+
|
|
101
109
|
if (webInfo) {
|
|
102
110
|
webInfo.remaining = remaining;
|
|
103
|
-
|
|
111
|
+
|
|
112
|
+
const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);
|
|
104
113
|
if (!reload && css) {
|
|
105
114
|
webInfo.local = true;
|
|
106
115
|
callback(null, css, data, sheet, webInfo, path);
|
|
107
116
|
return;
|
|
108
117
|
}
|
|
118
|
+
|
|
109
119
|
}
|
|
120
|
+
|
|
110
121
|
// TODO add tests around how this behaves when reloading
|
|
111
122
|
errors.remove(path);
|
|
123
|
+
|
|
112
124
|
instanceOptions.rootFileInfo = newFileInfo;
|
|
113
|
-
less.render(data, instanceOptions,
|
|
125
|
+
less.render(data, instanceOptions, (e, result) => {
|
|
114
126
|
if (e) {
|
|
115
127
|
e.href = path;
|
|
116
128
|
callback(e);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
129
|
+
} else {
|
|
119
130
|
cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);
|
|
120
131
|
callback(null, result.css, data, sheet, webInfo, path);
|
|
121
132
|
}
|
|
122
133
|
});
|
|
123
134
|
}
|
|
135
|
+
|
|
124
136
|
fileManager.loadFile(sheet.href, null, instanceOptions, environment)
|
|
125
|
-
.then(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
137
|
+
.then(loadedFile => {
|
|
138
|
+
loadInitialFileCallback(loadedFile);
|
|
139
|
+
}).catch(err => {
|
|
140
|
+
console.log(err);
|
|
141
|
+
callback(err);
|
|
142
|
+
});
|
|
143
|
+
|
|
131
144
|
}
|
|
145
|
+
|
|
132
146
|
function loadStyleSheets(callback, reload, modifyVars) {
|
|
133
|
-
for (
|
|
147
|
+
for (let i = 0; i < less.sheets.length; i++) {
|
|
134
148
|
loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);
|
|
135
149
|
}
|
|
136
150
|
}
|
|
151
|
+
|
|
137
152
|
function initRunningMode() {
|
|
138
153
|
if (less.env === 'development') {
|
|
139
|
-
less.watchTimer = setInterval(
|
|
154
|
+
less.watchTimer = setInterval(() => {
|
|
140
155
|
if (less.watchMode) {
|
|
141
156
|
fileManager.clearFileCache();
|
|
142
157
|
/**
|
|
143
158
|
* @todo remove when this is typed with JSDoc
|
|
144
159
|
*/
|
|
145
160
|
// eslint-disable-next-line no-unused-vars
|
|
146
|
-
loadStyleSheets(
|
|
161
|
+
loadStyleSheets((e, css, _, sheet, webInfo) => {
|
|
147
162
|
if (e) {
|
|
148
163
|
errors.add(e, e.href || sheet.href);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
browser_1.default.createCSS(window.document, css, sheet);
|
|
164
|
+
} else if (css) {
|
|
165
|
+
browser.createCSS(window.document, css, sheet);
|
|
152
166
|
}
|
|
153
167
|
});
|
|
154
168
|
}
|
|
155
169
|
}, options.poll);
|
|
156
170
|
}
|
|
157
171
|
}
|
|
172
|
+
|
|
158
173
|
//
|
|
159
174
|
// Watch mode
|
|
160
175
|
//
|
|
161
176
|
less.watch = function () {
|
|
162
|
-
if (!less.watchMode) {
|
|
177
|
+
if (!less.watchMode ) {
|
|
163
178
|
less.env = 'development';
|
|
164
179
|
initRunningMode();
|
|
165
180
|
}
|
|
166
181
|
this.watchMode = true;
|
|
167
182
|
return true;
|
|
168
183
|
};
|
|
169
|
-
|
|
184
|
+
|
|
185
|
+
less.unwatch = function () {clearInterval(less.watchTimer); this.watchMode = false; return false; };
|
|
186
|
+
|
|
170
187
|
//
|
|
171
188
|
// Synchronously get all <link> tags with the 'rel' attribute set to
|
|
172
189
|
// "stylesheet/less".
|
|
173
190
|
//
|
|
174
|
-
less.registerStylesheetsImmediately =
|
|
175
|
-
|
|
191
|
+
less.registerStylesheetsImmediately = () => {
|
|
192
|
+
const links = document.getElementsByTagName('link');
|
|
176
193
|
less.sheets = [];
|
|
177
|
-
|
|
194
|
+
|
|
195
|
+
for (let i = 0; i < links.length; i++) {
|
|
178
196
|
if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&
|
|
179
197
|
(links[i].type.match(typePattern)))) {
|
|
180
198
|
less.sheets.push(links[i]);
|
|
181
199
|
}
|
|
182
200
|
}
|
|
183
201
|
};
|
|
202
|
+
|
|
184
203
|
//
|
|
185
204
|
// Asynchronously get all <link> tags with the 'rel' attribute set to
|
|
186
205
|
// "stylesheet/less", returning a Promise.
|
|
187
206
|
//
|
|
188
|
-
less.registerStylesheets =
|
|
207
|
+
less.registerStylesheets = () => new Promise((resolve) => {
|
|
189
208
|
less.registerStylesheetsImmediately();
|
|
190
209
|
resolve();
|
|
191
|
-
});
|
|
210
|
+
});
|
|
211
|
+
|
|
192
212
|
//
|
|
193
213
|
// With this function, it's possible to alter variables and re-render
|
|
194
214
|
// CSS without reloading less-files
|
|
195
215
|
//
|
|
196
|
-
less.modifyVars =
|
|
197
|
-
|
|
216
|
+
less.modifyVars = record => less.refresh(true, record, false);
|
|
217
|
+
|
|
218
|
+
less.refresh = (reload, modifyVars, clearFileCache) => {
|
|
198
219
|
if ((reload || clearFileCache) && clearFileCache !== false) {
|
|
199
220
|
fileManager.clearFileCache();
|
|
200
221
|
}
|
|
201
|
-
return new Promise(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
222
|
+
return new Promise((resolve, reject) => {
|
|
223
|
+
let startTime;
|
|
224
|
+
let endTime;
|
|
225
|
+
let totalMilliseconds;
|
|
226
|
+
let remainingSheets;
|
|
206
227
|
startTime = endTime = new Date();
|
|
228
|
+
|
|
207
229
|
// Set counter for remaining unprocessed sheets
|
|
208
230
|
remainingSheets = less.sheets.length;
|
|
231
|
+
|
|
209
232
|
if (remainingSheets === 0) {
|
|
233
|
+
|
|
210
234
|
endTime = new Date();
|
|
211
235
|
totalMilliseconds = endTime - startTime;
|
|
212
236
|
less.logger.info('Less has finished and no sheets were loaded.');
|
|
213
237
|
resolve({
|
|
214
|
-
startTime
|
|
215
|
-
endTime
|
|
216
|
-
totalMilliseconds
|
|
238
|
+
startTime,
|
|
239
|
+
endTime,
|
|
240
|
+
totalMilliseconds,
|
|
217
241
|
sheets: less.sheets.length
|
|
218
242
|
});
|
|
219
|
-
|
|
220
|
-
else {
|
|
243
|
+
|
|
244
|
+
} else {
|
|
221
245
|
// Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array
|
|
222
|
-
loadStyleSheets(
|
|
246
|
+
loadStyleSheets((e, css, _, sheet, webInfo) => {
|
|
223
247
|
if (e) {
|
|
224
248
|
errors.add(e, e.href || sheet.href);
|
|
225
249
|
reject(e);
|
|
226
250
|
return;
|
|
227
251
|
}
|
|
228
252
|
if (webInfo.local) {
|
|
229
|
-
less.logger.info(
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
less.logger.info("Rendered ".concat(sheet.href, " successfully."));
|
|
253
|
+
less.logger.info(`Loading ${sheet.href} from cache.`);
|
|
254
|
+
} else {
|
|
255
|
+
less.logger.info(`Rendered ${sheet.href} successfully.`);
|
|
233
256
|
}
|
|
234
|
-
|
|
235
|
-
less.logger.info(
|
|
257
|
+
browser.createCSS(window.document, css, sheet);
|
|
258
|
+
less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);
|
|
259
|
+
|
|
236
260
|
// Count completed sheet
|
|
237
261
|
remainingSheets--;
|
|
262
|
+
|
|
238
263
|
// Check if the last remaining sheet was processed and then call the promise
|
|
239
264
|
if (remainingSheets === 0) {
|
|
240
265
|
totalMilliseconds = new Date() - startTime;
|
|
241
|
-
less.logger.info(
|
|
266
|
+
less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);
|
|
242
267
|
resolve({
|
|
243
|
-
startTime
|
|
244
|
-
endTime
|
|
245
|
-
totalMilliseconds
|
|
268
|
+
startTime,
|
|
269
|
+
endTime,
|
|
270
|
+
totalMilliseconds,
|
|
246
271
|
sheets: less.sheets.length
|
|
247
272
|
});
|
|
248
273
|
}
|
|
249
274
|
endTime = new Date();
|
|
250
275
|
}, reload, modifyVars);
|
|
251
276
|
}
|
|
277
|
+
|
|
252
278
|
loadStyles(modifyVars);
|
|
253
279
|
});
|
|
254
280
|
};
|
|
281
|
+
|
|
255
282
|
less.refreshStyles = loadStyles;
|
|
256
283
|
return less;
|
|
257
|
-
}
|
|
258
|
-
//# sourceMappingURL=index.js.map
|
|
284
|
+
};
|
|
@@ -1,43 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var logLevel_error = 1;
|
|
1
|
+
export default (less, options) => {
|
|
2
|
+
const logLevel_debug = 4;
|
|
3
|
+
const logLevel_info = 3;
|
|
4
|
+
const logLevel_warn = 2;
|
|
5
|
+
const logLevel_error = 1;
|
|
6
|
+
|
|
8
7
|
// The amount of logging in the javascript console.
|
|
9
8
|
// 3 - Debug, information and errors
|
|
10
9
|
// 2 - Information and errors
|
|
11
10
|
// 1 - Errors
|
|
12
11
|
// 0 - None
|
|
13
12
|
// Defaults to 2
|
|
14
|
-
options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ?
|
|
13
|
+
options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);
|
|
14
|
+
|
|
15
15
|
if (!options.loggers) {
|
|
16
16
|
options.loggers = [{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
info: function (msg) {
|
|
23
|
-
if (options.logLevel >= logLevel_info) {
|
|
24
|
-
console.log(msg);
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
warn: function (msg) {
|
|
28
|
-
if (options.logLevel >= logLevel_warn) {
|
|
29
|
-
console.warn(msg);
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
error: function (msg) {
|
|
33
|
-
if (options.logLevel >= logLevel_error) {
|
|
34
|
-
console.error(msg);
|
|
35
|
-
}
|
|
17
|
+
debug: function(msg) {
|
|
18
|
+
if (options.logLevel >= logLevel_debug) {
|
|
19
|
+
console.log(msg);
|
|
36
20
|
}
|
|
37
|
-
}
|
|
21
|
+
},
|
|
22
|
+
info: function(msg) {
|
|
23
|
+
if (options.logLevel >= logLevel_info) {
|
|
24
|
+
console.log(msg);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
warn: function(msg) {
|
|
28
|
+
if (options.logLevel >= logLevel_warn) {
|
|
29
|
+
console.warn(msg);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
error: function(msg) {
|
|
33
|
+
if (options.logLevel >= logLevel_error) {
|
|
34
|
+
console.error(msg);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}];
|
|
38
38
|
}
|
|
39
|
-
for (
|
|
39
|
+
for (let i = 0; i < options.loggers.length; i++) {
|
|
40
40
|
less.logger.addListener(options.loggers[i]);
|
|
41
41
|
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=log-listener.js.map
|
|
42
|
+
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
1
|
/**
|
|
5
2
|
* @todo Add tests for browser `@plugin`
|
|
6
3
|
*/
|
|
7
|
-
|
|
4
|
+
import AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';
|
|
5
|
+
|
|
8
6
|
/**
|
|
9
7
|
* Browser Plugin Loader
|
|
10
8
|
*/
|
|
11
|
-
|
|
9
|
+
const PluginLoader = function(less) {
|
|
12
10
|
this.less = less;
|
|
13
11
|
// Should we shim this.require for browser? Probably not?
|
|
14
12
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
|
|
14
|
+
PluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {
|
|
15
|
+
loadPlugin(filename, basePath, context, environment, fileManager) {
|
|
16
|
+
return new Promise((fulfill, reject) => {
|
|
18
17
|
fileManager.loadFile(filename, basePath, context, environment)
|
|
19
18
|
.then(fulfill).catch(reject);
|
|
20
19
|
});
|
|
21
20
|
}
|
|
22
21
|
});
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
|
|
23
|
+
export default PluginLoader;
|
|
24
|
+
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
.replace(
|
|
7
|
-
.replace(
|
|
8
|
-
.replace(
|
|
9
|
-
.replace(
|
|
10
|
-
.replace(/\./g, ':'); // Replace dots with colons(for valid id)
|
|
1
|
+
|
|
2
|
+
/** @param {string} href */
|
|
3
|
+
export function extractId(href) {
|
|
4
|
+
return href.replace(/^[a-z-]+:\/+?[^/]+/, '') // Remove protocol & domain
|
|
5
|
+
.replace(/[?&]livereload=\w+/, '') // Remove LiveReload cachebuster
|
|
6
|
+
.replace(/^\//, '') // Remove root /
|
|
7
|
+
.replace(/\.[a-zA-Z]+$/, '') // Remove simple extension
|
|
8
|
+
.replace(/[^.\w-]+/g, '-') // Replace illegal characters
|
|
9
|
+
.replace(/\./g, ':'); // Replace dots with colons(for valid id)
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {Record<string, *>} options
|
|
14
|
+
* @param {HTMLElement | null} tag
|
|
15
|
+
*/
|
|
16
|
+
export function addDataAttr(options, tag) {
|
|
17
|
+
if (!tag) {return;} // in case of tag is null or undefined
|
|
18
|
+
for (const opt in tag.dataset) {
|
|
18
19
|
if (Object.prototype.hasOwnProperty.call(tag.dataset, opt)) {
|
|
19
20
|
if (opt === 'env' || opt === 'dumpLineNumbers' || opt === 'rootpath' || opt === 'errorReporting') {
|
|
20
21
|
options[opt] = tag.dataset[opt];
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
22
|
+
} else {
|
|
23
23
|
try {
|
|
24
24
|
options[opt] = JSON.parse(tag.dataset[opt]);
|
|
25
25
|
}
|
|
26
|
-
catch (_) {
|
|
26
|
+
catch (_) {}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
exports.addDataAttr = addDataAttr;
|
|
32
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1,19 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { createRequire } from 'module';
|
|
2
|
+
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
|
|
5
|
+
class SourceMapGeneratorFallback {
|
|
6
|
+
addMapping(){}
|
|
7
|
+
setSourceContent(){}
|
|
8
|
+
toJSON(){
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default {
|
|
4
14
|
encodeBase64: function encodeBase64(str) {
|
|
5
15
|
// Avoid Buffer constructor on newer versions of Node.js.
|
|
6
|
-
|
|
16
|
+
const buffer = (Buffer.from ? Buffer.from(str) : (new Buffer(str)));
|
|
7
17
|
return buffer.toString('base64');
|
|
8
18
|
},
|
|
9
19
|
mimeLookup: function (filename) {
|
|
10
|
-
|
|
20
|
+
try {
|
|
21
|
+
const mimeModule = require('mime');
|
|
22
|
+
return mimeModule ? mimeModule.lookup(filename) : "application/octet-stream";
|
|
23
|
+
} catch (e) {
|
|
24
|
+
return "application/octet-stream";
|
|
25
|
+
}
|
|
11
26
|
},
|
|
12
27
|
charsetLookup: function (mime) {
|
|
13
|
-
|
|
28
|
+
try {
|
|
29
|
+
const mimeModule = require('mime');
|
|
30
|
+
return mimeModule ? mimeModule.charsets.lookup(mime) : undefined;
|
|
31
|
+
} catch (e) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
14
34
|
},
|
|
15
35
|
getSourceMapGenerator: function getSourceMapGenerator() {
|
|
16
|
-
|
|
36
|
+
try {
|
|
37
|
+
const sourceMapModule = require('source-map');
|
|
38
|
+
return sourceMapModule ? sourceMapModule.SourceMapGenerator : SourceMapGeneratorFallback;
|
|
39
|
+
} catch (e) {
|
|
40
|
+
return SourceMapGeneratorFallback;
|
|
41
|
+
}
|
|
17
42
|
}
|
|
18
43
|
};
|
|
19
|
-
//# sourceMappingURL=environment.js.map
|