@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/cpp.ts
82
- var cpp = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const cpp = createCLikeGrammar({
83
3
  id: "cpp",
84
4
  aliases: ["c++", "cc", "cxx", "hpp"],
85
5
  keywords: [
@@ -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/csharp.ts
82
- var csharp = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const csharp = createCLikeGrammar({
83
3
  id: "csharp",
84
4
  aliases: ["cs", "c#"],
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/css.ts
64
- var css = createCssGrammar({ id: "css" });
1
+ import { createCssGrammar } from "./shared/css.js";
2
+ const css = createCssGrammar({ id: "css" });
65
3
  export {
66
4
  css
67
5
  };
@@ -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/dart.ts
82
- var dart = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const dart = createCLikeGrammar({
83
3
  id: "dart",
84
4
  aliases: [],
85
5
  keywords: [
@@ -1,14 +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
-
10
- // src/languages/dockerfile.ts
11
- var INSTRUCTIONS = [
1
+ import { whitespaceRule, words } from "./shared/helpers.js";
2
+ const INSTRUCTIONS = [
12
3
  "ADD",
13
4
  "ARG",
14
5
  "CMD",
@@ -28,7 +19,7 @@ var INSTRUCTIONS = [
28
19
  "VOLUME",
29
20
  "WORKDIR"
30
21
  ];
31
- var dockerfile = {
22
+ const dockerfile = {
32
23
  id: "dockerfile",
33
24
  aliases: ["docker"],
34
25
  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/go.ts
82
- var go = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const go = createCLikeGrammar({
83
3
  id: "go",
84
4
  aliases: ["golang"],
85
5
  keywords: [
@@ -1,22 +1,10 @@
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 numberRule = {
14
- type: "number",
15
- 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/
16
- };
17
-
18
- // src/languages/graphql.ts
19
- var KEYWORDS = [
1
+ import {
2
+ numberRule,
3
+ punctuationRule,
4
+ whitespaceRule,
5
+ words
6
+ } from "./shared/helpers.js";
7
+ const KEYWORDS = [
20
8
  "directive",
21
9
  "enum",
22
10
  "extend",
@@ -34,7 +22,7 @@ var KEYWORDS = [
34
22
  "type",
35
23
  "union"
36
24
  ];
37
- var graphql = {
25
+ const graphql = {
38
26
  id: "graphql",
39
27
  aliases: ["gql"],
40
28
  states: {
@@ -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/html.ts
44
- var html = createMarkupGrammar({ id: "html", aliases: ["htm"] });
1
+ import { createMarkupGrammar } from "./shared/markup.js";
2
+ const html = createMarkupGrammar({ id: "html", aliases: ["htm"] });
45
3
  export {
46
4
  html
47
5
  };
@@ -1,8 +1,5 @@
1
- // src/languages/shared/helpers.ts
2
- var whitespaceRule = { type: "plain", pattern: /\s+/ };
3
-
4
- // src/languages/ini.ts
5
- var ini = {
1
+ import { whitespaceRule } from "./shared/helpers.js";
2
+ const ini = {
6
3
  id: "ini",
7
4
  aliases: ["dotenv", "properties"],
8
5
  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/java.ts
82
- var java = createCLikeGrammar({
1
+ import { createCLikeGrammar } from "./shared/c-family.js";
2
+ const java = createCLikeGrammar({
83
3
  id: "java",
84
4
  aliases: [],
85
5
  keywords: [