shellfie 2.0.19 → 2.0.20

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 (75) hide show
  1. package/README.md +63 -46
  2. package/dist/highlight/index.d.ts +41 -0
  3. package/dist/highlight/index.d.ts.map +1 -0
  4. package/dist/highlight/index.js +309 -0
  5. package/dist/highlight/index.js.map +1 -0
  6. package/dist/highlight/languages/bash.d.ts +3 -0
  7. package/dist/highlight/languages/bash.d.ts.map +1 -0
  8. package/dist/highlight/languages/bash.js +78 -0
  9. package/dist/highlight/languages/bash.js.map +1 -0
  10. package/dist/highlight/languages/c.d.ts +4 -0
  11. package/dist/highlight/languages/c.d.ts.map +1 -0
  12. package/dist/highlight/languages/c.js +101 -0
  13. package/dist/highlight/languages/c.js.map +1 -0
  14. package/dist/highlight/languages/csharp.d.ts +3 -0
  15. package/dist/highlight/languages/csharp.d.ts.map +1 -0
  16. package/dist/highlight/languages/csharp.js +78 -0
  17. package/dist/highlight/languages/csharp.js.map +1 -0
  18. package/dist/highlight/languages/go.d.ts +3 -0
  19. package/dist/highlight/languages/go.d.ts.map +1 -0
  20. package/dist/highlight/languages/go.js +47 -0
  21. package/dist/highlight/languages/go.js.map +1 -0
  22. package/dist/highlight/languages/html.d.ts +3 -0
  23. package/dist/highlight/languages/html.d.ts.map +1 -0
  24. package/dist/highlight/languages/html.js +44 -0
  25. package/dist/highlight/languages/html.js.map +1 -0
  26. package/dist/highlight/languages/index.d.ts +26 -0
  27. package/dist/highlight/languages/index.d.ts.map +1 -0
  28. package/dist/highlight/languages/index.js +65 -0
  29. package/dist/highlight/languages/index.js.map +1 -0
  30. package/dist/highlight/languages/java.d.ts +3 -0
  31. package/dist/highlight/languages/java.d.ts.map +1 -0
  32. package/dist/highlight/languages/java.js +57 -0
  33. package/dist/highlight/languages/java.js.map +1 -0
  34. package/dist/highlight/languages/javascript.d.ts +3 -0
  35. package/dist/highlight/languages/javascript.d.ts.map +1 -0
  36. package/dist/highlight/languages/javascript.js +53 -0
  37. package/dist/highlight/languages/javascript.js.map +1 -0
  38. package/dist/highlight/languages/json.d.ts +3 -0
  39. package/dist/highlight/languages/json.d.ts.map +1 -0
  40. package/dist/highlight/languages/json.js +25 -0
  41. package/dist/highlight/languages/json.js.map +1 -0
  42. package/dist/highlight/languages/python.d.ts +3 -0
  43. package/dist/highlight/languages/python.d.ts.map +1 -0
  44. package/dist/highlight/languages/python.js +80 -0
  45. package/dist/highlight/languages/python.js.map +1 -0
  46. package/dist/highlight/languages/rust.d.ts +3 -0
  47. package/dist/highlight/languages/rust.d.ts.map +1 -0
  48. package/dist/highlight/languages/rust.js +68 -0
  49. package/dist/highlight/languages/rust.js.map +1 -0
  50. package/dist/highlight/languages/typescript.d.ts +3 -0
  51. package/dist/highlight/languages/typescript.d.ts.map +1 -0
  52. package/dist/highlight/languages/typescript.js +77 -0
  53. package/dist/highlight/languages/typescript.js.map +1 -0
  54. package/dist/highlight/tokenizer.d.ts +41 -0
  55. package/dist/highlight/tokenizer.d.ts.map +1 -0
  56. package/dist/highlight/tokenizer.js +147 -0
  57. package/dist/highlight/tokenizer.js.map +1 -0
  58. package/dist/highlight/types.d.ts +47 -0
  59. package/dist/highlight/types.d.ts.map +1 -0
  60. package/dist/highlight/types.js +27 -0
  61. package/dist/highlight/types.js.map +1 -0
  62. package/dist/index.d.ts +1 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +23 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/renderer/customGlyphs.d.ts +1 -0
  67. package/dist/renderer/customGlyphs.d.ts.map +1 -1
  68. package/dist/renderer/customGlyphs.js +115 -52
  69. package/dist/renderer/customGlyphs.js.map +1 -1
  70. package/dist/renderer/text.d.ts.map +1 -1
  71. package/dist/renderer/text.js +1 -0
  72. package/dist/renderer/text.js.map +1 -1
  73. package/dist/types.d.ts +9 -0
  74. package/dist/types.d.ts.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.javascript = void 0;
