vscode-css-languageservice 5.4.1 → 6.0.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 (87) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +1 -0
  3. package/lib/esm/beautify/beautify-css.js +50 -8
  4. package/lib/esm/cssLanguageService.d.ts +37 -37
  5. package/lib/esm/cssLanguageService.js +72 -75
  6. package/lib/esm/cssLanguageTypes.d.ts +238 -238
  7. package/lib/esm/cssLanguageTypes.js +42 -42
  8. package/lib/esm/data/webCustomData.js +21959 -21965
  9. package/lib/esm/languageFacts/builtinData.js +142 -142
  10. package/lib/esm/languageFacts/colors.js +469 -472
  11. package/lib/esm/languageFacts/dataManager.js +88 -92
  12. package/lib/esm/languageFacts/dataProvider.js +73 -79
  13. package/lib/esm/languageFacts/entry.js +137 -138
  14. package/lib/esm/languageFacts/facts.js +8 -8
  15. package/lib/esm/parser/cssErrors.js +48 -50
  16. package/lib/esm/parser/cssNodes.js +1502 -2019
  17. package/lib/esm/parser/cssParser.js +1534 -1566
  18. package/lib/esm/parser/cssScanner.js +592 -599
  19. package/lib/esm/parser/cssSymbolScope.js +311 -341
  20. package/lib/esm/parser/lessParser.js +714 -740
  21. package/lib/esm/parser/lessScanner.js +57 -78
  22. package/lib/esm/parser/scssErrors.js +18 -20
  23. package/lib/esm/parser/scssParser.js +796 -818
  24. package/lib/esm/parser/scssScanner.js +95 -116
  25. package/lib/esm/services/cssCodeActions.js +77 -81
  26. package/lib/esm/services/cssCompletion.js +1054 -1149
  27. package/lib/esm/services/cssFolding.js +190 -193
  28. package/lib/esm/services/cssFormatter.js +136 -136
  29. package/lib/esm/services/cssHover.js +148 -151
  30. package/lib/esm/services/cssNavigation.js +378 -470
  31. package/lib/esm/services/cssSelectionRange.js +47 -47
  32. package/lib/esm/services/cssValidation.js +41 -44
  33. package/lib/esm/services/lessCompletion.js +378 -397
  34. package/lib/esm/services/lint.js +518 -532
  35. package/lib/esm/services/lintRules.js +76 -83
  36. package/lib/esm/services/lintUtil.js +196 -205
  37. package/lib/esm/services/pathCompletion.js +157 -231
  38. package/lib/esm/services/scssCompletion.js +354 -378
  39. package/lib/esm/services/scssNavigation.js +82 -154
  40. package/lib/esm/services/selectorPrinting.js +492 -536
  41. package/lib/esm/utils/arrays.js +40 -46
  42. package/lib/esm/utils/objects.js +11 -11
  43. package/lib/esm/utils/resources.js +11 -24
  44. package/lib/esm/utils/strings.js +102 -104
  45. package/lib/umd/beautify/beautify-css.js +50 -8
  46. package/lib/umd/cssLanguageService.d.ts +37 -37
  47. package/lib/umd/cssLanguageService.js +99 -102
  48. package/lib/umd/cssLanguageTypes.d.ts +238 -238
  49. package/lib/umd/cssLanguageTypes.js +89 -88
  50. package/lib/umd/data/webCustomData.js +21972 -21978
  51. package/lib/umd/languageFacts/builtinData.js +154 -154
  52. package/lib/umd/languageFacts/colors.js +492 -495
  53. package/lib/umd/languageFacts/dataManager.js +101 -104
  54. package/lib/umd/languageFacts/dataProvider.js +86 -91
  55. package/lib/umd/languageFacts/entry.js +152 -153
  56. package/lib/umd/languageFacts/facts.js +29 -29
  57. package/lib/umd/parser/cssErrors.js +61 -62
  58. package/lib/umd/parser/cssNodes.js +1587 -2034
  59. package/lib/umd/parser/cssParser.js +1547 -1578
  60. package/lib/umd/parser/cssScanner.js +606 -611
  61. package/lib/umd/parser/cssSymbolScope.js +328 -353
  62. package/lib/umd/parser/lessParser.js +727 -752
  63. package/lib/umd/parser/lessScanner.js +70 -90
  64. package/lib/umd/parser/scssErrors.js +31 -32
  65. package/lib/umd/parser/scssParser.js +809 -830
  66. package/lib/umd/parser/scssScanner.js +108 -128
  67. package/lib/umd/services/cssCodeActions.js +90 -93
  68. package/lib/umd/services/cssCompletion.js +1067 -1161
  69. package/lib/umd/services/cssFolding.js +203 -206
  70. package/lib/umd/services/cssFormatter.js +150 -150
  71. package/lib/umd/services/cssHover.js +161 -163
  72. package/lib/umd/services/cssNavigation.js +391 -482
  73. package/lib/umd/services/cssSelectionRange.js +60 -60
  74. package/lib/umd/services/cssValidation.js +54 -56
  75. package/lib/umd/services/lessCompletion.js +391 -409
  76. package/lib/umd/services/lint.js +531 -544
  77. package/lib/umd/services/lintRules.js +91 -95
  78. package/lib/umd/services/lintUtil.js +210 -218
  79. package/lib/umd/services/pathCompletion.js +171 -244
  80. package/lib/umd/services/scssCompletion.js +367 -390
  81. package/lib/umd/services/scssNavigation.js +95 -166
  82. package/lib/umd/services/selectorPrinting.js +510 -550
  83. package/lib/umd/utils/arrays.js +55 -61
  84. package/lib/umd/utils/objects.js +25 -25
  85. package/lib/umd/utils/resources.js +26 -39
  86. package/lib/umd/utils/strings.js +120 -122
  87. package/package.json +11 -11
