@arborium/arborium 2.10.0 → 2.11.0
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 +171 -185
- package/dist/arborium.js.map +1 -1
- package/dist/arborium_host.js +3 -3
- package/dist/arborium_host_bg.wasm +0 -0
- package/dist/loader.d.ts +0 -1
- package/dist/plugins-manifest.d.ts +1 -1
- package/dist/types.d.ts +80 -15
- package/dist/utils.d.ts +0 -14
- package/package.json +1 -1
- /package/dist/{loader.test.d.ts → highlight.test.d.ts} +0 -0
package/dist/arborium.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const x = "2.11.0", $ = [
|
|
2
2
|
"ada",
|
|
3
3
|
"agda",
|
|
4
4
|
"asciidoc",
|
|
@@ -78,6 +78,7 @@ const U = "2.10.0", _ = [
|
|
|
78
78
|
"sql",
|
|
79
79
|
"ssh-config",
|
|
80
80
|
"starlark",
|
|
81
|
+
"styx",
|
|
81
82
|
"svelte",
|
|
82
83
|
"swift",
|
|
83
84
|
"textproto",
|
|
@@ -100,7 +101,7 @@ const U = "2.10.0", _ = [
|
|
|
100
101
|
"yuri",
|
|
101
102
|
"zig",
|
|
102
103
|
"zsh"
|
|
103
|
-
],
|
|
104
|
+
], R = [
|
|
104
105
|
{
|
|
105
106
|
name: "attribute",
|
|
106
107
|
tag: "at"
|
|
@@ -433,215 +434,201 @@ const U = "2.10.0", _ = [
|
|
|
433
434
|
name: "boolean",
|
|
434
435
|
tag: "cb"
|
|
435
436
|
}
|
|
436
|
-
]
|
|
437
|
-
function
|
|
438
|
-
|
|
439
|
-
let s = 0, n = 0;
|
|
440
|
-
for (const r of t) {
|
|
441
|
-
a[s] = n;
|
|
442
|
-
const o = T.encode(r).length;
|
|
443
|
-
for (let i = 1; i < o; i++)
|
|
444
|
-
a[s + i] = n;
|
|
445
|
-
s += o, n += r.codePointAt(0) >= 65536 ? 2 : 1;
|
|
446
|
-
}
|
|
447
|
-
return a[s] = n, a;
|
|
448
|
-
}
|
|
449
|
-
function x(t, e) {
|
|
450
|
-
const a = E(t), n = [...e.map((i) => ({
|
|
451
|
-
...i,
|
|
452
|
-
start: a[i.start] ?? i.start,
|
|
453
|
-
end: a[i.end] ?? i.end
|
|
454
|
-
}))].sort((i, l) => i.start - l.start);
|
|
455
|
-
let r = "", o = 0;
|
|
456
|
-
for (const i of n) {
|
|
457
|
-
if (i.start < o) continue;
|
|
458
|
-
i.start > o && (r += f(t.slice(o, i.start)));
|
|
459
|
-
const l = S(i.capture), m = f(t.slice(i.start, i.end));
|
|
460
|
-
l ? r += `<a-${l}>${m}</a-${l}>` : r += m, o = i.end;
|
|
461
|
-
}
|
|
462
|
-
return o < t.length && (r += f(t.slice(o))), r;
|
|
463
|
-
}
|
|
464
|
-
function S(t) {
|
|
465
|
-
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;
|
|
466
|
-
}
|
|
467
|
-
function f(t) {
|
|
468
|
-
return t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
437
|
+
];
|
|
438
|
+
function L(e) {
|
|
439
|
+
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
469
440
|
}
|
|
470
|
-
const
|
|
441
|
+
const y = {
|
|
471
442
|
manual: !1,
|
|
472
443
|
theme: "one-dark",
|
|
473
444
|
selector: "pre code",
|
|
474
445
|
cdn: "jsdelivr",
|
|
475
|
-
version:
|
|
446
|
+
version: x,
|
|
476
447
|
// Precise version from manifest
|
|
477
448
|
pluginsUrl: "",
|
|
478
449
|
// Empty means use bundled manifest
|
|
479
450
|
hostUrl: "",
|
|
480
451
|
// Empty means use CDN based on version
|
|
481
|
-
resolveJs: ({ baseUrl:
|
|
452
|
+
resolveJs: ({ baseUrl: e, path: t }) => import(
|
|
482
453
|
/* @vite-ignore */
|
|
483
|
-
`${
|
|
454
|
+
`${e}/${t}`
|
|
484
455
|
),
|
|
485
|
-
resolveWasm: ({ baseUrl:
|
|
456
|
+
resolveWasm: ({ baseUrl: e, path: t }) => fetch(`${e}/${t}`)
|
|
486
457
|
};
|
|
487
|
-
let
|
|
488
|
-
const
|
|
489
|
-
let c = null,
|
|
490
|
-
async function
|
|
491
|
-
if (
|
|
492
|
-
return
|
|
493
|
-
console.debug(`[arborium] Loading local plugins manifest from: ${
|
|
494
|
-
const
|
|
495
|
-
if (!
|
|
496
|
-
throw new Error(`Failed to load plugins.json: ${
|
|
497
|
-
c = await
|
|
498
|
-
})(),
|
|
458
|
+
let p = null, m = null, g = { ...y };
|
|
459
|
+
const h = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), k = new Set($);
|
|
460
|
+
let c = null, u = null;
|
|
461
|
+
async function _(e) {
|
|
462
|
+
if (e.pluginsUrl)
|
|
463
|
+
return u || (u = (async () => {
|
|
464
|
+
console.debug(`[arborium] Loading local plugins manifest from: ${e.pluginsUrl}`);
|
|
465
|
+
const t = await fetch(e.pluginsUrl);
|
|
466
|
+
if (!t.ok)
|
|
467
|
+
throw new Error(`Failed to load plugins.json: ${t.status}`);
|
|
468
|
+
c = await t.json(), console.debug(`[arborium] Loaded local manifest with ${c?.entries.length} entries`);
|
|
469
|
+
})(), u);
|
|
499
470
|
}
|
|
500
|
-
function
|
|
471
|
+
function U(e, t) {
|
|
501
472
|
if (c) {
|
|
502
|
-
const r = c.entries.find((o) => o.language ===
|
|
473
|
+
const r = c.entries.find((o) => o.language === e);
|
|
503
474
|
if (r)
|
|
504
475
|
return r.local_js.substring(0, r.local_js.lastIndexOf("/"));
|
|
505
476
|
}
|
|
506
|
-
const
|
|
507
|
-
let
|
|
508
|
-
return
|
|
477
|
+
const n = t.cdn, s = t.version;
|
|
478
|
+
let a;
|
|
479
|
+
return n === "jsdelivr" ? a = "https://cdn.jsdelivr.net/npm" : n === "unpkg" ? a = "https://unpkg.com" : a = n, `${a}/@arborium/${e}@${s}`;
|
|
509
480
|
}
|
|
510
|
-
async function v(
|
|
511
|
-
const
|
|
512
|
-
if (
|
|
513
|
-
return console.debug(`[arborium] Grammar '${
|
|
514
|
-
const s =
|
|
481
|
+
async function v(e, t) {
|
|
482
|
+
const n = h.get(e);
|
|
483
|
+
if (n)
|
|
484
|
+
return console.debug(`[arborium] Grammar '${e}' found in cache`), n;
|
|
485
|
+
const s = b.get(e);
|
|
515
486
|
if (s)
|
|
516
|
-
return console.debug(`[arborium] Grammar '${
|
|
517
|
-
const
|
|
518
|
-
|
|
487
|
+
return console.debug(`[arborium] Grammar '${e}' already loading, waiting...`), s;
|
|
488
|
+
const a = E(e, t);
|
|
489
|
+
b.set(e, a);
|
|
519
490
|
try {
|
|
520
|
-
return await
|
|
491
|
+
return await a;
|
|
521
492
|
} finally {
|
|
522
|
-
|
|
493
|
+
b.delete(e);
|
|
523
494
|
}
|
|
524
495
|
}
|
|
525
|
-
async function
|
|
526
|
-
if (await
|
|
527
|
-
return console.debug(`[arborium] Grammar '${
|
|
496
|
+
async function E(e, t) {
|
|
497
|
+
if (await _(t), !k.has(e) && !c?.entries.some((n) => n.language === e))
|
|
498
|
+
return console.debug(`[arborium] Grammar '${e}' not available`), null;
|
|
528
499
|
try {
|
|
529
|
-
const
|
|
530
|
-
console.debug(`[arborium] Loading grammar '${
|
|
531
|
-
const
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
500
|
+
const n = U(e, t), s = t.resolveJs === y.resolveJs ? ` from ${n}/grammar.js` : "";
|
|
501
|
+
console.debug(`[arborium] Loading grammar '${e}'${s}`);
|
|
502
|
+
const a = await t.resolveJs({
|
|
503
|
+
language: e,
|
|
504
|
+
baseUrl: n,
|
|
505
|
+
path: "grammar.js"
|
|
506
|
+
}), r = await t.resolveWasm({ language: e, baseUrl: n, path: "grammar_bg.wasm" });
|
|
507
|
+
await a.default({ module_or_path: r });
|
|
508
|
+
const o = a.language_id();
|
|
509
|
+
o !== e && console.warn(`[arborium] Language ID mismatch: expected '${e}', got '${o}'`);
|
|
510
|
+
const j = a.injection_languages(), w = {
|
|
511
|
+
languageId: e,
|
|
512
|
+
injectionLanguages: j,
|
|
513
|
+
module: a,
|
|
514
|
+
// UTF-8 parsing for Rust host
|
|
515
|
+
parseUtf8: (d) => {
|
|
516
|
+
const l = a.create_session();
|
|
541
517
|
try {
|
|
542
|
-
|
|
543
|
-
const
|
|
518
|
+
a.set_text(l, d);
|
|
519
|
+
const i = a.parse(l);
|
|
544
520
|
return {
|
|
545
|
-
spans:
|
|
546
|
-
injections:
|
|
521
|
+
spans: i.spans || [],
|
|
522
|
+
injections: i.injections || []
|
|
547
523
|
};
|
|
548
|
-
} catch (
|
|
549
|
-
return console.error("[arborium] Parse error:",
|
|
524
|
+
} catch (i) {
|
|
525
|
+
return console.error("[arborium] Parse error:", i), { spans: [], injections: [] };
|
|
550
526
|
} finally {
|
|
551
|
-
|
|
527
|
+
a.free_session(l);
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
// UTF-16 parsing for JavaScript public API
|
|
531
|
+
parseUtf16: (d) => {
|
|
532
|
+
const l = a.create_session();
|
|
533
|
+
try {
|
|
534
|
+
a.set_text(l, d);
|
|
535
|
+
const i = a.parse_utf16(l);
|
|
536
|
+
return {
|
|
537
|
+
spans: i.spans || [],
|
|
538
|
+
injections: i.injections || []
|
|
539
|
+
};
|
|
540
|
+
} catch (i) {
|
|
541
|
+
return console.error("[arborium] Parse error:", i), { spans: [], injections: [] };
|
|
542
|
+
} finally {
|
|
543
|
+
a.free_session(l);
|
|
552
544
|
}
|
|
553
545
|
}
|
|
554
546
|
};
|
|
555
|
-
return
|
|
556
|
-
} catch (
|
|
557
|
-
return console.error(`[arborium] Failed to load grammar '${
|
|
547
|
+
return h.set(e, w), console.debug(`[arborium] Grammar '${e}' loaded successfully`), w;
|
|
548
|
+
} catch (n) {
|
|
549
|
+
return console.error(`[arborium] Failed to load grammar '${e}':`, n), null;
|
|
558
550
|
}
|
|
559
551
|
}
|
|
560
|
-
const
|
|
552
|
+
const f = /* @__PURE__ */ new Map();
|
|
561
553
|
let P = 1;
|
|
562
|
-
function q(
|
|
554
|
+
function q(e) {
|
|
563
555
|
window.arboriumHost = {
|
|
564
556
|
/** Check if a language is available (sync) */
|
|
565
|
-
isLanguageAvailable(
|
|
566
|
-
return
|
|
557
|
+
isLanguageAvailable(t) {
|
|
558
|
+
return k.has(t) || h.has(t);
|
|
567
559
|
},
|
|
568
560
|
/** Load a grammar and return a handle (async) */
|
|
569
|
-
async loadGrammar(
|
|
570
|
-
const
|
|
571
|
-
if (!
|
|
572
|
-
for (const [
|
|
573
|
-
if (r ===
|
|
561
|
+
async loadGrammar(t) {
|
|
562
|
+
const n = await v(t, e);
|
|
563
|
+
if (!n) return 0;
|
|
564
|
+
for (const [a, r] of f)
|
|
565
|
+
if (r === n) return a;
|
|
574
566
|
const s = P++;
|
|
575
|
-
return
|
|
567
|
+
return f.set(s, n), s;
|
|
576
568
|
},
|
|
577
|
-
/** Parse text using a grammar handle (sync) */
|
|
578
|
-
parse(
|
|
579
|
-
const s =
|
|
580
|
-
return s ? s.
|
|
569
|
+
/** Parse text using a grammar handle (sync) - returns UTF-8 offsets for Rust host */
|
|
570
|
+
parse(t, n) {
|
|
571
|
+
const s = f.get(t);
|
|
572
|
+
return s ? s.parseUtf8(n) : { spans: [], injections: [] };
|
|
581
573
|
}
|
|
582
574
|
};
|
|
583
575
|
}
|
|
584
|
-
function
|
|
585
|
-
if (
|
|
586
|
-
return
|
|
587
|
-
const
|
|
576
|
+
function C(e) {
|
|
577
|
+
if (e.hostUrl)
|
|
578
|
+
return e.hostUrl;
|
|
579
|
+
const t = e.cdn, n = e.version;
|
|
588
580
|
let s;
|
|
589
|
-
|
|
590
|
-
const
|
|
591
|
-
return `${s}/@arborium/arborium${
|
|
581
|
+
t === "jsdelivr" ? s = "https://cdn.jsdelivr.net/npm" : t === "unpkg" ? s = "https://unpkg.com" : s = t;
|
|
582
|
+
const a = n === "latest" ? "" : `@${n}`;
|
|
583
|
+
return `${s}/@arborium/arborium${a}/dist`;
|
|
592
584
|
}
|
|
593
|
-
async function
|
|
594
|
-
return
|
|
595
|
-
q(
|
|
596
|
-
const
|
|
597
|
-
console.debug(`[arborium] Loading host from ${
|
|
585
|
+
async function I(e) {
|
|
586
|
+
return p || m || (m = (async () => {
|
|
587
|
+
q(e);
|
|
588
|
+
const t = C(e), n = `${t}/arborium_host.js`, s = `${t}/arborium_host_bg.wasm`;
|
|
589
|
+
console.debug(`[arborium] Loading host from ${n}`);
|
|
598
590
|
try {
|
|
599
|
-
const
|
|
591
|
+
const a = await import(
|
|
600
592
|
/* @vite-ignore */
|
|
601
|
-
|
|
593
|
+
n
|
|
602
594
|
);
|
|
603
|
-
return await
|
|
604
|
-
highlight:
|
|
605
|
-
isLanguageAvailable:
|
|
606
|
-
}, console.debug("[arborium] Host loaded successfully"),
|
|
607
|
-
} catch (
|
|
608
|
-
return console.error("[arborium] Failed to load host:",
|
|
595
|
+
return await a.default(s), p = {
|
|
596
|
+
highlight: a.highlight,
|
|
597
|
+
isLanguageAvailable: a.isLanguageAvailable
|
|
598
|
+
}, console.debug("[arborium] Host loaded successfully"), p;
|
|
599
|
+
} catch (a) {
|
|
600
|
+
return console.error("[arborium] Failed to load host:", a), null;
|
|
609
601
|
}
|
|
610
|
-
})(),
|
|
602
|
+
})(), m);
|
|
611
603
|
}
|
|
612
|
-
async function
|
|
613
|
-
const s =
|
|
614
|
-
if (
|
|
604
|
+
async function S(e, t, n) {
|
|
605
|
+
const s = T(n), a = await I(s);
|
|
606
|
+
if (a)
|
|
615
607
|
try {
|
|
616
|
-
return
|
|
617
|
-
} catch (
|
|
618
|
-
console.
|
|
608
|
+
return a.highlight(e, t);
|
|
609
|
+
} catch (r) {
|
|
610
|
+
console.error("[arborium] Host highlight failed:", r);
|
|
619
611
|
}
|
|
620
|
-
|
|
621
|
-
if (!r)
|
|
622
|
-
return f(e);
|
|
623
|
-
const o = r.parse(e);
|
|
624
|
-
return x(e, o.spans);
|
|
612
|
+
return L(t);
|
|
625
613
|
}
|
|
626
|
-
async function
|
|
627
|
-
const
|
|
614
|
+
async function A(e, t) {
|
|
615
|
+
const n = T(t), s = await v(e, n);
|
|
628
616
|
if (!s) return null;
|
|
629
|
-
const { module:
|
|
617
|
+
const { module: a } = s;
|
|
630
618
|
return {
|
|
631
619
|
languageId: () => s.languageId,
|
|
632
620
|
injectionLanguages: () => s.injectionLanguages,
|
|
633
|
-
highlight: async (r) =>
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
},
|
|
637
|
-
parse: (r) => s.parse(r),
|
|
621
|
+
highlight: async (r) => S(e, r, t),
|
|
622
|
+
// Public API returns UTF-16 offsets for JavaScript compatibility
|
|
623
|
+
parse: (r) => s.parseUtf16(r),
|
|
638
624
|
createSession: () => {
|
|
639
|
-
const r =
|
|
625
|
+
const r = a.create_session();
|
|
640
626
|
return {
|
|
641
|
-
setText: (o) =>
|
|
627
|
+
setText: (o) => a.set_text(r, o),
|
|
628
|
+
// Session.parse() returns UTF-16 offsets for JavaScript compatibility
|
|
642
629
|
parse: () => {
|
|
643
630
|
try {
|
|
644
|
-
const o =
|
|
631
|
+
const o = a.parse_utf16(r);
|
|
645
632
|
return {
|
|
646
633
|
spans: o.spans || [],
|
|
647
634
|
injections: o.injections || []
|
|
@@ -650,19 +637,19 @@ async function O(t, e) {
|
|
|
650
637
|
return console.error("[arborium] Session parse error:", o), { spans: [], injections: [] };
|
|
651
638
|
}
|
|
652
639
|
},
|
|
653
|
-
cancel: () =>
|
|
654
|
-
free: () =>
|
|
640
|
+
cancel: () => a.cancel(r),
|
|
641
|
+
free: () => a.free_session(r)
|
|
655
642
|
};
|
|
656
643
|
},
|
|
657
644
|
dispose: () => {
|
|
658
645
|
}
|
|
659
646
|
};
|
|
660
647
|
}
|
|
661
|
-
function
|
|
662
|
-
return
|
|
648
|
+
function T(e) {
|
|
649
|
+
return e ? { ...g, ...e } : { ...g };
|
|
663
650
|
}
|
|
664
|
-
function
|
|
665
|
-
|
|
651
|
+
function H(e) {
|
|
652
|
+
g = { ...g, ...e };
|
|
666
653
|
}
|
|
667
654
|
const G = [
|
|
668
655
|
[/^#!.*\bpython[23]?\b/, "python"],
|
|
@@ -677,7 +664,7 @@ const G = [
|
|
|
677
664
|
[/^#!.*\bsh\b/, "bash"],
|
|
678
665
|
[/^#!.*\blua\b/, "lua"],
|
|
679
666
|
[/^#!.*\bawk\b/, "awk"]
|
|
680
|
-
],
|
|
667
|
+
], M = [
|
|
681
668
|
// Rust - distinctive keywords
|
|
682
669
|
[/\b(fn|impl|trait|pub\s+fn|let\s+mut|&mut|->)\b/, "rust"],
|
|
683
670
|
// Go - distinctive keywords
|
|
@@ -737,22 +724,22 @@ const G = [
|
|
|
737
724
|
// Zig
|
|
738
725
|
[/\b(pub\s+fn|const\s+\w+\s*=|@import\(|comptime)\b/, "zig"]
|
|
739
726
|
];
|
|
740
|
-
function
|
|
741
|
-
const
|
|
727
|
+
function F(e) {
|
|
728
|
+
const t = e.split(`
|
|
742
729
|
`)[0];
|
|
743
|
-
for (const [
|
|
744
|
-
if (
|
|
730
|
+
for (const [n, s] of G)
|
|
731
|
+
if (n.test(t))
|
|
745
732
|
return s;
|
|
746
|
-
for (const [
|
|
747
|
-
if (
|
|
733
|
+
for (const [n, s] of M)
|
|
734
|
+
if (n.test(e))
|
|
748
735
|
return s;
|
|
749
736
|
return null;
|
|
750
737
|
}
|
|
751
|
-
function
|
|
752
|
-
const
|
|
753
|
-
if (
|
|
754
|
-
const
|
|
755
|
-
if (
|
|
738
|
+
function z(e) {
|
|
739
|
+
const t = e.match(/\blanguage-(\w+)\b/);
|
|
740
|
+
if (t) return t[1];
|
|
741
|
+
const n = e.match(/\blang-(\w+)\b/);
|
|
742
|
+
if (n) return n[1];
|
|
756
743
|
const s = /* @__PURE__ */ new Set([
|
|
757
744
|
"rust",
|
|
758
745
|
"javascript",
|
|
@@ -789,13 +776,13 @@ function B(t) {
|
|
|
789
776
|
"console",
|
|
790
777
|
"sh"
|
|
791
778
|
]);
|
|
792
|
-
for (const
|
|
793
|
-
if (s.has(
|
|
794
|
-
return
|
|
779
|
+
for (const a of e.split(/\s+/))
|
|
780
|
+
if (s.has(a.toLowerCase()))
|
|
781
|
+
return a.toLowerCase();
|
|
795
782
|
return null;
|
|
796
783
|
}
|
|
797
|
-
function
|
|
798
|
-
const
|
|
784
|
+
function N(e) {
|
|
785
|
+
const t = {
|
|
799
786
|
js: "javascript",
|
|
800
787
|
ts: "typescript",
|
|
801
788
|
py: "python",
|
|
@@ -815,20 +802,19 @@ function J(t) {
|
|
|
815
802
|
plaintext: "text",
|
|
816
803
|
plain: "text",
|
|
817
804
|
txt: "text"
|
|
818
|
-
},
|
|
819
|
-
return
|
|
805
|
+
}, n = e.toLowerCase();
|
|
806
|
+
return t[n] || n;
|
|
820
807
|
}
|
|
821
808
|
export {
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
x as spansToHtml
|
|
809
|
+
$ as availableLanguages,
|
|
810
|
+
F as detectLanguage,
|
|
811
|
+
z as extractLanguageFromClass,
|
|
812
|
+
T as getConfig,
|
|
813
|
+
S as highlight,
|
|
814
|
+
R as highlights,
|
|
815
|
+
A as loadGrammar,
|
|
816
|
+
N as normalizeLanguage,
|
|
817
|
+
x as pluginVersion,
|
|
818
|
+
H as setConfig
|
|
833
819
|
};
|
|
834
820
|
//# sourceMappingURL=arborium.js.map
|