4
+ const tokenizer_1 = require("../tokenizer");
5
+ const KEYWORDS = [
6
+ 'async', 'await', 'break', 'case', 'catch', 'class', 'const',
7
+ 'continue', 'debugger', 'default', 'delete', 'do', 'else',
8
+ 'export', 'extends', 'finally', 'for', 'from', 'function',
9
+ 'if', 'import', 'in', 'instanceof', 'let', 'new', 'of',
10
+ 'return', 'static', 'super', 'switch', 'this', 'throw',
11
+ 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
12
+ 'as', 'get', 'set',
13
+ ];
14
+ const CONSTANTS = [
15
+ 'true', 'false', 'null', 'undefined', 'NaN', 'Infinity',
16
+ ];
17
+ const BUILTINS = [
18
+ 'console', 'window', 'document', 'global', 'globalThis',
19
+ 'process', 'module', 'exports', 'require',
20
+ 'Object', 'Array', 'String', 'Number', 'Boolean', 'Symbol', 'BigInt',
21
+ 'Function', 'Date', 'RegExp', 'Error', 'Map', 'Set', 'WeakMap', 'WeakSet',
22
+ 'Promise', 'Proxy', 'Reflect', 'JSON', 'Math', 'Intl',
23
+ 'ArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array',
24
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
25
+ 'fetch', 'Request', 'Response', 'Headers', 'URL', 'URLSearchParams',
26
+ ];
27
+ const patterns = (0, tokenizer_1.createCLikePatterns)({
28
+ keywords: KEYWORDS,
29
+ constants: CONSTANTS,
30
+ builtins: BUILTINS,
31
+ extraPatterns: [
32
+ // JSX tags (simplified)
33
+ { type: 'tag', pattern: /<\/?[A-Z][a-zA-Z0-9]*/ },
34
+ { type: 'tag', pattern: /<\/?[a-z][a-z0-9-]*/ },
35
+ // Regex literals (simplified - doesn't handle all edge cases)
36
+ { type: 'regex', pattern: /\/(?:[^/\\]|\\.)+\/[gimsuvy]*/ },
37
+ // Arrow function
38
+ { type: 'keyword', pattern: /=>/ },
39
+ // Spread operator
40
+ { type: 'operator', pattern: /\.{3}/ },
41
+ // Optional chaining
42
+ { type: 'operator', pattern: /\?\.[^0-9]/ },
43
+ // Nullish coalescing
44
+ { type: 'operator', pattern: /\?\?/ },
45
+ ],
46
+ });
47
+ exports.javascript = {
48
+ name: 'javascript',
49
+ aliases: ['js', 'jsx', 'mjs', 'cjs'],
50
+ extensions: ['.js', '.jsx', '.mjs', '.cjs'],
51
+ tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
52
+ };
53
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/highlight/languages/javascript.ts"],"names":[],"mappings":";;;AACA,4CAA6D;AAE7D,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5D,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;IACzD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU;IACzD,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;IACtD,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IACtD,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACxD,IAAI,EAAE,KAAK,EAAE,KAAK;CACnB,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU;CACxD,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY;IACvD,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACzC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IACpE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IACzE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACrD,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY;IACpD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe;IAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB;CACpE,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAA,+BAAmB,EAAC;IACnC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE;QACb,wBAAwB;QACxB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;QACjD,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE;QAE/C,8DAA8D;QAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAE3D,iBAAiB;QACjB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;QAElC,kBAAkB;QAClB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;QAEtC,oBAAoB;QACpB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE;QAE3C,qBAAqB;QACrB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;KACtC;CACF,CAAC,CAAC;AAEU,QAAA,UAAU,GAAsB;IAC3C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,IAAY,EAAW,EAAE,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC;CAC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageTokenizer } from '../types';
2
+ export declare const json: LanguageTokenizer;
3
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAuBvE,eAAO,MAAM,IAAI,EAAE,iBAKlB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.json = void 0;
4
+ const tokenizer_1 = require("../tokenizer");
5
+ const patterns = [
6
+ // Property keys (strings followed by colon)
7
+ { type: 'property', pattern: /"(?:[^"\\]|\\.)*"(?=\s*:)/ },
8
+ // String values
9
+ { type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.doubleString },
10
+ // Boolean and null
11
+ { type: 'constant', pattern: /\b(true|false|null)\b/ },
12
+ // Numbers
13
+ { type: 'number', pattern: /-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/ },
14
+ // Punctuation
15
+ { type: 'punctuation', pattern: /[{}[\],:.]/ },
16
+ // Whitespace
17
+ { type: 'text', pattern: tokenizer_1.COMMON_PATTERNS.whitespace },
18
+ ];
19
+ exports.json = {
20
+ name: 'json',
21
+ aliases: ['jsonc', 'json5'],
22
+ extensions: ['.json', '.jsonc', '.json5'],
23
+ tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
24
+ };
25
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/highlight/languages/json.ts"],"names":[],"mappings":";;;AACA,4CAAyD;AAEzD,MAAM,QAAQ,GAAmB;IAC/B,4CAA4C;IAC5C,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAE1D,gBAAgB;IAChB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAAe,CAAC,YAAY,EAAE;IAEzD,mBAAmB;IACnB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE;IAEtD,UAAU;IACV,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAE/D,cAAc;IACd,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE;IAE9C,aAAa;IACb,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAAe,CAAC,UAAU,EAAE;CACtD,CAAC;AAEW,QAAA,IAAI,GAAsB;IACrC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAY,EAAW,EAAE,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC;CAC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageTokenizer } from '../types';
2
+ export declare const python: LanguageTokenizer;
3
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AA4FvE,eAAO,MAAM,MAAM,EAAE,iBAKpB,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.python = void 0;
4
+ const tokenizer_1 = require("../tokenizer");
5
+ const KEYWORDS = [
6
+ 'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
7
+ 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
8
+ 'except', 'finally', 'for', 'from', 'global', 'if', 'import',
9
+ 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
10
+ 'return', 'try', 'while', 'with', 'yield', 'match', 'case',
11
+ ];
12
+ const BUILTINS = [
13
+ 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes',
14
+ 'callable', 'chr', 'classmethod', 'compile', 'complex', 'delattr',
15
+ 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'filter',
16
+ 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
17
+ 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
18
+ 'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview', 'min',
19
+ 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property',
20
+ 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
21
+ 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
22
+ 'vars', 'zip', '__import__',
23
+ ];
24
+ const TYPES = [
25
+ 'int', 'float', 'str', 'bool', 'list', 'dict', 'set', 'tuple',
26
+ 'bytes', 'bytearray', 'complex', 'frozenset', 'object', 'type',
27
+ 'None', 'Callable', 'Optional', 'Union', 'Any', 'List', 'Dict',
28
+ 'Set', 'Tuple', 'Type', 'Sequence', 'Mapping', 'Iterable', 'Iterator',
29
+ ];
30
+ const patterns = [
31
+ // Comments
32
+ { type: 'comment', pattern: tokenizer_1.COMMON_PATTERNS.hashComment },
33
+ // Docstrings (triple-quoted strings)
34
+ { type: 'string', pattern: /"""[\s\S]*?"""/ },
35
+ { type: 'string', pattern: /'''[\s\S]*?'''/ },
36
+ // F-strings (simplified)
37
+ { type: 'string', pattern: /f"(?:[^"\\]|\\.)*"/ },
38
+ { type: 'string', pattern: /f'(?:[^'\\]|\\.)*'/ },
39
+ // Raw strings
40
+ { type: 'string', pattern: /r"(?:[^"\\]|\\.)*"/ },
41
+ { type: 'string', pattern: /r'(?:[^'\\]|\\.)*'/ },
42
+ // Byte strings
43
+ { type: 'string', pattern: /b"(?:[^"\\]|\\.)*"/ },
44
+ { type: 'string', pattern: /b'(?:[^'\\]|\\.)*'/ },
45
+ // Regular strings
46
+ { type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.doubleString },
47
+ { type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.singleString },
48
+ // Decorators
49
+ { type: 'decorator', pattern: /@[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*/ },
50
+ // Numbers
51
+ { type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.hexNumber },
52
+ { type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.binaryNumber },
53
+ { type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.octalNumber },
54
+ { type: 'number', pattern: /\b\d+\.?\d*(?:[eE][+-]?\d+)?j?\b/ }, // Complex numbers
55
+ // Keywords
56
+ { type: 'keyword', pattern: (0, tokenizer_1.wordBoundary)(KEYWORDS) },
57
+ // Built-ins
58
+ { type: 'builtin', pattern: (0, tokenizer_1.wordBoundary)(BUILTINS) },
59
+ // Types (for type hints)
60
+ { type: 'type', pattern: (0, tokenizer_1.wordBoundary)(TYPES) },
61
+ // Magic methods/attributes
62
+ { type: 'builtin', pattern: /__[a-zA-Z_][a-zA-Z0-9_]*__/ },
63
+ // Self and cls
64
+ { type: 'variable', pattern: /\b(self|cls)\b/ },
65
+ // Operators
66
+ { type: 'operator', pattern: /->|:=|[+\-*/%@=<>!&|^~]=?|\*\*|\/\/|<<|>>/ },
67
+ // Punctuation
68
+ { type: 'punctuation', pattern: /[{}[\]();,.:@]/ },
69
+ // Whitespace
70
+ { type: 'text', pattern: tokenizer_1.COMMON_PATTERNS.whitespace },
71
+ // Identifiers
72
+ { type: 'text', pattern: /[a-zA-Z_][a-zA-Z0-9_]*/ },
73
+ ];
74
+ exports.python = {
75
+ name: 'python',
76
+ aliases: ['py', 'python3'],
77
+ extensions: ['.py', '.pyw', '.pyi'],
78
+ tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
79
+ };
80
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/highlight/languages/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageTokenizer } from '../types';
2
+ export declare const rust: LanguageTokenizer;
3
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAS,MAAM,UAAU,CAAC;AA0EzD,eAAO,MAAM,IAAI,EAAE,iBAKlB,CAAC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rust = void 0;
4
+ const tokenizer_1 = require("../tokenizer");
5
+ const KEYWORDS = [
6
+ 'as', 'async', 'await', 'break', 'const', 'continue', 'crate', 'dyn',
7
+ 'else', 'enum', 'extern', 'false', 'fn', 'for', 'if', 'impl', 'in',
8
+ 'let', 'loop', 'match', 'mod', 'move', 'mut', 'pub', 'ref', 'return',
9
+ 'self', 'Self', 'static', 'struct', 'super', 'trait', 'true', 'type',
10
+ 'unsafe', 'use', 'where', 'while', 'abstract', 'become', 'box', 'do',
11
+ 'final', 'macro', 'override', 'priv', 'typeof', 'unsized', 'virtual',
12
+ 'yield', 'try',
13
+ ];
14
+ const TYPES = [
15
+ 'bool', 'char', 'str',
16
+ 'i8', 'i16', 'i32', 'i64', 'i128', 'isize',
17
+ 'u8', 'u16', 'u32', 'u64', 'u128', 'usize',
18
+ 'f32', 'f64',
19
+ 'String', 'Vec', 'Option', 'Result', 'Box', 'Rc', 'Arc', 'Cell', 'RefCell',
20
+ 'HashMap', 'HashSet', 'BTreeMap', 'BTreeSet', 'VecDeque', 'LinkedList',
21
+ 'Cow', 'Pin', 'Mutex', 'RwLock',
22
+ ];
23
+ const CONSTANTS = [
24
+ 'true', 'false', 'None', 'Some', 'Ok', 'Err',
25
+ ];
26
+ const BUILTINS = [
27
+ 'println', 'print', 'eprintln', 'eprint', 'format', 'panic', 'assert',
28
+ 'assert_eq', 'assert_ne', 'debug_assert', 'debug_assert_eq', 'debug_assert_ne',
29
+ 'todo', 'unimplemented', 'unreachable', 'cfg', 'env', 'file', 'line',
30
+ 'column', 'module_path', 'stringify', 'include', 'include_str', 'include_bytes',
31
+ 'vec', 'format_args', 'write', 'writeln',
32
+ ];
33
+ const patterns = (0, tokenizer_1.createCLikePatterns)({
34
+ keywords: KEYWORDS,
35
+ types: TYPES,
36
+ constants: CONSTANTS,
37
+ builtins: BUILTINS,
38
+ extraPatterns: [
39
+ // Attributes/Macros
40
+ { type: 'decorator', pattern: /#!\[[\s\S]*?\]/ },
41
+ { type: 'decorator', pattern: /#\[[\s\S]*?\]/ },
42
+ // Macro invocations (name!)
43
+ { type: 'builtin', pattern: /[a-zA-Z_][a-zA-Z0-9_]*!/ },
44
+ // Lifetime annotations
45
+ { type: 'variable', pattern: /'[a-zA-Z_][a-zA-Z0-9_]*/ },
46
+ // Raw strings
47
+ { type: 'string', pattern: /r#*"[\s\S]*?"#*/ },
48
+ // Byte strings
49
+ { type: 'string', pattern: /b"(?:[^"\\]|\\.)*"/ },
50
+ // Character literals
51
+ { type: 'string', pattern: /'(?:[^'\\]|\\.)'/ },
52
+ // Byte character literals
53
+ { type: 'string', pattern: /b'(?:[^'\\]|\\.)'/ },
54
+ // Range operators
55
+ { type: 'operator', pattern: /\.{2,3}=?/ },
56
+ // Fat arrow
57
+ { type: 'operator', pattern: /=>/ },
58
+ // Turbofish
59
+ { type: 'operator', pattern: /::</ },
60
+ ],
61
+ });
62
+ exports.rust = {
63
+ name: 'rust',
64
+ aliases: ['rs'],
65
+ extensions: ['.rs'],
66
+ tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
67
+ };
68
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/highlight/languages/rust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageTokenizer } from '../types';
2
+ export declare const typescript: LanguageTokenizer;
3
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAS,MAAM,UAAU,CAAC;AAmFzD,eAAO,MAAM,UAAU,EAAE,iBAKxB,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typescript = void 0;
4
+ const tokenizer_1 = require("../tokenizer");
5
+ const KEYWORDS = [
6
+ // JavaScript keywords
7
+ 'async', 'await', 'break', 'case', 'catch', 'class', 'const',
8
+ 'continue', 'debugger', 'default', 'delete', 'do', 'else',
9
+ 'export', 'extends', 'finally', 'for', 'from', 'function',
10
+ 'if', 'import', 'in', 'instanceof', 'let', 'new', 'of',
11
+ 'return', 'static', 'super', 'switch', 'this', 'throw',
12
+ 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
13
+ 'as', 'get', 'set',
14
+ // TypeScript-specific
15
+ 'abstract', 'declare', 'enum', 'implements', 'interface',
16
+ 'namespace', 'private', 'protected', 'public', 'readonly',
17
+ 'type', 'module', 'is', 'keyof', 'infer', 'never', 'unknown',
18
+ 'asserts', 'override', 'satisfies', 'using',
19
+ ];
20
+ const TYPES = [
21
+ 'any', 'boolean', 'number', 'string', 'symbol', 'bigint',
22
+ 'void', 'never', 'unknown', 'object', 'undefined', 'null',
23
+ ];
24
+ const CONSTANTS = [
25
+ 'true', 'false', 'null', 'undefined', 'NaN', 'Infinity',
26
+ ];
27
+ const BUILTINS = [
28
+ 'console', 'window', 'document', 'global', 'globalThis',
29
+ 'process', 'module', 'exports', 'require',
30
+ 'Object', 'Array', 'String', 'Number', 'Boolean', 'Symbol', 'BigInt',
31
+ 'Function', 'Date', 'RegExp', 'Error', 'Map', 'Set', 'WeakMap', 'WeakSet',
32
+ 'Promise', 'Proxy', 'Reflect', 'JSON', 'Math', 'Intl',
33
+ 'ArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array',
34
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
35
+ 'fetch', 'Request', 'Response', 'Headers', 'URL', 'URLSearchParams',
36
+ // TypeScript utility types
37
+ 'Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit',
38
+ 'Exclude', 'Extract', 'NonNullable', 'Parameters', 'ReturnType',
39
+ 'InstanceType', 'ThisParameterType', 'OmitThisParameter',
40
+ 'ThisType', 'Awaited', 'Uppercase', 'Lowercase', 'Capitalize',
41
+ ];
42
+ const patterns = (0, tokenizer_1.createCLikePatterns)({
43
+ keywords: KEYWORDS,
44
+ types: TYPES,
45
+ constants: CONSTANTS,
46
+ builtins: BUILTINS,
47
+ extraPatterns: [
48
+ // Decorators
49
+ { type: 'decorator', pattern: /@[a-zA-Z_][a-zA-Z0-9_]*/ },
50
+ // JSX/TSX tags
51
+ { type: 'tag', pattern: /<\/?[A-Z][a-zA-Z0-9]*/ },
52
+ { type: 'tag', pattern: /<\/?[a-z][a-z0-9-]*/ },
53
+ // Generic type parameters (simplified)
54
+ { type: 'type', pattern: /<[A-Z][a-zA-Z0-9]*(?:\s*,\s*[A-Z][a-zA-Z0-9]*)*>/ },
55
+ // Type assertions
56
+ { type: 'keyword', pattern: (0, tokenizer_1.wordBoundary)(['as', 'is']) },
57
+ // Regex literals
58
+ { type: 'regex', pattern: /\/(?:[^/\\]|\\.)+\/[gimsuvy]*/ },
59
+ // Arrow function
60
+ { type: 'keyword', pattern: /=>/ },
61
+ // Spread operator
62
+ { type: 'operator', pattern: /\.{3}/ },
63
+ // Optional chaining
64
+ { type: 'operator', pattern: /\?\.[^0-9]/ },
65
+ // Non-null assertion
66
+ { type: 'operator', pattern: /!\./ },
67
+ // Nullish coalescing
68
+ { type: 'operator', pattern: /\?\?/ },
69
+ ],
70
+ });
71
+ exports.typescript = {
72
+ name: 'typescript',
73
+ aliases: ['ts', 'tsx'],
74
+ extensions: ['.ts', '.tsx', '.mts', '.cts'],
75
+ tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
76
+ };
77
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/highlight/languages/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Token, TokenPattern } from './types';
2
+ /**
3
+ * Core tokenization engine using regex patterns
4
+ * Languages define patterns in priority order - first match wins
5
+ */
6
+ export declare function tokenize(code: string, patterns: TokenPattern[]): Token[];
7
+ /**
8
+ * Helper to create a pattern that matches at string boundaries
9
+ * Useful for keywords that shouldn't match inside identifiers
10
+ */
11
+ export declare function wordBoundary(words: string[]): RegExp;
12
+ /**
13
+ * Common patterns reusable across languages
14
+ */
15
+ export declare const COMMON_PATTERNS: {
16
+ readonly lineComment: RegExp;
17
+ readonly hashComment: RegExp;
18
+ readonly blockComment: RegExp;
19
+ readonly doubleString: RegExp;
20
+ readonly singleString: RegExp;
21
+ readonly templateString: RegExp;
22
+ readonly number: RegExp;
23
+ readonly hexNumber: RegExp;
24
+ readonly binaryNumber: RegExp;
25
+ readonly octalNumber: RegExp;
26
+ readonly operator: RegExp;
27
+ readonly punctuation: RegExp;
28
+ readonly whitespace: RegExp;
29
+ readonly identifier: RegExp;
30
+ };
31
+ /**
32
+ * Create patterns for a C-like language (JS, TS, Java, C#, Go, Rust, etc.)
33
+ */
34
+ export declare function createCLikePatterns(options: {
35
+ keywords: string[];
36
+ types?: string[];
37
+ builtins?: string[];
38
+ constants?: string[];
39
+ extraPatterns?: TokenPattern[];
40
+ }): TokenPattern[];
41
+ //# sourceMappingURL=tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/highlight/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,CA2CxE;AAyBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;CA0ClB,CAAC;AAEX;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC,GAAG,YAAY,EAAE,CA4DjB"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMMON_PATTERNS = void 0;
4
+ exports.tokenize = tokenize;
5
+ exports.wordBoundary = wordBoundary;
6
+ exports.createCLikePatterns = createCLikePatterns;
7
+ /**
8
+ * Core tokenization engine using regex patterns
9
+ * Languages define patterns in priority order - first match wins
10
+ */
11
+ function tokenize(code, patterns) {
12
+ const tokens = [];
13
+ let remaining = code;
14
+ let position = 0;
15
+ while (remaining.length > 0) {
16
+ let matched = false;
17
+ for (const { type, pattern } of patterns) {
18
+ // Reset lastIndex for global patterns
19
+ pattern.lastIndex = 0;
20
+ // Ensure pattern matches at start of remaining string
21
+ const match = pattern.exec(remaining);
22
+ if (match && match.index === 0) {
23
+ const value = match[0];
24
+ if (value.length > 0) {
25
+ tokens.push({ type, value });
26
+ remaining = remaining.slice(value.length);
27
+ position += value.length;
28
+ matched = true;
29
+ break;
30
+ }
31
+ }
32
+ }
33
+ // If no pattern matched, consume one character as text
34
+ if (!matched) {
35
+ const char = remaining[0];
36
+ // Merge with previous text token if possible
37
+ const lastToken = tokens[tokens.length - 1];
38
+ if (lastToken && lastToken.type === 'text') {
39
+ lastToken.value += char;
40
+ }
41
+ else {
42
+ tokens.push({ type: 'text', value: char });
43
+ }
44
+ remaining = remaining.slice(1);
45
+ position++;
46
+ }
47
+ }
48
+ return mergeAdjacentTokens(tokens);
49
+ }
50
+ /**
51
+ * Merge adjacent tokens of the same type for cleaner output
52
+ */
53
+ function mergeAdjacentTokens(tokens) {
54
+ if (tokens.length === 0)
55
+ return tokens;
56
+ const merged = [];
57
+ let current = { ...tokens[0] };
58
+ for (let i = 1; i < tokens.length; i++) {
59
+ const token = tokens[i];
60
+ if (token.type === current.type) {
61
+ current.value += token.value;
62
+ }
63
+ else {
64
+ merged.push(current);
65
+ current = { ...token };
66
+ }
67
+ }
68
+ merged.push(current);
69
+ return merged;
70
+ }
71
+ /**
72
+ * Helper to create a pattern that matches at string boundaries
73
+ * Useful for keywords that shouldn't match inside identifiers
74
+ */
75
+ function wordBoundary(words) {
76
+ const escaped = words.map(w => w.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
77
+ return new RegExp(`\\b(${escaped.join('|')})\\b`);
78
+ }
79
+ /**
80
+ * Common patterns reusable across languages
81
+ */
82
+ exports.COMMON_PATTERNS = {
83
+ // Single-line comment starting with //
84
+ lineComment: /\/\/[^\n]*/,
85
+ // Single-line comment starting with #
86
+ hashComment: /#[^\n]*/,
87
+ // Multi-line comment /* ... */
88
+ blockComment: /\/\*[\s\S]*?\*\//,
89
+ // Double-quoted string with escape support
90
+ doubleString: /"(?:[^"\\]|\\.)*"/,
91
+ // Single-quoted string with escape support
92
+ singleString: /'(?:[^'\\]|\\.)*'/,
93
+ // Template literal / backtick string
94
+ templateString: /`(?:[^`\\]|\\.)*`/,
95
+ // Integer and float numbers
96
+ number: /\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/,
97
+ // Hex numbers
98
+ hexNumber: /\b0[xX][0-9a-fA-F]+\b/,
99
+ // Binary numbers
100
+ binaryNumber: /\b0[bB][01]+\b/,
101
+ // Octal numbers
102
+ octalNumber: /\b0[oO][0-7]+\b/,
103
+ // Common operators
104
+ operator: /[+\-*/%=<>!&|^~?:]+/,
105
+ // Punctuation
106
+ punctuation: /[{}[\]();,.:]/,
107
+ // Whitespace (preserve as text)
108
+ whitespace: /\s+/,
109
+ // Generic identifier
110
+ identifier: /[a-zA-Z_$][a-zA-Z0-9_$]*/,
111
+ };
112
+ /**
113
+ * Create patterns for a C-like language (JS, TS, Java, C#, Go, Rust, etc.)
114
+ */
115
+ function createCLikePatterns(options) {
116
+ const patterns = [];
117
+ // Extra patterns first (highest priority)
118
+ if (options.extraPatterns) {
119
+ patterns.push(...options.extraPatterns);
120
+ }
121
+ // Comments (high priority)
122
+ patterns.push({ type: 'comment', pattern: exports.COMMON_PATTERNS.blockComment }, { type: 'comment', pattern: exports.COMMON_PATTERNS.lineComment });
123
+ // Strings
124
+ patterns.push({ type: 'string', pattern: exports.COMMON_PATTERNS.templateString }, { type: 'string', pattern: exports.COMMON_PATTERNS.doubleString }, { type: 'string', pattern: exports.COMMON_PATTERNS.singleString });
125
+ // Numbers
126
+ patterns.push({ type: 'number', pattern: exports.COMMON_PATTERNS.hexNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.binaryNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.octalNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.number });
127
+ // Constants (before keywords)
128
+ if (options.constants?.length) {
129
+ patterns.push({ type: 'constant', pattern: wordBoundary(options.constants) });
130
+ }
131
+ // Keywords
132
+ patterns.push({ type: 'keyword', pattern: wordBoundary(options.keywords) });
133
+ // Types
134
+ if (options.types?.length) {
135
+ patterns.push({ type: 'type', pattern: wordBoundary(options.types) });
136
+ }
137
+ // Built-ins
138
+ if (options.builtins?.length) {
139
+ patterns.push({ type: 'builtin', pattern: wordBoundary(options.builtins) });
140
+ }
141
+ // Operators and punctuation
142
+ patterns.push({ type: 'operator', pattern: exports.COMMON_PATTERNS.operator }, { type: 'punctuation', pattern: exports.COMMON_PATTERNS.punctuation });
143
+ // Whitespace and identifiers last
144
+ patterns.push({ type: 'text', pattern: exports.COMMON_PATTERNS.whitespace }, { type: 'text', pattern: exports.COMMON_PATTERNS.identifier });
145
+ return patterns;
146
+ }
147
+ //# sourceMappingURL=tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/highlight/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Token types for syntax highlighting
3
+ * Maps to ANSI colors via the theme
4
+ */
5
+ export type TokenType = 'text' | 'comment' | 'keyword' | 'string' | 'number' | 'operator' | 'punctuation' | 'function' | 'type' | 'variable' | 'property' | 'constant' | 'builtin' | 'regex' | 'decorator' | 'tag' | 'attribute';
6
+ /**
7
+ * A single token produced by the tokenizer
8
+ */
9
+ export interface Token {
10
+ type: TokenType;
11
+ value: string;
12
+ }
13
+ /**
14
+ * Language tokenizer definition
15
+ * Each language implements this interface
16
+ */
17
+ export interface LanguageTokenizer {
18
+ /** Language identifier (e.g., 'typescript', 'python') */
19
+ name: string;
20
+ /** Alternative names/aliases (e.g., 'ts' for typescript) */
21
+ aliases: string[];
22
+ /** File extensions (e.g., ['.ts', '.tsx']) */
23
+ extensions: string[];
24
+ /** Tokenize the input string into tokens */
25
+ tokenize(code: string): Token[];
26
+ }
27
+ /**
28
+ * Pattern definition for regex-based tokenization
29
+ * Order matters - first match wins
30
+ */
31
+ export interface TokenPattern {
32
+ type: TokenType;
33
+ pattern: RegExp;
34
+ }
35
+ /**
36
+ * Language detection result
37
+ */
38
+ export interface DetectionResult {
39
+ language: string;
40
+ confidence: number;
41
+ }
42
+ /**
43
+ * ANSI color codes for each token type
44
+ */
45
+ export declare const TOKEN_TO_ANSI: Record<TokenType, string>;
46
+ export declare const ANSI_RESET = "\u001B[0m";
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/highlight/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,aAAa,GACb,UAAU,GACV,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GACV,SAAS,GACT,OAAO,GACP,WAAW,GACX,KAAK,GACL,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAkBnD,CAAC;AAEF,eAAO,MAAM,UAAU,cAAY,CAAC"}