@master/css-language-service 2.0.0-rc.61 → 2.0.0-rc.62

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.
@@ -4,7 +4,7 @@ var beautifyCss = require('js-beautify/js/lib/beautify-css');
4
4
 
5
5
  // @ts-expect-error
6
6
  function beautifyCSS(text) {
7
- return beautifyCss.css_beautify(text, {
7
+ return beautifyCss.css_beautify(text.replace(/@(media|container|supports|layer)\(/g, '@$1 ('), {
8
8
  newline_between_rules: false,
9
9
  indent_size: 2
10
10
  });
@@ -2,7 +2,7 @@ import { css_beautify } from 'js-beautify/js/lib/beautify-css';
2
2
 
3
3
  // @ts-expect-error
4
4
  function beautifyCSS(text) {
5
- return css_beautify(text, {
5
+ return css_beautify(text.replace(/@(media|container|supports|layer)\(/g, '@$1 ('), {
6
6
  newline_between_rules: false,
7
7
  indent_size: 2
8
8
  });
@@ -30,18 +30,20 @@ function getPseudoClassCompletionItems(css$1 = new css.MasterCSS(), syntax) {
30
30
  generatedCSS: css.generateCSS([
31
31
  syntax + name.slice(1)
32
32
  ], css$1),
33
- docs: '/guide/syntax#selectors'
33
+ docs: '/guide/selectors'
34
34
  }),
35
35
  kind,
36
36
  data
37
37
  };
38
38
  });
39
- for(const selectorName in css$1.config.selectors){
40
- if (selectorName.startsWith('::')) continue;
41
- const selectorValue = css$1.config.selectors[selectorName];
42
- const name = selectorName.endsWith('(') ? selectorName + ')' : selectorName;
43
- const value = typeof selectorValue === 'string' ? selectorValue.endsWith('(') ? selectorValue + ')' : selectorValue : selectorValue;
44
- const data = pseudoClassDataList.find((data)=>typeof value === 'string' ? value.startsWith(data.name) : false);
39
+ const selectors = {
40
+ ...css$1.config.selectors,
41
+ ':of': ':of'
42
+ };
43
+ for(const name in selectors){
44
+ if (name.startsWith('::')) continue;
45
+ const value = selectors[name];
46
+ const data = pseudoClassDataList.find((data)=>value.startsWith(data.name));
45
47
  let sortText = name.startsWith(':-') ? 'yyyy' + name.slice(2) : 'yy' + name.replace(/^:/, '');
46
48
  if (sortText.endsWith('()')) sortText = 'y' + sortText;
47
49
  const completionItem = {
@@ -50,7 +52,7 @@ function getPseudoClassCompletionItems(css$1 = new css.MasterCSS(), syntax) {
50
52
  generatedCSS: css.generateCSS([
51
53
  syntax + name.slice(1)
52
54
  ], css$1),
53
- docs: '/guide/syntax#selectors'
55
+ docs: '/guide/selectors'
54
56
  }),
55
57
  sortText,
56
58
  kind,
@@ -28,18 +28,20 @@ function getPseudoClassCompletionItems(css = new MasterCSS(), syntax) {
28
28
  generatedCSS: generateCSS([
29
29
  syntax + name.slice(1)
30
30
  ], css),
31
- docs: '/guide/syntax#selectors'
31
+ docs: '/guide/selectors'
32
32
  }),
33
33
  kind,
34
34
  data
35
35
  };
36
36
  });
37
- for(const selectorName in css.config.selectors){
38
- if (selectorName.startsWith('::')) continue;
39
- const selectorValue = css.config.selectors[selectorName];
40
- const name = selectorName.endsWith('(') ? selectorName + ')' : selectorName;
41
- const value = typeof selectorValue === 'string' ? selectorValue.endsWith('(') ? selectorValue + ')' : selectorValue : selectorValue;
42
- const data = pseudoClassDataList.find((data)=>typeof value === 'string' ? value.startsWith(data.name) : false);
37
+ const selectors = {
38
+ ...css.config.selectors,
39
+ ':of': ':of'
40
+ };
41
+ for(const name in selectors){
42
+ if (name.startsWith('::')) continue;
43
+ const value = selectors[name];
44
+ const data = pseudoClassDataList.find((data)=>value.startsWith(data.name));
43
45
  let sortText = name.startsWith(':-') ? 'yyyy' + name.slice(2) : 'yy' + name.replace(/^:/, '');
44
46
  if (sortText.endsWith('()')) sortText = 'y' + sortText;
45
47
  const completionItem = {
@@ -48,7 +50,7 @@ function getPseudoClassCompletionItems(css = new MasterCSS(), syntax) {
48
50
  generatedCSS: generateCSS([
49
51
  syntax + name.slice(1)
50
52
  ], css),
51
- docs: '/guide/syntax#selectors'
53
+ docs: '/guide/selectors'
52
54
  }),
53
55
  sortText,
54
56
  kind,
@@ -21,7 +21,7 @@ function getPseudoElementCompletionItems(css$1 = new css.MasterCSS(), syntax) {
21
21
  generatedCSS: css.generateCSS([
22
22
  syntax + name.slice(2)
23
23
  ], css$1),
24
- docs: '/guide/syntax#selectors'
24
+ docs: '/guide/selectors'
25
25
  }),
26
26
  kind,
27
27
  data
@@ -41,7 +41,7 @@ function getPseudoElementCompletionItems(css$1 = new css.MasterCSS(), syntax) {
41
41
  generatedCSS: css.generateCSS([
42
42
  syntax + name.slice(2)
43
43
  ], css$1),
44
- docs: '/guide/syntax#selectors'
44
+ docs: '/guide/selectors'
45
45
  }),
46
46
  sortText,
47
47
  kind,
@@ -19,7 +19,7 @@ function getPseudoElementCompletionItems(css = new MasterCSS(), syntax) {
19
19
  generatedCSS: generateCSS([
20
20
  syntax + name.slice(2)
21
21
  ], css),
22
- docs: '/guide/syntax#selectors'
22
+ docs: '/guide/selectors'
23
23
  }),
24
24
  kind,
25
25
  data
@@ -39,7 +39,7 @@ function getPseudoElementCompletionItems(css = new MasterCSS(), syntax) {
39
39
  generatedCSS: generateCSS([
40
40
  syntax + name.slice(2)
41
41
  ], css),
42
- docs: '/guide/syntax#selectors'
42
+ docs: '/guide/selectors'
43
43
  }),