@@ -1,116 +1,95 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
- 'use strict';
6
- var __extends = (this && this.__extends) || (function () {
7
- var extendStatics = function (d, b) {
8
- extendStatics = Object.setPrototypeOf ||
9
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
10
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
11
- return extendStatics(d, b);
12
- };
13
- return function (d, b) {
14
- if (typeof b !== "function" && b !== null)
15
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
16
- extendStatics(d, b);
17
- function __() { this.constructor = d; }
18
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19
- };
20
- })();
21
- import { TokenType, Scanner } from './cssScanner';
22
- var _FSL = '/'.charCodeAt(0);
23
- var _NWL = '\n'.charCodeAt(0);
24
- var _CAR = '\r'.charCodeAt(0);
25
- var _LFD = '\f'.charCodeAt(0);
26
- var _DLR = '$'.charCodeAt(0);
27
- var _HSH = '#'.charCodeAt(0);
28
- var _CUL = '{'.charCodeAt(0);
29
- var _EQS = '='.charCodeAt(0);
30
- var _BNG = '!'.charCodeAt(0);
31
- var _LAN = '<'.charCodeAt(0);
32
- var _RAN = '>'.charCodeAt(0);
33
- var _DOT = '.'.charCodeAt(0);
34
- var _ATS = '@'.charCodeAt(0);
35
- var customTokenValue = TokenType.CustomToken;
36
- export var VariableName = customTokenValue++;
37
- export var InterpolationFunction = customTokenValue++;
38
- export var Default = customTokenValue++;
39
- export var EqualsOperator = customTokenValue++;
40
- export var NotEqualsOperator = customTokenValue++;
41
- export var GreaterEqualsOperator = customTokenValue++;
42
- export var SmallerEqualsOperator = customTokenValue++;
43
- export var Ellipsis = customTokenValue++;
44
- export var Module = customTokenValue++;
45
- var SCSSScanner = /** @class */ (function (_super) {
46
- __extends(SCSSScanner, _super);
47
- function SCSSScanner() {
48
- return _super !== null && _super.apply(this, arguments) || this;
49
- }
50
- SCSSScanner.prototype.scanNext = function (offset) {
51
- // scss variable
52
- if (this.stream.advanceIfChar(_DLR)) {
53
- var content = ['$'];
54
- if (this.ident(content)) {
55
- return this.finishToken(offset, VariableName, content.join(''));
56
- }
57
- else {
58
- this.stream.goBackTo(offset);
59
- }
60
- }
61
- // scss: interpolation function #{..})
62
- if (this.stream.advanceIfChars([_HSH, _CUL])) {
63
- return this.finishToken(offset, InterpolationFunction);
64
- }
65
- // operator ==
66
- if (this.stream.advanceIfChars([_EQS, _EQS])) {
67
- return this.finishToken(offset, EqualsOperator);
68
- }
69
- // operator !=
70
- if (this.stream.advanceIfChars([_BNG, _EQS])) {
71
- return this.finishToken(offset, NotEqualsOperator);
72
- }
73
- // operators <, <=
74
- if (this.stream.advanceIfChar(_LAN)) {
75
- if (this.stream.advanceIfChar(_EQS)) {
76
- return this.finishToken(offset, SmallerEqualsOperator);
77
- }
78
- return this.finishToken(offset, TokenType.Delim);
79
- }
80
- // ooperators >, >=
81
- if (this.stream.advanceIfChar(_RAN)) {
82
- if (this.stream.advanceIfChar(_EQS)) {
83
- return this.finishToken(offset, GreaterEqualsOperator);
84
- }
85
- return this.finishToken(offset, TokenType.Delim);
86
- }
87
- // ellipis
88
- if (this.stream.advanceIfChars([_DOT, _DOT, _DOT])) {
89
- return this.finishToken(offset, Ellipsis);
90
- }
91
- return _super.prototype.scanNext.call(this, offset);
92
- };
93
- SCSSScanner.prototype.comment = function () {
94
- if (_super.prototype.comment.call(this)) {
95
- return true;
96
- }
97
- if (!this.inURL && this.stream.advanceIfChars([_FSL, _FSL])) {
98
- this.stream.advanceWhileChar(function (ch) {
99
- switch (ch) {
100
- case _NWL:
101
- case _CAR:
102
- case _LFD:
103
- return false;
104
- default:
105
- return true;
106
- }
107
- });
108
- return true;
109
- }
110
- else {
111
- return false;
112
- }
113
- };
114
- return SCSSScanner;
115
- }(Scanner));
116
- export { SCSSScanner };
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ 'use strict';
6
+ import { TokenType, Scanner } from './cssScanner';
7
+ const _FSL = '/'.charCodeAt(0);
8
+ const _NWL = '\n'.charCodeAt(0);
9
+ const _CAR = '\r'.charCodeAt(0);
10
+ const _LFD = '\f'.charCodeAt(0);
11
+ const _DLR = '$'.charCodeAt(0);
12
+ const _HSH = '#'.charCodeAt(0);
13
+ const _CUL = '{'.charCodeAt(0);
14
+ const _EQS = '='.charCodeAt(0);
15
+ const _BNG = '!'.charCodeAt(0);
16
+ const _LAN = '<'.charCodeAt(0);
17
+ const _RAN = '>'.charCodeAt(0);
18
+ const _DOT = '.'.charCodeAt(0);
19
+ const _ATS = '@'.charCodeAt(0);
20
+ let customTokenValue = TokenType.CustomToken;
21
+ export const VariableName = customTokenValue++;
22
+ export const InterpolationFunction = customTokenValue++;
23
+ export const Default = customTokenValue++;
24
+ export const EqualsOperator = customTokenValue++;
25
+ export const NotEqualsOperator = customTokenValue++;
26
+ export const GreaterEqualsOperator = customTokenValue++;
27
+ export const SmallerEqualsOperator = customTokenValue++;
28
+ export const Ellipsis = customTokenValue++;
29
+ export const Module = customTokenValue++;
30
+ export class SCSSScanner extends Scanner {
31
+ scanNext(offset) {
32
+ // scss variable
33
+ if (this.stream.advanceIfChar(_DLR)) {
34
+ const content = ['$'];
35
+ if (this.ident(content)) {
36
+ return this.finishToken(offset, VariableName, content.join(''));
37
+ }
38
+ else {
39
+ this.stream.goBackTo(offset);
40
+ }
41
+ }
42
+ // scss: interpolation function #{..})
43
+ if (this.stream.advanceIfChars([_HSH, _CUL])) {
44
+ return this.finishToken(offset, InterpolationFunction);
45
+ }
46
+ // operator ==
47
+ if (this.stream.advanceIfChars([_EQS, _EQS])) {
48
+ return this.finishToken(offset, EqualsOperator);
49
+ }
50
+ // operator !=
51
+ if (this.stream.advanceIfChars([_BNG, _EQS])) {
52
+ return this.finishToken(offset, NotEqualsOperator);
53
+ }
54
+ // operators <, <=
55
+ if (this.stream.advanceIfChar(_LAN)) {
56
+ if (this.stream.advanceIfChar(_EQS)) {
57
+ return this.finishToken(offset, SmallerEqualsOperator);
58
+ }
59
+ return this.finishToken(offset, TokenType.Delim);
60
+ }
61
+ // ooperators >, >=
62
+ if (this.stream.advanceIfChar(_RAN)) {
63
+ if (this.stream.advanceIfChar(_EQS)) {
64
+ return this.finishToken(offset, GreaterEqualsOperator);
65
+ }
66
+ return this.finishToken(offset, TokenType.Delim);
67
+ }
68
+ // ellipis
69
+ if (this.stream.advanceIfChars([_DOT, _DOT, _DOT])) {
70
+ return this.finishToken(offset, Ellipsis);
71
+ }
72
+ return super.scanNext(offset);
73
+ }
74
+ comment() {
75
+ if (super.comment()) {
76
+ return true;
77
+ }
78
+ if (!this.inURL && this.stream.advanceIfChars([_FSL, _FSL])) {
79
+ this.stream.advanceWhileChar((ch) => {
80
+ switch (ch) {
81
+ case _NWL:
82
+ case _CAR:
83
+ case _LFD:
84
+ return false;
85
+ default:
86
+ return true;
87
+ }
88
+ });
89
+ return true;
90
+ }
91
+ else {
92
+ return false;
93
+ }
94
+ }
95
+ }
@@ -1,81 +1,77 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
- 'use strict';
6
- import * as nodes from '../parser/cssNodes';
7
- import { difference } from '../utils/strings';
8
- import { Rules } from '../services/lintRules';
9
- import { Command, TextEdit, CodeAction, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier } from '../cssLanguageTypes';
10
- import * as nls from 'vscode-nls';
11
- var localize = nls.loadMessageBundle();
12
- var CSSCodeActions = /** @class */ (function () {
13
- function CSSCodeActions(cssDataManager) {
14
- this.cssDataManager = cssDataManager;
15
- }
16
- CSSCodeActions.prototype.doCodeActions = function (document, range, context, stylesheet) {
17
- return this.doCodeActions2(document, range, context, stylesheet).map(function (ca) {
18
- var textDocumentEdit = ca.edit && ca.edit.documentChanges && ca.edit.documentChanges[0];
19
- return Command.create(ca.title, '_css.applyCodeAction', document.uri, document.version, textDocumentEdit && textDocumentEdit.edits);
20
- });
21
- };
22
- CSSCodeActions.prototype.doCodeActions2 = function (document, range, context, stylesheet) {
23
- var result = [];
24
- if (context.diagnostics) {
25
- for (var _i = 0, _a = context.diagnostics; _i < _a.length; _i++) {
26
- var diagnostic = _a[_i];
27
- this.appendFixesForMarker(document, stylesheet, diagnostic, result);
28
- }
29
- }
30
- return result;
31
- };
32
- CSSCodeActions.prototype.getFixesForUnknownProperty = function (document, property, marker, result) {
33
- var propertyName = property.getName();
34
- var candidates = [];
35
- this.cssDataManager.getProperties().forEach(function (p) {
36
- var score = difference(propertyName, p.name);
37
- if (score >= propertyName.length / 2 /*score_lim*/) {
38
- candidates.push({ property: p.name, score: score });
39
- }
40
- });
41
- // Sort in descending order.
42
- candidates.sort(function (a, b) {
43
- return b.score - a.score || a.property.localeCompare(b.property);
44
- });
45
- var maxActions = 3;
46
- for (var _i = 0, candidates_1 = candidates; _i < candidates_1.length; _i++) {
47
- var candidate = candidates_1[_i];
48
- var propertyName_1 = candidate.property;
49
- var title = localize('css.codeaction.rename', "Rename to '{0}'", propertyName_1);
50
- var edit = TextEdit.replace(marker.range, propertyName_1);
51
- var documentIdentifier = VersionedTextDocumentIdentifier.create(document.uri, document.version);
52
- var workspaceEdit = { documentChanges: [TextDocumentEdit.create(documentIdentifier, [edit])] };
53
- var codeAction = CodeAction.create(title, workspaceEdit, CodeActionKind.QuickFix);
54
- codeAction.diagnostics = [marker];
55
- result.push(codeAction);
56
- if (--maxActions <= 0) {
57
- return;
58
- }
59
- }
60
- };
61
- CSSCodeActions.prototype.appendFixesForMarker = function (document, stylesheet, marker, result) {
62
- if (marker.code !== Rules.UnknownProperty.id) {
63
- return;
64
- }
65
- var offset = document.offsetAt(marker.range.start);
66
- var end = document.offsetAt(marker.range.end);
67
- var nodepath = nodes.getNodePath(stylesheet, offset);
68
- for (var i = nodepath.length - 1; i >= 0; i--) {
69
- var node = nodepath[i];
70
- if (node instanceof nodes.Declaration) {
71
- var property = node.getProperty();
72
- if (property && property.offset === offset && property.end === end) {
73
- this.getFixesForUnknownProperty(document, property, marker, result);
74
- return;
75
- }
76
- }
77
- }
78
- };
79
- return CSSCodeActions;
80
- }());
81
- export { CSSCodeActions };
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ 'use strict';
6
+ import * as nodes from '../parser/cssNodes';
7
+ import { difference } from '../utils/strings';
8
+ import { Rules } from '../services/lintRules';
9
+ import { Command, TextEdit, CodeAction, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier } from '../cssLanguageTypes';
10
+ import * as nls from 'vscode-nls';
11
+ const localize = nls.loadMessageBundle();
12
+ export class CSSCodeActions {
13
+ constructor(cssDataManager) {
14
+ this.cssDataManager = cssDataManager;
15
+ }
16
+ doCodeActions(document, range, context, stylesheet) {
17
+ return this.doCodeActions2(document, range, context, stylesheet).map(ca => {
18
+ const textDocumentEdit = ca.edit && ca.edit.documentChanges && ca.edit.documentChanges[0];
19
+ return Command.create(ca.title, '_css.applyCodeAction', document.uri, document.version, textDocumentEdit && textDocumentEdit.edits);
20
+ });
21
+ }
22
+ doCodeActions2(document, range, context, stylesheet) {
23
+ const result = [];
24
+ if (context.diagnostics) {
25
+ for (const diagnostic of context.diagnostics) {
26
+ this.appendFixesForMarker(document, stylesheet, diagnostic, result);
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ getFixesForUnknownProperty(document, property, marker, result) {
32
+ const propertyName = property.getName();
33
+ const candidates = [];
34
+ this.cssDataManager.getProperties().forEach(p => {
35
+ const score = difference(propertyName, p.name);
36
+ if (score >= propertyName.length / 2 /*score_lim*/) {
37
+ candidates.push({ property: p.name, score });
38
+ }
39
+ });
40
+ // Sort in descending order.
41
+ candidates.sort((a, b) => {
42
+ return b.score - a.score || a.property.localeCompare(b.property);
43
+ });
44
+ let maxActions = 3;
45
+ for (const candidate of candidates) {
46
+ const propertyName = candidate.property;
47
+ const title = localize('css.codeaction.rename', "Rename to '{0}'", propertyName);
48
+ const edit = TextEdit.replace(marker.range, propertyName);
49
+ const documentIdentifier = VersionedTextDocumentIdentifier.create(document.uri, document.version);
50
+ const workspaceEdit = { documentChanges: [TextDocumentEdit.create(documentIdentifier, [edit])] };
51
+ const codeAction = CodeAction.create(title, workspaceEdit, CodeActionKind.QuickFix);
52
+ codeAction.diagnostics = [marker];
53
+ result.push(codeAction);
54
+ if (--maxActions <= 0) {
55
+ return;
56
+ }
57
+ }
58
+ }
59
+ appendFixesForMarker(document, stylesheet, marker, result) {
60
+ if (marker.code !== Rules.UnknownProperty.id) {
61
+ return;
62
+ }
63
+ const offset = document.offsetAt(marker.range.start);
64
+ const end = document.offsetAt(marker.range.end);
65
+ const nodepath = nodes.getNodePath(stylesheet, offset);
66
+ for (let i = nodepath.length - 1; i >= 0; i--) {
67
+ const node = nodepath[i];
68
+ if (node instanceof nodes.Declaration) {
69
+ const property = node.getProperty();
70
+ if (property && property.offset === offset && property.end === end) {
71
+ this.getFixesForUnknownProperty(document, property, marker, result);
72
+ return;
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }