@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,232 +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/ecmascript.ts
39
- var JS_KEYWORDS = [
40
- "as",
41
- "async",
42
- "await",
43
- "break",
44
- "case",
45
- "catch",
46
- "class",
47
- "const",
48
- "continue",
49
- "debugger",
50
- "default",
51
- "delete",
52
- "do",
53
- "else",
54
- "export",
55
- "extends",
56
- "finally",
57
- "for",
58
- "from",
59
- "function",
60
- "get",
61
- "if",
62
- "import",
63
- "in",
64
- "instanceof",
65
- "let",
66
- "new",
67
- "of",
68
- "return",
69
- "set",
70
- "static",
71
- "switch",
72
- "throw",
73
- "try",
74
- "typeof",
75
- "var",
76
- "void",
77
- "while",
78
- "with",
79
- "yield"
80
- ];
81
- var TS_KEYWORDS = [
82
- "abstract",
83
- "any",
84
- "asserts",
85
- "bigint",
86
- "boolean",
87
- "declare",
88
- "enum",
89
- "implements",
90
- "infer",
91
- "interface",
92
- "is",
93
- "keyof",
94
- "module",
95
- "namespace",
96
- "never",
97
- "number",
98
- "object",
99
- "override",
100
- "private",
101
- "protected",
102
- "public",
103
- "readonly",
104
- "require",
105
- "satisfies",
106
- "string",
107
- "symbol",
108
- "type",
109
- "undefined",
110
- "unique",
111
- "unknown",
112
- "using"
113
- ];
114
- var BUILTINS = [
115
- "Array",
116
- "BigInt",
117
- "Boolean",
118
- "Date",
119
- "Error",
120
- "JSON",
121
- "Map",
122
- "Math",
123
- "Number",
124
- "Object",
125
- "Promise",
126
- "Proxy",
127
- "Reflect",
128
- "RegExp",
129
- "Set",
130
- "String",
131
- "Symbol",
132
- "WeakMap",
133
- "WeakSet",
134
- "console",
135
- "document",
136
- "globalThis",
137
- "process",
138
- "window"
139
- ];
140
- function createEcmaGrammar(options) {
141
- const keywordValues = options.typescript ? [...JS_KEYWORDS, ...TS_KEYWORDS] : JS_KEYWORDS;
142
- const rootRules = [
143
- cLineCommentRule,
144
- blockCommentRule,
145
- doubleStringRule,
146
- singleStringRule,
147
- { type: "string", pattern: /`/, push: "template" }
148
- ];
149
- if (options.jsx) {
150
- rootRules.push({
151
- type: "tag.punctuation",
152
- pattern: /<\/?/,
153
- push: "jsxTag"
154
- });
155
- }
156
- rootRules.push(
157
- {
158
- type: "regex",
159
- pattern: /\/(?![/*\s])(?:\\.|\[(?:\\.|[^\]\\])*\]|[^/\\\r\n])+\/[dgimsuvy]*/
160
- },
161
- numberRule,
162
- { type: "boolean", pattern: /\b(?:true|false)\b/ },
163
- { type: "null", pattern: /\b(?:null|undefined)\b/ },
164
- { type: "keyword", pattern: words(keywordValues) },
165
- { type: "builtin", pattern: words(BUILTINS) },
166
- { type: "decorator", pattern: /@[A-Za-z_$][\w$]*/ },
167
- { type: "function.call", pattern: /\b[A-Za-z_$][\w$]*(?=\s*\()/ },
168
- {
169
- type: "type",
170
- pattern: /\b[A-Z][A-Za-z\d_$]*(?=\s*(?:<|\[|\||&|[,)>]|$))/
171
- },
172
- { type: "property", pattern: /\b[A-Za-z_$][\w$]*(?=\s*:)/ },
173
- { type: "constant", pattern: /\b[A-Z][A-Z\d_]{2,}\b/ },
174
- { type: "variable", pattern: /\b[A-Za-z_$][\w$]*\b/ },
175
- operatorRule,
176
- punctuationRule,
177
- whitespaceRule
178
- );
179
- return {
180
- id: options.id,
181
- aliases: options.aliases,
182
- states: {
183
- root: { rules: rootRules },
184
- template: {
185
- fallbackType: "string",
186
- rules: [
187
- { type: "string", pattern: /`/, pop: true },
188
- { type: "string.escape", pattern: /\\[\s\S]/ },
189
- {
190
- type: "string.interpolation",
191
- pattern: /\$\{/,
192
- push: "templateExpression"
193
- },
194
- { type: "string", pattern: /[^\\`$]+/ },
195
- { type: "string", pattern: /[$\\]/ }
196
- ]
197
- },
198
- templateExpression: {
199
- rules: [
200
- { type: "string.interpolation", pattern: /}/, pop: true },
201
- { type: "punctuation", pattern: /{/, push: "templateExpression" },
202
- { include: "root" }
203
- ]
204
- },
205
- jsxTag: {
206
- rules: [
207
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
208
- whitespaceRule,
209
- { type: "attribute.value", pattern: /"(?:\\.|[^"\\])*"?/ },
210
- { type: "attribute.value", pattern: /'(?:\\.|[^'\\])*'?/ },
211
- { type: "punctuation", pattern: /{/, push: "jsxExpression" },
212
- { type: "operator", pattern: /=/ },
213
- { type: "tag", pattern: /[A-Za-z_$][\w$.-]*/ },
214
- punctuationRule
215
- ]
216
- },
217
- jsxExpression: {
218
- rules: [
219
- { type: "punctuation", pattern: /}/, pop: true },
220
- { type: "punctuation", pattern: /{/, push: "jsxExpression" },
221
- { include: "root" }
222
- ]
223
- }
224
- }
225
- };
226
- }
227
-
228
- // src/languages/tsx.ts
229
- var tsx = createEcmaGrammar({
1
+ import { createEcmaGrammar } from "./shared/ecmascript.js";
2
+ const tsx = createEcmaGrammar({
230
3
  id: "tsx",
231
4
  aliases: ["typescriptreact"],
232
5
  typescript: true,
@@ -1,232 +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/ecmascript.ts
39
- var JS_KEYWORDS = [
40
- "as",
41
- "async",
42
- "await",
43
- "break",
44
- "case",
45
- "catch",
46
- "class",
47
- "const",
48
- "continue",
49
- "debugger",
50
- "default",
51
- "delete",
52
- "do",
53
- "else",
54
- "export",
55
- "extends",
56
- "finally",
57
- "for",
58
- "from",
59
- "function",
60
- "get",
61
- "if",
62
- "import",
63
- "in",
64
- "instanceof",
65
- "let",
66
- "new",
67
- "of",
68
- "return",
69
- "set",
70
- "static",
71
- "switch",
72
- "throw",
73
- "try",
74
- "typeof",
75
- "var",
76
- "void",
77
- "while",
78
- "with",
79
- "yield"
80
- ];
81
- var TS_KEYWORDS = [
82
- "abstract",
83
- "any",
84
- "asserts",
85
- "bigint",
86
- "boolean",
87
- "declare",
88
- "enum",
89
- "implements",
90
- "infer",
91
- "interface",
92
- "is",
93
- "keyof",
94
- "module",
95
- "namespace",
96
- "never",
97
- "number",
98
- "object",
99
- "override",
100
- "private",
101
- "protected",
102
- "public",
103
- "readonly",
104
- "require",
105
- "satisfies",
106
- "string",
107
- "symbol",
108
- "type",
109
- "undefined",
110
- "unique",
111
- "unknown",
112
- "using"
113
- ];
114
- var BUILTINS = [
115
- "Array",
116
- "BigInt",
117
- "Boolean",
118
- "Date",
119
- "Error",
120
- "JSON",
121
- "Map",
122
- "Math",
123
- "Number",
124
- "Object",
125
- "Promise",
126
- "Proxy",
127
- "Reflect",
128
- "RegExp",
129
- "Set",
130
- "String",
131
- "Symbol",
132
- "WeakMap",
133
- "WeakSet",
134
- "console",
135
- "document",
136
- "globalThis",
137
- "process",
138
- "window"
139
- ];
140
- function createEcmaGrammar(options) {
141
- const keywordValues = options.typescript ? [...JS_KEYWORDS, ...TS_KEYWORDS] : JS_KEYWORDS;
142
- const rootRules = [
143
- cLineCommentRule,
144
- blockCommentRule,
145
- doubleStringRule,
146
- singleStringRule,
147
- { type: "string", pattern: /`/, push: "template" }
148
- ];
149
- if (options.jsx) {
150
- rootRules.push({
151
- type: "tag.punctuation",
152
- pattern: /<\/?/,
153
- push: "jsxTag"
154
- });
155
- }
156
- rootRules.push(
157
- {
158
- type: "regex",
159
- pattern: /\/(?![/*\s])(?:\\.|\[(?:\\.|[^\]\\])*\]|[^/\\\r\n])+\/[dgimsuvy]*/
160
- },
161
- numberRule,
162
- { type: "boolean", pattern: /\b(?:true|false)\b/ },
163
- { type: "null", pattern: /\b(?:null|undefined)\b/ },
164
- { type: "keyword", pattern: words(keywordValues) },
165
- { type: "builtin", pattern: words(BUILTINS) },
166
- { type: "decorator", pattern: /@[A-Za-z_$][\w$]*/ },
167
- { type: "function.call", pattern: /\b[A-Za-z_$][\w$]*(?=\s*\()/ },
168
- {
169
- type: "type",
170
- pattern: /\b[A-Z][A-Za-z\d_$]*(?=\s*(?:<|\[|\||&|[,)>]|$))/
171
- },
172
- { type: "property", pattern: /\b[A-Za-z_$][\w$]*(?=\s*:)/ },
173
- { type: "constant", pattern: /\b[A-Z][A-Z\d_]{2,}\b/ },
174
- { type: "variable", pattern: /\b[A-Za-z_$][\w$]*\b/ },
175
- operatorRule,
176
- punctuationRule,
177
- whitespaceRule
178
- );
179
- return {
180
- id: options.id,
181
- aliases: options.aliases,
182
- states: {
183
- root: { rules: rootRules },
184
- template: {
185
- fallbackType: "string",
186
- rules: [
187
- { type: "string", pattern: /`/, pop: true },
188
- { type: "string.escape", pattern: /\\[\s\S]/ },
189
- {
190
- type: "string.interpolation",
191
- pattern: /\$\{/,
192
- push: "templateExpression"
193
- },
194
- { type: "string", pattern: /[^\\`$]+/ },
195
- { type: "string", pattern: /[$\\]/ }
196
- ]
197
- },
198
- templateExpression: {
199
- rules: [
200
- { type: "string.interpolation", pattern: /}/, pop: true },
201
- { type: "punctuation", pattern: /{/, push: "templateExpression" },
202
- { include: "root" }
203
- ]
204
- },
205
- jsxTag: {
206
- rules: [
207
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
208
- whitespaceRule,
209
- { type: "attribute.value", pattern: /"(?:\\.|[^"\\])*"?/ },
210
- { type: "attribute.value", pattern: /'(?:\\.|[^'\\])*'?/ },
211
- { type: "punctuation", pattern: /{/, push: "jsxExpression" },
212
- { type: "operator", pattern: /=/ },
213
- { type: "tag", pattern: /[A-Za-z_$][\w$.-]*/ },
214
- punctuationRule
215
- ]
216
- },
217
- jsxExpression: {
218
- rules: [
219
- { type: "punctuation", pattern: /}/, pop: true },
220
- { type: "punctuation", pattern: /{/, push: "jsxExpression" },
221
- { include: "root" }
222
- ]
223
- }
224
- }
225
- };
226
- }
227
-
228
- // src/languages/typescript.ts
229
- var typescript = createEcmaGrammar({
1
+ import { createEcmaGrammar } from "./shared/ecmascript.js";
2
+ const typescript = createEcmaGrammar({
230
3
  id: "typescript",
231
4
  aliases: ["ts", "mts", "cts"],
232
5
  typescript: true
@@ -1,47 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
3
-
4
- // src/languages/shared/markup.ts
5
- function createMarkupGrammar(options) {
6
- return {
7
- id: options.id,
8
- ...options.aliases ? { aliases: options.aliases } : {},
9
- states: {
10
- root: {
11
- rules: [
12
- { type: "comment", pattern: /<!--[\s\S]*?(?:-->|$)/ },
13
- { type: "meta", pattern: /<!DOCTYPE[^>]*>?/i },
14
- { type: "meta", pattern: /<\?[\s\S]*?(?:\?>|$)/ },
15
- { type: "tag.punctuation", pattern: /<\/?/, push: "tagName" },
16
- { type: "constant", pattern: /&(?:#\d+|#x[\da-f]+|[a-z][\w-]*);/i },
17
- { type: "plain", pattern: /[^<&]+/ },
18
- { type: "plain", pattern: /[<&]/ }
19
- ]
20
- },
21
- tagName: {
22
- rules: [
23
- whitespaceRule,
24
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
25
- { type: "tag", pattern: /[A-Za-z_][\w:.-]*/, next: "tag" }
26
- ]
27
- },
28
- tag: {
29
- rules: [
30
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
31
- whitespaceRule,
32
- { type: "attribute.value", pattern: /"(?:&[^;\s]+;|[^"&])*"?/ },
33
- { type: "attribute.value", pattern: /'(?:&[^;\s]+;|[^'&])*'?/ },
34
- { type: "punctuation", pattern: /[{[]/ },
35
- { type: "operator", pattern: /=/ },
36
- { type: "attribute", pattern: /[@:#A-Za-z_][\w:.-]*/ }
37
- ]
38
- }
39
- }
40
- };
41
- }
42
-
43
- // src/languages/vue.ts
44
- var vue = createMarkupGrammar({ id: "vue" });
1
+ import { createMarkupGrammar } from "./shared/markup.js";
2
+ const vue = createMarkupGrammar({ id: "vue" });
45
3
  export {
46
4
  vue
47
5
  };
@@ -1,47 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
3
-
4
- // src/languages/shared/markup.ts
5
- function createMarkupGrammar(options) {
6
- return {
7
- id: options.id,
8
- ...options.aliases ? { aliases: options.aliases } : {},
9
- states: {
10
- root: {
11
- rules: [
12
- { type: "comment", pattern: /<!--[\s\S]*?(?:-->|$)/ },
13
- { type: "meta", pattern: /<!DOCTYPE[^>]*>?/i },
14
- { type: "meta", pattern: /<\?[\s\S]*?(?:\?>|$)/ },
15
- { type: "tag.punctuation", pattern: /<\/?/, push: "tagName" },
16
- { type: "constant", pattern: /&(?:#\d+|#x[\da-f]+|[a-z][\w-]*);/i },
17
- { type: "plain", pattern: /[^<&]+/ },
18
- { type: "plain", pattern: /[<&]/ }
19
- ]
20
- },
21
- tagName: {
22
- rules: [
23
- whitespaceRule,
24
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
25
- { type: "tag", pattern: /[A-Za-z_][\w:.-]*/, next: "tag" }
26
- ]
27
- },
28
- tag: {
29
- rules: [
30
- { type: "tag.punctuation", pattern: /\/?>/, pop: true },
31
- whitespaceRule,
32
- { type: "attribute.value", pattern: /"(?:&[^;\s]+;|[^"&])*"?/ },
33
- { type: "attribute.value", pattern: /'(?:&[^;\s]+;|[^'&])*'?/ },
34
- { type: "punctuation", pattern: /[{[]/ },
35
- { type: "operator", pattern: /=/ },
36
- { type: "attribute", pattern: /[@:#A-Za-z_][\w:.-]*/ }
37
- ]
38
- }
39
- }
40
- };
41
- }
42
-
43
- // src/languages/xml.ts
44
- var xml = createMarkupGrammar({
1
+ import { createMarkupGrammar } from "./shared/markup.js";
2
+ const xml = createMarkupGrammar({
45
3
  id: "xml",
46
4
  aliases: ["xhtml", "svg"]
47
5
  });
@@ -1,8 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
3
-
4
- // src/languages/yaml.ts
5
- var yaml = {
1
+ import { whitespaceRule } from "./shared/helpers.js";
2
+ const yaml = {
6
3
  id: "yaml",
7
4
  aliases: ["yml"],
8
5
  states: {
@@ -0,0 +1,24 @@
1
+ import { createHighlighter } from "./core/create-highlighter.js";
2
+ const defaultHighlighter = createHighlighter();
3
+ function highlight(code, options = {}) {
4
+ return defaultHighlighter.highlight(code, options);
5
+ }
6
+ function tokenize(code, language) {
7
+ return defaultHighlighter.tokenize(code, language);
8
+ }
9
+ function render(tokens, options) {
10
+ return defaultHighlighter.render(tokens, options);
11
+ }
12
+ function registerLanguage(grammar) {
13
+ defaultHighlighter.registerLanguage(grammar);
14
+ }
15
+ function registerTheme(theme) {
16
+ defaultHighlighter.registerTheme(theme);
17
+ }
18
+ export {
19
+ highlight,
20
+ registerLanguage,
21
+ registerTheme,
22
+ render,
23
+ tokenize
24
+ };