File size: 1,711 Bytes
39371ea | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import './prism-worker-setup.mjs';
import Prism from 'prismjs/components/prism-core.js';
import 'prismjs/components/prism-markup.js';
import 'prismjs/components/prism-css.js';
import 'prismjs/components/prism-clike.js';
import 'prismjs/components/prism-javascript.js';
import 'prismjs/components/prism-typescript.js';
import 'prismjs/components/prism-jsx.js';
import 'prismjs/components/prism-tsx.js';
import 'prismjs/components/prism-json.js';
import 'prismjs/components/prism-yaml.js';
import 'prismjs/components/prism-markdown.js';
import 'prismjs/components/prism-python.js';
import 'prismjs/components/prism-bash.js';
import 'prismjs/components/prism-toml.js';
import 'prismjs/components/prism-sql.js';
import 'prismjs/components/prism-csv.js';
import 'prismjs/components/prism-c.js';
import 'prismjs/components/prism-cpp.js';
import 'prismjs/components/prism-csharp.js';
import 'prismjs/components/prism-java.js';
import 'prismjs/components/prism-go.js';
import 'prismjs/components/prism-rust.js';
import 'prismjs/components/prism-diff.js';
import 'prismjs/components/prism-docker.js';
import { canHighlight } from './editor-language.mjs';
Prism.manual = true;
self.onmessage = ({ data: { id, text, language } }) => {
let html = null;
try {
if (canHighlight(text) && Prism.languages[language]) {
const highlighted = Prism.highlight(text, Prism.languages[language], language);
// Avoid building a huge DOM even for short, unusually token-dense files.
if (highlighted.length < 1_000_000 && (highlighted.match(/<span /g)?.length ?? 0) < 12_000) html = highlighted;
}
} catch { /* A grammar failure must never prevent editing a file. */ }
self.postMessage({ id, html });
};
|