44
44
  sortText,
45
45
  kind,
@@ -10,90 +10,80 @@ function getQueryCompletionItems(css$1 = new css.MasterCSS(), triggerCharacter =
10
10
  const atDataList = cssDataProvider.provideAtDirectives();
11
11
  const completionItems = [];
12
12
  if (!css.QUERY_COMPARISON_OPERATORS.includes(triggerCharacter)) {
13
- completionItems.push({
14
- label: triggerCharacter + 'media()',
15
- filterText: 'media()',
16
- insertText: 'media()',
17
- sortText: 'media()',
18
- documentation: getCssDataDocumentation.getCSSDataDocumentation(atDataList.find(({ name })=>name === '@media'), {
19
- generatedCSS: css.generateCSS([
20
- syntax + 'media()'
21
- ], css$1),
22
- docs: '/guide/syntax#at-rules'
23
- })
24
- }, {
25
- label: triggerCharacter + 'supports()',
26
- filterText: 'supports()',
27
- insertText: 'supports()',
28
- sortText: 'supports()',
29
- documentation: getCssDataDocumentation.getCSSDataDocumentation(atDataList.find(({ name })=>name === '@supports'), {
30
- generatedCSS: css.generateCSS([
31
- syntax + 'supports()'
32
- ], css$1),
33
- docs: '/guide/syntax#at-rules'
34
- })
13
+ [
14
+ 'media',
15
+ 'container',
16
+ 'supports'
17
+ ].forEach((name)=>{
18
+ completionItems.push({
19
+ label: triggerCharacter + name + '()',
20
+ filterText: name + '()',
21
+ insertText: name + '()',
22
+ sortText: name + '()',
23
+ documentation: getCssDataDocumentation.getCSSDataDocumentation(atDataList.find(({ name })=>name === '@' + name), {
24
+ generatedCSS: css.generateCSS([
25
+ syntax + name + '()'
26
+ ], css$1),
27
+ docs: '/guide/at'
28
+ })
29
+ });
35
30
  });
36
31
  }
37
- css$1.at.forEach((value, name)=>{
32
+ const handleNumberNodes = (atRule, token)=>{
33
+ const numberNode = css.getSingleAtNumberRuleNode(atRule.nodes);
34
+ if (numberNode) {
35
+ const prevComparisonCharacter = syntax.charAt(syntax.length - 2);
36
+ const comparisonCharacter = prevComparisonCharacter === '>' || prevComparisonCharacter === '<' ? prevComparisonCharacter + triggerCharacter : triggerCharacter;
37
+ const text = css.generateAt(css.parseAt(comparisonCharacter + token, css$1));
38
+ completionItems.push({
39
+ label: comparisonCharacter + token,
40
+ sortText: vscodeLanguageserverProtocol.CompletionItemKind.Keyword + comparisonCharacter + String(Math.round(numberNode.value)).padStart(12, '0'),
41
+ filterText: token,
42
+ insertText: token,
43
+ detail: text,
44
+ kind: vscodeLanguageserverProtocol.CompletionItemKind.Keyword,
45
+ documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
46
+ generatedCSS: css.generateCSS([
47
+ syntax + token
48
+ ], css$1),
49
+ docs: '/guide/at'
50
+ })
51
+ });
52
+ return true;
53
+ }
54
+ };
55
+ css$1.atRules.forEach((atRule, token)=>{
38
56
  const completionItem = {
39
- filterText: name,
40
- insertText: name,
57
+ filterText: token,
58
+ insertText: token,
41
59
  documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
42
60
  generatedCSS: css.generateCSS([
43
- syntax + name
61
+ syntax + token
44
62
  ], css$1),
45
- docs: '/guide/syntax#at-rules'
63
+ docs: '/guide/at'
46
64
  })
47
65
  };
48
66
  if ([
49
67
  css.AT_SIGN,
50
68
  ...css.QUERY_LOGICAL_OPERATORS
51
69
  ].includes(triggerCharacter)) {
52
- if (typeof value === 'number') {
53
- completionItems.push({
54
- ...completionItem,
55
- label: triggerCharacter + name,
56
- sortText: String(value).padStart(8, '0'),
57
- filterText: name,
58
- insertText: name,
59
- documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
60
- generatedCSS: css.generateCSS([
61
- syntax + name
62
- ], css$1),
63
- docs: '/guide/syntax#at-rules'
64
- }),
65
- detail: `screen width ${'>='} ${value}px`,
66
- kind: vscodeLanguageserverProtocol.CompletionItemKind.Keyword
67
- });
68
- } else {
69
- completionItems.push({
70
- ...completionItem,
71
- label: triggerCharacter + name,
72
- detail: value,
73
- sortText: name,
74
- kind: vscodeLanguageserverProtocol.CompletionItemKind.Keyword
75
- });
76
- }
70
+ if (handleNumberNodes(atRule, token)) return;
71
+ const text = css.generateAt(css.parseAt(triggerCharacter + token, css$1));
72
+ completionItems.push({
73
+ ...completionItem,
74
+ label: triggerCharacter + token,
75
+ detail: text,
76
+ sortText: vscodeLanguageserverProtocol.CompletionItemKind.Keyword + token,
77
+ kind: vscodeLanguageserverProtocol.CompletionItemKind.Keyword,
78
+ documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
79
+ generatedCSS: css.generateCSS([
80
+ syntax + token
81
+ ], css$1),
82
+ docs: '/guide/at'
83
+ })
84
+ });
77
85
  } else if (css.QUERY_COMPARISON_OPERATORS.includes(triggerCharacter)) {
78
- if (typeof value === 'number') {
79
- const prevComparisonCharacter = syntax.charAt(syntax.length - 2);
80
- const comparisonCharacter = prevComparisonCharacter === '>' || prevComparisonCharacter === '<' ? prevComparisonCharacter + triggerCharacter : triggerCharacter;
81
- completionItems.push({
82
- ...completionItem,
83
- label: comparisonCharacter + name,
84
- sortText: comparisonCharacter + String(value).padStart(8, '0'),
85
- filterText: name,
86
- insertText: name,
87
- documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
88
- generatedCSS: css.generateCSS([
89
- syntax + name
90
- ], css$1),
91
- docs: '/guide/syntax#at-rules'
92
- }),
93
- detail: `screen width ${comparisonCharacter} ${value}px`,
94
- kind: vscodeLanguageserverProtocol.CompletionItemKind.Keyword
95
- });
96
- }
86
+ handleNumberNodes(atRule, token);
97
87
  }
