@blcklab/yuirinx 0.1.1 → 0.1.2

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 (85) hide show
  1. package/README.md +47 -64
  2. package/dist/cjs/core/index.cjs +36 -7
  3. package/dist/cjs/index.cjs +37 -8
  4. package/dist/cjs/languages/c.cjs +1 -1
  5. package/dist/cjs/languages/cpp.cjs +1 -1
  6. package/dist/cjs/languages/csharp.cjs +1 -1
  7. package/dist/cjs/languages/css.cjs +2 -2
  8. package/dist/cjs/languages/dart.cjs +1 -1
  9. package/dist/cjs/languages/go.cjs +1 -1
  10. package/dist/cjs/languages/java.cjs +1 -1
  11. package/dist/cjs/languages/javascript.cjs +65 -6
  12. package/dist/cjs/languages/jsx.cjs +65 -6
  13. package/dist/cjs/languages/kotlin.cjs +1 -1
  14. package/dist/cjs/languages/markdown.cjs +30 -6
  15. package/dist/cjs/languages/php.cjs +1 -1
  16. package/dist/cjs/languages/python.cjs +1 -1
  17. package/dist/cjs/languages/ruby.cjs +1 -1
  18. package/dist/cjs/languages/rust.cjs +1 -1
  19. package/dist/cjs/languages/scss.cjs +2 -2
  20. package/dist/cjs/languages/sql.cjs +1 -1
  21. package/dist/cjs/languages/swift.cjs +1 -1
  22. package/dist/cjs/languages/tsx.cjs +65 -6
  23. package/dist/cjs/languages/typescript.cjs +65 -6
  24. package/dist/esm/core/create-highlighter.js +132 -0
  25. package/dist/esm/core/errors.js +10 -0
  26. package/dist/esm/core/escape.js +17 -0
  27. package/dist/esm/core/grammar.js +103 -0
  28. package/dist/esm/core/index.js +4 -536
  29. package/dist/esm/core/renderer.js +215 -0
  30. package/dist/esm/core/tokenizer.js +107 -0
  31. package/dist/esm/core/types.js +0 -0
  32. package/dist/esm/index.js +8 -558
  33. package/dist/esm/languages/bash.js +9 -21
  34. package/dist/esm/languages/c.js +2 -82
  35. package/dist/esm/languages/cpp.js +2 -82
  36. package/dist/esm/languages/csharp.js +2 -82
  37. package/dist/esm/languages/css.js +2 -64
  38. package/dist/esm/languages/dart.js +2 -82
  39. package/dist/esm/languages/dockerfile.js +3 -12
  40. package/dist/esm/languages/go.js +2 -82
  41. package/dist/esm/languages/graphql.js +8 -20
  42. package/dist/esm/languages/html.js +2 -44
  43. package/dist/esm/languages/ini.js +2 -5
  44. package/dist/esm/languages/java.js +2 -82
  45. package/dist/esm/languages/javascript.js +2 -229
  46. package/dist/esm/languages/json.js +2 -5
  47. package/dist/esm/languages/jsx.js +2 -229
  48. package/dist/esm/languages/kotlin.js +2 -82
  49. package/dist/esm/languages/markdown.js +32 -11
  50. package/dist/esm/languages/nginx.js +2 -5
  51. package/dist/esm/languages/php.js +3 -83
  52. package/dist/esm/languages/plaintext.js +1 -2
  53. package/dist/esm/languages/python.js +10 -25
  54. package/dist/esm/languages/ruby.js +9 -24
  55. package/dist/esm/languages/rust.js +2 -82
  56. package/dist/esm/languages/scss.js +2 -64
  57. package/dist/esm/languages/shared/c-family.js +55 -0
  58. package/dist/esm/languages/shared/css.js +48 -0
  59. package/dist/esm/languages/shared/ecmascript.js +261 -0
  60. package/dist/esm/languages/shared/helpers.js +52 -0
  61. package/dist/esm/languages/shared/markup.js +41 -0
  62. package/dist/esm/languages/shell.js +1 -115
  63. package/dist/esm/languages/sql.js +11 -32
  64. package/dist/esm/languages/svelte.js +2 -44
  65. package/dist/esm/languages/swift.js +2 -82
  66. package/dist/esm/languages/toml.js +2 -5
  67. package/dist/esm/languages/tsx.js +2 -229
  68. package/dist/esm/languages/typescript.js +2 -229
  69. package/dist/esm/languages/vue.js +2 -44
  70. package/dist/esm/languages/xml.js +2 -44
  71. package/dist/esm/languages/yaml.js +2 -5
  72. package/dist/esm/singleton.js +24 -0
  73. package/dist/esm/themes/index.js +3 -188
  74. package/dist/esm/themes/yuirinx-aurora.js +1 -2
  75. package/dist/esm/themes/yuirinx-noir.js +1 -2
  76. package/dist/esm/themes/yuirinx-pearl.js +1 -2
  77. package/dist/types/core/errors.d.cts +1 -1
  78. package/dist/types/core/errors.d.ts +1 -1
  79. package/dist/types/core/index.d.cts +1 -1
  80. package/dist/types/core/index.d.ts +1 -1
  81. package/dist/types/core/types.d.cts +5 -1
  82. package/dist/types/core/types.d.ts +5 -1
  83. package/dist/types/singleton.d.cts +1 -1
  84. package/dist/types/singleton.d.ts +1 -1
  85. package/package.json +4 -4
