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.
- package/README.md +63 -46
- package/dist/highlight/index.d.ts +41 -0
- package/dist/highlight/index.d.ts.map +1 -0
- package/dist/highlight/index.js +309 -0
- package/dist/highlight/index.js.map +1 -0
- package/dist/highlight/languages/bash.d.ts +3 -0
- package/dist/highlight/languages/bash.d.ts.map +1 -0
- package/dist/highlight/languages/bash.js +78 -0
- package/dist/highlight/languages/bash.js.map +1 -0
- package/dist/highlight/languages/c.d.ts +4 -0
- package/dist/highlight/languages/c.d.ts.map +1 -0
- package/dist/highlight/languages/c.js +101 -0
- package/dist/highlight/languages/c.js.map +1 -0
- package/dist/highlight/languages/csharp.d.ts +3 -0
- package/dist/highlight/languages/csharp.d.ts.map +1 -0
- package/dist/highlight/languages/csharp.js +78 -0
- package/dist/highlight/languages/csharp.js.map +1 -0
- package/dist/highlight/languages/go.d.ts +3 -0
- package/dist/highlight/languages/go.d.ts.map +1 -0
- package/dist/highlight/languages/go.js +47 -0
- package/dist/highlight/languages/go.js.map +1 -0
- package/dist/highlight/languages/html.d.ts +3 -0
- package/dist/highlight/languages/html.d.ts.map +1 -0
- package/dist/highlight/languages/html.js +44 -0
- package/dist/highlight/languages/html.js.map +1 -0
- package/dist/highlight/languages/index.d.ts +26 -0
- package/dist/highlight/languages/index.d.ts.map +1 -0
- package/dist/highlight/languages/index.js +65 -0
- package/dist/highlight/languages/index.js.map +1 -0
- package/dist/highlight/languages/java.d.ts +3 -0
- package/dist/highlight/languages/java.d.ts.map +1 -0
- package/dist/highlight/languages/java.js +57 -0
- package/dist/highlight/languages/java.js.map +1 -0
- package/dist/highlight/languages/javascript.d.ts +3 -0
- package/dist/highlight/languages/javascript.d.ts.map +1 -0
- package/dist/highlight/languages/javascript.js +53 -0
- package/dist/highlight/languages/javascript.js.map +1 -0
- package/dist/highlight/languages/json.d.ts +3 -0
- package/dist/highlight/languages/json.d.ts.map +1 -0
- package/dist/highlight/languages/json.js +25 -0
- package/dist/highlight/languages/json.js.map +1 -0
- package/dist/highlight/languages/python.d.ts +3 -0
- package/dist/highlight/languages/python.d.ts.map +1 -0
- package/dist/highlight/languages/python.js +80 -0
- package/dist/highlight/languages/python.js.map +1 -0
- package/dist/highlight/languages/rust.d.ts +3 -0
- package/dist/highlight/languages/rust.d.ts.map +1 -0
- package/dist/highlight/languages/rust.js +68 -0
- package/dist/highlight/languages/rust.js.map +1 -0
- package/dist/highlight/languages/typescript.d.ts +3 -0
- package/dist/highlight/languages/typescript.d.ts.map +1 -0
- package/dist/highlight/languages/typescript.js +77 -0
- package/dist/highlight/languages/typescript.js.map +1 -0
- package/dist/highlight/tokenizer.d.ts +41 -0
- package/dist/highlight/tokenizer.d.ts.map +1 -0
- package/dist/highlight/tokenizer.js +147 -0
- package/dist/highlight/tokenizer.js.map +1 -0
- package/dist/highlight/types.d.ts +47 -0
- package/dist/highlight/types.d.ts.map +1 -0
- package/dist/highlight/types.js +27 -0
- package/dist/highlight/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/renderer/customGlyphs.d.ts +1 -0
- package/dist/renderer/customGlyphs.d.ts.map +1 -1
- package/dist/renderer/customGlyphs.js +115 -52
- package/dist/renderer/customGlyphs.js.map +1 -1
- package/dist/renderer/text.d.ts.map +1 -1
- package/dist/renderer/text.js +1 -0
- package/dist/renderer/text.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,33 +5,46 @@ Your terminal output deserves better than a blurry screenshot.
|
|
|
5
5
|
|
|
6
6
|