98
88
  });
99
89
  return sortCompletionItems(completionItems);
@@ -1,4 +1,4 @@
1
- import { MasterCSS, AT_SIGN, QUERY_COMPARISON_OPERATORS, generateCSS, QUERY_LOGICAL_OPERATORS } from '@master/css';
1
+ import { MasterCSS, AT_SIGN, QUERY_COMPARISON_OPERATORS, generateCSS, QUERY_LOGICAL_OPERATORS, generateAt, parseAt, getSingleAtNumberRuleNode } from '@master/css';
2
2
  import { CompletionItemKind } from 'vscode-languageserver-protocol';
3
3
  import sortCompletionItems from './sort-completion-items.mjs';
4
4
  import { getCSSDataDocumentation } from './get-css-data-documentation.mjs';
@@ -8,90 +8,80 @@ function getQueryCompletionItems(css = new MasterCSS(), triggerCharacter = AT_SI
8
8
  const atDataList = cssDataProvider.provideAtDirectives();
9
9
  const completionItems = [];
10
10
  if (!QUERY_COMPARISON_OPERATORS.includes(triggerCharacter)) {
11
- completionItems.push({
12
- label: triggerCharacter + 'media()',
13
- filterText: 'media()',
14
- insertText: 'media()',
15
- sortText: 'media()',
16
- documentation: getCSSDataDocumentation(atDataList.find(({ name })=>name === '@media'), {
17
- generatedCSS: generateCSS([
18
- syntax + 'media()'
19
- ], css),
20
- docs: '/guide/syntax#at-rules'
21
- })
22
- }, {
23
- label: triggerCharacter + 'supports()',
24
- filterText: 'supports()',
25
- insertText: 'supports()',
26
- sortText: 'supports()',
27
- documentation: getCSSDataDocumentation(atDataList.find(({ name })=>name === '@supports'), {
28
- generatedCSS: generateCSS([
29
- syntax + 'supports()'
30
- ], css),
31
- docs: '/guide/syntax#at-rules'
32
- })
11
+ [
12
+ 'media',
13
+ 'container',
14
+ 'supports'
15
+ ].forEach((name)=>{
16
+ completionItems.push({
17
+ label: triggerCharacter + name + '()',
18
+ filterText: name + '()',
19
+ insertText: name + '()',
20
+ sortText: name + '()',
21
+ documentation: getCSSDataDocumentation(atDataList.find(({ name })=>name === '@' + name), {
22
+ generatedCSS: generateCSS([
23
+ syntax + name + '()'
24
+ ], css),
25
+ docs: '/guide/at'
26
+ })
27
+ });
33
28
  });
34
29
  }
35
- css.at.forEach((value, name)=>{
30
+ const handleNumberNodes = (atRule, token)=>{
31
+ const numberNode = getSingleAtNumberRuleNode(atRule.nodes);
32
+ if (numberNode) {
33
+ const prevComparisonCharacter = syntax.charAt(syntax.length - 2);
34
+ const comparisonCharacter = prevComparisonCharacter === '>' || prevComparisonCharacter === '<' ? prevComparisonCharacter + triggerCharacter : triggerCharacter;
35
+ const text = generateAt(parseAt(comparisonCharacter + token, css));
36
+ completionItems.push({
37
+ label: comparisonCharacter + token,
38
+ sortText: CompletionItemKind.Keyword + comparisonCharacter + String(Math.round(numberNode.value)).padStart(12, '0'),
39
+ filterText: token,
40
+ insertText: token,
41
+ detail: text,
42
+ kind: CompletionItemKind.Keyword,
43
+ documentation: getCSSDataDocumentation(undefined, {
44
+ generatedCSS: generateCSS([
45
+ syntax + token
46
+ ], css),
47
+ docs: '/guide/at'
48
+ })
49
+ });
50
+ return true;
51
+ }
52
+ };
53
+ css.atRules.forEach((atRule, token)=>{
36
54
  const completionItem = {
37
- filterText: name,
38
- insertText: name,
55
+ filterText: token,
56
+ insertText: token,
39
57
  documentation: getCSSDataDocumentation(undefined, {
40
58
  generatedCSS: generateCSS([
41
- syntax + name
59
+ syntax + token
42
60
  ], css),
43
- docs: '/guide/syntax#at-rules'
61
+ docs: '/guide/at'
44
62
  })
45
63
  };
46
64
  if ([
47
65
  AT_SIGN,
48
66
  ...QUERY_LOGICAL_OPERATORS
49
67
  ].includes(triggerCharacter)) {
50
- if (typeof value === 'number') {
51
- completionItems.push({
52
- ...completionItem,
53
- label: triggerCharacter + name,
54
- sortText: String(value).padStart(8, '0'),
55
- filterText: name,
56
- insertText: name,
57
- documentation: getCSSDataDocumentation(undefined, {
58
- generatedCSS: generateCSS([
59
- syntax + name
60
- ], css),
61
- docs: '/guide/syntax#at-rules'
62
- }),
63
- detail: `screen width ${'>='} ${value}px`,
64
- kind: CompletionItemKind.Keyword
65
- });
66
- } else {
67
- completionItems.push({
68
- ...completionItem,
69
- label: triggerCharacter + name,
70
- detail: value,
71
- sortText: name,
72
- kind: CompletionItemKind.Keyword
73
- });
74
- }
68
+ if (handleNumberNodes(atRule, token)) return;
69
+ const text = generateAt(parseAt(triggerCharacter + token, css));
70
+ completionItems.push({
71
+ ...completionItem,
72
+ label: triggerCharacter + token,
73
+ detail: text,
74
+ sortText: CompletionItemKind.Keyword + token,
75
+ kind: CompletionItemKind.Keyword,
76
+ documentation: getCSSDataDocumentation(undefined, {
77
+ generatedCSS: generateCSS([
78
+ syntax + token
79
+ ], css),
80
+ docs: '/guide/at'
81
+ })
82
+ });
75
83
  } else if (QUERY_COMPARISON_OPERATORS.includes(triggerCharacter)) {
76
- if (typeof value === 'number') {
77
- const prevComparisonCharacter = syntax.charAt(syntax.length - 2);
78
- const comparisonCharacter = prevComparisonCharacter === '>' || prevComparisonCharacter === '<' ? prevComparisonCharacter + triggerCharacter : triggerCharacter;
79
- completionItems.push({
80
- ...completionItem,
81
- label: comparisonCharacter + name,
82
- sortText: comparisonCharacter + String(value).padStart(8, '0'),
83
- filterText: name,
84
- insertText: name,
85
- documentation: getCSSDataDocumentation(undefined, {
86
- generatedCSS: generateCSS([
87
- syntax + name
88
- ], css),
89
- docs: '/guide/syntax#at-rules'
90
- }),
91
- detail: `screen width ${comparisonCharacter} ${value}px`,
92
- kind: CompletionItemKind.Keyword
93
- });
94
- }
84
+ handleNumberNodes(atRule, token);
95
85
  }
96
86
  });
97
87
  return sortCompletionItems(completionItems);
@@ -1,21 +1,23 @@
1
1
  'use strict';
2
2
 
3
- // todo: unstable range calculation
4
3
  function getRange(searchString, doc) {
5
4
  const text = doc.getText();
6
- const regex = new RegExp(`(\\b(?:className|class)\\s?=\\s?(['"\`]))(.*?)\\2`, 'g');
7
- const classAttMatch = regex.exec(text);
8
- if (classAttMatch) {
9
- const attrIndex = classAttMatch.index + classAttMatch[1].length;
10
- const className = classAttMatch[3];
11
- const index = className.indexOf(searchString);
12
- return {
13
- start: doc.positionAt(attrIndex + index),
14
- end: doc.positionAt(attrIndex + index + searchString.length)
15
- };
16
- } else {
17
- throw new Error(`Cannot find ${searchString} in ${text}`);
5
+ const regex = new RegExp(`(\\b(?:className|class)\\s*=\\s*(['"\`]))(.*?)\\2`, 'gs');
6
+ let match;
7
+ while((match = regex.exec(text)) !== null){
8
+ match[0];
9
+ const attrStartIndex = match.index + match[1].length;
10
+ const className = match[3];
11
+ const relativeIndex = className.indexOf(searchString);
12
+ if (relativeIndex !== -1) {
13
+ const absoluteIndex = attrStartIndex + relativeIndex;
14
+ return {
15
+ start: doc.positionAt(absoluteIndex),
16
+ end: doc.positionAt(absoluteIndex + searchString.length)
17
+ };
18
+ }
18
19
  }
20
+ throw new Error(`Cannot find "${searchString}" in any class attribute.`);
19
21
  }
20
22
 
21
23
  module.exports = getRange;
@@ -1,19 +1,21 @@
1
- // todo: unstable range calculation
2
1
  function getRange(searchString, doc) {
3
2
  const text = doc.getText();
4
- const regex = new RegExp(`(\\b(?:className|class)\\s?=\\s?(['"\`]))(.*?)\\2`, 'g');
5
- const classAttMatch = regex.exec(text);
6
- if (classAttMatch) {
7
- const attrIndex = classAttMatch.index + classAttMatch[1].length;
8
- const className = classAttMatch[3];
9
- const index = className.indexOf(searchString);
10
- return {
11
- start: doc.positionAt(attrIndex + index),
12
- end: doc.positionAt(attrIndex + index + searchString.length)
13
- };
14
- } else {
15
- throw new Error(`Cannot find ${searchString} in ${text}`);
3
+ const regex = new RegExp(`(\\b(?:className|class)\\s*=\\s*(['"\`]))(.*?)\\2`, 'gs');
4
+ let match;
5
+ while((match = regex.exec(text)) !== null){
6
+ match[0];
7
+ const attrStartIndex = match.index + match[1].length;
8
+ const className = match[3];
9
+ const relativeIndex = className.indexOf(searchString);
10
+ if (relativeIndex !== -1) {
11
+ const absoluteIndex = attrStartIndex + relativeIndex;
12
+ return {
13
+ start: doc.positionAt(absoluteIndex),
14
+ end: doc.positionAt(absoluteIndex + searchString.length)
15
+ };
16
+ }
16
17
  }
18
+ throw new Error(`Cannot find "${searchString}" in any class attribute.`);
17
19
  }
18
20
 
19
21
  export { getRange as default };
@@ -102,7 +102,7 @@ function querySyntaxCompletions(q = '', css$1 = new css.MasterCSS()) {
102
102
  generatedCSS: css.generateCSS([
103
103
  field + '.class'
104
104
  ], css$1),
105
- docs: '/guide/syntax#selectors'
105
+ docs: '/guide/selectors'
106
106
  }),
107
107
  kind: vscodeLanguageserverProtocol.CompletionItemKind.Class
108
108
  });
@@ -100,7 +100,7 @@ function querySyntaxCompletions(q = '', css = new MasterCSS()) {
100
100
  generatedCSS: generateCSS([
101
101
  field + '.class'
102
102
  ], css),
103
- docs: '/guide/syntax#selectors'
103
+ docs: '/guide/selectors'
104
104
  }),
105
105
  kind: CompletionItemKind.Class
106
106
  });
@@ -4,7 +4,9 @@
4
4
  return items.sort((a, b)=>{
5
5
  const sortTextA = a.sortText || a.label;
6
6
  const sortTextB = b.sortText || b.label;
7
- return sortTextA.localeCompare(sortTextB);
7
+ return sortTextA.localeCompare(sortTextB, undefined, {
8
+ numeric: true
9
+ });
8
10
  });
9
11
  }
