@arborium/arborium 2.5.0 → 2.6.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/dist/arborium.d.ts +1 -1
- package/dist/arborium.iife.js +2 -2
- package/dist/arborium.iife.js.map +1 -1
- package/dist/arborium.js +160 -155
- package/dist/arborium.js.map +1 -1
- package/dist/arborium_host.js +9 -9
- package/dist/arborium_host_bg.wasm +0 -0
- package/dist/loader.d.ts +4 -4
- package/dist/plugins-manifest.d.ts +1 -1
- package/dist/themes/alabaster.css +0 -34
- package/dist/themes/ayu-dark.css +0 -34
- package/dist/themes/ayu-light.css +0 -34
- package/dist/themes/catppuccin-frappe.css +0 -34
- package/dist/themes/catppuccin-latte.css +0 -34
- package/dist/themes/catppuccin-macchiato.css +0 -34
- package/dist/themes/catppuccin-mocha.css +0 -34
- package/dist/themes/cobalt2.css +0 -35
- package/dist/themes/dayfox.css +0 -34
- package/dist/themes/desert256.css +0 -50
- package/dist/themes/dracula.css +0 -34
- package/dist/themes/ef-melissa-dark.css +0 -35
- package/dist/themes/github-dark.css +0 -34
- package/dist/themes/github-light.css +0 -34
- package/dist/themes/gruvbox-dark.css +0 -34
- package/dist/themes/gruvbox-light.css +0 -34
- package/dist/themes/kanagawa-dragon.css +0 -34
- package/dist/themes/light-owl.css +0 -54
- package/dist/themes/lucius-light.css +0 -35
- package/dist/themes/melange-dark.css +0 -35
- package/dist/themes/melange-light.css +0 -35
- package/dist/themes/monokai.css +0 -34
- package/dist/themes/nord.css +0 -34
- package/dist/themes/one-dark.css +0 -34
- package/dist/themes/rose-pine-moon.css +0 -35
- package/dist/themes/rustdoc-ayu.css +0 -34
- package/dist/themes/rustdoc-dark.css +0 -34
- package/dist/themes/rustdoc-light.css +0 -34
- package/dist/themes/solarized-dark.css +0 -35
- package/dist/themes/solarized-light.css +0 -35
- package/dist/themes/tokyo-night.css +0 -34
- package/dist/themes/zenburn.css +0 -34
- package/package.json +1 -1
package/dist/arborium.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const L = "2.6.1", _ = [
|
|
2
2
|
"ada",
|
|
3
3
|
"agda",
|
|
4
4
|
"asciidoc",
|
|
@@ -71,6 +71,7 @@ const x = "2.5.0", $ = [
|
|
|
71
71
|
"scala",
|
|
72
72
|
"scheme",
|
|
73
73
|
"scss",
|
|
74
|
+
"solidity",
|
|
74
75
|
"sparql",
|
|
75
76
|
"sql",
|
|
76
77
|
"ssh-config",
|
|
@@ -97,7 +98,7 @@ const x = "2.5.0", $ = [
|
|
|
97
98
|
"yuri",
|
|
98
99
|
"zig",
|
|
99
100
|
"zsh"
|
|
100
|
-
],
|
|
101
|
+
], M = [
|
|
101
102
|
{
|
|
102
103
|
name: "attribute",
|
|
103
104
|
tag: "at"
|
|
@@ -432,21 +433,21 @@ const x = "2.5.0", $ = [
|
|
|
432
433
|
parentTag: "co"
|
|
433
434
|
}
|
|
434
435
|
];
|
|
435
|
-
function y(t,
|
|
436
|
-
const
|
|
437
|
-
let
|
|
438
|
-
for (const
|
|
439
|
-
if (
|
|
440
|
-
|
|
441
|
-
const
|
|
442
|
-
|
|
436
|
+
function y(t, a) {
|
|
437
|
+
const r = [...a].sort((n, o) => n.start - o.start);
|
|
438
|
+
let e = "", s = 0;
|
|
439
|
+
for (const n of r) {
|
|
440
|
+
if (n.start < s) continue;
|
|
441
|
+
n.start > s && (e += u(t.slice(s, n.start)));
|
|
442
|
+
const o = U(n.capture), i = u(t.slice(n.start, n.end));
|
|
443
|
+
o ? e += `<a-${o}>${i}</a-${o}>` : e += i, s = n.end;
|
|
443
444
|
}
|
|
444
|
-
return s < t.length && (
|
|
445
|
+
return s < t.length && (e += u(t.slice(s))), e;
|
|
445
446
|
}
|
|
446
|
-
function
|
|
447
|
+
function U(t) {
|
|
447
448
|
return t.startsWith("keyword") || t === "include" || t === "conditional" ? "k" : t.startsWith("function") || t.startsWith("method") ? "f" : t.startsWith("string") || t === "character" ? "s" : t.startsWith("comment") ? "c" : t.startsWith("type") ? "t" : t.startsWith("variable") ? "v" : t.startsWith("number") || t === "float" ? "n" : t.startsWith("operator") ? "o" : t.startsWith("punctuation") ? "p" : t.startsWith("tag") ? "tg" : t.startsWith("attribute") ? "at" : null;
|
|
448
449
|
}
|
|
449
|
-
function
|
|
450
|
+
function u(t) {
|
|
450
451
|
return t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
451
452
|
}
|
|
452
453
|
const v = {
|
|
@@ -454,184 +455,187 @@ const v = {
|
|
|
454
455
|
theme: "one-dark",
|
|
455
456
|
selector: "pre code",
|
|
456
457
|
cdn: "jsdelivr",
|
|
457
|
-
version:
|
|
458
|
+
version: L,
|
|
458
459
|
// Precise version from manifest
|
|
459
460
|
pluginsUrl: "",
|
|
460
461
|
// Empty means use bundled manifest
|
|
461
462
|
hostUrl: "",
|
|
462
463
|
// Empty means use CDN based on version
|
|
463
|
-
resolveJs: ({ baseUrl: t, path:
|
|
464
|
+
resolveJs: ({ baseUrl: t, path: a }) => import(
|
|
464
465
|
/* @vite-ignore */
|
|
465
|
-
`${t}/${
|
|
466
|
+
`${t}/${a}`
|
|
466
467
|
),
|
|
467
|
-
resolveWasm: ({ baseUrl: t, path:
|
|
468
|
+
resolveWasm: ({ baseUrl: t, path: a }) => fetch(`${t}/${a}`)
|
|
468
469
|
};
|
|
469
|
-
let p = null,
|
|
470
|
-
const h = /* @__PURE__ */ new Map(), T = new Set(
|
|
471
|
-
let l = null,
|
|
472
|
-
async function
|
|
473
|
-
if (
|
|
474
|
-
return
|
|
475
|
-
console.debug(`[arborium] Loading local plugins manifest from: ${
|
|
476
|
-
const
|
|
477
|
-
if (!
|
|
478
|
-
throw new Error(`Failed to load plugins.json: ${
|
|
479
|
-
l = await
|
|
480
|
-
})(),
|
|
470
|
+
let p = null, g = null, d = { ...v };
|
|
471
|
+
const h = /* @__PURE__ */ new Map(), T = new Set(_);
|
|
472
|
+
let l = null, m = null;
|
|
473
|
+
async function E(t) {
|
|
474
|
+
if (t.pluginsUrl)
|
|
475
|
+
return m || (m = (async () => {
|
|
476
|
+
console.debug(`[arborium] Loading local plugins manifest from: ${t.pluginsUrl}`);
|
|
477
|
+
const a = await fetch(t.pluginsUrl);
|
|
478
|
+
if (!a.ok)
|
|
479
|
+
throw new Error(`Failed to load plugins.json: ${a.status}`);
|
|
480
|
+
l = await a.json(), console.debug(`[arborium] Loaded local manifest with ${l?.entries.length} entries`);
|
|
481
|
+
})(), m);
|
|
481
482
|
}
|
|
482
|
-
function
|
|
483
|
+
function W(t, a) {
|
|
483
484
|
if (l) {
|
|
484
|
-
const
|
|
485
|
-
if (
|
|
486
|
-
return
|
|
485
|
+
const n = l.entries.find((o) => o.language === t);
|
|
486
|
+
if (n)
|
|
487
|
+
return n.local_js.substring(0, n.local_js.lastIndexOf("/"));
|
|
487
488
|
}
|
|
488
|
-
const
|
|
489
|
-
let
|
|
490
|
-
return
|
|
489
|
+
const r = a.cdn, e = a.version;
|
|
490
|
+
let s;
|
|
491
|
+
return r === "jsdelivr" ? s = "https://cdn.jsdelivr.net/npm" : r === "unpkg" ? s = "https://unpkg.com" : s = r, `${s}/@arborium/${t}@${e}`;
|
|
491
492
|
}
|
|
492
|
-
async function w(t) {
|
|
493
|
-
const
|
|
494
|
-
if (
|
|
495
|
-
return console.debug(`[arborium] Grammar '${t}' found in cache`),
|
|
496
|
-
if (await
|
|
493
|
+
async function w(t, a) {
|
|
494
|
+
const r = h.get(t);
|
|
495
|
+
if (r)
|
|
496
|
+
return console.debug(`[arborium] Grammar '${t}' found in cache`), r;
|
|
497
|
+
if (await E(a), !T.has(t) && !l?.entries.some((e) => e.language === t))
|
|
497
498
|
return console.debug(`[arborium] Grammar '${t}' not available`), null;
|
|
498
499
|
try {
|
|
499
|
-
const
|
|
500
|
-
console.debug(`[arborium] Loading grammar '${t}'${
|
|
501
|
-
const
|
|
502
|
-
await
|
|
503
|
-
const i =
|
|
500
|
+
const e = W(t, a), s = a.resolveJs === v.resolveJs ? ` from ${e}/grammar.js` : "";
|
|
501
|
+
console.debug(`[arborium] Loading grammar '${t}'${s}`);
|
|
502
|
+
const n = await a.resolveJs({ language: t, baseUrl: e, path: "grammar.js" }), o = await a.resolveWasm({ language: t, baseUrl: e, path: "grammar_bg.wasm" });
|
|
503
|
+
await n.default({ module_or_path: o });
|
|
504
|
+
const i = n.language_id();
|
|
504
505
|
i !== t && console.warn(`[arborium] Language ID mismatch: expected '${t}', got '${i}'`);
|
|
505
|
-
const
|
|
506
|
+
const x = n.injection_languages(), k = {
|
|
506
507
|
languageId: t,
|
|
507
|
-
injectionLanguages:
|
|
508
|
-
module:
|
|
509
|
-
parse: (
|
|
510
|
-
const
|
|
508
|
+
injectionLanguages: x,
|
|
509
|
+
module: n,
|
|
510
|
+
parse: ($) => {
|
|
511
|
+
const b = n.create_session();
|
|
511
512
|
try {
|
|
512
|
-
|
|
513
|
-
const
|
|
513
|
+
n.set_text(b, $);
|
|
514
|
+
const c = n.parse(b);
|
|
514
515
|
return {
|
|
515
|
-
spans:
|
|
516
|
-
injections:
|
|
516
|
+
spans: c.spans || [],
|
|
517
|
+
injections: c.injections || []
|
|
517
518
|
};
|
|
518
|
-
} catch (
|
|
519
|
-
return console.error("[arborium] Parse error:",
|
|
519
|
+
} catch (c) {
|
|
520
|
+
return console.error("[arborium] Parse error:", c), { spans: [], injections: [] };
|
|
520
521
|
} finally {
|
|
521
|
-
|
|
522
|
+
n.free_session(b);
|
|
522
523
|
}
|
|
523
524
|
}
|
|
524
525
|
};
|
|
525
526
|
return h.set(t, k), console.debug(`[arborium] Grammar '${t}' loaded successfully`), k;
|
|
526
|
-
} catch (
|
|
527
|
-
return console.error(`[arborium] Failed to load grammar '${t}':`,
|
|
527
|
+
} catch (e) {
|
|
528
|
+
return console.error(`[arborium] Failed to load grammar '${t}':`, e), null;
|
|
528
529
|
}
|
|
529
530
|
}
|
|
530
|
-
const
|
|
531
|
-
let
|
|
532
|
-
function
|
|
531
|
+
const f = /* @__PURE__ */ new Map();
|
|
532
|
+
let C = 1;
|
|
533
|
+
function S(t) {
|
|
533
534
|
window.arboriumHost = {
|
|
534
535
|
/** Check if a language is available (sync) */
|
|
535
|
-
isLanguageAvailable(
|
|
536
|
-
return T.has(
|
|
536
|
+
isLanguageAvailable(a) {
|
|
537
|
+
return T.has(a) || h.has(a);
|
|
537
538
|
},
|
|
538
539
|
/** Load a grammar and return a handle (async) */
|
|
539
|
-
async loadGrammar(
|
|
540
|
-
const
|
|
541
|
-
if (!
|
|
542
|
-
for (const [
|
|
543
|
-
if (
|
|
544
|
-
const
|
|
545
|
-
return
|
|
540
|
+
async loadGrammar(a) {
|
|
541
|
+
const r = await w(a, t);
|
|
542
|
+
if (!r) return 0;
|
|
543
|
+
for (const [s, n] of f)
|
|
544
|
+
if (n === r) return s;
|
|
545
|
+
const e = C++;
|
|
546
|
+
return f.set(e, r), e;
|
|
546
547
|
},
|
|
547
548
|
/** Parse text using a grammar handle (sync) */
|
|
548
|
-
parse(
|
|
549
|
-
const
|
|
550
|
-
return
|
|
549
|
+
parse(a, r) {
|
|
550
|
+
const e = f.get(a);
|
|
551
|
+
return e ? e.parse(r) : { spans: [], injections: [] };
|
|
551
552
|
}
|
|
552
553
|
};
|
|
553
554
|
}
|
|
554
|
-
function
|
|
555
|
-
if (
|
|
556
|
-
return
|
|
557
|
-
const
|
|
558
|
-
let
|
|
559
|
-
|
|
560
|
-
const
|
|
561
|
-
return `${
|
|
555
|
+
function q(t) {
|
|
556
|
+
if (t.hostUrl)
|
|
557
|
+
return t.hostUrl;
|
|
558
|
+
const a = t.cdn, r = t.version;
|
|
559
|
+
let e;
|
|
560
|
+
a === "jsdelivr" ? e = "https://cdn.jsdelivr.net/npm" : a === "unpkg" ? e = "https://unpkg.com" : e = a;
|
|
561
|
+
const s = r === "latest" ? "" : `@${r}`;
|
|
562
|
+
return `${e}/@arborium/arborium${s}/dist`;
|
|
562
563
|
}
|
|
563
|
-
async function
|
|
564
|
-
return p ||
|
|
565
|
-
|
|
566
|
-
const
|
|
567
|
-
console.debug(`[arborium] Loading host from ${
|
|
564
|
+
async function I(t) {
|
|
565
|
+
return p || g || (g = (async () => {
|
|
566
|
+
S(t);
|
|
567
|
+
const a = q(t), r = `${a}/arborium_host.js`, e = `${a}/arborium_host_bg.wasm`;
|
|
568
|
+
console.debug(`[arborium] Loading host from ${r}`);
|
|
568
569
|
try {
|
|
569
|
-
const
|
|
570
|
+
const s = await import(
|
|
570
571
|
/* @vite-ignore */
|
|
571
|
-
|
|
572
|
+
r
|
|
572
573
|
);
|
|
573
|
-
return await
|
|
574
|
-
highlight:
|
|
575
|
-
isLanguageAvailable:
|
|
574
|
+
return await s.default(e), p = {
|
|
575
|
+
highlight: s.highlight,
|
|
576
|
+
isLanguageAvailable: s.isLanguageAvailable
|
|
576
577
|
}, console.debug("[arborium] Host loaded successfully"), p;
|
|
577
|
-
} catch (
|
|
578
|
-
return console.error("[arborium] Failed to load host:",
|
|
578
|
+
} catch (s) {
|
|
579
|
+
return console.error("[arborium] Failed to load host:", s), null;
|
|
579
580
|
}
|
|
580
|
-
})(),
|
|
581
|
+
})(), g);
|
|
581
582
|
}
|
|
582
|
-
async function
|
|
583
|
-
const
|
|
584
|
-
if (
|
|
583
|
+
async function P(t, a, r) {
|
|
584
|
+
const e = j(r), s = await I(e);
|
|
585
|
+
if (s)
|
|
585
586
|
try {
|
|
586
|
-
return
|
|
587
|
+
return s.highlight(t, a);
|
|
587
588
|
} catch (i) {
|
|
588
589
|
console.warn("Host highlight failed, falling back to JS:", i);
|
|
589
590
|
}
|
|
590
|
-
const
|
|
591
|
-
if (!
|
|
592
|
-
return
|
|
593
|
-
const
|
|
594
|
-
return y(
|
|
591
|
+
const n = await w(t, e);
|
|
592
|
+
if (!n)
|
|
593
|
+
return u(a);
|
|
594
|
+
const o = n.parse(a);
|
|
595
|
+
return y(a, o.spans);
|
|
595
596
|
}
|
|
596
|
-
async function
|
|
597
|
-
const a = await w(t);
|
|
598
|
-
if (!
|
|
599
|
-
const { module:
|
|
597
|
+
async function A(t, a) {
|
|
598
|
+
const r = j(a), e = await w(t, r);
|
|
599
|
+
if (!e) return null;
|
|
600
|
+
const { module: s } = e;
|
|
600
601
|
return {
|
|
601
|
-
languageId: () =>
|
|
602
|
-
injectionLanguages: () =>
|
|
603
|
-
highlight: async (
|
|
604
|
-
const
|
|
605
|
-
return y(
|
|
602
|
+
languageId: () => e.languageId,
|
|
603
|
+
injectionLanguages: () => e.injectionLanguages,
|
|
604
|
+
highlight: async (n) => {
|
|
605
|
+
const o = e.parse(n);
|
|
606
|
+
return y(n, o.spans);
|
|
606
607
|
},
|
|
607
|
-
parse: (
|
|
608
|
+
parse: (n) => e.parse(n),
|
|
608
609
|
createSession: () => {
|
|
609
|
-
const
|
|
610
|
+
const n = s.create_session();
|
|
610
611
|
return {
|
|
611
|
-
setText: (
|
|
612
|
+
setText: (o) => s.set_text(n, o),
|
|
612
613
|
parse: () => {
|
|
613
614
|
try {
|
|
614
|
-
const
|
|
615
|
+
const o = s.parse(n);
|
|
615
616
|
return {
|
|
616
|
-
spans:
|
|
617
|
-
injections:
|
|
617
|
+
spans: o.spans || [],
|
|
618
|
+
injections: o.injections || []
|
|
618
619
|
};
|
|
619
|
-
} catch (
|
|
620
|
-
return console.error("[arborium] Session parse error:",
|
|
620
|
+
} catch (o) {
|
|
621
|
+
return console.error("[arborium] Session parse error:", o), { spans: [], injections: [] };
|
|
621
622
|
}
|
|
622
623
|
},
|
|
623
|
-
cancel: () =>
|
|
624
|
-
free: () =>
|
|
624
|
+
cancel: () => s.cancel(n),
|
|
625
|
+
free: () => s.free_session(n)
|
|
625
626
|
};
|
|
626
627
|
},
|
|
627
628
|
dispose: () => {
|
|
628
629
|
}
|
|
629
630
|
};
|
|
630
631
|
}
|
|
631
|
-
function
|
|
632
|
-
return t ? { ...
|
|
632
|
+
function j(t) {
|
|
633
|
+
return t ? { ...d, ...t } : { ...d };
|
|
634
|
+
}
|
|
635
|
+
function G(t) {
|
|
636
|
+
d = { ...d, ...t };
|
|
633
637
|
}
|
|
634
|
-
const
|
|
638
|
+
const R = [
|
|
635
639
|
[/^#!.*\bpython[23]?\b/, "python"],
|
|
636
640
|
[/^#!.*\bnode\b/, "javascript"],
|
|
637
641
|
[/^#!.*\bdeno\b/, "typescript"],
|
|
@@ -644,7 +648,7 @@ const C = [
|
|
|
644
648
|
[/^#!.*\bsh\b/, "bash"],
|
|
645
649
|
[/^#!.*\blua\b/, "lua"],
|
|
646
650
|
[/^#!.*\bawk\b/, "awk"]
|
|
647
|
-
],
|
|
651
|
+
], H = [
|
|
648
652
|
// Rust - distinctive keywords
|
|
649
653
|
[/\b(fn|impl|trait|pub\s+fn|let\s+mut|&mut|->)\b/, "rust"],
|
|
650
654
|
// Go - distinctive keywords
|
|
@@ -704,23 +708,23 @@ const C = [
|
|
|
704
708
|
// Zig
|
|
705
709
|
[/\b(pub\s+fn|const\s+\w+\s*=|@import\(|comptime)\b/, "zig"]
|
|
706
710
|
];
|
|
707
|
-
function
|
|
708
|
-
const
|
|
711
|
+
function F(t) {
|
|
712
|
+
const a = t.split(`
|
|
709
713
|
`)[0];
|
|
710
|
-
for (const [
|
|
711
|
-
if (
|
|
712
|
-
return
|
|
713
|
-
for (const [
|
|
714
|
-
if (
|
|
715
|
-
return
|
|
714
|
+
for (const [r, e] of R)
|
|
715
|
+
if (r.test(a))
|
|
716
|
+
return e;
|
|
717
|
+
for (const [r, e] of H)
|
|
718
|
+
if (r.test(t))
|
|
719
|
+
return e;
|
|
716
720
|
return null;
|
|
717
721
|
}
|
|
718
|
-
function
|
|
719
|
-
const
|
|
720
|
-
if (e) return e[1];
|
|
721
|
-
const a = t.match(/\blang-(\w+)\b/);
|
|
722
|
+
function O(t) {
|
|
723
|
+
const a = t.match(/\blanguage-(\w+)\b/);
|
|
722
724
|
if (a) return a[1];
|
|
723
|
-
const
|
|
725
|
+
const r = t.match(/\blang-(\w+)\b/);
|
|
726
|
+
if (r) return r[1];
|
|
727
|
+
const e = /* @__PURE__ */ new Set([
|
|
724
728
|
"rust",
|
|
725
729
|
"javascript",
|
|
726
730
|
"typescript",
|
|
@@ -757,12 +761,12 @@ function G(t) {
|
|
|
757
761
|
"sh"
|
|
758
762
|
]);
|
|
759
763
|
for (const s of t.split(/\s+/))
|
|
760
|
-
if (
|
|
764
|
+
if (e.has(s.toLowerCase()))
|
|
761
765
|
return s.toLowerCase();
|
|
762
766
|
return null;
|
|
763
767
|
}
|
|
764
|
-
function
|
|
765
|
-
const
|
|
768
|
+
function z(t) {
|
|
769
|
+
const a = {
|
|
766
770
|
js: "javascript",
|
|
767
771
|
ts: "typescript",
|
|
768
772
|
py: "python",
|
|
@@ -782,19 +786,20 @@ function F(t) {
|
|
|
782
786
|
plaintext: "text",
|
|
783
787
|
plain: "text",
|
|
784
788
|
txt: "text"
|
|
785
|
-
},
|
|
786
|
-
return
|
|
789
|
+
}, r = t.toLowerCase();
|
|
790
|
+
return a[r] || r;
|
|
787
791
|
}
|
|
788
792
|
export {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
793
|
+
_ as availableLanguages,
|
|
794
|
+
F as detectLanguage,
|
|
795
|
+
O as extractLanguageFromClass,
|
|
796
|
+
j as getConfig,
|
|
797
|
+
P as highlight,
|
|
798
|
+
M as highlights,
|
|
799
|
+
A as loadGrammar,
|
|
800
|
+
z as normalizeLanguage,
|
|
801
|
+
L as pluginVersion,
|
|
802
|
+
G as setConfig,
|
|
798
803
|
y as spansToHtml
|
|
799
804
|
};
|
|
800
805
|
//# sourceMappingURL=arborium.js.map
|