write-language 0.1.38 → 0.1.39

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "write-language",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "Multi-provider language generation toolkit using Vercel AI SDK - generate responses with 10+ LLM providers including OpenAI, Anthropic, Google, and more.",
5
5
  "author": "vtempest <grokthiscontact@gmail.com>",
6
6
  "license": "rights.institute/PROSPER",
package/src/index.ts CHANGED
@@ -38,3 +38,4 @@ export {
38
38
  export type { ModelCapability, ModelInfo } from "./language-model-registry";
39
39
  export { createLLMProvider } from "./provider-factory";
40
40
  export { convertMarkdownToHTMLEscaped as markdownToHTML } from "./utils/markdown-to-html";
41
+ export { highlightCode, Prism } from "./utils/prism";
@@ -3,24 +3,7 @@
3
3
  * @description Converts Markdown to HTML with Prism.js syntax highlighting.
4
4
  */
5
5
  import { marked } from "marked";
6
- import Prism from "prismjs";
7
- import "prismjs/components/prism-markup";
8
- import "prismjs/components/prism-css";
9
- import "prismjs/components/prism-javascript";
10
- import "prismjs/components/prism-typescript";
11
- import "prismjs/components/prism-jsx";
12
- import "prismjs/components/prism-tsx";
13
- import "prismjs/components/prism-python";
14
- import "prismjs/components/prism-bash";
15
- import "prismjs/components/prism-json";
16
- import "prismjs/components/prism-yaml";
17
- import "prismjs/components/prism-markdown";
18
- import "prismjs/components/prism-sql";
19
- import "prismjs/components/prism-rust";
20
- import "prismjs/components/prism-go";
21
- import "prismjs/components/prism-java";
22
- import "prismjs/components/prism-c";
23
- import "prismjs/components/prism-cpp";
6
+ import { highlightCode } from "./prism";
24
7
  import { encode, decode } from "html-entities";
25
8
 
26
9
  // Inline onclick: self-contained per button, works in dangerouslySetInnerHTML contexts
@@ -45,11 +28,8 @@ marked.use({
45
28
  let highlighted: string;
46
29
 
47
30
  try {
48
- if (language && Prism.languages[language]) {
49
- highlighted = Prism.highlight(text, Prism.languages[language], language);
50
- } else {
51
- highlighted = encode(text);
52
- }
31
+ const result = highlightCode(text, language);
32
+ highlighted = result ?? encode(text);
53
33
  } catch (e) {
54
34
  highlighted = encode(text);
55
35
  }
@@ -0,0 +1,26 @@
1
+ import Prism from "prismjs";
2
+ import "prismjs/components/prism-markup";
3
+ import "prismjs/components/prism-css";
4
+ import "prismjs/components/prism-javascript";
5
+ import "prismjs/components/prism-typescript";
6
+ import "prismjs/components/prism-jsx";
7
+ import "prismjs/components/prism-tsx";
8
+ import "prismjs/components/prism-python";
9
+ import "prismjs/components/prism-bash";
10
+ import "prismjs/components/prism-json";
11
+ import "prismjs/components/prism-yaml";
12
+ import "prismjs/components/prism-markdown";
13
+ import "prismjs/components/prism-sql";
14
+ import "prismjs/components/prism-rust";
15
+ import "prismjs/components/prism-go";
16
+ import "prismjs/components/prism-java";
17
+ import "prismjs/components/prism-c";
18
+ import "prismjs/components/prism-cpp";
19
+
20
+ export function highlightCode(code: string, lang: string): string | null {
21
+ const grammar = Prism.languages[lang];
22
+ if (!grammar) return null;
23
+ return Prism.highlight(code, grammar, lang);
24
+ }
25
+
26
+ export { Prism };