vscode-css-languageservice 5.4.2 → 6.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/CHANGELOG.md +7 -1
- package/SECURITY.md +41 -0
- package/lib/esm/beautify/beautify-css.js +11 -4
- package/lib/esm/cssLanguageService.d.ts +2 -1
- package/lib/esm/cssLanguageService.js +15 -17
- package/lib/esm/cssLanguageTypes.js +2 -2
- package/lib/esm/data/webCustomData.js +356 -232
- package/lib/esm/languageFacts/builtinData.js +15 -15
- package/lib/esm/languageFacts/colors.js +66 -69
- package/lib/esm/languageFacts/dataManager.js +38 -42
- package/lib/esm/languageFacts/dataProvider.js +17 -23
- package/lib/esm/languageFacts/entry.js +22 -23
- package/lib/esm/parser/cssErrors.js +5 -7
- package/lib/esm/parser/cssNodes.js +869 -1377
- package/lib/esm/parser/cssParser.js +419 -376
- package/lib/esm/parser/cssScanner.js +168 -175
- package/lib/esm/parser/cssSymbolScope.js +107 -137
- package/lib/esm/parser/lessParser.js +177 -202
- package/lib/esm/parser/lessScanner.js +22 -43
- package/lib/esm/parser/scssErrors.js +5 -7
- package/lib/esm/parser/scssParser.js +196 -208
- package/lib/esm/parser/scssScanner.js +33 -54
- package/lib/esm/services/cssCodeActions.js +36 -40
- package/lib/esm/services/cssCompletion.js +300 -395
- package/lib/esm/services/cssFolding.js +32 -35
- package/lib/esm/services/cssFormatter.js +22 -22
- package/lib/esm/services/cssHover.js +30 -33
- package/lib/esm/services/cssNavigation.js +260 -289
- package/lib/esm/services/cssSelectionRange.js +6 -6
- package/lib/esm/services/cssValidation.js +13 -16
- package/lib/esm/services/lessCompletion.js +351 -370
- package/lib/esm/services/lint.js +161 -175
- package/lib/esm/services/lintRules.js +20 -27
- package/lib/esm/services/lintUtil.js +19 -28
- package/lib/esm/services/pathCompletion.js +84 -158
- package/lib/esm/services/scssCompletion.js +283 -307
- package/lib/esm/services/scssNavigation.js +65 -137
- package/lib/esm/services/selectorPrinting.js +131 -175
- package/lib/esm/utils/arrays.js +6 -12
- package/lib/esm/utils/objects.js +1 -1
- package/lib/esm/utils/resources.js +3 -16
- package/lib/esm/utils/strings.js +10 -12
- package/lib/umd/beautify/beautify-css.js +11 -4
- package/lib/umd/cssLanguageService.d.ts +2 -1
- package/lib/umd/cssLanguageService.js +34 -32
- package/lib/umd/cssLanguageTypes.js +4 -3
- package/lib/umd/data/webCustomData.js +355 -231
- package/lib/umd/languageFacts/colors.js +65 -68
- package/lib/umd/languageFacts/dataManager.js +41 -44
- package/lib/umd/languageFacts/dataProvider.js +17 -22
- package/lib/umd/languageFacts/entry.js +22 -23
- package/lib/umd/languageFacts/facts.js +5 -1
- package/lib/umd/parser/cssErrors.js +5 -6
- package/lib/umd/parser/cssNodes.js +870 -1307
- package/lib/umd/parser/cssParser.js +424 -380
- package/lib/umd/parser/cssScanner.js +168 -173
- package/lib/umd/parser/cssSymbolScope.js +109 -134
- package/lib/umd/parser/lessParser.js +182 -206
- package/lib/umd/parser/lessScanner.js +22 -42
- package/lib/umd/parser/scssErrors.js +5 -6
- package/lib/umd/parser/scssParser.js +202 -213
- package/lib/umd/parser/scssScanner.js +25 -45
- package/lib/umd/services/cssCodeActions.js +41 -44
- package/lib/umd/services/cssCompletion.js +308 -402
- package/lib/umd/services/cssFolding.js +35 -38
- package/lib/umd/services/cssFormatter.js +25 -25
- package/lib/umd/services/cssHover.js +36 -38
- package/lib/umd/services/cssNavigation.js +267 -295
- package/lib/umd/services/cssSelectionRange.js +8 -8
- package/lib/umd/services/cssValidation.js +17 -19
- package/lib/umd/services/lessCompletion.js +354 -372
- package/lib/umd/services/lint.js +167 -180
- package/lib/umd/services/lintRules.js +20 -24
- package/lib/umd/services/lintUtil.js +20 -28
- package/lib/umd/services/pathCompletion.js +87 -160
- package/lib/umd/services/scssCompletion.js +287 -310
- package/lib/umd/services/scssNavigation.js +69 -140
- package/lib/umd/services/selectorPrinting.js +134 -174
- package/lib/umd/utils/arrays.js +6 -12
- package/lib/umd/utils/objects.js +1 -1
- package/lib/umd/utils/resources.js +4 -17
- package/lib/umd/utils/strings.js +10 -12
- package/package.json +16 -15
|
@@ -1,54 +1,3 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
27
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
-
function step(op) {
|
|
30
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
-
while (_) try {
|
|
32
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
33
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
-
switch (op[0]) {
|
|
35
|
-
case 0: case 1: t = op; break;
|
|
36
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
-
default:
|
|
40
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
-
if (t[2]) _.ops.pop();
|
|
45
|
-
_.trys.pop(); continue;
|
|
46
|
-
}
|
|
47
|
-
op = body.call(thisArg, _);
|
|
48
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
1
|
(function (factory) {
|
|
53
2
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
54
3
|
var v = factory(require, exports);
|
|
@@ -65,102 +14,82 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
65
14
|
'use strict';
|
|
66
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
16
|
exports.SCSSNavigation = void 0;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return _super.call(this, fileSystemProvider, true) || this;
|
|
17
|
+
const cssNavigation_1 = require("./cssNavigation");
|
|
18
|
+
const nodes = require("../parser/cssNodes");
|
|
19
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
20
|
+
const strings_1 = require("../utils/strings");
|
|
21
|
+
class SCSSNavigation extends cssNavigation_1.CSSNavigation {
|
|
22
|
+
constructor(fileSystemProvider) {
|
|
23
|
+
super(fileSystemProvider, true);
|
|
76
24
|
}
|
|
77
|
-
|
|
78
|
-
return (
|
|
25
|
+
isRawStringDocumentLinkNode(node) {
|
|
26
|
+
return (super.isRawStringDocumentLinkNode(node) ||
|
|
79
27
|
node.type === nodes.NodeType.Use ||
|
|
80
28
|
node.type === nodes.NodeType.Forward);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
29
|
+
}
|
|
30
|
+
async resolveRelativeReference(ref, documentUri, documentContext, isRawLink) {
|
|
31
|
+
if ((0, strings_1.startsWith)(ref, 'sass:')) {
|
|
32
|
+
return undefined; // sass library
|
|
33
|
+
}
|
|
34
|
+
const target = await super.resolveRelativeReference(ref, documentUri, documentContext, isRawLink);
|
|
35
|
+
if (this.fileSystemProvider && target && isRawLink) {
|
|
36
|
+
const parsedUri = vscode_uri_1.URI.parse(target);
|
|
37
|
+
try {
|
|
38
|
+
const pathVariations = toPathVariations(parsedUri);
|
|
39
|
+
if (pathVariations) {
|
|
40
|
+
for (let j = 0; j < pathVariations.length; j++) {
|
|
41
|
+
if (await this.fileExists(pathVariations[j])) {
|
|
42
|
+
return pathVariations[j];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
88
45
|
}
|
|
89
|
-
|
|
90
|
-
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
// ignore
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
function toPathVariations(uri) {
|
|
53
|
+
// No valid path
|
|
54
|
+
if (uri.path === '') {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
// No variation for links that ends with suffix
|
|
58
|
+
if (uri.path.endsWith('.scss') || uri.path.endsWith('.css')) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
// If a link is like a/, try resolving a/index.scss and a/_index.scss
|
|
62
|
+
if (uri.path.endsWith('/')) {
|
|
63
|
+
return [
|
|
64
|
+
uri.with({ path: uri.path + 'index.scss' }).toString(true),
|
|
65
|
+
uri.with({ path: uri.path + '_index.scss' }).toString(true)
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
// Use `uri.path` since it's normalized to use `/` in all platforms
|
|
69
|
+
const pathFragments = uri.path.split('/');
|
|
70
|
+
const basename = pathFragments[pathFragments.length - 1];
|
|
71
|
+
const pathWithoutBasename = uri.path.slice(0, -basename.length);
|
|
72
|
+
// No variation for links such as _a
|
|
73
|
+
if (basename.startsWith('_')) {
|
|
74
|
+
if (uri.path.endsWith('.scss')) {
|
|
91
75
|
return undefined;
|
|
92
76
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return [
|
|
96
|
-
uri.with({ path: uri.path + 'index.scss' }).toString(),
|
|
97
|
-
uri.with({ path: uri.path + '_index.scss' }).toString()
|
|
98
|
-
];
|
|
99
|
-
}
|
|
100
|
-
// Use `uri.path` since it's normalized to use `/` in all platforms
|
|
101
|
-
var pathFragments = uri.path.split('/');
|
|
102
|
-
var basename = pathFragments[pathFragments.length - 1];
|
|
103
|
-
var pathWithoutBasename = uri.path.slice(0, -basename.length);
|
|
104
|
-
// No variation for links such as _a
|
|
105
|
-
if (basename.startsWith('_')) {
|
|
106
|
-
if (uri.path.endsWith('.scss')) {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
return [uri.with({ path: uri.path + '.scss' }).toString()];
|
|
111
|
-
}
|
|
77
|
+
else {
|
|
78
|
+
return [uri.with({ path: uri.path + '.scss' }).toString(true)];
|
|
112
79
|
}
|
|
113
|
-
var normalizedBasename = basename + '.scss';
|
|
114
|
-
var documentUriWithBasename = function (newBasename) {
|
|
115
|
-
return uri.with({ path: pathWithoutBasename + newBasename }).toString();
|
|
116
|
-
};
|
|
117
|
-
var normalizedPath = documentUriWithBasename(normalizedBasename);
|
|
118
|
-
var underScorePath = documentUriWithBasename('_' + normalizedBasename);
|
|
119
|
-
var indexPath = documentUriWithBasename(normalizedBasename.slice(0, -5) + '/index.scss');
|
|
120
|
-
var indexUnderscoreUri = documentUriWithBasename(normalizedBasename.slice(0, -5) + '/_index.scss');
|
|
121
|
-
var cssPath = documentUriWithBasename(normalizedBasename.slice(0, -5) + '.css');
|
|
122
|
-
return [normalizedPath, underScorePath, indexPath, indexUnderscoreUri, cssPath];
|
|
123
80
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
case 2:
|
|
138
|
-
_a.trys.push([2, 7, , 8]);
|
|
139
|
-
pathVariations = toPathVariations(parsedUri);
|
|
140
|
-
if (!pathVariations) return [3 /*break*/, 6];
|
|
141
|
-
j = 0;
|
|
142
|
-
_a.label = 3;
|
|
143
|
-
case 3:
|
|
144
|
-
if (!(j < pathVariations.length)) return [3 /*break*/, 6];
|
|
145
|
-
return [4 /*yield*/, this.fileExists(pathVariations[j])];
|
|
146
|
-
case 4:
|
|
147
|
-
if (_a.sent()) {
|
|
148
|
-
return [2 /*return*/, pathVariations[j]];
|
|
149
|
-
}
|
|
150
|
-
_a.label = 5;
|
|
151
|
-
case 5:
|
|
152
|
-
j++;
|
|
153
|
-
return [3 /*break*/, 3];
|
|
154
|
-
case 6: return [3 /*break*/, 8];
|
|
155
|
-
case 7:
|
|
156
|
-
e_1 = _a.sent();
|
|
157
|
-
return [3 /*break*/, 8];
|
|
158
|
-
case 8: return [2 /*return*/, target];
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
return SCSSNavigation;
|
|
164
|
-
}(cssNavigation_1.CSSNavigation));
|
|
81
|
+
const normalizedBasename = basename + '.scss';
|
|
82
|
+
const documentUriWithBasename = (newBasename) => {
|
|
83
|
+
return uri.with({ path: pathWithoutBasename + newBasename }).toString(true);
|
|
84
|
+
};
|
|
85
|
+
const normalizedPath = documentUriWithBasename(normalizedBasename);
|
|
86
|
+
const underScorePath = documentUriWithBasename('_' + normalizedBasename);
|
|
87
|
+
const indexPath = documentUriWithBasename(normalizedBasename.slice(0, -5) + '/index.scss');
|
|
88
|
+
const indexUnderscoreUri = documentUriWithBasename(normalizedBasename.slice(0, -5) + '/_index.scss');
|
|
89
|
+
const cssPath = documentUriWithBasename(normalizedBasename.slice(0, -5) + '.css');
|
|
90
|
+
return [normalizedPath, underScorePath, indexPath, indexUnderscoreUri, cssPath];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
165
94
|
exports.SCSSNavigation = SCSSNavigation;
|
|
166
95
|
});
|