10
12
 
@@ -2,7 +2,9 @@
2
2
  return items.sort((a, b)=>{
3
3
  const sortTextA = a.sortText || a.label;
4
4
  const sortTextB = b.sortText || b.label;
5
- return sortTextA.localeCompare(sortTextB);
5
+ return sortTextA.localeCompare(sortTextB, undefined, {
6
+ numeric: true
7
+ });
6
8
  });
7
9
  }
8
10
 
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@master/css-language-service","type":"module","scripts":{"build":"techor build \"src/**/*.ts\"","dev":"pnpm build --watch","type-check":"tsc --noEmit","lint":"eslint","test":"vitest"},"description":"Master CSS Language Service","author":"Aoyue Design LLC.","license":"MIT","repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/language-service"},"dependencies":{"@babel/parser":"^7.26.3","@master/css":"^2.0.0-rc.61","@techor/extend":"^3.2.0","color-convert":"^2.0.1","color-rgba":"^3.0.0","color-space":"^2.0.1","culori":"^4.0.1","js-beautify":"^1.15.1","lodash.escaperegexp":"^4.1.2","minimatch":"^10.0.1","pex-color":"^2.2.0","vscode-css-languageservice":"^6.3.2","vscode-languageserver-protocol":"^3.17.5","vscode-languageserver-textdocument":"^1.0.12"},"devDependencies":{"@types/chroma-js":"^2.4.5","@types/color-convert":"^2.0.4","@types/color-rgba":"^2.1.3","@types/culori":"^2.1.1","@types/lodash.escaperegexp":"^4.1.9","@types/vscode":"^1.96.0","shared":"^2.0.0-rc.61","vscode-languageserver":"^9.0.1"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"version":"2.0.0-rc.61"}
1
+ {"name":"@master/css-language-service","type":"module","scripts":{"build":"techor build \"src/**/*.ts\"","dev":"pnpm build --watch","type-check":"tsc --noEmit","lint":"eslint","test":"vitest"},"description":"Master CSS Language Service","author":"Aoyue Design LLC.","license":"MIT","repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/language-service"},"dependencies":{"@babel/parser":"^7.26.3","@master/css":"^2.0.0-rc.62","@techor/extend":"^3.2.0","color-convert":"^2.0.1","color-rgba":"^3.0.0","color-space":"^2.0.1","culori":"^4.0.1","js-beautify":"^1.15.1","lodash.escaperegexp":"^4.1.2","minimatch":"^10.0.1","pex-color":"^2.2.0","vscode-css-languageservice":"^6.3.2","vscode-languageserver-protocol":"^3.17.5","vscode-languageserver-textdocument":"^1.0.12"},"devDependencies":{"@types/chroma-js":"^2.4.5","@types/color-convert":"^2.0.4","@types/color-rgba":"^2.1.3","@types/culori":"^2.1.1","@types/lodash.escaperegexp":"^4.1.9","@types/vscode":"^1.96.0","shared":"^2.0.0-rc.62","vscode-languageserver":"^9.0.1"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"version":"2.0.0-rc.62"}