|
|
7
7
|
|
|
8
|
-
| Feature | shellfie | carbon-now-cli | svg-term | termtosvg |
|
|
9
|
-
| ------------------- | -------- | -------------- | -------- | --------- |
|
|
10
|
-
| Zero dependencies | ✅ | ❌ | ❌ | ❌ |
|
|
11
|
-
| No native bindings | ✅ | ❌ | ❌ | ❌ |
|
|
12
|
-
| No headless browser | ✅ | ❌ | ✅ | ✅ |
|
|
13
|
-
| Full ANSI support | ✅ | ✅ | ✅ | ✅ |
|
|
14
|
-
| 24-bit true color | ✅ | ✅ | ❌ | ✅ |
|
|
15
|
-
| Runs in browser | ✅ | ❌ | ❌ | ❌ |
|
|
16
|
-
| Synchronous API | ✅ | ❌ | ❌ | ❌ |
|
|
17
|
-
|
|
18
8
|
```typescript
|
|
19
|
-
import {
|
|
20
|
-
import
|
|
9
|
+
import shellfie, { themes } from "shellfie";
|
|
10
|
+
import { writeFileSync } from "node:fs";
|
|
11
|
+
|
|
12
|
+
const script = `
|
|
13
|
+
#!/bin/bash
|
|
14
|
+
|
|
15
|
+
echo "Hello World!"
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
const svg = shellfie(script, {
|
|
19
|
+
template: "macos",
|
|
20
|
+
theme: themes.draculaPro,
|
|
21
|
+
title: "Syntax highlighting",
|
|
22
|
+
watermark: "\x1b[38;5;242mGenerated by shellfie\x1b[0m",
|
|
23
|
+
});
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
const svg = shellfie(log, { title: "git log" });
|
|
25
|
+
writeFileSync("highlight.svg", svg);
|
|
24
26
|
```
|
|
25
27
|
|
|
26
|
-

|
|
29
|
+
|
|
30
|
+
| Feature | shellfie | carbon-now-cli | svg-term | termtosvg |
|
|
31
|
+
| --------------------------- | -------- | -------------- | -------- | --------- |
|
|
32
|
+
| Zero dependencies | ✅ | ❌ | ❌ | ❌ |
|
|
33
|
+
| No native bindings | ✅ | ❌ | ❌ | ❌ |
|
|
34
|
+
| No headless browser | ✅ | ❌ | ✅ | ✅ |
|
|
35
|
+
| Full ANSI support | ✅ | ✅ | ✅ | ✅ |
|
|
36
|
+
| 24-bit true color | ✅ | ✅ | ❌ | ✅ |
|
|
37
|
+
| Runs in browser | ✅ | ❌ | ❌ | ❌ |
|
|
38
|
+
| Synchronous API | ✅ | ❌ | ❌ | ❌ |
|
|
39
|
+
| Built-in Syntax hightligher | ✅ | ❌ | ❌ | ❌ |
|
|
27
40
|
|
|
28
41
|
## Why SVG?
|
|
29
42
|
|
|
30
43
|
✅ **Infinitely scalable** — pixel-perfect at any zoom level, retina-ready by default.
|
|
31
44
|
✅ **Selectable text** — copy code directly from the image.
|
|
32
45
|
✅ **Embeddable everywhere** — high quality embedding in READMEs, docs, blogs, everywhere.
|
|
33
|
-
✅ **Tiny files** — 2-10KB vs blurry 500KB+ PNGs.
|
|
34
|
-
✅ **No rendering pipeline** — runs anywhere JavaScript runs.
|
|
46
|
+
✅ **Tiny files** — 2-10KB vs blurry 500KB+ PNGs.
|
|
47
|
+
✅ **No rendering pipeline** — runs anywhere JavaScript runs.
|
|
35
48
|
|
|
36
49
|
## Install
|
|
37
50
|
|
|
@@ -67,8 +80,8 @@ const svg = shellfie(terminalOutput, {
|
|
|
67
80
|
|
|
68
81
|
## Templates
|
|
69
82
|
|
|
70
|
-
| macOS
|
|
71
|
-
|
|
|
83
|
+
| macOS | Windows | Minimal |
|
|
84
|
+
| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
72
85
|
|  |  |  |
|
|
73
86
|
|
|
74
87
|
```typescript
|
|
@@ -128,7 +141,8 @@ shellfie(output, {
|
|
|
128
141
|
shellfie(input, {
|
|
129
142
|
template?: "macos", // 'macos' | 'windows' | 'minimal' | Template
|
|
130
143
|
title?: "my-terminal", // window title
|
|
131
|
-
width?: 80, //
|
|
144
|
+
width?: 80, // SVG width in pixels (auto-detected if not set)
|
|
145
|
+
height?: 400, // SVG height in pixels (auto-detected if not set)
|
|
132
146
|
padding?: 16, // number | [v, h] | [top, right, bottom, left]
|
|
133
147
|
controls?: true, // show window control buttons
|
|
134
148
|
controlsPosition?: "left", // 'left' (macOS) or 'right' (Windows)
|
|
@@ -142,6 +156,7 @@ shellfie(input, {
|
|
|
142
156
|
format: "woff2", // 'woff2' | 'woff' | 'ttf'
|
|
143
157
|
},
|
|
144
158
|
theme?: customTheme, // custom color theme or see themes below
|
|
159
|
+
language?: "typescript", // syntax highlighting: 'auto' | language | false
|
|
145
160
|
watermark?: "Generated by shellfie", // bottom-right text (supports ANSI)
|
|
146
161
|
watermarkPadding?: 16, // number | [v, h] | [top, right, bottom, left]
|
|
147
162
|
header?: { // header configuration
|
|
@@ -183,52 +198,52 @@ import shellfie, { dracula, nord, tokyoNight } from "shellfie";
|
|
|
183
198
|
shellfie(output, { theme: dracula });
|
|
184
199
|
```
|
|
185
200
|
|
|
186
|
-
| Dracula
|
|
187
|
-
|
|
|
201
|
+
| Dracula | Dracula PRO | Nord |
|
|
202
|
+
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
188
203
|
|  |  |  |
|
|
189
204
|
|
|
190
|
-
| Tokyo Night
|
|
191
|
-
|
|
|
205
|
+
| Tokyo Night | One Dark | One Light |
|
|
206
|
+
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
192
207
|
|  |  |  |
|
|
193
208
|
|
|
194
|
-
| Monokai
|
|
195
|
-
|
|
|
209
|
+
| Monokai | Catppuccin Mocha | Material |
|
|
210
|
+
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
196
211
|
|  |  |  |
|
|
197
212
|
|
|
198
|
-
| GitHub Dark
|
|
199
|
-
|
|
|
213
|
+
| GitHub Dark | GitHub Light | VS Code |
|
|
214
|
+
| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
200
215
|
|  |  |  |
|
|
201
216
|
|
|
202
|
-
| Gruvbox Dark
|
|
203
|
-
|
|
|
217
|
+
| Gruvbox Dark | Gruvbox Light | Solarized Dark |
|
|
218
|
+
| ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
204
219
|
|  |  |  |
|
|
205
220
|
|
|
206
|
-
| Solarized Light
|
|
207
|
-
|
|
|
221
|
+
| Solarized Light | SynthWave '84 | Shades of Purple |
|
|
222
|
+
| ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
208
223
|
|  |  |  |
|
|
209
224
|
|
|
210
|
-
| Cobalt
|
|
211
|
-
|
|
|
225
|
+
| Cobalt | Oceanic Next | Lucario |
|
|
226
|
+
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
212
227
|
|  |  |  |
|
|
213
228
|
|
|
214
|
-
| Panda Syntax
|
|
215
|
-
|
|
|
229
|
+
| Panda Syntax | Hopscotch | Paraiso Dark |
|
|
230
|
+
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
216
231
|
|  |  |  |
|
|
217
232
|
|
|
218
|
-
| Base16 Dark
|
|
219
|
-
|
|
|
233
|
+
| Base16 Dark | Base16 Light | Duotone Dark |
|
|
234
|
+
| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
220
235
|
|  |  |  |
|
|
221
236
|
|
|
222
|
-
| 3024 Night
|
|
223
|
-
|
|
|
237
|
+
| 3024 Night | A11y Dark | Blackboard |
|
|
238
|
+
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
224
239
|
|  |  |  |
|
|
225
240
|
|
|
226
|
-
| Seti
|
|
227
|
-
|
|
|
241
|
+
| Seti | Twilight | Verminal |
|
|
242
|
+
| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
228
243
|
|  |  |  |
|
|
229
244
|
|
|
230
|
-
| Yeti
|
|
231
|
-
|
|
|
245
|
+
| Yeti | Zenburn |
|
|
246
|
+
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
232
247
|
|  |  |
|
|
233
248
|
|
|
234
249
|
## Custom Themes
|
|
@@ -308,9 +323,11 @@ getMaxWidth(lines); // 80
|
|
|
308
323
|
```
|
|
309
324
|
|
|
310
325
|
## Related
|
|
326
|
+
|
|
311
327
|
- See [shellfie-cli](https://github.com/tool3/shellfie-cli) for command line usage
|
|
312
|
-
- See [shellfied](https://github.com/tool3/shellfied) the shellfie web app
|
|
328
|
+
- See [shellfied](https://github.com/tool3/shellfied) for the shellfie web app
|
|
329
|
+
<!-- - See [dvd](https://github.com/tool3/dvd) for shellfie on drugs !-->
|
|
313
330
|
|
|
314
331
|
## License
|
|
315
|
-
MIT
|
|
316
332
|
|
|
333
|
+
MIT
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Syntax Highlighting Module
|
|
3
|
+
*
|
|
4
|
+
* Zero-dependency syntax highlighting that outputs ANSI-colored strings
|
|
5
|
+
* for use with shellfie's SVG renderer.
|
|
6
|
+
*/
|
|
7
|
+
import type { DetectionResult, LanguageTokenizer, Token } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Get a language tokenizer by name or alias
|
|
10
|
+
*/
|
|
11
|
+
export declare function getLanguage(name: string): LanguageTokenizer | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Get all registered language names
|
|
14
|
+
*/
|
|
15
|
+
export declare function getLanguageNames(): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Get a language tokenizer by file extension
|
|
18
|
+
*/
|
|
19
|
+
export declare function getLanguageByExtension(ext: string): LanguageTokenizer | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Auto-detect the language of a code snippet
|
|
22
|
+
* Returns the best match or undefined if no confident match
|
|
23
|
+
*/
|
|
24
|
+
export declare function detectLanguage(code: string): DetectionResult | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Convert tokens to ANSI-colored string
|
|
27
|
+
*/
|
|
28
|
+
export declare function tokensToAnsi(tokens: Token[]): string;
|
|
29
|
+
/**
|
|
30
|
+
* Highlight code with syntax highlighting, returning ANSI-colored string
|
|
31
|
+
*
|
|
32
|
+
* @param code - The source code to highlight
|
|
33
|
+
* @param language - Language name, alias, or 'auto' for auto-detection
|
|
34
|
+
* @returns ANSI-colored string ready for shellfie
|
|
35
|
+
*/
|
|
36
|
+
export declare function highlight(code: string, language?: string): string;
|
|
37
|
+
export type { DetectionResult, LanguageTokenizer, Token, TokenPattern, TokenType } from './types';
|
|
38
|
+
export { ANSI_RESET, TOKEN_TO_ANSI } from './types';
|
|
39
|
+
export { COMMON_PATTERNS, createCLikePatterns, tokenize, wordBoundary } from './tokenizer';
|
|
40
|
+
export { languages } from './languages';
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAa,MAAM,SAAS,CAAC;AAgBpF;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAGjF;AA4LD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAkCxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAapD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAe,GAAG,MAAM,CAmBzE;AAGD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Syntax Highlighting Module
|
|
4
|
+
*
|
|
5
|
+
* Zero-dependency syntax highlighting that outputs ANSI-colored strings
|
|
6
|
+
* for use with shellfie's SVG renderer.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.languages = exports.wordBoundary = exports.tokenize = exports.createCLikePatterns = exports.COMMON_PATTERNS = exports.TOKEN_TO_ANSI = exports.ANSI_RESET = void 0;
|
|
10
|
+
exports.getLanguage = getLanguage;
|
|
11
|
+
exports.getLanguageNames = getLanguageNames;
|
|
12
|
+
exports.getLanguageByExtension = getLanguageByExtension;
|
|
13
|
+
exports.detectLanguage = detectLanguage;
|
|
14
|
+
exports.tokensToAnsi = tokensToAnsi;
|
|
15
|
+
exports.highlight = highlight;
|
|
16
|
+
const languages_1 = require("./languages");
|
|
17
|
+
const types_1 = require("./types");
|
|
18
|
+
/**
|
|
19
|
+
* Language registry - maps names/aliases to tokenizers
|
|
20
|
+
*/
|
|
21
|
+
const registry = new Map();
|
|
22
|
+
// Build registry from all languages
|
|
23
|
+
for (const lang of languages_1.languages) {
|
|
24
|
+
registry.set(lang.name.toLowerCase(), lang);
|
|
25
|
+
for (const alias of lang.aliases) {
|
|
26
|
+
registry.set(alias.toLowerCase(), lang);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get a language tokenizer by name or alias
|
|
31
|
+
*/
|
|
32
|
+
function getLanguage(name) {
|
|
33
|
+
return registry.get(name.toLowerCase());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get all registered language names
|
|
37
|
+
*/
|
|
38
|
+
function getLanguageNames() {
|
|
39
|
+
return languages_1.languages.map(l => l.name);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a language tokenizer by file extension
|
|
43
|
+
*/
|
|
44
|
+
function getLanguageByExtension(ext) {
|
|
45
|
+
const normalizedExt = ext.startsWith('.') ? ext.toLowerCase() : `.${ext.toLowerCase()}`;
|
|
46
|
+
return languages_1.languages.find(lang => lang.extensions.includes(normalizedExt));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Detection patterns for auto-detection
|
|
50
|
+
*/
|
|
51
|
+
const DETECTION_PATTERNS = [
|
|
52
|
+
// Bash/Shell
|
|
53
|
+
{
|
|
54
|
+
language: 'bash',
|
|
55
|
+
patterns: [
|
|
56
|
+
/^#!/, // Shebang
|
|
57
|
+
/\$\([^)]+\)/, // Command substitution
|
|
58
|
+
/\$\{[^}]+\}/, // Variable expansion
|
|
59
|
+
/\b(echo|export|source|alias)\b/, // Common builtins
|
|
60
|
+
/\b(if|then|else|fi|for|do|done)\b/, // Shell keywords
|
|
61
|
+
/\|\s*(?:grep|sed|awk|xargs)\b/, // Pipe to common tools
|
|
62
|
+
],
|
|
63
|
+
weight: 1,
|
|
64
|
+
},
|
|
65
|
+
// TypeScript (check before JavaScript due to overlap)
|
|
66
|
+
{
|
|
67
|
+
language: 'typescript',
|
|
68
|
+
patterns: [
|
|
69
|
+
/:\s*(?:string|number|boolean|void|any|unknown|never)\b/, // Type annotations
|
|
70
|
+
/\binterface\s+\w+/, // Interface
|
|
71
|
+
/\btype\s+\w+\s*=/, // Type alias
|
|
72
|
+
/<\w+(?:\s*,\s*\w+)*>/, // Generic types
|
|
73
|
+
/\bas\s+\w+/, // Type assertion
|
|
74
|
+
/\?:/, // Optional property
|
|
75
|
+
],
|
|
76
|
+
weight: 2,
|
|
77
|
+
},
|
|
78
|
+
// JavaScript
|
|
79
|
+
{
|
|
80
|
+
language: 'javascript',
|
|
81
|
+
patterns: [
|
|
82
|
+
/\b(const|let|var)\s+\w+\s*=/, // Variable declarations
|
|
83
|
+
/\bfunction\s+\w+\s*\(/, // Function declarations
|
|
84
|
+
/=>\s*[{(]/, // Arrow functions
|
|
85
|
+
/\bclass\s+\w+/, // Class declarations
|
|
86
|
+
/\b(import|export)\s+/, // ES modules
|
|
87
|
+
/\b(async|await)\b/, // Async/await
|
|
88
|
+
/console\.\w+/, // Console usage
|
|
89
|
+
],
|
|
90
|
+
weight: 1,
|
|
91
|
+
},
|
|
92
|
+
// Python
|
|
93
|
+
{
|
|
94
|
+
language: 'python',
|
|
95
|
+
patterns: [
|
|
96
|
+
/^#!.*python/m, // Python shebang
|
|
97
|
+
/\bdef\s+\w+\s*\(/, // Function def
|
|
98
|
+
/\bclass\s+\w+[:(]/, // Class def
|
|
99
|
+
/\bimport\s+\w+/, // Import
|
|
100
|
+
/\bfrom\s+\w+\s+import\b/, // From import
|
|
101
|
+
/:\s*$/m, // Colon at end of line
|
|
102
|
+
/__\w+__/, // Magic methods
|
|
103
|
+
/\bself\./, // Self reference
|
|
104
|
+
],
|
|
105
|
+
weight: 1,
|
|
106
|
+
},
|
|
107
|
+
// JSON
|
|
108
|
+
{
|
|
109
|
+
language: 'json',
|
|
110
|
+
patterns: [
|
|
111
|
+
/^\s*\{[\s\S]*\}\s*$/, // Object
|
|
112
|
+
/^\s*\[[\s\S]*\]\s*$/, // Array
|
|
113
|
+
/"[^"]*"\s*:\s*(?:"[^"]*"|[\d.]+|true|false|null|\{|\[)/, // Key-value
|
|
114
|
+
],
|
|
115
|
+
weight: 1,
|
|
116
|
+
},
|
|
117
|
+
// Go
|
|
118
|
+
{
|
|
119
|
+
language: 'go',
|
|
120
|
+
patterns: [
|
|
121
|
+
/\bpackage\s+\w+/, // Package declaration
|
|
122
|
+
/\bfunc\s+(?:\(\w+\s+\*?\w+\))?\s*\w+/, // Function/method
|
|
123
|
+
/\bgo\s+\w+/, // Goroutine
|
|
124
|
+
/:=\s*/, // Short declaration
|
|
125
|
+
/\bchan\s+/, // Channel
|
|
126
|
+
/\bdefer\s+/, // Defer
|
|
127
|
+
/\bstruct\s*\{/, // Struct
|
|
128
|
+
],
|
|
129
|
+
weight: 1,
|
|
130
|
+
},
|
|
131
|
+
// Rust
|
|
132
|
+
{
|
|
133
|
+
language: 'rust',
|
|
134
|
+
patterns: [
|
|
135
|
+
/\bfn\s+\w+/, // Function
|
|
136
|
+
/\blet\s+(?:mut\s+)?\w+/, // Let binding
|
|
137
|
+
/\bimpl\s+(?:<[^>]+>\s*)?\w+/, // Impl block
|
|
138
|
+
/\bpub\s+(?:fn|struct|enum|mod)\b/, // Public items
|
|
139
|
+
/\bmatch\s+\w+\s*\{/, // Match expression
|
|
140
|
+
/->|=>/, // Arrows
|
|
141
|
+
/&(?:mut\s+)?'?\w+/, // References/lifetimes
|
|
142
|
+
/!$/m, // Macro calls
|
|
143
|
+
],
|
|
144
|
+
weight: 1,
|
|
145
|
+
},
|
|
146
|
+
// Java
|
|
147
|
+
{
|
|
148
|
+
language: 'java',
|
|
149
|
+
patterns: [
|
|
150
|
+
/\bpublic\s+(?:static\s+)?(?:void|class|interface)\b/, // Public decl
|
|
151
|
+
/\bpackage\s+[\w.]+;/, // Package
|
|
152
|
+
/\bimport\s+[\w.*]+;/, // Import
|
|
153
|
+
/\bSystem\.out\./, // System.out
|
|
154
|
+
/@\w+(?:\([^)]*\))?/, // Annotations
|
|
155
|
+
/\bextends\s+\w+/, // Extends
|
|
156
|
+
/\bimplements\s+\w+/, // Implements
|
|
157
|
+
],
|
|
158
|
+
weight: 1,
|
|
159
|
+
},
|
|
160
|
+
// C/C++
|
|
161
|
+
{
|
|
162
|
+
language: 'cpp',
|
|
163
|
+
patterns: [
|
|
164
|
+
/#include\s*[<"]/, // Include
|
|
165
|
+
/#define\s+\w+/, // Define
|
|
166
|
+
/\bint\s+main\s*\(/, // Main function
|
|
167
|
+
/\bstd::/, // STL namespace
|
|
168
|
+
/\btemplate\s*</, // Templates
|
|
169
|
+
/\bnamespace\s+\w+/, // Namespace
|
|
170
|
+
/\bvirtual\s+/, // Virtual
|
|
171
|
+
/->/, // Pointer member access
|
|
172
|
+
/\bnullptr\b/, // nullptr
|
|
173
|
+
],
|
|
174
|
+
weight: 1,
|
|
175
|
+
},
|
|
176
|
+
// C (lower weight than C++ due to overlap)
|
|
177
|
+
{
|
|
178
|
+
language: 'c',
|
|
179
|
+
patterns: [
|
|
180
|
+
/#include\s*[<"]/, // Include
|
|
181
|
+
/\bint\s+main\s*\(/, // Main function
|
|
182
|
+
/\bprintf\s*\(/, // printf
|
|
183
|
+
/\bscanf\s*\(/, // scanf
|
|
184
|
+
/\bmalloc\s*\(/, // malloc
|
|
185
|
+
/\bfree\s*\(/, // free
|
|
186
|
+
/\bNULL\b/, // NULL
|
|
187
|
+
],
|
|
188
|
+
weight: 0.5,
|
|
189
|
+
},
|
|
190
|
+
// C#
|
|
191
|
+
{
|
|
192
|
+
language: 'csharp',
|
|
193
|
+
patterns: [
|
|
194
|
+
/\busing\s+[\w.]+;/, // Using directive
|
|
195
|
+
/\bnamespace\s+[\w.]+/, // Namespace
|
|
196
|
+
/\bpublic\s+(?:partial\s+)?class\b/, // Class declaration
|
|
197
|
+
/\bvar\s+\w+\s*=/, // Var declaration
|
|
198
|
+
/\basync\s+Task/, // Async Task
|
|
199
|
+
/\bawait\s+/, // Await
|
|
200
|
+
/\bLinq\b|\.Select\(|\.Where\(/, // LINQ
|
|
201
|
+
/\bConsole\.Write/, // Console
|
|
202
|
+
],
|
|
203
|
+
weight: 1,
|
|
204
|
+
},
|
|
205
|
+
// HTML/XML
|
|
206
|
+
{
|
|
207
|
+
language: 'html',
|
|
208
|
+
patterns: [
|
|
209
|
+
/<!DOCTYPE\s+html/i, // HTML doctype
|
|
210
|
+
/<html[\s>]/i, // HTML tag
|
|
211
|
+
/<head[\s>]/i, // Head tag
|
|
212
|
+
/<body[\s>]/i, // Body tag
|
|
213
|
+
/<div[\s>]/i, // Div tag
|
|
214
|
+
/<span[\s>]/i, // Span tag
|
|
215
|
+
/<\/\w+>/, // Closing tags
|
|
216
|
+
/<\w+[^>]*\/?>/, // Self-closing or opening tags
|
|
217
|
+
/\s(?:class|id|href|src)="/, // Common attributes
|
|
218
|
+
],
|
|
219
|
+
weight: 1,
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
/**
|
|
223
|
+
* Auto-detect the language of a code snippet
|
|
224
|
+
* Returns the best match or undefined if no confident match
|
|
225
|
+
*/
|
|
226
|
+
function detectLanguage(code) {
|
|
227
|
+
const scores = new Map();
|
|
228
|
+
for (const { language, patterns, weight } of DETECTION_PATTERNS) {
|
|
229
|
+
let matchCount = 0;
|
|
230
|
+
for (const pattern of patterns) {
|
|
231
|
+
if (pattern.test(code)) {
|
|
232
|
+
matchCount++;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (matchCount > 0) {
|
|
236
|
+
const score = (matchCount / patterns.length) * weight;
|
|
237
|
+
const existing = scores.get(language) ?? 0;
|
|
238
|
+
scores.set(language, Math.max(existing, score));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Find the best match
|
|
242
|
+
let bestLang;
|
|
243
|
+
let bestScore = 0;
|
|
244
|
+
for (const [lang, score] of scores) {
|
|
245
|
+
if (score > bestScore) {
|
|
246
|
+
bestScore = score;
|
|
247
|
+
bestLang = lang;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Require minimum confidence
|
|
251
|
+
if (bestLang && bestScore >= 0.15) {
|
|
252
|
+
return { language: bestLang, confidence: bestScore };
|
|
253
|
+
}
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Convert tokens to ANSI-colored string
|
|
258
|
+
*/
|
|
259
|
+
function tokensToAnsi(tokens) {
|
|
260
|
+
let result = '';
|
|
261
|
+
for (const token of tokens) {
|
|
262
|
+
const ansiCode = types_1.TOKEN_TO_ANSI[token.type];
|
|
263
|
+
if (ansiCode) {
|
|
264
|
+
result += ansiCode + token.value + types_1.ANSI_RESET;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
result += token.value;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return result;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Highlight code with syntax highlighting, returning ANSI-colored string
|
|
274
|
+
*
|
|
275
|
+
* @param code - The source code to highlight
|
|
276
|
+
* @param language - Language name, alias, or 'auto' for auto-detection
|
|
277
|
+
* @returns ANSI-colored string ready for shellfie
|
|
278
|
+
*/
|
|
279
|
+
function highlight(code, language = 'auto') {
|
|
280
|
+
let tokenizer;
|
|
281
|
+
if (language === 'auto') {
|
|
282
|
+
const detected = detectLanguage(code);
|
|
283
|
+
if (detected) {
|
|
284
|
+
tokenizer = getLanguage(detected.language);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
tokenizer = getLanguage(language);
|
|
289
|
+
}
|
|
290
|
+
// If no tokenizer found, return code as-is
|
|
291
|
+
if (!tokenizer) {
|
|
292
|
+
return code;
|
|
293
|
+
}
|
|
294
|
+
const tokens = tokenizer.tokenize(code);
|
|
295
|
+
return tokensToAnsi(tokens);
|
|
296
|
+
}
|
|
297
|
+
var types_2 = require("./types");
|
|
298
|
+
Object.defineProperty(exports, "ANSI_RESET", { enumerable: true, get: function () { return types_2.ANSI_RESET; } });
|
|
299
|
+
Object.defineProperty(exports, "TOKEN_TO_ANSI", { enumerable: true, get: function () { return types_2.TOKEN_TO_ANSI; } });
|
|
300
|
+
// Export tokenizer utilities for custom language implementations
|
|
301
|
+
var tokenizer_1 = require("./tokenizer");
|
|
302
|
+
Object.defineProperty(exports, "COMMON_PATTERNS", { enumerable: true, get: function () { return tokenizer_1.COMMON_PATTERNS; } });
|
|
303
|
+
Object.defineProperty(exports, "createCLikePatterns", { enumerable: true, get: function () { return tokenizer_1.createCLikePatterns; } });
|
|
304
|
+
Object.defineProperty(exports, "tokenize", { enumerable: true, get: function () { return tokenizer_1.tokenize; } });
|
|
305
|
+
Object.defineProperty(exports, "wordBoundary", { enumerable: true, get: function () { return tokenizer_1.wordBoundary; } });
|
|
306
|
+
// Export languages
|
|
307
|
+
var languages_2 = require("./languages");
|
|
308
|
+
Object.defineProperty(exports, "languages", { enumerable: true, get: function () { return languages_2.languages; } });
|
|
309
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/bash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAwFvE,eAAO,MAAM,IAAI,EAAE,iBAKlB,CAAC"}
|