@@ -1,85 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- function escapeRegex(value) {
3
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4
- }
5
- function words(values, flags = "") {
6
- return new RegExp(`\\b(?:${values.map(escapeRegex).join("|")})\\b`, flags);
7
- }
8
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
9
- var punctuationRule = {
10
- type: "punctuation",
11
- pattern: /[()[\]{}.,;:]/
12
- };
13
- var operatorRule = {
14
- type: "operator",
15
- pattern: /(?:===|!==|>>>|<<=|>>=|=>|==|!=|<=|>=|&&|\|\||\?\?|\?\.|\+\+|--|\+=|-=|\*=|\/=|%=|\*\*|<<|>>|[+\-*/%=&|!<>^~?])+/
16
- };
17
- var numberRule = {
18
- type: "number",
19
- pattern: /\b(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[bB][01](?:_?[01])*|0[oO][0-7](?:_?[0-7])*|\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?)\b/
20
- };
21
- var doubleStringRule = {
22
- type: "string",
23
- pattern: /"(?:\\[\s\S]|[^"\\\r\n])*"?/
24
- };
25
- var singleStringRule = {
26
- type: "string",
27
- pattern: /'(?:\\[\s\S]|[^'\\\r\n])*'?/
28
- };
29
- var cLineCommentRule = {
30
- type: "comment",
31
- pattern: /\/\/[^\r\n]*/
32
- };
33
- var blockCommentRule = {
34
- type: (match) => match[0].startsWith("/**") ? "comment.documentation" : "comment",
35
- pattern: /\/\*[\s\S]*?(?:\*\/|$)/
36
- };
37
-
38
- // src/languages/shared/c-family.ts
39
- function createCLikeGrammar(options) {
40
- const rules = [
41
- cLineCommentRule,
42
- blockCommentRule,
43
- ...options.extraRules ?? [],
44
- doubleStringRule,
45
- singleStringRule
46
- ];
47
- if (options.preprocessor) {
48
- rules.push({ type: "meta", pattern: /#[ \t]*[A-Za-z_]\w*[^\r\n]*/ });
49
- }
50
- if (options.annotations) {
51
- rules.push({
52
- type: "annotation",
53
- pattern: /@[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*/
54
- });
55
- }
56
- rules.push(
57
- numberRule,
58
- { type: "boolean", pattern: /\b(?:true|false)\b/ },
59
- { type: "null", pattern: /\b(?:null|nullptr|nil)\b/ },
60
- { type: "keyword", pattern: words(options.keywords) }
61
- );
62
- if (options.builtins?.length) {
63
- rules.push({ type: "builtin", pattern: words(options.builtins) });
64
- }
65
- rules.push(
66
- { type: "function.call", pattern: /\b[A-Za-z_]\w*(?=\s*\()/ },
67
- { type: "type", pattern: /\b[A-Z][A-Za-z\d_]*\b/ },
68
- { type: "constant", pattern: /\b[A-Z][A-Z\d_]{2,}\b/ },
69
- { type: "variable", pattern: /\b[A-Za-z_]\w*\b/ },
70
- operatorRule,
71
- punctuationRule,
72
- whitespaceRule
73
- );
74
- return {
75
- id: options.id,
76
- ...options.aliases ? { aliases: options.aliases } : {},
77
- states: { root: { rules } }
78
- };
79
- }
80
-
81
- // src/languages/php.ts
82
- var base = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const base = createCLikeGrammar({
83
3
  id: "php",
84
4
  aliases: ["php8"],
85
5
  keywords: [
@@ -161,7 +81,7 @@ var base = createCLikeGrammar({
161
81
  { type: "variable", pattern: /\$[A-Za-z_]\w*/ }
162
82
  ]
163
83
  });
164
- var php = base;
84
+ const php = base;
165
85
  export {
166
86
  php
167
87
  };
@@ -1,5 +1,4 @@
1
- // src/languages/plaintext.ts
2
- var plaintext = {
1
+ const plaintext = {
3
2
  id: "plaintext",
4
3
  aliases: ["text", "txt", "plain"],
5
4
  states: { root: { rules: [{ type: "plain", pattern: /[\s\S]+/ }] } }
@@ -1,26 +1,11 @@
1
- // src/languages/shared/helpers.ts
2
- function escapeRegex(value) {
3
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4
- }
5
- function words(values, flags = "") {
6
- return new RegExp(`\\b(?:${values.map(escapeRegex).join("|")})\\b`, flags);
7
- }
8
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
9
- var punctuationRule = {
10
- type: "punctuation",
11
- pattern: /[()[\]{}.,;:]/
12
- };
13
- var operatorRule = {
14
- type: "operator",
15
- pattern: /(?:===|!==|>>>|<<=|>>=|=>|==|!=|<=|>=|&&|\|\||\?\?|\?\.|\+\+|--|\+=|-=|\*=|\/=|%=|\*\*|<<|>>|[+\-*/%=&|!<>^~?])+/
16
- };
17
- var numberRule = {
18
- type: "number",
19
- pattern: /\b(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[bB][01](?:_?[01])*|0[oO][0-7](?:_?[0-7])*|\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?)\b/
20
- };
21
-
22
- // src/languages/python.ts
23
- var KEYWORDS = [
1
+ import {
2
+ numberRule,
3
+ operatorRule,
4
+ punctuationRule,
5
+ whitespaceRule,
6
+ words
7
+ } from "./shared/helpers.js";
8
+ const KEYWORDS = [
24
9
  "and",
25
10
  "as",
26
11
  "assert",
@@ -57,7 +42,7 @@ var KEYWORDS = [
57
42
  "with",
58
43
  "yield"
59
44
  ];
60
- var BUILTINS = [
45
+ const BUILTINS = [
61
46
  "abs",
62
47
  "all",
63
48
  "any",
@@ -114,7 +99,7 @@ var BUILTINS = [
114
99
  "vars",
115
100
  "zip"
116
101
  ];
117
- var python = {
102
+ const python = {
118
103
  id: "python",
119
104
  aliases: ["py"],
120
105
  states: {
@@ -1,26 +1,11 @@
1
- // src/languages/shared/helpers.ts
2
- function escapeRegex(value) {
3
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4
- }
5
- function words(values, flags = "") {
6
- return new RegExp(`\\b(?:${values.map(escapeRegex).join("|")})\\b`, flags);
7
- }
8
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
9
- var punctuationRule = {
10
- type: "punctuation",
11
- pattern: /[()[\]{}.,;:]/
12
- };
13
- var operatorRule = {
14
- type: "operator",
15
- pattern: /(?:===|!==|>>>|<<=|>>=|=>|==|!=|<=|>=|&&|\|\||\?\?|\?\.|\+\+|--|\+=|-=|\*=|\/=|%=|\*\*|<<|>>|[+\-*/%=&|!<>^~?])+/
16
- };
17
- var numberRule = {
18
- type: "number",
19
- pattern: /\b(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[bB][01](?:_?[01])*|0[oO][0-7](?:_?[0-7])*|\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?)\b/
20
- };
21
-
22
- // src/languages/ruby.ts
23
- var KEYWORDS = [
1
+ import {
2
+ numberRule,
3
+ operatorRule,
4
+ punctuationRule,
5
+ whitespaceRule,
6
+ words
7
+ } from "./shared/helpers.js";
8
+ const KEYWORDS = [
24
9
  "BEGIN",
25
10
  "END",
26
11
  "alias",
@@ -60,7 +45,7 @@ var KEYWORDS = [
60
45
  "while",
61
46
  "yield"
62
47
  ];
63
- var ruby = {
48
+ const ruby = {
64
49
  id: "ruby",
65
50
  aliases: ["rb"],
66
51
  states: {
@@ -1,85 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- function escapeRegex(value) {
3
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4
- }
5
- function words(values, flags = "") {
6
- return new RegExp(`\\b(?:${values.map(escapeRegex).join("|")})\\b`, flags);
7
- }
8
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
9
- var punctuationRule = {
10
- type: "punctuation",
11
- pattern: /[()[\]{}.,;:]/
12
- };
13
- var operatorRule = {
14
- type: "operator",
15
- pattern: /(?:===|!==|>>>|<<=|>>=|=>|==|!=|<=|>=|&&|\|\||\?\?|\?\.|\+\+|--|\+=|-=|\*=|\/=|%=|\*\*|<<|>>|[+\-*/%=&|!<>^~?])+/
16
- };
17
- var numberRule = {
18
- type: "number",
19
- pattern: /\b(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[bB][01](?:_?[01])*|0[oO][0-7](?:_?[0-7])*|\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?)\b/
20
- };
21
- var doubleStringRule = {
22
- type: "string",
23
- pattern: /"(?:\\[\s\S]|[^"\\\r\n])*"?/
24
- };
25
- var singleStringRule = {
26
- type: "string",
27
- pattern: /'(?:\\[\s\S]|[^'\\\r\n])*'?/
28
- };
29
- var cLineCommentRule = {
30
- type: "comment",
31
- pattern: /\/\/[^\r\n]*/
32
- };
33
- var blockCommentRule = {
34
- type: (match) => match[0].startsWith("/**") ? "comment.documentation" : "comment",
35
- pattern: /\/\*[\s\S]*?(?:\*\/|$)/
36
- };
37
-
38
- // src/languages/shared/c-family.ts
39
- function createCLikeGrammar(options) {
40
- const rules = [
41
- cLineCommentRule,
42
- blockCommentRule,
43
- ...options.extraRules ?? [],
44
- doubleStringRule,
45
- singleStringRule
46
- ];
47
- if (options.preprocessor) {
48
- rules.push({ type: "meta", pattern: /#[ \t]*[A-Za-z_]\w*[^\r\n]*/ });
49
- }
50
- if (options.annotations) {
51
- rules.push({
52
- type: "annotation",
53
- pattern: /@[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*/
54
- });
55
- }
56
- rules.push(
57
- numberRule,
58
- { type: "boolean", pattern: /\b(?:true|false)\b/ },
59
- { type: "null", pattern: /\b(?:null|nullptr|nil)\b/ },
60
- { type: "keyword", pattern: words(options.keywords) }
61
- );
62
- if (options.builtins?.length) {
63
- rules.push({ type: "builtin", pattern: words(options.builtins) });
64
- }
65
- rules.push(
66
- { type: "function.call", pattern: /\b[A-Za-z_]\w*(?=\s*\()/ },
67
- { type: "type", pattern: /\b[A-Z][A-Za-z\d_]*\b/ },
68
- { type: "constant", pattern: /\b[A-Z][A-Z\d_]{2,}\b/ },
69
- { type: "variable", pattern: /\b[A-Za-z_]\w*\b/ },
70
- operatorRule,
71
- punctuationRule,
72
- whitespaceRule
73
- );
74
- return {
75
- id: options.id,
76
- ...options.aliases ? { aliases: options.aliases } : {},
77
- states: { root: { rules } }
78
- };
79
- }
80
-
81
- // src/languages/rust.ts
82
- var rust = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const rust = createCLikeGrammar({
83
3
  id: "rust",
84
4
  aliases: ["rs"],
85
5
  keywords: [
@@ -1,67 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
3
- var punctuationRule = {
4
- type: "punctuation",
5
- pattern: /[()[\]{}.,;:]/
6
- };
7
- var operatorRule = {
8
- type: "operator",
9
- pattern: /(?:===|!==|>>>|<<=|>>=|=>|==|!=|<=|>=|&&|\|\||\?\?|\?\.|\+\+|--|\+=|-=|\*=|\/=|%=|\*\*|<<|>>|[+\-*/%=&|!<>^~?])+/
10
- };
11
- var doubleStringRule = {
12
- type: "string",
13
- pattern: /"(?:\\[\s\S]|[^"\\\r\n])*"?/
14
- };
15
- var singleStringRule = {
16
- type: "string",
17
- pattern: /'(?:\\[\s\S]|[^'\\\r\n])*'?/
18
- };
19
- var blockCommentRule = {
20
- type: (match) => match[0].startsWith("/**") ? "comment.documentation" : "comment",
21
- pattern: /\/\*[\s\S]*?(?:\*\/|$)/
22
- };
23
-
24
- // src/languages/shared/css.ts
25
- function createCssGrammar(options) {
26
- const rules = [
27
- blockCommentRule,
28
- ...options.scss ? [{ type: "comment", pattern: /\/\/[^\r\n]*/ }] : [],
29
- doubleStringRule,
30
- singleStringRule,
31
- { type: "important", pattern: /!important\b/i },
32
- { type: "at-rule", pattern: /@[a-z-]+\b/i },
33
- { type: "constant", pattern: /#[\da-f]{3,8}\b/i },
34
- { type: "variable", pattern: /(?:\$|--)[\w-]+/ },
35
- { type: "number", pattern: /(?:\b\d*\.\d+|\b\d+)(?:e[+-]?\d+)?/i },
36
- {
37
- type: "unit",
38
- pattern: /(?:%|px|r?em|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc|s|ms|deg|rad|turn)\b/i
39
- },
40
- {
41
- type: "selector",
42
- pattern: /(?:[.#][\w-]+|::?[\w-]+|\[[^\]\r\n]+\])(?=\s*(?:[,>{+~]|$))/
43
- },
44
- { type: "property.css", pattern: /-?[a-z][\w-]*(?=\s*:)/i },
45
- { type: "function.call", pattern: /[a-z-]+(?=\()/i },
46
- {
47
- type: "value",
48
- pattern: /\b(?:auto|none|inherit|initial|unset|solid|relative|absolute|fixed|sticky|flex|grid|block|inline|transparent|currentColor)\b/i
49
- },
50
- operatorRule,
51
- punctuationRule,
52
- { type: "punctuation", pattern: /[>~]/ },
53
- { type: "value", pattern: /-?[a-z_][\w-]*/i },
54
- whitespaceRule
55
- ];
56
- return {
57
- id: options.id,
58
- ...options.aliases ? { aliases: options.aliases } : {},
59
- states: { root: { rules } }
60
- };
61
- }
62
-
63
- // src/languages/scss.ts
64
- var scss = createCssGrammar({
1
+ import { createCssGrammar } from "./shared/css.js";
2
+ const scss = createCssGrammar({
65
3
  id: "scss",
66
4
  aliases: ["sass"],
67
5
  scss: true
@@ -0,0 +1,55 @@
1
+ import {
2
+ blockCommentRule,
3
+ cLineCommentRule,
4
+ doubleStringRule,
5
+ numberRule,
6
+ operatorRule,
7
+ punctuationRule,
8
+ singleStringRule,
9
+ whitespaceRule,
10
+ words
11
+ } from "./helpers.js";
12
+ function createCLikeGrammar(options) {
13
+ const rules = [
14
+ cLineCommentRule,
15
+ blockCommentRule,
16
+ ...options.extraRules ?? [],
17
+ doubleStringRule,
18
+ singleStringRule
19
+ ];
20
+ if (options.preprocessor) {
21
+ rules.push({ type: "meta", pattern: /#[ \t]*[A-Za-z_]\w*[^\r\n]*/ });
22
+ }
23
+ if (options.annotations) {
24
+ rules.push({
25
+ type: "annotation",
26
+ pattern: /@[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*/
27
+ });
28
+ }
29
+ rules.push(
30
+ numberRule,
31
+ { type: "boolean", pattern: /\b(?:true|false)\b/ },
32
+ { type: "null", pattern: /\b(?:null|nullptr|nil)\b/ },
33
+ { type: "keyword", pattern: words(options.keywords) }
34
+ );
35
+ if (options.builtins?.length) {
36
+ rules.push({ type: "builtin", pattern: words(options.builtins) });
37
+ }
38
+ rules.push(
39
+ { type: "function.call", pattern: /\b[A-Za-z_]\w*(?=\s*\()/ },
40
+ { type: "type", pattern: /\b[A-Z][A-Za-z\d_]*\b/ },
41
+ { type: "constant", pattern: /\b[A-Z][A-Z\d_]{2,}\b/ },
42
+ { type: "variable", pattern: /\b[A-Za-z_]\w*\b/ },
43
+ operatorRule,
44
+ punctuationRule,
45
+ whitespaceRule
46
+ );
47
+ return {
48
+ id: options.id,
49
+ ...options.aliases ? { aliases: options.aliases } : {},
50
+ states: { root: { rules } }
51
+ };
52
+ }
53
+ export {
54
+ createCLikeGrammar
55
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ blockCommentRule,
3
+ doubleStringRule,
4
+ operatorRule,
5
+ punctuationRule,
6
+ singleStringRule,
7
+ whitespaceRule
8
+ } from "./helpers.js";
9
+ function createCssGrammar(options) {
10
+ const rules = [
11
+ blockCommentRule,
12
+ ...options.scss ? [{ type: "comment", pattern: /\/\/[^\r\n]*/ }] : [],
13
+ doubleStringRule,
14
+ singleStringRule,
15
+ { type: "important", pattern: /!important\b/i },
16
+ { type: "at-rule", pattern: /@[a-z-]+\b/i },
17
+ { type: "constant", pattern: /#[\da-f]{3,8}\b/i },
18
+ { type: "variable", pattern: /(?:\$|--)[\w-]+/ },
19
+ { type: "number", pattern: /(?:\b\d*\.\d+|\b\d+)(?:e[+-]?\d+)?/i },
20
+ {
21
+ type: "unit",
22
+ pattern: /(?:%(?![\w-])|(?:px|r?em|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc|s|ms|deg|rad|turn)\b)/i
23
+ },
24
+ {
25
+ type: "selector",
26
+ pattern: /(?:[.#][\w-]+|::?[\w-]+|\[[^\]\r\n]+\])(?=\s*(?:[,>{+~]|$))/
27
+ },
28
+ { type: "property.css", pattern: /-?[a-z][\w-]*(?=\s*:)/i },
29
+ { type: "function.call", pattern: /[a-z-]+(?=\()/i },
30
+ {
31
+ type: "value",
32
+ pattern: /\b(?:auto|none|inherit|initial|unset|solid|relative|absolute|fixed|sticky|flex|grid|block|inline|transparent|currentColor)\b/i
33
+ },
34
+ operatorRule,
35
+ punctuationRule,
36
+ { type: "punctuation", pattern: /[>~]/ },
37
+ { type: "value", pattern: /-?[a-z_][\w-]*/i },
38
+ whitespaceRule
39
+ ];
40
+ return {
41
+ id: options.id,
42
+ ...options.aliases ? { aliases: options.aliases } : {},
43
+ states: { root: { rules } }
44
+ };
45
+ }
46
+ export {
47
+ createCssGrammar
48
+ };