@blcklab/yuirinx 0.1.1
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/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/cjs/core/index.cjs +572 -0
- package/dist/cjs/index.cjs +600 -0
- package/dist/cjs/languages/bash.cjs +145 -0
- package/dist/cjs/languages/c.cjs +177 -0
- package/dist/cjs/languages/cpp.cjs +235 -0
- package/dist/cjs/languages/csharp.cjs +223 -0
- package/dist/cjs/languages/css.cjs +94 -0
- package/dist/cjs/languages/dart.cjs +204 -0
- package/dist/cjs/languages/dockerfile.cjs +80 -0
- package/dist/cjs/languages/go.cjs +185 -0
- package/dist/cjs/languages/graphql.cjs +91 -0
- package/dist/cjs/languages/html.cjs +74 -0
- package/dist/cjs/languages/ini.cjs +54 -0
- package/dist/cjs/languages/java.cjs +202 -0
- package/dist/cjs/languages/javascript.cjs +262 -0
- package/dist/cjs/languages/json.cjs +60 -0
- package/dist/cjs/languages/jsx.cjs +263 -0
- package/dist/cjs/languages/kotlin.cjs +211 -0
- package/dist/cjs/languages/markdown.cjs +70 -0
- package/dist/cjs/languages/nginx.cjs +57 -0
- package/dist/cjs/languages/php.cjs +194 -0
- package/dist/cjs/languages/plaintext.cjs +34 -0
- package/dist/cjs/languages/python.cjs +200 -0
- package/dist/cjs/languages/ruby.cjs +117 -0
- package/dist/cjs/languages/rust.cjs +179 -0
- package/dist/cjs/languages/scss.cjs +98 -0
- package/dist/cjs/languages/shell.cjs +145 -0
- package/dist/cjs/languages/sql.cjs +150 -0
- package/dist/cjs/languages/svelte.cjs +74 -0
- package/dist/cjs/languages/swift.cjs +216 -0
- package/dist/cjs/languages/toml.cjs +63 -0
- package/dist/cjs/languages/tsx.cjs +264 -0
- package/dist/cjs/languages/typescript.cjs +263 -0
- package/dist/cjs/languages/vue.cjs +74 -0
- package/dist/cjs/languages/xml.cjs +77 -0
- package/dist/cjs/languages/yaml.cjs +65 -0
- package/dist/cjs/themes/index.cjs +222 -0
- package/dist/cjs/themes/yuirinx-aurora.cjs +90 -0
- package/dist/cjs/themes/yuirinx-noir.cjs +90 -0
- package/dist/cjs/themes/yuirinx-pearl.cjs +90 -0
- package/dist/esm/core/index.js +542 -0
- package/dist/esm/index.js +565 -0
- package/dist/esm/languages/bash.js +118 -0
- package/dist/esm/languages/c.js +150 -0
- package/dist/esm/languages/cpp.js +208 -0
- package/dist/esm/languages/csharp.js +196 -0
- package/dist/esm/languages/css.js +67 -0
- package/dist/esm/languages/dart.js +177 -0
- package/dist/esm/languages/dockerfile.js +53 -0
- package/dist/esm/languages/go.js +158 -0
- package/dist/esm/languages/graphql.js +64 -0
- package/dist/esm/languages/html.js +47 -0
- package/dist/esm/languages/ini.js +27 -0
- package/dist/esm/languages/java.js +175 -0
- package/dist/esm/languages/javascript.js +235 -0
- package/dist/esm/languages/json.js +33 -0
- package/dist/esm/languages/jsx.js +236 -0
- package/dist/esm/languages/kotlin.js +184 -0
- package/dist/esm/languages/markdown.js +43 -0
- package/dist/esm/languages/nginx.js +30 -0
- package/dist/esm/languages/php.js +167 -0
- package/dist/esm/languages/plaintext.js +9 -0
- package/dist/esm/languages/python.js +173 -0
- package/dist/esm/languages/ruby.js +90 -0
- package/dist/esm/languages/rust.js +152 -0
- package/dist/esm/languages/scss.js +71 -0
- package/dist/esm/languages/shell.js +118 -0
- package/dist/esm/languages/sql.js +123 -0
- package/dist/esm/languages/svelte.js +47 -0
- package/dist/esm/languages/swift.js +189 -0
- package/dist/esm/languages/toml.js +36 -0
- package/dist/esm/languages/tsx.js +237 -0
- package/dist/esm/languages/typescript.js +236 -0
- package/dist/esm/languages/vue.js +47 -0
- package/dist/esm/languages/xml.js +50 -0
- package/dist/esm/languages/yaml.js +38 -0
- package/dist/esm/themes/index.js +193 -0
- package/dist/esm/themes/yuirinx-aurora.js +65 -0
- package/dist/esm/themes/yuirinx-noir.js +65 -0
- package/dist/esm/themes/yuirinx-pearl.js +65 -0
- package/dist/types/core/create-highlighter.d.cts +3 -0
- package/dist/types/core/create-highlighter.d.ts +3 -0
- package/dist/types/core/errors.d.cts +6 -0
- package/dist/types/core/errors.d.ts +6 -0
- package/dist/types/core/escape.d.cts +2 -0
- package/dist/types/core/escape.d.ts +2 -0
- package/dist/types/core/grammar.d.cts +14 -0
- package/dist/types/core/grammar.d.ts +14 -0
- package/dist/types/core/index.d.cts +6 -0
- package/dist/types/core/index.d.ts +6 -0
- package/dist/types/core/renderer.d.cts +6 -0
- package/dist/types/core/renderer.d.ts +6 -0
- package/dist/types/core/tokenizer.d.cts +3 -0
- package/dist/types/core/tokenizer.d.ts +3 -0
- package/dist/types/core/types.d.cts +134 -0
- package/dist/types/core/types.d.ts +134 -0
- package/dist/types/index.d.cts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/languages/bash.d.cts +3 -0
- package/dist/types/languages/bash.d.ts +3 -0
- package/dist/types/languages/c.d.cts +2 -0
- package/dist/types/languages/c.d.ts +2 -0
- package/dist/types/languages/cpp.d.cts +2 -0
- package/dist/types/languages/cpp.d.ts +2 -0
- package/dist/types/languages/csharp.d.cts +2 -0
- package/dist/types/languages/csharp.d.ts +2 -0
- package/dist/types/languages/css.d.cts +2 -0
- package/dist/types/languages/css.d.ts +2 -0
- package/dist/types/languages/dart.d.cts +2 -0
- package/dist/types/languages/dart.d.ts +2 -0
- package/dist/types/languages/dockerfile.d.cts +3 -0
- package/dist/types/languages/dockerfile.d.ts +3 -0
- package/dist/types/languages/go.d.cts +2 -0
- package/dist/types/languages/go.d.ts +2 -0
- package/dist/types/languages/graphql.d.cts +3 -0
- package/dist/types/languages/graphql.d.ts +3 -0
- package/dist/types/languages/html.d.cts +2 -0
- package/dist/types/languages/html.d.ts +2 -0
- package/dist/types/languages/ini.d.cts +3 -0
- package/dist/types/languages/ini.d.ts +3 -0
- package/dist/types/languages/java.d.cts +2 -0
- package/dist/types/languages/java.d.ts +2 -0
- package/dist/types/languages/javascript.d.cts +2 -0
- package/dist/types/languages/javascript.d.ts +2 -0
- package/dist/types/languages/json.d.cts +3 -0
- package/dist/types/languages/json.d.ts +3 -0
- package/dist/types/languages/jsx.d.cts +2 -0
- package/dist/types/languages/jsx.d.ts +2 -0
- package/dist/types/languages/kotlin.d.cts +2 -0
- package/dist/types/languages/kotlin.d.ts +2 -0
- package/dist/types/languages/markdown.d.cts +3 -0
- package/dist/types/languages/markdown.d.ts +3 -0
- package/dist/types/languages/nginx.d.cts +3 -0
- package/dist/types/languages/nginx.d.ts +3 -0
- package/dist/types/languages/php.d.cts +3 -0
- package/dist/types/languages/php.d.ts +3 -0
- package/dist/types/languages/plaintext.d.cts +3 -0
- package/dist/types/languages/plaintext.d.ts +3 -0
- package/dist/types/languages/python.d.cts +3 -0
- package/dist/types/languages/python.d.ts +3 -0
- package/dist/types/languages/ruby.d.cts +3 -0
- package/dist/types/languages/ruby.d.ts +3 -0
- package/dist/types/languages/rust.d.cts +2 -0
- package/dist/types/languages/rust.d.ts +2 -0
- package/dist/types/languages/scss.d.cts +2 -0
- package/dist/types/languages/scss.d.ts +2 -0
- package/dist/types/languages/shell.d.cts +1 -0
- package/dist/types/languages/shell.d.ts +1 -0
- package/dist/types/languages/sql.d.cts +3 -0
- package/dist/types/languages/sql.d.ts +3 -0
- package/dist/types/languages/svelte.d.cts +2 -0
- package/dist/types/languages/svelte.d.ts +2 -0
- package/dist/types/languages/swift.d.cts +2 -0
- package/dist/types/languages/swift.d.ts +2 -0
- package/dist/types/languages/toml.d.cts +3 -0
- package/dist/types/languages/toml.d.ts +3 -0
- package/dist/types/languages/tsx.d.cts +2 -0
- package/dist/types/languages/tsx.d.ts +2 -0
- package/dist/types/languages/typescript.d.cts +2 -0
- package/dist/types/languages/typescript.d.ts +2 -0
- package/dist/types/languages/vue.d.cts +2 -0
- package/dist/types/languages/vue.d.ts +2 -0
- package/dist/types/languages/xml.d.cts +2 -0
- package/dist/types/languages/xml.d.ts +2 -0
- package/dist/types/languages/yaml.d.cts +3 -0
- package/dist/types/languages/yaml.d.ts +3 -0
- package/dist/types/singleton.d.cts +11 -0
- package/dist/types/singleton.d.ts +11 -0
- package/dist/types/themes/index.d.cts +3 -0
- package/dist/types/themes/index.d.ts +3 -0
- package/dist/types/themes/yuirinx-aurora.d.cts +3 -0
- package/dist/types/themes/yuirinx-aurora.d.ts +3 -0
- package/dist/types/themes/yuirinx-noir.d.cts +3 -0
- package/dist/types/themes/yuirinx-noir.d.ts +3 -0
- package/dist/types/themes/yuirinx-pearl.d.cts +3 -0
- package/dist/types/themes/yuirinx-pearl.d.ts +3 -0
- package/package.json +471 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/** A registered language identifier or alias. */
|
|
2
|
+
export type LanguageId = string;
|
|
3
|
+
/** A registered theme identifier. */
|
|
4
|
+
export type ThemeId = string;
|
|
5
|
+
/** A semantic token classification such as `keyword` or `string.escape`. */
|
|
6
|
+
export type TokenType = string;
|
|
7
|
+
/** A named lexical state inside a grammar. */
|
|
8
|
+
export type StateName = string;
|
|
9
|
+
/** A source token. Offsets use JavaScript UTF-16 string indices. */
|
|
10
|
+
export interface Token {
|
|
11
|
+
readonly type: TokenType;
|
|
12
|
+
readonly value: string;
|
|
13
|
+
readonly start: number;
|
|
14
|
+
readonly end: number;
|
|
15
|
+
}
|
|
16
|
+
/** One active lexical state exposed to rule resolver callbacks. */
|
|
17
|
+
export interface TokenizerState {
|
|
18
|
+
readonly name: StateName;
|
|
19
|
+
readonly language: LanguageId;
|
|
20
|
+
}
|
|
21
|
+
/** Read-only context passed to dynamic grammar rule resolvers. */
|
|
22
|
+
export interface TokenizerContext {
|
|
23
|
+
readonly language: LanguageId;
|
|
24
|
+
readonly state: StateName;
|
|
25
|
+
readonly stack: readonly TokenizerState[];
|
|
26
|
+
readonly offset: number;
|
|
27
|
+
}
|
|
28
|
+
/** Static token type or a resolver based on the current regex match. */
|
|
29
|
+
export type TokenTypeResolver = TokenType | ((match: RegExpExecArray, context: TokenizerContext) => TokenType);
|
|
30
|
+
/** Static state name or a resolver based on the current regex match. */
|
|
31
|
+
export type StateResolver = StateName | ((match: RegExpExecArray, context: TokenizerContext) => StateName);
|
|
32
|
+
/** A matching grammar rule. Patterns are automatically made sticky. */
|
|
33
|
+
export interface MatchRule {
|
|
34
|
+
readonly pattern: RegExp;
|
|
35
|
+
readonly type?: TokenTypeResolver;
|
|
36
|
+
readonly push?: StateResolver;
|
|
37
|
+
readonly next?: StateResolver;
|
|
38
|
+
readonly pop?: boolean | number;
|
|
39
|
+
}
|
|
40
|
+
/** Includes another state’s rules at the current precedence position. */
|
|
41
|
+
export interface IncludeRule {
|
|
42
|
+
readonly include: StateName;
|
|
43
|
+
}
|
|
44
|
+
/** One ordered grammar rule. */
|
|
45
|
+
export type GrammarRule = MatchRule | IncludeRule;
|
|
46
|
+
/** A lexical state and its ordered rules. */
|
|
47
|
+
export interface GrammarState {
|
|
48
|
+
readonly rules: readonly GrammarRule[];
|
|
49
|
+
readonly fallbackType?: TokenType;
|
|
50
|
+
}
|
|
51
|
+
/** A complete language grammar. */
|
|
52
|
+
export interface Grammar {
|
|
53
|
+
readonly id: LanguageId;
|
|
54
|
+
readonly aliases?: readonly LanguageId[];
|
|
55
|
+
readonly initialState?: StateName;
|
|
56
|
+
readonly states: Readonly<Record<StateName, GrammarState>>;
|
|
57
|
+
}
|
|
58
|
+
/** Allowed visual style fields for a token. */
|
|
59
|
+
export interface TokenStyle {
|
|
60
|
+
readonly color?: string;
|
|
61
|
+
readonly backgroundColor?: string;
|
|
62
|
+
readonly fontStyle?: "normal" | "italic";
|
|
63
|
+
readonly fontWeight?: "normal" | "medium" | "semibold" | "bold";
|
|
64
|
+
readonly textDecoration?: "none" | "underline" | "line-through";
|
|
65
|
+
}
|
|
66
|
+
/** A serializable syntax highlighting theme. */
|
|
67
|
+
export interface Theme {
|
|
68
|
+
readonly id: ThemeId;
|
|
69
|
+
readonly name: string;
|
|
70
|
+
readonly type: "light" | "dark";
|
|
71
|
+
readonly foreground: string;
|
|
72
|
+
readonly background: string;
|
|
73
|
+
readonly selection?: string;
|
|
74
|
+
readonly lineHighlight?: string;
|
|
75
|
+
/** Curated colors used by the optional deterministic line-color fallback. */
|
|
76
|
+
readonly fallbackPalette?: readonly string[];
|
|
77
|
+
readonly tokens: Readonly<Record<TokenType, TokenStyle>>;
|
|
78
|
+
}
|
|
79
|
+
/** HTML rendering strategy. */
|
|
80
|
+
export type RenderMode = "inline" | "classes";
|
|
81
|
+
/** Behavior used when a requested language is unavailable. */
|
|
82
|
+
export type FallbackMode = "plaintext" | "color-lines";
|
|
83
|
+
/** Options for highlighting source code. */
|
|
84
|
+
export interface HighlightOptions {
|
|
85
|
+
readonly lang?: LanguageId | Grammar;
|
|
86
|
+
readonly theme?: ThemeId | Theme;
|
|
87
|
+
/** Unknown-language behavior. Defaults to `plaintext`. */
|
|
88
|
+
readonly fallback?: FallbackMode;
|
|
89
|
+
readonly mode?: RenderMode;
|
|
90
|
+
readonly wrap?: boolean;
|
|
91
|
+
readonly classPrefix?: string;
|
|
92
|
+
readonly preClass?: string;
|
|
93
|
+
readonly codeClass?: string;
|
|
94
|
+
}
|
|
95
|
+
/** Options for rendering an existing token array. */
|
|
96
|
+
export interface RenderOptions {
|
|
97
|
+
readonly theme?: ThemeId | Theme;
|
|
98
|
+
readonly mode?: RenderMode;
|
|
99
|
+
readonly wrap?: boolean;
|
|
100
|
+
readonly classPrefix?: string;
|
|
101
|
+
readonly language?: LanguageId;
|
|
102
|
+
readonly preClass?: string;
|
|
103
|
+
readonly codeClass?: string;
|
|
104
|
+
}
|
|
105
|
+
/** Options for converting a theme object to CSS classes. */
|
|
106
|
+
export interface ThemeCssOptions {
|
|
107
|
+
readonly selector?: string;
|
|
108
|
+
readonly classPrefix?: string;
|
|
109
|
+
readonly includeContainer?: boolean;
|
|
110
|
+
}
|
|
111
|
+
/** Initial configuration for an isolated highlighter. */
|
|
112
|
+
export interface HighlighterOptions {
|
|
113
|
+
readonly languages?: readonly Grammar[];
|
|
114
|
+
readonly themes?: readonly Theme[];
|
|
115
|
+
readonly defaultLanguage?: LanguageId;
|
|
116
|
+
readonly defaultTheme?: ThemeId;
|
|
117
|
+
/** Default behavior for unavailable language IDs. */
|
|
118
|
+
readonly defaultFallback?: FallbackMode;
|
|
119
|
+
readonly maxStateDepth?: number;
|
|
120
|
+
}
|
|
121
|
+
/** Isolated registry, tokenizer, and renderer facade. */
|
|
122
|
+
export interface Highlighter {
|
|
123
|
+
highlight(code: string, options: HighlightOptions): string;
|
|
124
|
+
tokenize(code: string, language: LanguageId | Grammar): Token[];
|
|
125
|
+
render(tokens: readonly Token[], options?: RenderOptions): string;
|
|
126
|
+
registerLanguage(grammar: Grammar): void;
|
|
127
|
+
registerTheme(theme: Theme): void;
|
|
128
|
+
hasLanguage(language: LanguageId): boolean;
|
|
129
|
+
hasTheme(theme: ThemeId): boolean;
|
|
130
|
+
getLanguage(language: LanguageId): Grammar | undefined;
|
|
131
|
+
getTheme(theme: ThemeId): Theme | undefined;
|
|
132
|
+
listLanguages(): readonly LanguageId[];
|
|
133
|
+
listThemes(): readonly ThemeId[];
|
|
134
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { bash as shell } from "./bash.cjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { bash as shell } from "./bash.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Grammar, HighlightOptions, RenderOptions, Theme, Token } from "./core/types.cjs";
|
|
2
|
+
/** Highlights code through Yuirinx's convenience singleton registry. */
|
|
3
|
+
export declare function highlight(code: string, options: HighlightOptions): string;
|
|
4
|
+
/** Tokenizes code through Yuirinx's convenience singleton registry. */
|
|
5
|
+
export declare function tokenize(code: string, language: string | Grammar): Token[];
|
|
6
|
+
/** Renders tokens through Yuirinx's convenience singleton registry. */
|
|
7
|
+
export declare function render(tokens: readonly Token[], options?: RenderOptions): string;
|
|
8
|
+
/** Registers a language in the convenience singleton registry. */
|
|
9
|
+
export declare function registerLanguage(grammar: Grammar): void;
|
|
10
|
+
/** Registers a theme in the convenience singleton registry. */
|
|
11
|
+
export declare function registerTheme(theme: Theme): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Grammar, HighlightOptions, RenderOptions, Theme, Token } from "./core/types.js";
|
|
2
|
+
/** Highlights code through Yuirinx's convenience singleton registry. */
|
|
3
|
+
export declare function highlight(code: string, options: HighlightOptions): string;
|
|
4
|
+
/** Tokenizes code through Yuirinx's convenience singleton registry. */
|
|
5
|
+
export declare function tokenize(code: string, language: string | Grammar): Token[];
|
|
6
|
+
/** Renders tokens through Yuirinx's convenience singleton registry. */
|
|
7
|
+
export declare function render(tokens: readonly Token[], options?: RenderOptions): string;
|
|
8
|
+
/** Registers a language in the convenience singleton registry. */
|
|
9
|
+
export declare function registerLanguage(grammar: Grammar): void;
|
|
10
|
+
/** Registers a theme in the convenience singleton registry. */
|
|
11
|
+
export declare function registerTheme(theme: Theme): void;
|