epic-designer-gold
Version:
基于vue3的设计器,可视化开发页面表单
17,860 lines • 612 kB
JavaScript
var wp = Object.defineProperty;
var bp = (t, e, n) => e in t ? wp(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
var dn = (t, e, n) => bp(t, typeof e != "symbol" ? e + "" : e, n);
import { bC as Ip, bD as _p, aS as wf, bm as $p, aW as Pp, aT as je, at as Lp, au as Kl, bc as Op, bf, bg as If, bd as xp, br as Hl, aw as Hn, ax as oe, aU as Dp, aO as Mp } from "./mermaid.core-BmO8XxbV.js";
import { k as Ur, j as Rl, g as ri, S as Fp, w as Gp, x as Up, c as _f, v as Le, y as $f, l as jp, z as zp, A as Bp, B as qp, C as Wp, a as Pf, d as j, i as tn, r as Ye, f as dt, D as Me } from "./_baseUniq-AyTrYc_s.js";
import { j as vl, m as M, d as Vp, f as yt, g as jr, h as B, i as El, l as jn, e as Kp } from "./_basePickBy-CB2_l3OQ.js";
import { c as Be } from "./clone-BpMkZAHI.js";
import { c as gt, g as Hp } from "./_commonjsHelpers-BVfed4GL.js";
var Yp = Object.prototype, Xp = Yp.hasOwnProperty, ut = Ip(function(t, e) {
if (_p(e) || wf(e)) {
$p(e, Ur(e), t);
return;
}
for (var n in e)
Xp.call(e, n) && Pp(t, n, e[n]);
});
function Lf(t, e, n) {
var r = -1, i = t.length;
e < 0 && (e = -e > i ? 0 : i + e), n = n > i ? i : n, n < 0 && (n += i), i = e > n ? 0 : n - e >>> 0, e >>>= 0;
for (var s = Array(i); ++r < i; )
s[r] = t[r + e];
return s;
}
function rs(t) {
for (var e = -1, n = t == null ? 0 : t.length, r = 0, i = []; ++e < n; ) {
var s = t[e];
s && (i[r++] = s);
}
return i;
}
function Jp(t, e, n, r) {
for (var i = -1, s = t == null ? 0 : t.length; ++i < s; ) {
var a = t[i];
e(r, a, n(a), t);
}
return r;
}
function Qp(t, e, n, r) {
return Rl(t, function(i, s, a) {
e(r, i, n(i), a);
}), r;
}
function Zp(t, e) {
return function(n, r) {
var i = je(n) ? Jp : Qp, s = e ? e() : {};
return i(n, t, ri(r), s);
};
}
var em = 200;
function tm(t, e, n, r) {
var i = -1, s = Gp, a = !0, o = t.length, c = [], l = e.length;
if (!o)
return c;
e.length >= em && (s = Up, a = !1, e = new Fp(e));
e:
for (; ++i < o; ) {
var u = t[i], f = u;
if (u = u !== 0 ? u : 0, a && f === f) {
for (var m = l; m--; )
if (e[m] === f)
continue e;
c.push(u);
} else s(e, f, r) || c.push(u);
}
return c;
}
var La = Lp(function(t, e) {
return Kl(t) ? tm(t, _f(e, 1, Kl, !0)) : [];
});
function Fe(t, e, n) {
var r = t == null ? 0 : t.length;
return r ? (e = e === void 0 ? 1 : vl(e), Lf(t, e < 0 ? 0 : e, r)) : [];
}
function zi(t, e, n) {
var r = t == null ? 0 : t.length;
return r ? (e = e === void 0 ? 1 : vl(e), e = r - e, Lf(t, 0, e < 0 ? 0 : e)) : [];
}
function nm(t, e) {
for (var n = -1, r = t == null ? 0 : t.length; ++n < r; )
if (!e(t[n], n, t))
return !1;
return !0;
}
function rm(t, e) {
var n = !0;
return Rl(t, function(r, i, s) {
return n = !!e(r, i, s), n;
}), n;
}
function Nt(t, e, n) {
var r = je(t) ? nm : rm;
return r(t, ri(e));
}
function bt(t) {
return t && t.length ? t[0] : void 0;
}
function lt(t, e) {
return _f(M(t, e));
}
var im = Object.prototype, sm = im.hasOwnProperty, am = Zp(function(t, e, n) {
sm.call(t, n) ? t[n].push(e) : Op(t, n, [e]);
}), om = "[object String]";
function tt(t) {
return typeof t == "string" || !je(t) && bf(t) && If(t) == om;
}
var cm = Math.max;
function Qe(t, e, n, r) {
t = wf(t) ? t : Le(t), n = n ? vl(n) : 0;
var i = t.length;
return n < 0 && (n = cm(i + n, 0)), tt(t) ? n <= i && t.indexOf(e, n) > -1 : !!i && $f(t, e, n) > -1;
}
function Yl(t, e, n) {
var r = t == null ? 0 : t.length;
if (!r)
return -1;
var i = 0;
return $f(t, e, i);
}
var lm = "[object RegExp]";
function um(t) {
return bf(t) && If(t) == lm;
}
var Xl = Hl && Hl.isRegExp, nn = Xl ? xp(Xl) : um, dm = "Expected a function";
function fm(t) {
if (typeof t != "function")
throw new TypeError(dm);
return function() {
var e = arguments;
switch (e.length) {
case 0:
return !t.call(this);
case 1:
return !t.call(this, e[0]);
case 2:
return !t.call(this, e[0], e[1]);
case 3:
return !t.call(this, e[0], e[1], e[2]);
}
return !t.apply(this, e);
};
}
function It(t, e) {
if (t == null)
return {};
var n = jp(zp(t), function(r) {
return [r];
});
return e = ri(e), Vp(t, n, function(r, i) {
return e(r, i[0]);
});
}
function Oa(t, e) {
var n = je(t) ? Bp : qp;
return n(t, fm(ri(e)));
}
function hm(t, e) {
var n;
return Rl(t, function(r, i, s) {
return n = e(r, i, s), !n;
}), !!n;
}
function Of(t, e, n) {
var r = je(t) ? Wp : hm;
return r(t, ri(e));
}
function Al(t) {
return t && t.length ? Pf(t) : [];
}
function pm(t, e) {
return t && t.length ? Pf(t, ri(e)) : [];
}
function We(t) {
return typeof t == "object" && t !== null && typeof t.$type == "string";
}
function Ct(t) {
return typeof t == "object" && t !== null && typeof t.$refText == "string" && "ref" in t;
}
function hn(t) {
return typeof t == "object" && t !== null && typeof t.$refText == "string" && "items" in t;
}
function mm(t) {
return typeof t == "object" && t !== null && typeof t.name == "string" && typeof t.type == "string" && typeof t.path == "string";
}
function Ri(t) {
return typeof t == "object" && t !== null && typeof t.info == "object" && typeof t.message == "string";
}
class xf {
constructor() {
this.subtypes = {}, this.allSubtypes = {};
}
getAllTypes() {
return Object.keys(this.types);
}
getReferenceType(e) {
var i;
const n = this.types[e.container.$type];
if (!n)
throw new Error(`Type ${e.container.$type || "undefined"} not found.`);
const r = (i = n.properties[e.property]) == null ? void 0 : i.referenceType;
if (!r)
throw new Error(`Property ${e.property || "undefined"} of type ${e.container.$type} is not a reference.`);
return r;
}
getTypeMetaData(e) {
const n = this.types[e];
return n || {
name: e,
properties: {},
superTypes: []
};
}
isInstance(e, n) {
return We(e) && this.isSubtype(e.$type, n);
}
isSubtype(e, n) {
if (e === n)
return !0;
let r = this.subtypes[e];
r || (r = this.subtypes[e] = {});
const i = r[n];
if (i !== void 0)
return i;
{
const s = this.types[e], a = s ? s.superTypes.some((o) => this.isSubtype(o, n)) : !1;
return r[n] = a, a;
}
}
getAllSubTypes(e) {
const n = this.allSubtypes[e];
if (n)
return n;
{
const r = this.getAllTypes(), i = [];
for (const s of r)
this.isSubtype(s, e) && i.push(s);
return this.allSubtypes[e] = i, i;
}
}
}
function Bi(t) {
return typeof t == "object" && t !== null && Array.isArray(t.content);
}
function Df(t) {
return typeof t == "object" && t !== null && typeof t.tokenType == "object";
}
function Mf(t) {
return Bi(t) && typeof t.fullText == "string";
}
class Ge {
constructor(e, n) {
this.startFn = e, this.nextFn = n;
}
iterator() {
const e = {
state: this.startFn(),
next: () => this.nextFn(e.state),
[Symbol.iterator]: () => e
};
return e;
}
[Symbol.iterator]() {
return this.iterator();
}
isEmpty() {
return !!this.iterator().next().done;
}
count() {
const e = this.iterator();
let n = 0, r = e.next();
for (; !r.done; )
n++, r = e.next();
return n;
}
toArray() {
const e = [], n = this.iterator();
let r;
do
r = n.next(), r.value !== void 0 && e.push(r.value);
while (!r.done);
return e;
}
toSet() {
return new Set(this);
}
toMap(e, n) {
const r = this.map((i) => [
e ? e(i) : i,
n ? n(i) : i
]);
return new Map(r);
}
toString() {
return this.join();
}
concat(e) {
return new Ge(() => ({ first: this.startFn(), firstDone: !1, iterator: e[Symbol.iterator]() }), (n) => {
let r;
if (!n.firstDone) {
do
if (r = this.nextFn(n.first), !r.done)
return r;
while (!r.done);
n.firstDone = !0;
}
do
if (r = n.iterator.next(), !r.done)
return r;
while (!r.done);
return ot;
});
}
join(e = ",") {
const n = this.iterator();
let r = "", i, s = !1;
do
i = n.next(), i.done || (s && (r += e), r += gm(i.value)), s = !0;
while (!i.done);
return r;
}
indexOf(e, n = 0) {
const r = this.iterator();
let i = 0, s = r.next();
for (; !s.done; ) {
if (i >= n && s.value === e)
return i;
s = r.next(), i++;
}
return -1;
}
every(e) {
const n = this.iterator();
let r = n.next();
for (; !r.done; ) {
if (!e(r.value))
return !1;
r = n.next();
}
return !0;
}
some(e) {
const n = this.iterator();
let r = n.next();
for (; !r.done; ) {
if (e(r.value))
return !0;
r = n.next();
}
return !1;
}
forEach(e) {
const n = this.iterator();
let r = 0, i = n.next();
for (; !i.done; )
e(i.value, r), i = n.next(), r++;
}
map(e) {
return new Ge(this.startFn, (n) => {
const { done: r, value: i } = this.nextFn(n);
return r ? ot : { done: !1, value: e(i) };
});
}
filter(e) {
return new Ge(this.startFn, (n) => {
let r;
do
if (r = this.nextFn(n), !r.done && e(r.value))
return r;
while (!r.done);
return ot;
});
}
nonNullable() {
return this.filter((e) => e != null);
}
reduce(e, n) {
const r = this.iterator();
let i = n, s = r.next();
for (; !s.done; )
i === void 0 ? i = s.value : i = e(i, s.value), s = r.next();
return i;
}
reduceRight(e, n) {
return this.recursiveReduce(this.iterator(), e, n);
}
recursiveReduce(e, n, r) {
const i = e.next();
if (i.done)
return r;
const s = this.recursiveReduce(e, n, r);
return s === void 0 ? i.value : n(s, i.value);
}
find(e) {
const n = this.iterator();
let r = n.next();
for (; !r.done; ) {
if (e(r.value))
return r.value;
r = n.next();
}
}
findIndex(e) {
const n = this.iterator();
let r = 0, i = n.next();
for (; !i.done; ) {
if (e(i.value))
return r;
i = n.next(), r++;
}
return -1;
}
includes(e) {
const n = this.iterator();
let r = n.next();
for (; !r.done; ) {
if (r.value === e)
return !0;
r = n.next();
}
return !1;
}
flatMap(e) {
return new Ge(() => ({ this: this.startFn() }), (n) => {
do {
if (n.iterator) {
const s = n.iterator.next();
if (s.done)
n.iterator = void 0;
else
return s;
}
const { done: r, value: i } = this.nextFn(n.this);
if (!r) {
const s = e(i);
if (ra(s))
n.iterator = s[Symbol.iterator]();
else
return { done: !1, value: s };
}
} while (n.iterator);
return ot;
});
}
flat(e) {
if (e === void 0 && (e = 1), e <= 0)
return this;
const n = e > 1 ? this.flat(e - 1) : this;
return new Ge(() => ({ this: n.startFn() }), (r) => {
do {
if (r.iterator) {
const a = r.iterator.next();
if (a.done)
r.iterator = void 0;
else
return a;
}
const { done: i, value: s } = n.nextFn(r.this);
if (!i)
if (ra(s))
r.iterator = s[Symbol.iterator]();
else
return { done: !1, value: s };
} while (r.iterator);
return ot;
});
}
head() {
const n = this.iterator().next();
if (!n.done)
return n.value;
}
tail(e = 1) {
return new Ge(() => {
const n = this.startFn();
for (let r = 0; r < e; r++)
if (this.nextFn(n).done)
return n;
return n;
}, this.nextFn);
}
limit(e) {
return new Ge(() => ({ size: 0, state: this.startFn() }), (n) => (n.size++, n.size > e ? ot : this.nextFn(n.state)));
}
distinct(e) {
return new Ge(() => ({ set: /* @__PURE__ */ new Set(), internalState: this.startFn() }), (n) => {
let r;
do
if (r = this.nextFn(n.internalState), !r.done) {
const i = e ? e(r.value) : r.value;
if (!n.set.has(i))
return n.set.add(i), r;
}
while (!r.done);
return ot;
});
}
exclude(e, n) {
const r = /* @__PURE__ */ new Set();
for (const i of e) {
const s = n ? n(i) : i;
r.add(s);
}
return this.filter((i) => {
const s = n ? n(i) : i;
return !r.has(s);
});
}
}
function gm(t) {
return typeof t == "string" ? t : typeof t > "u" ? "undefined" : typeof t.toString == "function" ? t.toString() : Object.prototype.toString.call(t);
}
function ra(t) {
return !!t && typeof t[Symbol.iterator] == "function";
}
const Ff = new Ge(() => {
}, () => ot), ot = Object.freeze({ done: !0, value: void 0 });
function pe(...t) {
if (t.length === 1) {
const e = t[0];
if (e instanceof Ge)
return e;
if (ra(e))
return new Ge(() => e[Symbol.iterator](), (n) => n.next());
if (typeof e.length == "number")
return new Ge(() => ({ index: 0 }), (n) => n.index < e.length ? { done: !1, value: e[n.index++] } : ot);
}
return t.length > 1 ? new Ge(() => ({ collIndex: 0, arrIndex: 0 }), (e) => {
do {
if (e.iterator) {
const n = e.iterator.next();
if (!n.done)
return n;
e.iterator = void 0;
}
if (e.array) {
if (e.arrIndex < e.array.length)
return { done: !1, value: e.array[e.arrIndex++] };
e.array = void 0, e.arrIndex = 0;
}
if (e.collIndex < t.length) {
const n = t[e.collIndex++];
ra(n) ? e.iterator = n[Symbol.iterator]() : n && typeof n.length == "number" && (e.array = n);
}
} while (e.iterator || e.array || e.collIndex < t.length);
return ot;
}) : Ff;
}
class Sl extends Ge {
constructor(e, n, r) {
super(() => ({
iterators: r != null && r.includeRoot ? [[e][Symbol.iterator]()] : [n(e)[Symbol.iterator]()],
pruned: !1
}), (i) => {
for (i.pruned && (i.iterators.pop(), i.pruned = !1); i.iterators.length > 0; ) {
const a = i.iterators[i.iterators.length - 1].next();
if (a.done)
i.iterators.pop();
else
return i.iterators.push(n(a.value)[Symbol.iterator]()), a;
}
return ot;
});
}
iterator() {
const e = {
state: this.startFn(),
next: () => this.nextFn(e.state),
prune: () => {
e.state.pruned = !0;
},
[Symbol.iterator]: () => e
};
return e;
}
}
var _o;
(function(t) {
function e(s) {
return s.reduce((a, o) => a + o, 0);
}
t.sum = e;
function n(s) {
return s.reduce((a, o) => a * o, 0);
}
t.product = n;
function r(s) {
return s.reduce((a, o) => Math.min(a, o));
}
t.min = r;
function i(s) {
return s.reduce((a, o) => Math.max(a, o));
}
t.max = i;
})(_o || (_o = {}));
function $o(t, e = {}) {
for (const [n, r] of Object.entries(t))
n.startsWith("$") || (Array.isArray(r) ? r.forEach((i, s) => {
We(i) && (i.$container = t, i.$containerProperty = n, i.$containerIndex = s, e.deep && $o(i, e));
}) : We(r) && (r.$container = t, r.$containerProperty = n, e.deep && $o(r, e)));
}
function xa(t, e) {
let n = t;
for (; n; ) {
if (e(n))
return n;
n = n.$container;
}
}
function Qt(t) {
const n = zs(t).$document;
if (!n)
throw new Error("AST node has no document.");
return n;
}
function zs(t) {
for (; t.$container; )
t = t.$container;
return t;
}
function Jl(t) {
return Ct(t) ? t.ref ? [t.ref] : [] : hn(t) ? t.items.map((e) => e.ref) : [];
}
function Cl(t, e) {
if (!t)
throw new Error("Node must be an AstNode.");
const n = e == null ? void 0 : e.range;
return new Ge(() => ({
keys: Object.keys(t),
keyIndex: 0,
arrayIndex: 0
}), (r) => {
for (; r.keyIndex < r.keys.length; ) {
const i = r.keys[r.keyIndex];
if (!i.startsWith("$")) {
const s = t[i];
if (We(s)) {
if (r.keyIndex++, Ql(s, n))
return { done: !1, value: s };
} else if (Array.isArray(s)) {
for (; r.arrayIndex < s.length; ) {
const a = r.arrayIndex++, o = s[a];
if (We(o) && Ql(o, n))
return { done: !1, value: o };
}
r.arrayIndex = 0;
}
}
r.keyIndex++;
}
return ot;
});
}
function is(t, e) {
if (!t)
throw new Error("Root node must be an AstNode.");
return new Sl(t, (n) => Cl(n, e));
}
function Zt(t, e) {
if (!t)
throw new Error("Root node must be an AstNode.");
return new Sl(t, (n) => Cl(n, e), { includeRoot: !0 });
}
function Ql(t, e) {
var r;
if (!e)
return !0;
const n = (r = t.$cstNode) == null ? void 0 : r.range;
return n ? Gm(n, e) : !1;
}
function ia(t) {
return new Ge(() => ({
keys: Object.keys(t),
keyIndex: 0,
arrayIndex: 0
}), (e) => {
for (; e.keyIndex < e.keys.length; ) {
const n = e.keys[e.keyIndex];
if (!n.startsWith("$")) {
const r = t[n];
if (Ct(r) || hn(r))
return e.keyIndex++, { done: !1, value: { reference: r, container: t, property: n } };
if (Array.isArray(r)) {
for (; e.arrayIndex < r.length; ) {
const i = e.arrayIndex++, s = r[i];
if (Ct(s) || hn(r))
return { done: !1, value: { reference: s, container: t, property: n, index: i } };
}
e.arrayIndex = 0;
}
}
e.keyIndex++;
}
return ot;
});
}
function ym(t, e) {
const n = t.getTypeMetaData(e.$type), r = e;
for (const i of Object.values(n.properties))
i.defaultValue !== void 0 && r[i.name] === void 0 && (r[i.name] = Gf(i.defaultValue));
}
function Gf(t) {
return Array.isArray(t) ? [...t.map(Gf)] : t;
}
const at = {
$type: "AbstractElement",
cardinality: "cardinality"
};
function Tm(t) {
return Z.isInstance(t, at.$type);
}
const Bs = {
$type: "AbstractParserRule"
};
function ss(t) {
return Z.isInstance(t, Bs.$type);
}
const _s = {
$type: "AbstractRule"
}, At = {
$type: "AbstractType"
}, Ln = {
$type: "Action",
cardinality: "cardinality",
feature: "feature",
inferredType: "inferredType",
operator: "operator",
type: "type"
};
function Da(t) {
return Z.isInstance(t, Ln.$type);
}
const qs = {
$type: "Alternatives",
cardinality: "cardinality",
elements: "elements"
};
function Uf(t) {
return Z.isInstance(t, qs.$type);
}
const Zl = {
$type: "ArrayLiteral",
elements: "elements"
}, eu = {
$type: "ArrayType",
elementType: "elementType"
}, On = {
$type: "Assignment",
cardinality: "cardinality",
feature: "feature",
operator: "operator",
predicate: "predicate",
terminal: "terminal"
};
function zn(t) {
return Z.isInstance(t, On.$type);
}
const Po = {
$type: "BooleanLiteral",
true: "true"
};
function Rm(t) {
return Z.isInstance(t, Po.$type);
}
const xn = {
$type: "CharacterRange",
cardinality: "cardinality",
left: "left",
lookahead: "lookahead",
parenthesized: "parenthesized",
right: "right"
};
function vm(t) {
return Z.isInstance(t, xn.$type);
}
const tr = {
$type: "Condition"
}, Ws = {
$type: "Conjunction",
left: "left",
right: "right"
};
function Em(t) {
return Z.isInstance(t, Ws.$type);
}
const Dn = {
$type: "CrossReference",
cardinality: "cardinality",
deprecatedSyntax: "deprecatedSyntax",
isMulti: "isMulti",
terminal: "terminal",
type: "type"
};
function Ma(t) {
return Z.isInstance(t, Dn.$type);
}
const Vs = {
$type: "Disjunction",
left: "left",
right: "right"
};
function Am(t) {
return Z.isInstance(t, Vs.$type);
}
const Lo = {
$type: "EndOfFile",
cardinality: "cardinality"
};
function Sm(t) {
return Z.isInstance(t, Lo.$type);
}
const _n = {
$type: "Grammar",
imports: "imports",
interfaces: "interfaces",
isDeclared: "isDeclared",
name: "name",
rules: "rules",
types: "types"
}, tu = {
$type: "GrammarImport",
path: "path"
}, or = {
$type: "Group",
cardinality: "cardinality",
elements: "elements",
guardCondition: "guardCondition",
predicate: "predicate"
};
function kl(t) {
return Z.isInstance(t, or.$type);
}
const Oo = {
$type: "InferredType",
name: "name"
};
function jf(t) {
return Z.isInstance(t, Oo.$type);
}
const Vt = {
$type: "InfixRule",
call: "call",
dataType: "dataType",
inferredType: "inferredType",
name: "name",
operators: "operators",
parameters: "parameters",
returnType: "returnType"
};
function sa(t) {
return Z.isInstance(t, Vt.$type);
}
const oo = {
$type: "InfixRuleOperatorList",
associativity: "associativity",
operators: "operators"
}, nu = {
$type: "InfixRuleOperators",
precedences: "precedences"
}, $i = {
$type: "Interface",
attributes: "attributes",
name: "name",
superTypes: "superTypes"
};
function Cm(t) {
return Z.isInstance(t, $i.$type);
}
const Pi = {
$type: "Keyword",
cardinality: "cardinality",
predicate: "predicate",
value: "value"
};
function Bn(t) {
return Z.isInstance(t, Pi.$type);
}
const $s = {
$type: "NamedArgument",
calledByName: "calledByName",
parameter: "parameter",
value: "value"
}, cr = {
$type: "NegatedToken",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized",
terminal: "terminal"
};
function km(t) {
return Z.isInstance(t, cr.$type);
}
const xo = {
$type: "Negation",
value: "value"
};
function Nm(t) {
return Z.isInstance(t, xo.$type);
}
const ru = {
$type: "NumberLiteral",
value: "value"
}, Ps = {
$type: "Parameter",
name: "name"
}, Do = {
$type: "ParameterReference",
parameter: "parameter"
};
function wm(t) {
return Z.isInstance(t, Do.$type);
}
const Lt = {
$type: "ParserRule",
dataType: "dataType",
definition: "definition",
entry: "entry",
fragment: "fragment",
inferredType: "inferredType",
name: "name",
parameters: "parameters",
returnType: "returnType"
};
function an(t) {
return Z.isInstance(t, Lt.$type);
}
const co = {
$type: "ReferenceType",
isMulti: "isMulti",
referenceType: "referenceType"
}, lr = {
$type: "RegexToken",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized",
regex: "regex"
};
function bm(t) {
return Z.isInstance(t, lr.$type);
}
const Mo = {
$type: "ReturnType",
name: "name"
};
function Im(t) {
return Z.isInstance(t, Mo.$type);
}
const ur = {
$type: "RuleCall",
arguments: "arguments",
cardinality: "cardinality",
predicate: "predicate",
rule: "rule"
};
function qn(t) {
return Z.isInstance(t, ur.$type);
}
const Li = {
$type: "SimpleType",
primitiveType: "primitiveType",
stringType: "stringType",
typeRef: "typeRef"
};
function _m(t) {
return Z.isInstance(t, Li.$type);
}
const iu = {
$type: "StringLiteral",
value: "value"
}, dr = {
$type: "TerminalAlternatives",
cardinality: "cardinality",
elements: "elements",
lookahead: "lookahead",
parenthesized: "parenthesized"
};
function $m(t) {
return Z.isInstance(t, dr.$type);
}
const pt = {
$type: "TerminalElement",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized"
}, fr = {
$type: "TerminalGroup",
cardinality: "cardinality",
elements: "elements",
lookahead: "lookahead",
parenthesized: "parenthesized"
};
function Pm(t) {
return Z.isInstance(t, fr.$type);
}
const fn = {
$type: "TerminalRule",
definition: "definition",
fragment: "fragment",
hidden: "hidden",
name: "name",
type: "type"
};
function on(t) {
return Z.isInstance(t, fn.$type);
}
const hr = {
$type: "TerminalRuleCall",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized",
rule: "rule"
};
function Lm(t) {
return Z.isInstance(t, hr.$type);
}
const Ks = {
$type: "Type",
name: "name",
type: "type"
};
function Om(t) {
return Z.isInstance(t, Ks.$type);
}
const vi = {
$type: "TypeAttribute",
defaultValue: "defaultValue",
isOptional: "isOptional",
name: "name",
type: "type"
}, Ei = {
$type: "TypeDefinition"
}, su = {
$type: "UnionType",
types: "types"
}, Hs = {
$type: "UnorderedGroup",
cardinality: "cardinality",
elements: "elements"
};
function zf(t) {
return Z.isInstance(t, Hs.$type);
}
const pr = {
$type: "UntilToken",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized",
terminal: "terminal"
};
function xm(t) {
return Z.isInstance(t, pr.$type);
}
const Ai = {
$type: "ValueLiteral"
}, Oi = {
$type: "Wildcard",
cardinality: "cardinality",
lookahead: "lookahead",
parenthesized: "parenthesized"
};
function Dm(t) {
return Z.isInstance(t, Oi.$type);
}
class Bf extends xf {
constructor() {
super(...arguments), this.types = {
AbstractElement: {
name: at.$type,
properties: {
cardinality: {
name: at.cardinality
}
},
superTypes: []
},
AbstractParserRule: {
name: Bs.$type,
properties: {},
superTypes: [_s.$type, At.$type]
},
AbstractRule: {
name: _s.$type,
properties: {},
superTypes: []
},
AbstractType: {
name: At.$type,
properties: {},
superTypes: []
},
Action: {
name: Ln.$type,
properties: {
cardinality: {
name: Ln.cardinality
},
feature: {
name: Ln.feature
},
inferredType: {
name: Ln.inferredType
},
operator: {
name: Ln.operator
},
type: {
name: Ln.type,
referenceType: At.$type
}
},
superTypes: [at.$type]
},
Alternatives: {
name: qs.$type,
properties: {
cardinality: {
name: qs.cardinality
},
elements: {
name: qs.elements,
defaultValue: []
}
},
superTypes: [at.$type]
},
ArrayLiteral: {
name: Zl.$type,
properties: {
elements: {
name: Zl.elements,
defaultValue: []
}
},
superTypes: [Ai.$type]
},
ArrayType: {
name: eu.$type,
properties: {
elementType: {
name: eu.elementType
}
},
superTypes: [Ei.$type]
},
Assignment: {
name: On.$type,
properties: {
cardinality: {
name: On.cardinality
},
feature: {
name: On.feature
},
operator: {
name: On.operator
},
predicate: {
name: On.predicate
},
terminal: {
name: On.terminal
}
},
superTypes: [at.$type]
},
BooleanLiteral: {
name: Po.$type,
properties: {
true: {
name: Po.true,
defaultValue: !1
}
},
superTypes: [tr.$type, Ai.$type]
},
CharacterRange: {
name: xn.$type,
properties: {
cardinality: {
name: xn.cardinality
},
left: {
name: xn.left
},
lookahead: {
name: xn.lookahead
},
parenthesized: {
name: xn.parenthesized,
defaultValue: !1
},
right: {
name: xn.right
}
},
superTypes: [pt.$type]
},
Condition: {
name: tr.$type,
properties: {},
superTypes: []
},
Conjunction: {
name: Ws.$type,
properties: {
left: {
name: Ws.left
},
right: {
name: Ws.right
}
},
superTypes: [tr.$type]
},
CrossReference: {
name: Dn.$type,
properties: {
cardinality: {
name: Dn.cardinality
},
deprecatedSyntax: {
name: Dn.deprecatedSyntax,
defaultValue: !1
},
isMulti: {
name: Dn.isMulti,
defaultValue: !1
},
terminal: {
name: Dn.terminal
},
type: {
name: Dn.type,
referenceType: At.$type
}
},
superTypes: [at.$type]
},
Disjunction: {
name: Vs.$type,
properties: {
left: {
name: Vs.left
},
right: {
name: Vs.right
}
},
superTypes: [tr.$type]
},
EndOfFile: {
name: Lo.$type,
properties: {
cardinality: {
name: Lo.cardinality
}
},
superTypes: [at.$type]
},
Grammar: {
name: _n.$type,
properties: {
imports: {
name: _n.imports,
defaultValue: []
},
interfaces: {
name: _n.interfaces,
defaultValue: []
},
isDeclared: {
name: _n.isDeclared,
defaultValue: !1
},
name: {
name: _n.name
},
rules: {
name: _n.rules,
defaultValue: []
},
types: {
name: _n.types,
defaultValue: []
}
},
superTypes: []
},
GrammarImport: {
name: tu.$type,
properties: {
path: {
name: tu.path
}
},
superTypes: []
},
Group: {
name: or.$type,
properties: {
cardinality: {
name: or.cardinality
},
elements: {
name: or.elements,
defaultValue: []
},
guardCondition: {
name: or.guardCondition
},
predicate: {
name: or.predicate
}
},
superTypes: [at.$type]
},
InferredType: {
name: Oo.$type,
properties: {
name: {
name: Oo.name
}
},
superTypes: [At.$type]
},
InfixRule: {
name: Vt.$type,
properties: {
call: {
name: Vt.call
},
dataType: {
name: Vt.dataType
},
inferredType: {
name: Vt.inferredType
},
name: {
name: Vt.name
},
operators: {
name: Vt.operators
},
parameters: {
name: Vt.parameters,
defaultValue: []
},
returnType: {
name: Vt.returnType,
referenceType: At.$type
}
},
superTypes: [Bs.$type]
},
InfixRuleOperatorList: {
name: oo.$type,
properties: {
associativity: {
name: oo.associativity
},
operators: {
name: oo.operators,
defaultValue: []
}
},
superTypes: []
},
InfixRuleOperators: {
name: nu.$type,
properties: {
precedences: {
name: nu.precedences,
defaultValue: []
}
},
superTypes: []
},
Interface: {
name: $i.$type,
properties: {
attributes: {
name: $i.attributes,
defaultValue: []
},
name: {
name: $i.name
},
superTypes: {
name: $i.superTypes,
defaultValue: [],
referenceType: At.$type
}
},
superTypes: [At.$type]
},
Keyword: {
name: Pi.$type,
properties: {
cardinality: {
name: Pi.cardinality
},
predicate: {
name: Pi.predicate
},
value: {
name: Pi.value
}
},
superTypes: [at.$type]
},
NamedArgument: {
name: $s.$type,
properties: {
calledByName: {
name: $s.calledByName,
defaultValue: !1
},
parameter: {
name: $s.parameter,
referenceType: Ps.$type
},
value: {
name: $s.value
}
},
superTypes: []
},
NegatedToken: {
name: cr.$type,
properties: {
cardinality: {
name: cr.cardinality
},
lookahead: {
name: cr.lookahead
},
parenthesized: {
name: cr.parenthesized,
defaultValue: !1
},
terminal: {
name: cr.terminal
}
},
superTypes: [pt.$type]
},
Negation: {
name: xo.$type,
properties: {
value: {
name: xo.value
}
},
superTypes: [tr.$type]
},
NumberLiteral: {
name: ru.$type,
properties: {
value: {
name: ru.value
}
},
superTypes: [Ai.$type]
},
Parameter: {
name: Ps.$type,
properties: {
name: {
name: Ps.name
}
},
superTypes: []
},
ParameterReference: {
name: Do.$type,
properties: {
parameter: {
name: Do.parameter,
referenceType: Ps.$type
}
},
superTypes: [tr.$type]
},
ParserRule: {
name: Lt.$type,
properties: {
dataType: {
name: Lt.dataType
},
definition: {
name: Lt.definition
},
entry: {
name: Lt.entry,
defaultValue: !1
},
fragment: {
name: Lt.fragment,
defaultValue: !1
},
inferredType: {
name: Lt.inferredType
},
name: {
name: Lt.name
},
parameters: {
name: Lt.parameters,
defaultValue: []
},
returnType: {
name: Lt.returnType,
referenceType: At.$type
}
},
superTypes: [Bs.$type]
},
ReferenceType: {
name: co.$type,
properties: {
isMulti: {
name: co.isMulti,
defaultValue: !1
},
referenceType: {
name: co.referenceType
}
},
superTypes: [Ei.$type]
},
RegexToken: {
name: lr.$type,
properties: {
cardinality: {
name: lr.cardinality
},
lookahead: {
name: lr.lookahead
},
parenthesized: {
name: lr.parenthesized,
defaultValue: !1
},
regex: {
name: lr.regex
}
},
superTypes: [pt.$type]
},
ReturnType: {
name: Mo.$type,
properties: {
name: {
name: Mo.name
}
},
superTypes: []
},
RuleCall: {
name: ur.$type,
properties: {
arguments: {
name: ur.arguments,
defaultValue: []
},
cardinality: {
name: ur.cardinality
},
predicate: {
name: ur.predicate
},
rule: {
name: ur.rule,
referenceType: _s.$type
}
},
superTypes: [at.$type]
},
SimpleType: {
name: Li.$type,
properties: {
primitiveType: {
name: Li.primitiveType
},
stringType: {
name: Li.stringType
},
typeRef: {
name: Li.typeRef,
referenceType: At.$type
}
},
superTypes: [Ei.$type]
},
StringLiteral: {
name: iu.$type,
properties: {
value: {
name: iu.value
}
},
superTypes: [Ai.$type]
},
TerminalAlternatives: {
name: dr.$type,
properties: {
cardinality: {
name: dr.cardinality
},
elements: {
name: dr.elements,
defaultValue: []
},
lookahead: {
name: dr.lookahead
},
parenthesized: {
name: dr.parenthesized,
defaultValue: !1
}
},
superTypes: [pt.$type]
},
TerminalElement: {
name: pt.$type,
properties: {
cardinality: {
name: pt.cardinality
},
lookahead: {
name: pt.lookahead
},
parenthesized: {
name: pt.parenthesized,
defaultValue: !1
}
},
superTypes: [at.$type]
},
TerminalGroup: {
name: fr.$type,
properties: {
cardinality: {
name: fr.cardinality
},
elements: {
name: fr.elements,
defaultValue: []
},
lookahead: {
name: fr.lookahead
},
parenthesized: {
name: fr.parenthesized,
defaultValue: !1
}
},
superTypes: [pt.$type]
},
TerminalRule: {
name: fn.$type,
properties: {
definition: {
name: fn.definition
},
fragment: {
name: fn.fragment,
defaultValue: !1
},
hidden: {
name: fn.hidden,
defaultValue: !1
},
name: {
name: fn.name
},
type: {
name: fn.type
}
},
superTypes: [_s.$type]
},
TerminalRuleCall: {
name: hr.$type,
properties: {
cardinality: {
name: hr.cardinality
},
lookahead: {
name: hr.lookahead
},
parenthesized: {
name: hr.parenthesized,
defaultValue: !1
},
rule: {
name: hr.rule,
referenceType: fn.$type
}
},
superTypes: [pt.$type]
},
Type: {
name: Ks.$type,
properties: {
name: {
name: Ks.name
},
type: {
name: Ks.type
}
},
superTypes: [At.$type]
},
TypeAttribute: {
name: vi.$type,
properties: {
defaultValue: {
name: vi.defaultValue
},
isOptional: {
name: vi.isOptional,
defaultValue: !1
},
name: {
name: vi.name
},
type: {
name: vi.type
}
},
superTypes: []
},
TypeDefinition: {
name: Ei.$type,
properties: {},
superTypes: []
},
UnionType: {
name: su.$type,
properties: {
types: {
name: su.types,
defaultValue: []
}
},
superTypes: [Ei.$type]
},
UnorderedGroup: {
name: Hs.$type,
properties: {
cardinality: {
name: Hs.cardinality
},
elements: {
name: Hs.elements,
defaultValue: []
}
},
superTypes: [at.$type]
},
UntilToken: {
name: pr.$type,
properties: {
cardinality: {
name: pr.cardinality
},
lookahead: {
name: pr.lookahead
},
parenthesized: {
name: pr.parenthesized,
defaultValue: !1
},
terminal: {
name: pr.terminal
}
},
superTypes: [pt.$type]
},
ValueLiteral: {
name: Ai.$type,
properties: {},
superTypes: []
},
Wildcard: {
name: Oi.$type,
properties: {
cardinality: {
name: Oi.cardinality
},
lookahead: {
name: Oi.lookahead
},
parenthesized: {
name: Oi.parenthesized,
defaultValue: !1
}
},
superTypes: [pt.$type]
}
};
}
}
const Z = new Bf();
function Fo(t) {
return new Sl(t, (e) => Bi(e) ? e.content : [], { includeRoot: !0 });
}
function Mm(t, e) {
for (; t.container; )
if (t = t.container, t === e)
return !0;
return !1;
}
function Go(t) {
return {
start: {
character: t.startColumn - 1,
line: t.startLine - 1
},
end: {
character: t.endColumn,
// endColumn uses the correct index
line: t.endLine - 1
}
};
}
function aa(t) {
if (!t)
return;
const { offset: e, end: n, range: r } = t;
return {
range: r,
offset: e,
end: n,
length: n - e
};
}
var Xt;
(function(t) {
t[t.Before = 0] = "Before", t[t.After = 1] = "After", t[t.OverlapFront = 2] = "OverlapFront", t[t.OverlapBack = 3] = "OverlapBack", t[t.Inside = 4] = "Inside", t[t.Outside = 5] = "Outside";
})(Xt || (Xt = {}));
function Fm(t, e) {
if (t.end.line < e.start.line || t.end.line === e.start.line && t.end.character <= e.start.character)
return Xt.Before;
if (t.start.line > e.end.line || t.start.line === e.end.line && t.start.character >= e.end.character)
return Xt.After;
const n = t.start.line > e.start.line || t.start.line === e.start.line && t.start.character >= e.start.character, r = t.end.line < e.end.line || t.end.line === e.end.line && t.end.character <= e.end.character;
return n && r ? Xt.Inside : n ? Xt.OverlapBack : r ? Xt.OverlapFront : Xt.Outside;
}
function Gm(t, e) {
return Fm(t, e) > Xt.After;
}
const Um = /^[\w\p{L}]$/u;
function jm(t, e) {
if (t) {
const n = zm(t, !0);
if (n && au(n, e))
return n;
if (Mf(t)) {
const r = t.content.findIndex((i) => !i.hidden);
for (let i = r - 1; i >= 0; i--) {
const s = t.content[i];
if (au(s, e))
return s;
}
}
}
}
function au(t, e) {
return Df(t) && e.includes(t.tokenType.name);
}
function zm(t, e = !0) {
for (; t.container; ) {
const n = t.container;
let r = n.content.indexOf(t);
for (; r > 0; ) {
r--;
const i = n.content[r];
if (e || !i.hidden)
return i;
}
t = n;
}
}
class qf extends Error {
constructor(e, n) {
super(e ? `${n} at ${e.range.start.line}:${e.range.start.character}` : n);
}
}
function as(t, e = "Error: Got unexpected value.") {
throw new Error(e);
}
function W(t) {
return t.charCodeAt(0);
}
function lo(t, e) {
Array.isArray(t) ? t.forEach(function(n) {
e.push(n);
}) : e.push(t);
}
function Si(t, e) {
if (t[e] === !0)
throw "duplicate flag " + e;
t[e], t[e] = !0;
}
function nr(t) {
if (t === void 0)
throw Error("Internal Error - Should never get here!");
return !0;
}
function Bm() {
throw Error("Internal Error - Should never get here!");
}
function ou(t) {
return t.type === "Character";
}
const oa = [];
for (let t = W("0"); t <= W("9"); t++)
oa.push(t);
const ca = [W("_")].concat(oa);
for (let t = W("a"); t <= W("z"); t++)
ca.push(t);
for (let t = W("A"); t <= W("Z"); t++)
ca.push(t);
const cu = [
W(" "),
W("\f"),
W(`
`),
W("\r"),
W(" "),
W("\v"),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W(" "),
W("\u2028"),
W("\u2029"),
W(" "),
W(" "),
W(" "),
W("\uFEFF")
], qm = /[0-9a-fA-F]/, Ls = /[0-9]/, Wm = /[1-9]/;
class Wf {
constructor() {
this.idx = 0, this.input = "", this.groupIdx = 0;
}
saveState() {
return {
idx: this.idx,
input: this.input,
groupIdx: this.groupIdx
};
}
restoreState(e) {
this.idx = e.idx, this.input = e.input, this.groupIdx = e.groupIdx;
}
pattern(e) {
this.idx = 0, this.input = e, this.groupIdx = 0, this.consumeChar("/");
const n = this.disjunction();
this.consumeChar("/");
const r = {
type: "Flags",
loc: { begin: this.idx, end: e.length },
global: !1,
ignoreCase: !1,
multiLine: !1,
unicode: !1,
sticky: !1
};
for (; this.isRegExpFlag(); )
switch (this.popChar()) {
case "g":
Si(r, "global");
break;
case "i":
Si(r, "ignoreCase");
break;
case "m":
Si(r, "multiLine");
break;
case "u":
Si(r, "unicode");
break;
case "y":
Si(r, "sticky");
break;
}
if (this.idx !== this.input.length)
throw Error("Redundant input: " + this.input.substring(this.idx));
return {
type: "Pattern",
flags: r,
value: n,
loc: this.loc(0)
};
}
disjunction() {
const e = [], n = this.idx;
for (e.push(this.alternative()); this.peekChar() === "|"; )
this.consumeChar("|"), e.push(this.alternative());
return { type: "Disjunction", value: e, loc: this.loc(n) };
}
alternative() {
const e = [], n = this.idx;
for (; this.isTerm(); )
e.push(this.term());
return { type: "Alternative", value: e, loc: this.loc(n) };
}
term() {
return this.isAssertion() ? this.assertion() : this.atom();
}
assertion() {
const e = this.idx;
switch (this.popChar()) {
case "^":
return {
type: "StartAnchor",
loc: this.loc(e)
};
case "$":
return { type: "EndAnchor", loc: this.loc(e) };
case "\\":
switch (this.popChar()) {
case "b":
return {
type: "WordBoundary",
loc: this.loc(e)
};
case "B":
return {
type: "NonWordBoundary",
loc: this.loc(e)
};
}
throw Error("Invalid Assertion Escape");
case "(":
this.consumeChar("?");
let n;
switch (this.popChar()) {
case "=":
n = "Lookahead";
break;
case "!":
n = "NegativeLookahead";
break;
case "<": {
switch (this.popChar()) {
case "=":
n = "Lookbehind";
break;
case "!":
n = "NegativeLookbehind";
}
break;
}
}
nr(n);
const r = this.disjunction();
return this.consumeChar(")"), {
type: n,
value: r,
loc: this.loc(e)
};
}
return Bm();
}
quantifier(e = !1) {
let n;
const r = this.idx;
switch (this.popChar()) {
case "*":
n = {
atLeast: 0,
atMost: 1 / 0
};
break;
case "+":
n = {
atLeast: 1,
atMost: 1 / 0
};
break;
case "?":
n = {
atLeast: 0,
atMost: 1
};
break;
case "{":
const i = this.integerIncludingZero();
switch (this.popChar()) {
case "}":
n = {
atLeast: i,
atMost: i
};
break;
case ",":
let s;
this.isDigit() ? (s = this.integerIncludingZero(), n = {
atLeast: i,
atMost: s
}) : n = {
atLeast: i,
atMost: 1 / 0
}, this.consumeChar("}");
break;
}
if (e === !0 && n === void 0)
return;
nr(n);
break;
}
if (!(e === !0 && n === void 0) && nr(n))
return this.peekChar(0) === "?" ? (this.consumeChar("?"), n.greedy = !1) : n.greedy = !0, n.type = "Quantifier", n.loc = this.loc(r), n;
}
atom() {
let e;
const n = this.idx;
switch (this.peekChar()) {
case ".":
e = this.dotAll();
break;
case "\\":
e = this.atomEscape();
break;
case "[":
e = this.characterClass();
break;
case "(":
e = this.group();
break;
}
if (e === void 0 && this.isPatternCharacter() && (e = this.patternCharacter()), nr(e))
return e.loc = this.loc(n), this.isQuantifier() && (e.quantifier = this.quantifier()), e;
}
dotAll() {
return this.consumeChar("."), {
type: "Set",
complement: !0,
value: [W(`
`), W("\r"), W("\u2028"), W("\u2029")]
};
}
atomEscape() {
switch (this.consumeChar("\\"), this.peekChar()) {
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
return this.decimalEscapeAtom();
case "d":
case "D":
case "s":
case "S":
case "w":
case "W":
return this.characterClassEscape();
case "f":
case "n":
case "r":
case "t":
case "v":
return this.controlEscapeAtom();
case "c":
return this.controlLetterEscapeAtom();
case "0":
return this.nulCharacterAtom();
case "x":
return this.hexEscapeSequenceAtom();
case "u":
return this.regExpUnicodeEscapeSequenceAtom();
default:
return this.identityEscapeAtom();
}
}
decimalEscapeAtom() {
return { type: "GroupBackReference", value: this.positiveInteger() };
}
characterClassEscape() {
let e, n = !1;
switch (this.popChar()) {
case "d":
e = oa;
break;
case "D":
e = oa, n = !0;
break;
case "s":
e = cu;
break;
case "S":
e = cu, n = !0;
break;
case "w":
e = ca;
break;
case "W":
e = ca, n = !0;
break;
}
if (nr(e))
return { type: "Set", value: e, complement: n };
}
controlEscapeAtom() {
let e;
switch (this.popChar()) {
case "f":
e = W("\f");
break;
case "n":
e = W(`
`);
break;
case "r":
e = W("\r");
break;
case "t":
e = W(" ");
break;
case "v":
e = W("\v");
break;
}
if (nr(e))
return { type: "Character", value: e };
}
controlLetterEscapeAtom() {
this.consumeChar("c");
const e = this.popChar();
if (/[a-zA-Z]/.test(e) === !1)
throw Error("Invalid ");
return { type: "Character", value: e.toUpperCase().charCodeAt(0) - 64 };
}
nulCharacterAtom() {
return this.consumeChar("0"), { type: "Character", value: W("\0") };
}
hexEscapeSequenceAtom() {
return this.consumeChar("x"), this.parseHexDigits(2);
}
regExpUnicodeEscapeSequenceAtom() {
return this.consumeChar("u"), this.parseHexDigits(4);
}
identityEscapeAtom() {
const e = this.popChar();
return { type: "Character", value: W(e) };
}
classPatternCharacterAtom() {
switch (this.peekChar()) {
case `
`:
case "\r":
case "\u2028":
case "\u2029":
case "\\":
case "]":
throw Error("TBD");
default:
const e = this.popChar();
return { type: "Character", value: W(e) };
}
}
characterClass() {
const e = [];
let n = !1;
for (this.consumeChar("["), this.peekChar(0) === "^" && (this.consumeChar("^"), n = !0); this.isClassAtom(); ) {
const r = this.classAtom();
if (r.type, ou(r) && this.isRangeDash()) {
this.consumeChar("-");
const i = this.classAtom();
if (i.type, ou(i)) {
if (i.value < r.value)
throw Error("Range out of order in character class");
e.push({ from: r.value, to: i.value });
} else
lo(r.value, e), e.push(W("-")), lo(i.value, e);
} else
lo(r.value, e);
}
return this.consumeChar("]"), { type: "Set", complement: n, value: e };
}
classAtom() {
switch (this.peekChar()) {
case "]":
case `
`:
case "\r":
case "\u2028":
case "\u2029":
throw Error("TBD");
case "\\":
return this.classEscape();
default:
return this.classPatternCharacterAtom();
}
}
classEscape() {
switch (this.consumeChar("\\"), this.peekChar()) {
case "b":
return this.consumeChar("b"), { type: "Character", value: W("\b") };
case "d":
case "D":
case "s":
case "S":
case "w":
case "W":
return this.characterClassEscape();
case "f":
case "n":
case "r":
case "t":
case "v":
return this.controlEscapeAtom();
case "c":
return this.controlLetterEscapeAtom();
case "0":
return this.nulCharacterAtom();
case "x":
return this.hexEscapeSequenceAtom();
case "u":
return this.regExpUnicodeEscapeSequenceAtom();
default:
return this.identityEscapeAtom();
}
}
group() {
let e = !0;
switch (this.consumeChar("("), this.peekChar(0)) {
case "?":
this.consumeChar("?"), this.consumeChar(":"), e = !1;
break;
default:
this.groupIdx++;
break;
}
const n = this.disjunction();
this.consumeChar(")");
const r = {
type: "Group",
capturing: e,
value: n
};
return e && (r.idx = this.groupIdx), r;
}
positiveInteger() {
let e = this.popChar();
if (Wm.test(e) === !1)
throw Error("Expecting a positive integer");
for (; Ls.test(this.peekChar(0)); )
e += this.popChar();
return parseInt(e, 10);
}
integerIncludingZero() {
let e = this.popChar();
if (Ls.test(e) === !1)
throw Error("Expecting an integer");
for (; Ls.test(this.peekChar(0)); )
e += this.popChar();
return parseInt(e, 10);
}
patternCharacter() {
const e = this.popChar();
switch (e) {
case `
`:
case "\r":
case "\u2028":
case "\u2029":
case "^":
case "$":
case "\\":
case ".":
case "*":
case "+":
case "?":
case "(":
case ")":
case "[":
case "|":
throw Error("TBD");
default:
return { type: "Character", value: W(e) };
}
}
isRegExpFlag() {
switch (this.peekChar(0)) {
case "g":
case "i":
case "m":
case "u":
case "y":
return !0;
default:
return !1;
}
}
isRangeDash() {
return this.peekChar() === "-" && this.isClassAtom(1);
}
isDigit() {
return Ls.test(this.peekChar(0));
}
isClassAtom(e = 0) {
switch (this.peekChar(e)) {
case "]":
case `
`:
case "\r":
case "\u2028":
case "\u2029":
return !1;
default:
return !0;
}
}
isTerm() {
return this.isAtom() || this.isAssertion();
}
isAtom() {
if (this.isPatternCharacter())
return !0;
switch (this.peekChar(0)) {
case ".":
case "\\":
case "[":
case "(":
return !0;
default:
return !1;
}
}
isAssertion() {
switch (this.peekChar(0)) {
case "^":
case "$":
return !0;
case "\\":
switch (this.peekChar(1)) {
case "b":
case "B":
return !0;
default:
return !1;
}
case "(":
return this.peekChar(1) === "?" && (this.peekChar(2) === "=" || this.peekChar(2) === "!" || this.peekChar(2) === "<" && (this.peekChar(3) === "=" || this.peekChar(3) === "!"));
default:
return !1;
}
}
isQuantifier() {
const e = this.saveState();
try {
return this.quantifier(!0) !== void 0;
} catch {
return !1;
} finally {
this.restoreState(e);
}
}
isPatternCharacter() {
switch (this.peekChar()) {
case "^":
case "$":
case "\\":
case ".":
case "*":
case "+":
case "?":
case "(":
case ")":
case "[":
case "|":
case "/":
case `
`:
case "\r":
case "\u2028":
case "\u2029":
return !1;
default:
return !0;
}
}
parseHexDigits(e) {
let n = "";
for (let i = 0; i < e; i++) {
const s = this.popChar();
if (qm.test(s) === !1)
throw Error("Expecting a HexDecimal digits");
n += s;
}
return { type: "Character", value: parseInt(n, 16) };
}
peekChar(e = 0) {
return this.input[this.idx + e];
}
popChar() {
const e = this.peekChar(0);
return this.consumeChar(void 0), e;
}
consumeChar(e) {
if (e !== void 0 && this.input[this.idx] !== e)
throw Error("Expected: '" + e + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx);
if (this.idx >= this.input.length)
throw Error("Unexpected end of input");
this.idx++;
}
loc(e) {
return { begin: e, end: this.idx };
}
}
class Fa {
visitChildren(e) {
for (const n in e) {
const r = e[n];
e.hasOwnProperty(n) && (r.type !== void 0 ? this.visit(r) : Array.isArray(r) && r.forEach((i) => {
this.visit(i);
}, this));
}
}
visit(e) {
switch (e.type) {
case "Pattern":
this.visitPattern(e);
break;
case "Flags":
this.visitFlags(e);
break;
case "Disjunction":
this.visitDisjunction(e);
break;
case "Alternative":
this.visitAlternative(e);
break;
case "StartAnchor":
this.visitStartAnchor(e);
break;
case "EndAnchor":
this.visitEndAnchor(e);
break;
case "WordBoundary":
this.visitWordBoundary(e);
break;
case "NonWordBoundary":
this.visitNonWordBoundary(e);
break;
case "Lookahead":
this.visitLookahead(e);
break;
case "NegativeLookahead":
this.visitNegativeLookahead(e);
break;
case "Lookbehind":
this.visitLookbehind(e);
break;
case "NegativeLookbehind":
this.visitNegativeLookbehind(e);
break;
case "Character":
this.visitCharacter(e);
break;
case "Set":
this.visitSet(e);
break;
case "Group":
this.visitGroup(e);
break;
case "GroupBackReference":
this.visitGroupBackReference(e);
break;
case "Quantifier":
this.visitQuantifier(e);
break;
}
this.visitChildren(e);
}
visitPattern(e) {
}
visitFlags(e) {
}
visitDisjunction(e) {
}
visitAlternative(e) {
}
// Assertion
visitStartAnchor(e) {
}
visitEndAnchor(e) {
}
visitWordBoundary(e) {
}
visitNonWordBoundary(e) {
}
visitLookahead(e) {
}
visitNegativeLookahead(e) {
}
visitLookbehind(e) {
}
visitNegativeLookbehind(e) {
}
// atoms
visitCharacter(e) {
}
visitSet(e) {
}
visitGroup(e) {
}
visitGroupBackReference(e) {
}
visitQuantifier(e) {
}
}
const Vm = /\r?\n/gm, Km = new Wf();
class Hm extends Fa {
constructor() {
super(...arguments), this.isStarting = !0, this.endRegexpStack = [], this.multiline = !1;
}
get endRegex() {
return this.endRegexpStack.join("");
}
reset(e) {
this.multiline = !1, this.regex = e, this.startRegexp = "", this.isStarting = !0, this.endRegexpStack = [];
}
visitGroup(e) {
e.quantifier && (this.isStarting = !1, this.endRegexpStack = []);
}
visitCharacter(e) {
const n = String.fromCharCode(e.value);
if (!this.multiline && n === `
` && (this.multiline = !0), e.quantifier)
this.isStarting = !1, this.endRegexpStack = [];
else {
const r = Ga(n);
this.endRegexpStack.push(r), this.isStarting && (this.startRegexp += r);
}
}
visitSet(e) {
if (!this.multiline) {
const n = this.regex.substring(e.loc.begin, e.loc.end), r = new RegExp(n);
this.multiline = !!`
`.match(r);
}
if (e.quantifier)
this.isStarting = !1, this.endRegexpStack = [];
else {
const n = this.regex.substring(e.loc.begin, e.loc.end);
this.endRegexpStack.push(n), this.isStarting && (this.startRegexp += n);
}
}
visitChildren(e) {
e.type === "Group" && e.quantifier || super.visitChildren(e);
}
}
const uo = new Hm();
function Ym(t) {
try {
return typeof t == "string" && (t = new RegExp(t)), t = t.toString(), uo.reset(t), uo.visit(Km.pattern(t)), uo.multiline;
} catch {
return !1;
}
}
const Xm = `\f
\r \v \u2028\u2029 \uFEFF`.split("");
function Vf(t) {
const e = typeof t == "string" ? new RegExp(t) : t;
return Xm.some((n) => e.test(n));
}
function Ga(t) {
return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function Jm(t, e) {
const n = Qm(t), r = e.match(n);
return !!r && r[0].length > 0;
}
function Qm(t) {
typeof t == "string" && (t = new RegExp(t));
const e = t, n = t.source;
let r = 0;
function i() {
let s = "", a;
function o(l) {
s += n.substr(r, l), r += l;
}
function c(l) {
s += "(?:" + n.substr(r, l) + "|$)", r += l;
}
for (; r < n.length; )
switch (n[r]) {
case "\\":
switch (n[r + 1]) {
case "c":
c(3);
break;
case "x":
c(4);
break;
case "u":
e.unicode ? n[r + 2] === "{" ? c(n.indexOf("}", r) - r + 1) : c(6) : c(2);
break;
case "p":
case "P":
e.unicode ? c(n.indexOf("}", r) - r + 1) : c(2);
break;
case "k":
c(n.indexOf(">", r) - r + 1);
break;
default:
c(2);
break;
}
break;
case "[":
a = /\[(?:\\.|.)*?\]/g, a.lastIndex = r, a = a.exec(n) || [], c(a[0].length);
break;
case "|":
case "^":
case "$":
case "*":
case "+":
case "?":
o(1);
break;
case "{":
a = /\{\d+,?\d*\}/g, a.lastIndex = r, a = a.exec(n), a ? o(a[0].length) : c(1);
break;
case "(":
if (n[r + 1] === "?")
switch (n[r + 2]) {
case ":":
s += "(?:", r += 3, s += i() + "|$)";
break;
case "=":
s += "(?=", r += 3, s += i() + ")";
break;
case "!":
a = r, r += 3, i(), s += n.substr(a, r - a);
break;
case "<":
switch (n[r + 3]) {
case "=":
case "!":
a = r, r += 4, i(), s += n.substr(a, r - a);
break;
default:
o(n.indexOf(">", r) - r + 1), s += i() + "|$)";
break;
}
break;
}
else
o(1), s += i() + "|$)";
break;
case ")":
return ++r, s;
default:
c(1);
break;
}
return s;
}
return new RegExp(i(), t.flags);
}
function Zm(t) {
return t.rules.find((e) => an(e) && e.entry);
}
function eg(t) {
return t.rules.filter((e) => on(e) && e.hidden);
}
function Kf(t, e) {
const n = /* @__PURE__ */ new Set(), r = Zm(t);
if (!r)
return new Set(t.rules);
const i = [r].concat(eg(t));
for (const a of i)
Hf(a, n, e);
const s = /* @__PURE__ */ new Set();
for (const a of t.rules)
(n.has(a.name) || on(a) && a.hidden) && s.add(a);
return s;
}
function Hf(t, e, n) {
e.add(t.name), is(t).forEach((r) => {
if (qn(r) || n) {
const i = r.rule.ref;
i && !e.has(i.name) && Hf(i, e, n);
}
});
}
function tg(t) {
if (t.terminal)
return t.terminal;
if (t.type.ref) {
const e = Xf(t.type.ref);
return e == null ? void 0 : e.terminal;
}
}
function ng(t) {
return t.hidden && !Vf(wl(t));
}
function rg(t, e) {
return !t || !e ? [] : Nl(t, e, t.astNode, !0);
}
function Yf(t, e, n) {
if (!t || !e)
return;
const r = Nl(t, e, t.astNode, !0);
if (r.length !== 0)
return n !== void 0 ? n = Math.max(0, Math.min(n, r.length - 1)) : n = 0, r[n];
}
function Nl(t, e, n, r) {
if (!r) {
const i = xa(t.grammarSource, zn);
if (i && i.feature === e)
return [t];
}
return Bi(t) && t.astNode === n ? t.content.flatMap((i) => Nl(i, e, n, !1)) : [];
}
function ig(t, e, n) {
if (!t)
return;
const r = sg(t, e, t == null ? void 0 : t.astNode);
if (r.length !== 0)
return n !== void 0 ? n = Math.max(0, Math.min(n, r.length - 1)) : n = 0, r[n];
}
function sg(t, e, n) {
if (t.astNode !== n)
return [];
if (Bn(t.grammarSource) && t.grammarSource.value === e)
return [t];
const r = Fo(t).iterator();
let i;
const s = [];
do
if (i = r.next(), !i.done) {
const a = i.value;
a.astNode === n ? Bn(a.grammarSource) && a.grammarSource.value === e && s.push(a) : r.prune();
}
while (!i.done);
return s;
}
function ag(t) {
var n;
const e = t.astNode;
for (; e === ((n = t.container) == null ? void 0 : n.astNode); ) {
const r = xa(t.grammarSource, zn);
if (r)
return r;
t = t.container;
}
}
function Xf(t) {
let e = t;
return jf(e) && (Da(e.$container) ? e = e.$container.$container : ss(e.$container) ? e = e.$container : as(e.$container)), Jf(t, e, /* @__PURE__ */ new Map());
}
function Jf(t, e, n) {
var i;
function r(s, a) {
let o;
return xa(s, zn) || (o = Jf(a, a, n)), n.set(t, o), o;
}
if (n.has(t))
return n.get(t);
n.set(t, void 0);
for (const s of is(e)) {
if (zn(s) && s.feature.toLowerCase() === "name")
return n.set(t, s), s;
if (qn(s) && an(s.rule.ref))
return r(s, s.rule.ref);
if (_m(s) && ((i = s.typeRef) != null && i.ref))
return r(s, s.typeRef.ref);
}
}
function Qf(t) {
return Zf(t, /* @__PURE__ */ new Set());
}
function Zf(t, e) {
if (e.has(t))
return !0;
e.add(t);
for (const n of is(t))
if (qn(n)) {
if (!n.rule.ref || an(n.rule.ref) && !Zf(n.rule.ref, e) || sa(n.rule.ref))
return !1;
} else {
if (zn(n))
return !1;
if (Da(n))
return !1;
}
return !!t.definition;
}
function eh(t) {
if (!on(t)) {
if (t.inferredType)
return t.inferredType.name;
if (t.dataType)
return t.dataType;
if (t.returnType) {
const e = t.returnType.ref;
if (e)
return e.name;
}
}
}
function qi(t) {
if (ss(t))
return an(t) && Qf(t) ? t.name : eh(t) ?? t.name;
if (Cm(t) || Om(t) || Im(t))
return t.name;
if (Da(t)) {
const e = og(t);
if (e)
return e;
} else if (jf(t))
return t.name;
throw new Error("Cannot get name of Unknown Type");
}
function og(t) {
var e;
if (t.inferredType)
return t.inferredType.name;
if ((e = t.type) != null && e.ref)
return qi(t.type.ref);
}
function cg(t) {
var e;
return on(t) ? ((e = t.type) == null ? void 0 : e.name) ?? "string" : eh(t) ?? t.name;
}
function wl(t) {
const e = {
s: !1,
i: !1,
u: !1
}, n = ii(t.definition, e), r = Object.entries(e).filter(([, i]) => i).map(([i]) => i).join("");
return new RegExp(n, r);
}
const bl = /[\s\S]/.source;
function ii(t, e) {
var n;
if ($m(t))
return lg(t);
if (Pm(t))
return ug(t);
if (vm(t))
return hg(t);
if (Lm(t)) {
const r = t.rule.ref;
if (!r)
throw new Error("Missing rule reference.");
return en(ii(r.definition), {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized
});
} else {
if (km(t))
return fg(t);
if (xm(t))
return dg(t);
if (bm(t)) {
const r = t.regex.lastIndexOf("/"), i = t.regex.substring(1, r), s = t.regex.substring(r + 1);
return e && (e.i = s.includes("i"), e.s = s.includes("s"), e.u = s.includes("u")), en(i, {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized,
wrap: !1
});
} else {
if (Dm(t))
return en(bl, {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized
});
throw new Error(`Invalid terminal element: ${t == null ? void 0 : t.$type}, ${(n = t == null ? void 0 : t.$cstNode) == null ? void 0 : n.text}`);
}
}
}
function lg(t) {
return en(t.elements.map((e) => ii(e)).join("|"), {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized,
wrap: !1
// wrapping is not required for top level alternatives, and nested alternatives are already parenthesized according to the grammar
});
}
function ug(t) {
return en(t.elements.map((e) => ii(e)).join(""), {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized,
wrap: !1
// wrapping is not required for top level group, and nested group are already parenthesized according to the grammar
});
}
function dg(t) {
return en(`${bl}*?${ii(t.terminal)}`, {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized
});
}
function fg(t) {
return en(`(?!${ii(t.terminal)})${bl}*?`, {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized
});
}
function hg(t) {
return t.right ? en(`[${fo(t.left)}-${fo(t.right)}]`, {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized,
wrap: !1
}) : en(fo(t.left), {
cardinality: t.cardinality,
lookahead: t.lookahead,
parenthesized: t.parenthesized,
wrap: !1
});
}
function fo(t) {
return Ga(t.value);
}
function en(t, e) {
return (e.parenthesized || e.lookahead || e.wrap !== !1) && (t = `(${e.lookahead ?? (e.parenthesized ? "" : "?:")}${t})`), e.cardinality ? `${t}${e.cardinality}` : t;
}
function pg(t) {
const e = [], n = t.Grammar;
for (const r of n.rules)
on(r) && ng(r) && Ym(wl(r)) && e.push(r.name);
return {
multilineCommentRules: e,
nameRegexp: Um
};
}
function Uo(t) {
console && console.error && console.error(`Error: ${t}`);
}
function th(t) {
console && console.warn && console.warn(`Warning: ${t}`);
}
function nh(t) {
const e = (/* @__PURE__ */ new Date()).getTime(), n = t();
return { time: (/* @__PURE__ */ new Date()).getTime() - e, value: n };
}
function rh(t) {
function e() {
}
e.prototype = t;
const n = new e();
function r() {
return typeof n.bar;
}
return r(), r(), t;
}
function mg(t) {
return gg(t) ? t.LABEL : t.name;
}
function gg(t) {
return tt(t.LABEL) && t.LABEL !== "";
}
class Ut {
get definition() {
return this._definition;
}
set definition(e) {
this._definition = e;
}
constructor(e) {
this._definition = e;
}
accept(e) {
e.visit(this), j(this.definition, (n) => {
n.accept(e);
});
}
}
class Xe extends Ut {
constructor(e) {
super([]), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
set definition(e) {
}
get definition() {
return this.referencedRule !== void 0 ? this.referencedRule.definition : [];
}
accept(e) {
e.visit(this);
}
}
class si extends Ut {
constructor(e) {
super(e.definition), this.orgText = "", ut(this, It(e, (n) => n !== void 0));
}
}
class nt extends Ut {
constructor(e) {
super(e.definition), this.ignoreAmbiguities = !1, ut(this, It(e, (n) => n !== void 0));
}
}
let ze = class extends Ut {
constructor(e) {
super(e.definition), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
};
class ft extends Ut {
constructor(e) {
super(e.definition), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
}
class ht extends Ut {
constructor(e) {
super(e.definition), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
}
class Ae extends Ut {
constructor(e) {
super(e.definition), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
}
class rt extends Ut {
constructor(e) {
super(e.definition), this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
}
class it extends Ut {
get definition() {
return this._definition;
}
set definition(e) {
this._definition = e;
}
constructor(e) {
super(e.definition), this.idx = 1, this.ignoreAmbiguities = !1, this.hasPredicates = !1, ut(this, It(e, (n) => n !== void 0));
}
}
class ue {
constructor(e) {
this.idx = 1, ut(this, It(e, (n) => n !== void 0));
}
accept(e) {
e.visit(this);
}
}
function yg(t) {
return M(t, Ys);
}
function Ys(t) {
function e(n) {
return M(n, Ys);
}
if (t instanceof Xe) {
const n = {
type: "NonTerminal",
name: t.nonTerminalName,
idx: t.idx
};
return tt(t.label) && (n.label = t.label), n;
} else {
if (t instanceof nt)
return {
type: "Alternative",
definition: e(t.definition)
};
if (t instanceof ze)
return {
type: "Option",
idx: t.idx,
definition: e(t.definition)
};
if (t instanceof ft)
return {
type: "RepetitionMandatory",
idx: t.idx,
definition: e(t.definition)
};
if (t instanceof ht)
return {
type: "RepetitionMandatoryWithSeparator",
idx: t.idx,
separator: Ys(new ue({ terminalType: t.separator })),
definition: e(t.definition)
};
if (t instanceof rt)
return {
type: "RepetitionWithSeparator",
idx: t.idx,
separator: Ys(new ue({ terminalType: t.separator })),
definition: e(t.definition)
};
if (t instanceof Ae)
return {
type: "Repetition",
idx: t.idx,
definition: e(t.definition)
};
if (t instanceof it)
return {
type: "Alternation",
idx: t.idx,
definition: e(t.definition)
};
if (t instanceof ue) {
const n = {
type: "Terminal",
name: t.terminalType.name,
label: mg(t.terminalType),
idx: t.idx
};
tt(t.label) && (n.terminalLabel = t.label);
const r = t.terminalType.PATTERN;
return t.terminalType.PATTERN && (n.pattern = nn(r) ? r.source : r), n;
} else {
if (t instanceof si)
return {
type: "Rule",
name: t.name,
orgText: t.orgText,
definition: e(t.definition)
};
throw Error("non exhaustive match");
}
}
}
class ai {
visit(e) {
const n = e;
switch (n.constructor) {
case Xe:
return this.visitNonTerminal(n);
case nt:
return this.visitAlternative(n);
case ze:
return this.visitOption(n);
case ft:
return this.visitRepetitionMandatory(n);
case ht:
return this.visitRepetitionMandatoryWithSeparator(n);
case rt:
return this.visitRepetitionWithSeparator(n);
case Ae:
return this.visitRepetition(n);
case it:
return this.visitAlternation(n);
case ue:
return this.visitTerminal(n);
case si:
return this.visitRule(n);
default:
throw Error("non exhaustive match");
}
}
/* c8 ignore next */
visitNonTerminal(e) {
}
/* c8 ignore next */
visitAlternative(e) {
}
/* c8 ignore next */
visitOption(e) {
}
/* c8 ignore next */
visitRepetition(e) {
}
/* c8 ignore next */
visitRepetitionMandatory(e) {
}
/* c8 ignore next 3 */
visitRepetitionMandatoryWithSeparator(e) {
}
/* c8 ignore next */
visitRepetitionWithSeparator(e) {
}
/* c8 ignore next */
visitAlternation(e) {
}
/* c8 ignore next */
visitTerminal(e) {
}
/* c8 ignore next */
visitRule(e) {
}
}
function Tg(t) {
return t instanceof nt || t instanceof ze || t instanceof Ae || t instanceof ft || t instanceof ht || t instanceof rt || t instanceof ue || t instanceof si;
}
function la(t, e = []) {
return t instanceof ze || t instanceof Ae || t instanceof rt ? !0 : t instanceof it ? Of(t.definition, (r) => la(r, e)) : t instanceof Xe && Qe(e, t) ? !1 : t instanceof Ut ? (t instanceof Xe && e.push(t), Nt(t.definition, (r) => la(r, e))) : !1;
}
function Rg(t) {
return t instanceof it;
}
function Ot(t) {
if (t instanceof Xe)
return "SUBRULE";
if (t instanceof ze)
return "OPTION";
if (t instanceof it)
return "OR";
if (t instanceof ft)
return "AT_LEAST_ONE";
if (t instanceof ht)
return "AT_LEAST_ONE_SEP";
if (t instanceof rt)
return "MANY_SEP";
if (t instanceof Ae)
return "MANY";
if (t instanceof ue)
return "CONSUME";
throw Error("non exhaustive match");
}
class Ua {
walk(e, n = []) {
j(e.definition, (r, i) => {
const s = Fe(e.definition, i + 1);
if (r instanceof Xe)
this.walkProdRef(r, s, n);
else if (r instanceof ue)
this.walkTerminal(r, s, n);
else if (r instanceof nt)
this.walkFlat(r, s, n);
else if (r instanceof ze)
this.walkOption(r, s, n);
else if (r instanceof ft)
this.walkAtLeastOne(r, s, n);
else if (r instanceof ht)
this.walkAtLeastOneSep(r, s, n);
else if (r instanceof rt)
this.walkManySep(r, s, n);
else if (r instanceof Ae)
this.walkMany(r, s, n);
else if (r instanceof it)
this.walkOr(r, s, n);
else
throw Error("non exhaustive match");
});
}
walkTerminal(e, n, r) {
}
walkProdRef(e, n, r) {
}
walkFlat(e, n, r) {
const i = n.concat(r);
this.walk(e, i);
}
walkOption(e, n, r) {
const i = n.concat(r);
this.walk(e, i);
}
walkAtLeastOne(e, n, r) {
const i = [
new ze({ definition: e.definition })
].concat(n, r);
this.walk(e, i);
}
walkAtLeastOneSep(e, n, r) {
const i = lu(e, n, r);
this.walk(e, i);
}
walkMany(e, n, r) {
const i = [
new ze({ definition: e.definition })
].concat(n, r);
this.walk(e, i);
}
walkManySep(e, n, r) {
const i = lu(e, n, r);
this.walk(e, i);
}
walkOr(e, n, r) {
const i = n.concat(r);
j(e.definition, (s) => {
const a = new nt({ definition: [s] });
this.walk(a, i);
});
}
}
function lu(t, e, n) {
return [
new ze({
definition: [
new ue({ terminalType: t.separator })
].concat(t.definition)
})
].concat(e, n);
}
function os(t) {
if (t instanceof Xe)
return os(t.referencedRule);
if (t instanceof ue)
return Ag(t);
if (Tg(t))
return vg(t);
if (Rg(t))
return Eg(t);
throw Error("non exhaustive match");
}
function vg(t) {
let e = [];
const n = t.definition;
let r = 0, i = n.length > r, s, a = !0;
for (; i && a; )
s = n[r], a = la(s), e = e.concat(os(s)), r = r + 1, i = n.length > r;
return Al(e);
}
function Eg(t) {
const e = M(t.definition, (n) => os(n));
return Al(yt(e));
}
function Ag(t) {
return [t.terminalType];
}
const ih = "_~IN~_";
class Sg extends Ua {
constructor(e) {
super(), this.topProd = e, this.follows = {};
}
startWalking() {
return this.walk(this.topProd), this.follows;
}
walkTerminal(e, n, r) {
}
walkProdRef(e, n, r) {
const i = kg(e.referencedRule, e.idx) + this.topProd.name, s = n.concat(r), a = new nt({ definition: s }), o = os(a);
this.follows[i] = o;
}
}
function Cg(t) {
const e = {};
return j(t, (n) => {
const r = new Sg(n).startWalking();
ut(e, r);
}), e;
}
function kg(t, e) {
return t.name + e + ih;
}
let Xs = {};
const Ng = new Wf();
function ja(t) {
const e = t.toString();
if (Xs.hasOwnProperty(e))
return Xs[e];
{
const n = Ng.pattern(e);
return Xs[e] = n, n;
}
}
function wg() {
Xs = {};
}
const sh = "Complement Sets are not supported for first char optimization", ua = `Unable to use "first char" lexer optimizations:
`;
function bg(t, e = !1) {
try {
const n = ja(t);
return jo(n.value, {}, n.flags.ignoreCase);
} catch (n) {
if (n.message === sh)
e && th(`${ua} Unable to optimize: < ${t.toString()} >
Complement Sets cannot be automatically optimized.
This will disable the lexer's first char optimizations.
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);
else {
let r = "";
e && (r = `
This will disable the lexer's first char optimizations.
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`), Uo(`${ua}
Failed parsing: < ${t.toString()} >
Using the @chevrotain/regexp-to-ast library
Please open an issue at: https://github.com/chevrotain/chevrotain/issues` + r);
}
}
return [];
}
function jo(t, e, n) {
switch (t.type) {
case "Disjunction":
for (let i = 0; i < t.value.length; i++)
jo(t.value[i], e, n);
break;
case "Alternative":
const r = t.value;
for (let i = 0; i < r.length; i++) {
const s = r[i];
switch (s.type) {
case "EndAnchor":
case "GroupBackReference":
case "Lookahead":
case "NegativeLookahead":
case "Lookbehind":
case "NegativeLookbehind":
case "StartAnchor":
case "WordBoundary":
case "NonWordBoundary":
continue;
}
const a = s;
switch (a.type) {
case "Character":
Os(a.value, e, n);
break;
case "Set":
if (a.complement === !0)
throw Error(sh);
j(a.value, (c) => {
if (typeof c == "number")
Os(c, e, n);
else {
const l = c;
if (n === !0)
for (let u = l.from; u <= l.to; u++)
Os(u, e, n);
else {
for (let u = l.from; u <= l.to && u < Di; u++)
Os(u, e, n);
if (l.to >= Di) {
const u = l.from >= Di ? l.from : Di, f = l.to, m = Rn(u), g = Rn(f);
for (let A = m; A <= g; A++)
e[A] = A;
}
}
}
});
break;
case "Group":
jo(a.value, e, n);
break;
default:
throw Error("Non Exhaustive Match");
}
const o = a.quantifier !== void 0 && a.quantifier.atLeast === 0;
if (
// A group may be optional due to empty contents /(?:)/
// or if everything inside it is optional /((a)?)/
a.type === "Group" && zo(a) === !1 || // If this term is not a group it may only be optional if it has an optional quantifier
a.type !== "Group" && o === !1
)
break;
}
break;
default:
throw Error("non exhaustive match!");
}
return Le(e);
}
function Os(t, e, n) {
const r = Rn(t);
e[r] = r, n === !0 && Ig(t, e);
}
function Ig(t, e) {
const n = String.fromCharCode(t), r = n.toUpperCase();
if (r !== n) {
const i = Rn(r.charCodeAt(0));
e[i] = i;
} else {
const i = n.toLowerCase();
if (i !== n) {
const s = Rn(i.charCodeAt(0));
e[s] = s;
}
}
}
function uu(t, e) {
return jr(t.value, (n) => {
if (typeof n == "number")
return Qe(e, n);
{
const r = n;
return jr(e, (i) => r.from <= i && i <= r.to) !== void 0;
}
});
}
function zo(t) {
const e = t.quantifier;
return e && e.atLeast === 0 ? !0 : t.value ? je(t.value) ? Nt(t.value, zo) : zo(t.value) : !1;
}
class _g extends Fa {
constructor(e) {
super(), this.targetCharCodes = e, this.found = !1;
}
visitChildren(e) {
if (this.found !== !0) {
switch (e.type) {
case "Lookahead":
this.visitLookahead(e);
return;
case "NegativeLookahead":
this.visitNegativeLookahead(e);
return;
case "Lookbehind":
this.visitLookbehind(e);
return;
case "NegativeLookbehind":
this.visitNegativeLookbehind(e);
return;
}
super.visitChildren(e);
}
}
visitCharacter(e) {
Qe(this.targetCharCodes, e.value) && (this.found = !0);
}
visitSet(e) {
e.complement ? uu(e, this.targetCharCodes) === void 0 && (this.found = !0) : uu(e, this.targetCharCodes) !== void 0 && (this.found = !0);
}
}
function Il(t, e) {
if (e instanceof RegExp) {
const n = ja(e), r = new _g(t);
return r.visit(n), r.found;
} else
return jr(e, (n) => Qe(t, n.charCodeAt(0))) !== void 0;
}
const Wn = "PATTERN", xi = "defaultMode", xs = "modes";
function $g(t, e) {
e = El(e, {
debug: !1,
safeMode: !1,
positionTracking: "full",
lineTerminatorCharacters: ["\r", `
`],
tracer: (O, b) => b()
});
const n = e.tracer;
n("initCharCodeToOptimizedIndexMap", () => {
ty();
});
let r;
n("Reject Lexer.NA", () => {
r = Oa(t, (O) => O[Wn] === et.NA);
});
let i = !1, s;
n("Transform Patterns", () => {
i = !1, s = M(r, (O) => {
const b = O[Wn];
if (nn(b)) {
const x = b.source;
return x.length === 1 && // only these regExp meta characters which can appear in a length one regExp
x !== "^" && x !== "$" && x !== "." && !b.ignoreCase ? x : x.length === 2 && x[0] === "\\" && // not a meta character
!Qe([
"d",
"D",
"s",
"S",
"t",
"r",
"n",
"t",
"0",
"c",
"b",
"B",
"f",
"v",
"w",
"W"
], x[1]) ? x[1] : du(b);
} else {
if (Hn(b))
return i = !0, { exec: b };
if (typeof b == "object")
return i = !0, b;
if (typeof b == "string") {
if (b.length === 1)
return b;
{
const x = b.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"), X = new RegExp(x);
return du(X);
}
} else
throw Error("non exhaustive match");
}
});
});
let a, o, c, l, u;
n("misc mapping", () => {
a = M(r, (O) => O.tokenTypeIdx), o = M(r, (O) => {
const b = O.GROUP;
if (b !== et.SKIPPED) {
if (tt(b))
return b;
if (tn(b))
return !1;
throw Error("non exhaustive match");
}
}), c = M(r, (O) => {
const b = O.LONGER_ALT;
if (b)
return je(b) ? M(b, (X) => Yl(r, X)) : [Yl(r, b)];
}), l = M(r, (O) => O.PUSH_MODE), u = M(r, (O) => B(O, "POP_MODE"));
});
let f;
n("Line Terminator Handling", () => {
const O = ch(e.lineTerminatorCharacters);
f = M(r, (b) => !1), e.positionTracking !== "onlyOffset" && (f = M(r, (b) => B(b, "LINE_BREAKS") ? !!b.LINE_BREAKS : oh(b, O) === !1 && Il(O, b.PATTERN)));
});
let m, g, A, N;
n("Misc Mapping #2", () => {
m = M(r, ah), g = M(s, Qg), A = Ye(r, (O, b) => {
const x = b.GROUP;
return tt(x) && x !== et.SKIPPED && (O[x] = []), O;
}, {}), N = M(s, (O, b) => ({
pattern: s[b],
longerAlt: c[b],
canLineTerminator: f[b],
isCustom: m[b],
short: g[b],
group: o[b],
push: l[b],
pop: u[b],
tokenTypeIdx: a[b],
tokenType: r[b]
}));
});
let $ = !0, w = [];
return e.safeMode || n("First Char Optimization", () => {
w = Ye(r, (O, b, x) => {
if (typeof b.PATTERN == "string") {
const X = b.PATTERN.charCodeAt(0), te = Rn(X);
ho(O, te, N[x]);
} else if (je(b.START_CHARS_HINT)) {
let X;
j(b.START_CHARS_HINT, (te) => {
const ne = typeof te == "string" ? te.charCodeAt(0) : te, ye = Rn(ne);
X !== ye && (X = ye, ho(O, ye, N[x]));
});
} else if (nn(b.PATTERN))
if (b.PATTERN.unicode)
$ = !1, e.ensureOptimizations && Uo(`${ua} Unable to analyze < ${b.PATTERN.toString()} > pattern.
The regexp unicode flag is not currently supported by the regexp-to-ast library.
This will disable the lexer's first char optimizations.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);
else {
const X = bg(b.PATTERN, e.ensureOptimizations);
oe(X) && ($ = !1), j(X, (te) => {
ho(O, te, N[x]);
});
}
else
e.ensureOptimizations && Uo(`${ua} TokenType: <${b.name}> is using a custom token pattern without providing <start_chars_hint> parameter.
This will disable the lexer's first char optimizations.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`), $ = !1;
return O;
}, []);
}), {
emptyGroups: A,
patternIdxToConfig: N,
charCodeToPatternIdxToConfig: w,
hasCustom: i,
canBeOptimized: $
};
}
function Pg(t, e) {
let n = [];
const r = Og(t);
n = n.concat(r.errors);
const i = xg(r.valid), s = i.valid;
return n = n.concat(i.errors), n = n.concat(Lg(s)), n = n.concat(Bg(s)), n = n.concat(qg(s, e)), n = n.concat(Wg(s)), n;
}
function Lg(t) {
let e = [];
const n = dt(t, (r) => nn(r[Wn]));
return e = e.concat(Mg(n)), e = e.concat(Ug(n)), e = e.concat(jg(n)), e = e.concat(zg(n)), e = e.concat(Fg(n)), e;
}
function Og(t) {
const e = dt(t, (i) => !B(i, Wn)), n = M(e, (i) => ({
message: "Token Type: ->" + i.name + "<- missing static 'PATTERN' property",
type: Se.MISSING_PATTERN,
tokenTypes: [i]
})), r = La(t, e);
return { errors: n, valid: r };
}
function xg(t) {
const e = dt(t, (i) => {
const s = i[Wn];
return !nn(s) && !Hn(s) && !B(s, "exec") && !tt(s);
}), n = M(e, (i) => ({
message: "Token Type: ->" + i.name + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",
type: Se.INVALID_PATTERN,
tokenTypes: [i]
})), r = La(t, e);
return { errors: n, valid: r };
}
const Dg = /[^\\][$]/;
function Mg(t) {
class e extends Fa {
constructor() {
super(...arguments), this.found = !1;
}
visitEndAnchor(s) {
this.found = !0;
}
}
const n = dt(t, (i) => {
const s = i.PATTERN;
try {
const a = ja(s), o = new e();
return o.visit(a), o.found;
} catch {
return Dg.test(s.source);
}
});
return M(n, (i) => ({
message: `Unexpected RegExp Anchor Error:
Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain end of input anchor '$'
See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,
type: Se.EOI_ANCHOR_FOUND,
tokenTypes: [i]
}));
}
function Fg(t) {
const e = dt(t, (r) => r.PATTERN.test(""));
return M(e, (r) => ({
message: "Token Type: ->" + r.name + "<- static 'PATTERN' must not match an empty string",
type: Se.EMPTY_MATCH_PATTERN,
tokenTypes: [r]
}));
}
const Gg = /[^\\[][\^]|^\^/;
function Ug(t) {
class e extends Fa {
constructor() {
super(...arguments), this.found = !1;
}
visitStartAnchor(s) {
this.found = !0;
}
}
const n = dt(t, (i) => {
const s = i.PATTERN;
try {
const a = ja(s), o = new e();
return o.visit(a), o.found;
} catch {
return Gg.test(s.source);
}
});
return M(n, (i) => ({
message: `Unexpected RegExp Anchor Error:
Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain start of input anchor '^'
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,
type: Se.SOI_ANCHOR_FOUND,
tokenTypes: [i]
}));
}
function jg(t) {
const e = dt(t, (r) => {
const i = r[Wn];
return i instanceof RegExp && (i.multiline || i.global);
});
return M(e, (r) => ({
message: "Token Type: ->" + r.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')",
type: Se.UNSUPPORTED_FLAGS_FOUND,
tokenTypes: [r]
}));
}
function zg(t) {
const e = [];
let n = M(t, (s) => Ye(t, (a, o) => (s.PATTERN.source === o.PATTERN.source && !Qe(e, o) && o.PATTERN !== et.NA && (e.push(o), a.push(o)), a), []));
n = rs(n);
const r = dt(n, (s) => s.length > 1);
return M(r, (s) => {
const a = M(s, (c) => c.name);
return {
message: `The same RegExp pattern ->${bt(s).PATTERN}<-has been used in all of the following Token Types: ${a.join(", ")} <-`,
type: Se.DUPLICATE_PATTERNS_FOUND,
tokenTypes: s
};
});
}
function Bg(t) {
const e = dt(t, (r) => {
if (!B(r, "GROUP"))
return !1;
const i = r.GROUP;
return i !== et.SKIPPED && i !== et.NA && !tt(i);
});
return M(e, (r) => ({
message: "Token Type: ->" + r.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",
type: Se.INVALID_GROUP_TYPE_FOUND,
tokenTypes: [r]
}));
}
function qg(t, e) {
const n = dt(t, (i) => i.PUSH_MODE !== void 0 && !Qe(e, i.PUSH_MODE));
return M(n, (i) => ({
message: `Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,
type: Se.PUSH_MODE_DOES_NOT_EXIST,
tokenTypes: [i]
}));
}
function Wg(t) {
const e = [], n = Ye(t, (r, i, s) => {
const a = i.PATTERN;
return a === et.NA || (tt(a) ? r.push({ str: a, idx: s, tokenType: i }) : nn(a) && Kg(a) && r.push({ str: a.source, idx: s, tokenType: i })), r;
}, []);
return j(t, (r, i) => {
j(n, ({ str: s, idx: a, tokenType: o }) => {
if (i < a && Vg(s, r.PATTERN)) {
const c = `Token: ->${o.name}<- can never be matched.
Because it appears AFTER the Token Type ->${r.name}<-in the lexer's definition.
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;
e.push({
message: c,
type: Se.UNREACHABLE_PATTERN,
tokenTypes: [r, o]
});
}
});
}), e;
}
function Vg(t, e) {
if (nn(e)) {
if (Hg(e))
return !1;
const n = e.exec(t);
return n !== null && n.index === 0;
} else {
if (Hn(e))
return e(t, 0, [], {});
if (B(e, "exec"))
return e.exec(t, 0, [], {});
if (typeof e == "string")
return e === t;
throw Error("non exhaustive match");
}
}
function Kg(t) {
return jr([
".",
"\\",
"[",
"]",
"|",
"^",
"$",
"(",
")",
"?",
"*",
"+",
"{"
], (n) => t.source.indexOf(n) !== -1) === void 0;
}
function Hg(t) {
return /(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(t.source);
}
function du(t) {
const e = t.ignoreCase ? "iy" : "y";
return new RegExp(`${t.source}`, e);
}
function Yg(t, e, n) {
const r = [];
return B(t, xi) || r.push({
message: "A MultiMode Lexer cannot be initialized without a <" + xi + `> property in its definition
`,
type: Se.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE
}), B(t, xs) || r.push({
message: "A MultiMode Lexer cannot be initialized without a <" + xs + `> property in its definition
`,
type: Se.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY
}), B(t, xs) && B(t, xi) && !B(t.modes, t.defaultMode) && r.push({
message: `A MultiMode Lexer cannot be initialized with a ${xi}: <${t.defaultMode}>which does not exist
`,
type: Se.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST
}), B(t, xs) && j(t.modes, (i, s) => {
j(i, (a, o) => {
if (tn(a))
r.push({
message: `A Lexer cannot be initialized using an undefined Token Type. Mode:<${s}> at index: <${o}>
`,
type: Se.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED
});
else if (B(a, "LONGER_ALT")) {
const c = je(a.LONGER_ALT) ? a.LONGER_ALT : [a.LONGER_ALT];
j(c, (l) => {
!tn(l) && !Qe(i, l) && r.push({
message: `A MultiMode Lexer cannot be initialized with a longer_alt <${l.name}> on token <${a.name}> outside of mode <${s}>
`,
type: Se.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE
});
});
}
});
}), r;
}
function Xg(t, e, n) {
const r = [];
let i = !1;
const s = rs(yt(Le(t.modes))), a = Oa(s, (c) => c[Wn] === et.NA), o = ch(n);
return e && j(a, (c) => {
const l = oh(c, o);
if (l !== !1) {
const f = {
message: ey(c, l),
type: l.issue,
tokenType: c
};
r.push(f);
} else
B(c, "LINE_BREAKS") ? c.LINE_BREAKS === !0 && (i = !0) : Il(o, c.PATTERN) && (i = !0);
}), e && !i && r.push({
message: `Warning: No LINE_BREAKS Found.
This Lexer has been defined to track line and column information,
But none of the Token Types can be identified as matching a line terminator.
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS
for details.`,
type: Se.NO_LINE_BREAKS_FLAGS
}), r;
}
function Jg(t) {
const e = {}, n = Ur(t);
return j(n, (r) => {
const i = t[r];
if (je(i))
e[r] = [];
else
throw Error("non exhaustive match");
}), e;
}
function ah(t) {
const e = t.PATTERN;
if (nn(e))
return !1;
if (Hn(e))
return !0;
if (B(e, "exec"))
return !0;
if (tt(e))
return !1;
throw Error("non exhaustive match");
}
function Qg(t) {
return tt(t) && t.length === 1 ? t.charCodeAt(0) : !1;
}
const Zg = {
// implements /\n|\r\n?/g.test
test: function(t) {
const e = t.length;
for (let n = this.lastIndex; n < e; n++) {
const r = t.charCodeAt(n);
if (r === 10)
return this.lastIndex = n + 1, !0;
if (r === 13)
return t.charCodeAt(n + 1) === 10 ? this.lastIndex = n + 2 : this.lastIndex = n + 1, !0;
}
return !1;
},
lastIndex: 0
};
function oh(t, e) {
if (B(t, "LINE_BREAKS"))
return !1;
if (nn(t.PATTERN)) {
try {
Il(e, t.PATTERN);
} catch (n) {
return {
issue: Se.IDENTIFY_TERMINATOR,
errMsg: n.message
};
}
return !1;
} else {
if (tt(t.PATTERN))
return !1;
if (ah(t))
return { issue: Se.CUSTOM_LINE_BREAK };
throw Error("non exhaustive match");
}
}
function ey(t, e) {
if (e.issue === Se.IDENTIFY_TERMINATOR)
return `Warning: unable to identify line terminator usage in pattern.
The problem is in the <${t.name}> Token Type
Root cause: ${e.errMsg}.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;
if (e.issue === Se.CUSTOM_LINE_BREAK)
return `Warning: A Custom Token Pattern should specify the <line_breaks> option.
The problem is in the <${t.name}> Token Type
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;
throw Error("non exhaustive match");
}
function ch(t) {
return M(t, (n) => tt(n) ? n.charCodeAt(0) : n);
}
function ho(t, e, n) {
t[e] === void 0 ? t[e] = [n] : t[e].push(n);
}
const Di = 256;
let Js = [];
function Rn(t) {
return t < Di ? t : Js[t];
}
function ty() {
if (oe(Js)) {
Js = new Array(65536);
for (let t = 0; t < 65536; t++)
Js[t] = t > 255 ? 255 + ~~(t / 255) : t;
}
}
function cs(t, e) {
const n = t.tokenTypeIdx;
return n === e.tokenTypeIdx ? !0 : e.isParent === !0 && e.categoryMatchesMap[n] === !0;
}
function da(t, e) {
return t.tokenTypeIdx === e.tokenTypeIdx;
}
let fu = 1;
const lh = {};
function ls(t) {
const e = ny(t);
ry(e), sy(e), iy(e), j(e, (n) => {
n.isParent = n.categoryMatches.length > 0;
});
}
function ny(t) {
let e = Be(t), n = t, r = !0;
for (; r; ) {
n = rs(yt(M(n, (s) => s.CATEGORIES)));
const i = La(n, e);
e = e.concat(i), oe(i) ? r = !1 : n = i;
}
return e;
}
function ry(t) {
j(t, (e) => {
dh(e) || (lh[fu] = e, e.tokenTypeIdx = fu++), hu(e) && !je(e.CATEGORIES) && (e.CATEGORIES = [e.CATEGORIES]), hu(e) || (e.CATEGORIES = []), ay(e) || (e.categoryMatches = []), oy(e) || (e.categoryMatchesMap = {});
});
}
function iy(t) {
j(t, (e) => {
e.categoryMatches = [], j(e.categoryMatchesMap, (n, r) => {
e.categoryMatches.push(lh[r].tokenTypeIdx);
});
});
}
function sy(t) {
j(t, (e) => {
uh([], e);
});
}
function uh(t, e) {
j(t, (n) => {
e.categoryMatchesMap[n.tokenTypeIdx] = !0;
}), j(e.CATEGORIES, (n) => {
const r = t.concat(e);
Qe(r, n) || uh(r, n);
});
}
function dh(t) {
return B(t, "tokenTypeIdx");
}
function hu(t) {
return B(t, "CATEGORIES");
}
function ay(t) {
return B(t, "categoryMatches");
}
function oy(t) {
return B(t, "categoryMatchesMap");
}
function cy(t) {
return B(t, "tokenTypeIdx");
}
const Bo = {
buildUnableToPopLexerModeMessage(t) {
return `Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`;
},
buildUnexpectedCharactersMessage(t, e, n, r, i, s) {
return `unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${n} characters.`;
}
};
var Se;
(function(t) {
t[t.MISSING_PATTERN = 0] = "MISSING_PATTERN", t[t.INVALID_PATTERN = 1] = "INVALID_PATTERN", t[t.EOI_ANCHOR_FOUND = 2] = "EOI_ANCHOR_FOUND", t[t.UNSUPPORTED_FLAGS_FOUND = 3] = "UNSUPPORTED_FLAGS_FOUND", t[t.DUPLICATE_PATTERNS_FOUND = 4] = "DUPLICATE_PATTERNS_FOUND", t[t.INVALID_GROUP_TYPE_FOUND = 5] = "INVALID_GROUP_TYPE_FOUND", t[t.PUSH_MODE_DOES_NOT_EXIST = 6] = "PUSH_MODE_DOES_NOT_EXIST", t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE", t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY", t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST", t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED", t[t.SOI_ANCHOR_FOUND = 11] = "SOI_ANCHOR_FOUND", t[t.EMPTY_MATCH_PATTERN = 12] = "EMPTY_MATCH_PATTERN", t[t.NO_LINE_BREAKS_FLAGS = 13] = "NO_LINE_BREAKS_FLAGS", t[t.UNREACHABLE_PATTERN = 14] = "UNREACHABLE_PATTERN", t[t.IDENTIFY_TERMINATOR = 15] = "IDENTIFY_TERMINATOR", t[t.CUSTOM_LINE_BREAK = 16] = "CUSTOM_LINE_BREAK", t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE = 17] = "MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE";
})(Se || (Se = {}));
const Mi = {
deferDefinitionErrorsHandling: !1,
positionTracking: "full",
lineTerminatorsPattern: /\n|\r\n?/g,
lineTerminatorCharacters: [`
`, "\r"],
ensureOptimizations: !1,
safeMode: !1,
errorMessageProvider: Bo,
traceInitPerf: !1,
skipValidations: !1,
recoveryEnabled: !0
};
Object.freeze(Mi);
class et {
constructor(e, n = Mi) {
if (this.lexerDefinition = e, this.lexerDefinitionErrors = [], this.lexerDefinitionWarning = [], this.patternIdxToConfig = {}, this.charCodeToPatternIdxToConfig = {}, this.modes = [], this.emptyGroups = {}, this.trackStartLines = !0, this.trackEndLines = !0, this.hasCustom = !1, this.canModeBeOptimized = {}, this.TRACE_INIT = (i, s) => {
if (this.traceInitPerf === !0) {
this.traceInitIndent++;
const a = new Array(this.traceInitIndent + 1).join(" ");
this.traceInitIndent < this.traceInitMaxIdent && console.log(`${a}--> <${i}>`);
const { time: o, value: c } = nh(s), l = o > 10 ? console.warn : console.log;
return this.traceInitIndent < this.traceInitMaxIdent && l(`${a}<-- <${i}> time: ${o}ms`), this.traceInitIndent--, c;
} else
return s();
}, typeof n == "boolean")
throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
a boolean 2nd argument is no longer supported`);
this.config = ut({}, Mi, n);
const r = this.config.traceInitPerf;
r === !0 ? (this.traceInitMaxIdent = 1 / 0, this.traceInitPerf = !0) : typeof r == "number" && (this.traceInitMaxIdent = r, this.traceInitPerf = !0), this.traceInitIndent = -1, this.TRACE_INIT("Lexer Constructor", () => {
let i, s = !0;
this.TRACE_INIT("Lexer Config handling", () => {
if (this.config.lineTerminatorsPattern === Mi.lineTerminatorsPattern)
this.config.lineTerminatorsPattern = Zg;
else if (this.config.lineTerminatorCharacters === Mi.lineTerminatorCharacters)
throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);
if (n.safeMode && n.ensureOptimizations)
throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');
this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking), this.trackEndLines = /full/i.test(this.config.positionTracking), je(e) ? i = {
modes: { defaultMode: Be(e) },
defaultMode: xi
} : (s = !1, i = Be(e));
}), this.config.skipValidations === !1 && (this.TRACE_INIT("performRuntimeChecks", () => {
this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(Yg(i, this.trackStartLines, this.config.lineTerminatorCharacters));
}), this.TRACE_INIT("performWarningRuntimeChecks", () => {
this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(Xg(i, this.trackStartLines, this.config.lineTerminatorCharacters));
})), i.modes = i.modes ? i.modes : {}, j(i.modes, (o, c) => {
i.modes[c] = Oa(o, (l) => tn(l));
});
const a = Ur(i.modes);
if (j(i.modes, (o, c) => {
this.TRACE_INIT(`Mode: <${c}> processing`, () => {
if (this.modes.push(c), this.config.skipValidations === !1 && this.TRACE_INIT("validatePatterns", () => {
this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(Pg(o, a));
}), oe(this.lexerDefinitionErrors)) {
ls(o);
let l;
this.TRACE_INIT("analyzeTokenTypes", () => {
l = $g(o, {
lineTerminatorCharacters: this.config.lineTerminatorCharacters,
positionTracking: n.positionTracking,
ensureOptimizations: n.ensureOptimizations,
safeMode: n.safeMode,
tracer: this.TRACE_INIT
});
}), this.patternIdxToConfig[c] = l.patternIdxToConfig, this.charCodeToPatternIdxToConfig[c] = l.charCodeToPatternIdxToConfig, this.emptyGroups = ut({}, this.emptyGroups, l.emptyGroups), this.hasCustom = l.hasCustom || this.hasCustom, this.canModeBeOptimized[c] = l.canBeOptimized;
}
});
}), this.defaultMode = i.defaultMode, !oe(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling) {
const c = M(this.lexerDefinitionErrors, (l) => l.message).join(`-----------------------
`);
throw new Error(`Errors detected in definition of Lexer:
` + c);
}
j(this.lexerDefinitionWarning, (o) => {
th(o.message);
}), this.TRACE_INIT("Choosing sub-methods implementations", () => {
if (s && (this.handleModes = Me), this.trackStartLines === !1 && (this.computeNewColumn = Dp), this.trackEndLines === !1 && (this.updateTokenEndLineColumnLocation = Me), /full/i.test(this.config.positionTracking))
this.createTokenInstance = this.createFullToken;
else if (/onlyStart/i.test(this.config.positionTracking))
this.createTokenInstance = this.createStartOnlyToken;
else if (/onlyOffset/i.test(this.config.positionTracking))
this.createTokenInstance = this.createOffsetOnlyToken;
else
throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);
this.hasCustom ? (this.addToken = this.addTokenUsingPush, this.handlePayload = this.handlePayloadWithCustom) : (this.addToken = this.addTokenUsingMemberAccess, this.handlePayload = this.handlePayloadNoCustom);
}), this.TRACE_INIT("Failed Optimization Warnings", () => {
const o = Ye(this.canModeBeOptimized, (c, l, u) => (l === !1 && c.push(u), c), []);
if (n.ensureOptimizations && !oe(o))
throw Error(`Lexer Modes: < ${o.join(", ")} > cannot be optimized.
Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
Or inspect the console log for details on how to resolve these issues.`);
}), this.TRACE_INIT("clearRegExpParserCache", () => {
wg();
}), this.TRACE_INIT("toFastProperties", () => {
rh(this);
});
});
}
tokenize(e, n = this.defaultMode) {
if (!oe(this.lexerDefinitionErrors)) {
const i = M(this.lexerDefinitionErrors, (s) => s.message).join(`-----------------------
`);
throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:
` + i);
}
return this.tokenizeInternal(e, n);
}
// There is quite a bit of duplication between this and "tokenizeInternalLazy"
// This is intentional due to performance considerations.
// this method also used quite a bit of `!` none null assertions because it is too optimized
// for `tsc` to always understand it is "safe"
tokenizeInternal(e, n) {
let r, i, s, a, o, c, l, u, f, m, g, A, N, $, w;
const O = e, b = O.length;
let x = 0, X = 0;
const te = this.hasCustom ? 0 : Math.floor(e.length / 10), ne = new Array(te), ye = [];
let Ce = this.trackStartLines ? 1 : void 0, de = this.trackStartLines ? 1 : void 0;
const k = Jg(this.emptyGroups), R = this.trackStartLines, p = this.config.lineTerminatorsPattern;
let S = 0, y = [], T = [];
const E = [], P = [];
Object.freeze(P);
let D = !1;
const L = (q) => {
if (E.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition"
// So no error should occur.
q.tokenType.PUSH_MODE === void 0) {
const re = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(q);
ye.push({
offset: q.startOffset,
line: q.startLine,
column: q.startColumn,
length: q.image.length,
message: re
});
} else {
E.pop();
const re = jn(E);
y = this.patternIdxToConfig[re], T = this.charCodeToPatternIdxToConfig[re], S = y.length;
const xe = this.canModeBeOptimized[re] && this.config.safeMode === !1;
T && xe ? D = !0 : D = !1;
}
};
function z(q) {
E.push(q), T = this.charCodeToPatternIdxToConfig[q], y = this.patternIdxToConfig[q], S = y.length, S = y.length;
const re = this.canModeBeOptimized[q] && this.config.safeMode === !1;
T && re ? D = !0 : D = !1;
}
z.call(this, n);
let G;
const se = this.config.recoveryEnabled;
for (; x < b; ) {
c = null, f = -1;
const q = O.charCodeAt(x);
let re;
if (D) {
const Te = Rn(q), fe = T[Te];
re = fe !== void 0 ? fe : P;
} else
re = y;
const xe = re.length;
for (r = 0; r < xe; r++) {
G = re[r];
const Te = G.pattern;
l = null;
const fe = G.short;
if (fe !== !1 ? q === fe && (f = 1, c = Te) : G.isCustom === !0 ? (w = Te.exec(O, x, ne, k), w !== null ? (c = w[0], f = c.length, w.payload !== void 0 && (l = w.payload)) : c = null) : (Te.lastIndex = x, f = this.matchLength(Te, e, x)), f !== -1) {
if (o = G.longerAlt, o !== void 0) {
c = e.substring(x, x + f);
const $e = o.length;
for (s = 0; s < $e; s++) {
const De = y[o[s]], be = De.pattern;
if (u = null, De.isCustom === !0 ? (w = be.exec(O, x, ne, k), w !== null ? (a = w[0], w.payload !== void 0 && (u = w.payload)) : a = null) : (be.lastIndex = x, a = this.match(be, e, x)), a && a.length > c.length) {
c = a, f = a.length, l = u, G = De;
break;
}
}
}
break;
}
}
if (f !== -1) {
if (m = G.group, m !== void 0 && (c = c !== null ? c : e.substring(x, x + f), g = G.tokenTypeIdx, A = this.createTokenInstance(c, x, g, G.tokenType, Ce, de, f), this.handlePayload(A, l), m === !1 ? X = this.addToken(ne, X, A) : k[m].push(A)), R === !0 && G.canLineTerminator === !0) {
let Te = 0, fe, $e;
p.lastIndex = 0;
do
c = c !== null ? c : e.substring(x, x + f), fe = p.test(c), fe === !0 && ($e = p.lastIndex - 1, Te++);
while (fe === !0);
Te !== 0 ? (Ce = Ce + Te, de = f - $e, this.updateTokenEndLineColumnLocation(A, m, $e, Te, Ce, de, f)) : de = this.computeNewColumn(de, f);
} else
de = this.computeNewColumn(de, f);
x = x + f, this.handleModes(G, L, z, A);
} else {
const Te = x, fe = Ce, $e = de;
let De = se === !1;
for (; De === !1 && x < b; )
for (x++, i = 0; i < S; i++) {
const be = y[i], Q = be.pattern, st = be.short;
if (st !== !1 ? O.charCodeAt(x) === st && (De = !0) : be.isCustom === !0 ? De = Q.exec(O, x, ne, k) !== null : (Q.lastIndex = x, De = Q.exec(e) !== null), De === !0)
break;
}
if (N = x - Te, de = this.computeNewColumn(de, N), $ = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(O, Te, N, fe, $e, jn(E)), ye.push({
offset: Te,
line: fe,
column: $e,
length: N,
message: $
}), se === !1)
break;
}
}
return this.hasCustom || (ne.length = X), {
tokens: ne,
groups: k,
errors: ye
};
}
handleModes(e, n, r, i) {
if (e.pop === !0) {
const s = e.push;
n(i), s !== void 0 && r.call(this, s);
} else e.push !== void 0 && r.call(this, e.push);
}
// TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler
updateTokenEndLineColumnLocation(e, n, r, i, s, a, o) {
let c, l;
n !== void 0 && (c = r === o - 1, l = c ? -1 : 0, i === 1 && c === !0 || (e.endLine = s + l, e.endColumn = a - 1 + -l));
}
computeNewColumn(e, n) {
return e + n;
}
createOffsetOnlyToken(e, n, r, i) {
return {
image: e,
startOffset: n,
tokenTypeIdx: r,
tokenType: i
};
}
createStartOnlyToken(e, n, r, i, s, a) {
return {
image: e,
startOffset: n,
startLine: s,
startColumn: a,
tokenTypeIdx: r,
tokenType: i
};
}
createFullToken(e, n, r, i, s, a, o) {
return {
image: e,
startOffset: n,
endOffset: n + o - 1,
startLine: s,
endLine: s,
startColumn: a,
endColumn: a + o - 1,
tokenTypeIdx: r,
tokenType: i
};
}
addTokenUsingPush(e, n, r) {
return e.push(r), n;
}
addTokenUsingMemberAccess(e, n, r) {
return e[n] = r, n++, n;
}
handlePayloadNoCustom(e, n) {
}
handlePayloadWithCustom(e, n) {
n !== null && (e.payload = n);
}
match(e, n, r) {
return e.test(n) === !0 ? n.substring(r, e.lastIndex) : null;
}
matchLength(e, n, r) {
return e.test(n) === !0 ? e.lastIndex - r : -1;
}
}
et.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.";
et.NA = /NOT_APPLICABLE/;
function Ar(t) {
return fh(t) ? t.LABEL : t.name;
}
function fh(t) {
return tt(t.LABEL) && t.LABEL !== "";
}
const ly = "parent", pu = "categories", mu = "label", gu = "group", yu = "push_mode", Tu = "pop_mode", Ru = "longer_alt", vu = "line_breaks", Eu = "start_chars_hint";
function hh(t) {
return uy(t);
}
function uy(t) {
const e = t.pattern, n = {};
if (n.name = t.name, tn(e) || (n.PATTERN = e), B(t, ly))
throw `The parent property is no longer supported.
See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;
return B(t, pu) && (n.CATEGORIES = t[pu]), ls([n]), B(t, mu) && (n.LABEL = t[mu]), B(t, gu) && (n.GROUP = t[gu]), B(t, Tu) && (n.POP_MODE = t[Tu]), B(t, yu) && (n.PUSH_MODE = t[yu]), B(t, Ru) && (n.LONGER_ALT = t[Ru]), B(t, vu) && (n.LINE_BREAKS = t[vu]), B(t, Eu) && (n.START_CHARS_HINT = t[Eu]), n;
}
const vn = hh({ name: "EOF", pattern: et.NA });
ls([vn]);
function _l(t, e, n, r, i, s, a, o) {
return {
image: e,
startOffset: n,
endOffset: r,
startLine: i,
endLine: s,
startColumn: a,
endColumn: o,
tokenTypeIdx: t.tokenTypeIdx,
tokenType: t
};
}
function ph(t, e) {
return cs(t, e);
}
const vr = {
buildMismatchTokenMessage({ expected: t, actual: e, previous: n, ruleName: r }) {
return `Expecting ${fh(t) ? `--> ${Ar(t)} <--` : `token of type --> ${t.name} <--`} but found --> '${e.image}' <--`;
},
buildNotAllInputParsedMessage({ firstRedundant: t, ruleName: e }) {
return "Redundant input, expecting EOF but found: " + t.image;
},
buildNoViableAltMessage({ expectedPathsPerAlt: t, actual: e, previous: n, customUserDescription: r, ruleName: i }) {
const s = "Expecting: ", o = `
but found: '` + bt(e).image + "'";
if (r)
return s + r + o;
{
const c = Ye(t, (m, g) => m.concat(g), []), l = M(c, (m) => `[${M(m, (g) => Ar(g)).join(", ")}]`), f = `one of these possible Token sequences:
${M(l, (m, g) => ` ${g + 1}. ${m}`).join(`
`)}`;
return s + f + o;
}
},
buildEarlyExitMessage({ expectedIterationPaths: t, actual: e, customUserDescription: n, ruleName: r }) {
const i = "Expecting: ", a = `
but found: '` + bt(e).image + "'";
if (n)
return i + n + a;
{
const c = `expecting at least one iteration which starts with one of these possible Token sequences::
<${M(t, (l) => `[${M(l, (u) => Ar(u)).join(",")}]`).join(" ,")}>`;
return i + c + a;
}
}
};
Object.freeze(vr);
const dy = {
buildRuleNotFoundError(t, e) {
return "Invalid grammar, reference to a rule which is not defined: ->" + e.nonTerminalName + `<-
inside top level rule: ->` + t.name + "<-";
}
}, Gn = {
buildDuplicateFoundError(t, e) {
function n(u) {
return u instanceof ue ? u.terminalType.name : u instanceof Xe ? u.nonTerminalName : "";
}
const r = t.name, i = bt(e), s = i.idx, a = Ot(i), o = n(i), c = s > 0;
let l = `->${a}${c ? s : ""}<- ${o ? `with argument: ->${o}<-` : ""}
appears more than once (${e.length} times) in the top level rule: ->${r}<-.
For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES
`;
return l = l.replace(/[ \t]+/g, " "), l = l.replace(/\s\s+/g, `
`), l;
},
buildNamespaceConflictError(t) {
return `Namespace conflict found in grammar.
The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>.
To resolve this make sure each Terminal and Non-Terminal names are unique
This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
and Non-Terminal names start with a lower case letter.`;
},
buildAlternationPrefixAmbiguityError(t) {
const e = M(t.prefixPath, (i) => Ar(i)).join(", "), n = t.alternation.idx === 0 ? "" : t.alternation.idx;
return `Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix
in <OR${n}> inside <${t.topLevelRule.name}> Rule,
<${e}> may appears as a prefix path in all these alternatives.
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
For Further details.`;
},
buildAlternationAmbiguityError(t) {
const e = t.alternation.idx === 0 ? "" : t.alternation.idx, n = t.prefixPath.length === 0;
let r = `Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in <OR${e}> inside <${t.topLevelRule.name}> Rule,
`;
if (n)
r += `These alternatives are all empty (match no tokens), making them indistinguishable.
Only the last alternative may be empty.
`;
else {
const i = M(t.prefixPath, (s) => Ar(s)).join(", ");
r += `<${i}> may appears as a prefix path in all these alternatives.
`;
}
return r += `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
For Further details.`, r;
},
buildEmptyRepetitionError(t) {
let e = Ot(t.repetition);
return t.repetition.idx !== 0 && (e += t.repetition.idx), `The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens.
This could lead to an infinite loop.`;
},
// TODO: remove - `errors_public` from nyc.config.js exclude
// once this method is fully removed from this file
buildTokenNameError(t) {
return "deprecated";
},
buildEmptyAlternationError(t) {
return `Ambiguous empty alternative: <${t.emptyChoiceIdx + 1}> in <OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.
Only the last alternative may be an empty alternative.`;
},
buildTooManyAlternativesError(t) {
return `An Alternation cannot have more than 256 alternatives:
<OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.
has ${t.alternation.definition.length + 1} alternatives.`;
},
buildLeftRecursionError(t) {
const e = t.topLevelRule.name, n = M(t.leftRecursionPath, (s) => s.name), r = `${e} --> ${n.concat([e]).join(" --> ")}`;
return `Left Recursion found in grammar.
rule: <${e}> can be invoked from itself (directly or indirectly)
without consuming any Tokens. The grammar path that causes this is:
${r}
To fix this refactor your grammar to remove the left recursion.
see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
},
// TODO: remove - `errors_public` from nyc.config.js exclude
// once this method is fully removed from this file
buildInvalidRuleNameError(t) {
return "deprecated";
},
buildDuplicateRuleNameError(t) {
let e;
return t.topLevelRule instanceof si ? e = t.topLevelRule.name : e = t.topLevelRule, `Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`;
}
};
function fy(t, e) {
const n = new hy(t, e);
return n.resolveRefs(), n.errors;
}
class hy extends ai {
constructor(e, n) {
super(), this.nameToTopRule = e, this.errMsgProvider = n, this.errors = [];
}
resolveRefs() {
j(Le(this.nameToTopRule), (e) => {
this.currTopLevel = e, e.accept(this);
});
}
visitNonTerminal(e) {
const n = this.nameToTopRule[e.nonTerminalName];
if (n)
e.referencedRule = n;
else {
const r = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, e);
this.errors.push({
message: r,
type: Je.UNRESOLVED_SUBRULE_REF,
ruleName: this.currTopLevel.name,
unresolvedRefName: e.nonTerminalName
});
}
}
}
class py extends Ua {
constructor(e, n) {
super(), this.topProd = e, this.path = n, this.possibleTokTypes = [], this.nextProductionName = "", this.nextProductionOccurrence = 0, this.found = !1, this.isAtEndOfPath = !1;
}
startWalking() {
if (this.found = !1, this.path.ruleStack[0] !== this.topProd.name)
throw Error("The path does not start with the walker's top Rule!");
return this.ruleStack = Be(this.path.ruleStack).reverse(), this.occurrenceStack = Be(this.path.occurrenceStack).reverse(), this.ruleStack.pop(), this.occurrenceStack.pop(), this.updateExpectedNext(), this.walk(this.topProd), this.possibleTokTypes;
}
walk(e, n = []) {
this.found || super.walk(e, n);
}
walkProdRef(e, n, r) {
if (e.referencedRule.name === this.nextProductionName && e.idx === this.nextProductionOccurrence) {
const i = n.concat(r);
this.updateExpectedNext(), this.walk(e.referencedRule, i);
}
}
updateExpectedNext() {
oe(this.ruleStack) ? (this.nextProductionName = "", this.nextProductionOccurrence = 0, this.isAtEndOfPath = !0) : (this.nextProductionName = this.ruleStack.pop(), this.nextProductionOccurrence = this.occurrenceStack.pop());
}
}
class my extends py {
constructor(e, n) {
super(e, n), this.path = n, this.nextTerminalName = "", this.nextTerminalOccurrence = 0, this.nextTerminalName = this.path.lastTok.name, this.nextTerminalOccurrence = this.path.lastTokOccurrence;
}
walkTerminal(e, n, r) {
if (this.isAtEndOfPath && e.terminalType.name === this.nextTerminalName && e.idx === this.nextTerminalOccurrence && !this.found) {
const i = n.concat(r), s = new nt({ definition: i });
this.possibleTokTypes = os(s), this.found = !0;
}
}
}
class za extends Ua {
constructor(e, n) {
super(), this.topRule = e, this.occurrence = n, this.result = {
token: void 0,
occurrence: void 0,
isEndOfRule: void 0
};
}
startWalking() {
return this.walk(this.topRule), this.result;
}
}
class gy extends za {
walkMany(e, n, r) {
if (e.idx === this.occurrence) {
const i = bt(n.concat(r));
this.result.isEndOfRule = i === void 0, i instanceof ue && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
} else
super.walkMany(e, n, r);
}
}
class Au extends za {
walkManySep(e, n, r) {
if (e.idx === this.occurrence) {
const i = bt(n.concat(r));
this.result.isEndOfRule = i === void 0, i instanceof ue && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
} else
super.walkManySep(e, n, r);
}
}
class yy extends za {
walkAtLeastOne(e, n, r) {
if (e.idx === this.occurrence) {
const i = bt(n.concat(r));
this.result.isEndOfRule = i === void 0, i instanceof ue && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
} else
super.walkAtLeastOne(e, n, r);
}
}
class Su extends za {
walkAtLeastOneSep(e, n, r) {
if (e.idx === this.occurrence) {
const i = bt(n.concat(r));
this.result.isEndOfRule = i === void 0, i instanceof ue && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
} else
super.walkAtLeastOneSep(e, n, r);
}
}
function qo(t, e, n = []) {
n = Be(n);
let r = [], i = 0;
function s(o) {
return o.concat(Fe(t, i + 1));
}
function a(o) {
const c = qo(s(o), e, n);
return r.concat(c);
}
for (; n.length < e && i < t.length; ) {
const o = t[i];
if (o instanceof nt)
return a(o.definition);
if (o instanceof Xe)
return a(o.definition);
if (o instanceof ze)
r = a(o.definition);
else if (o instanceof ft) {
const c = o.definition.concat([
new Ae({
definition: o.definition
})
]);
return a(c);
} else if (o instanceof ht) {
const c = [
new nt({ definition: o.definition }),
new Ae({
definition: [new ue({ terminalType: o.separator })].concat(o.definition)
})
];
return a(c);
} else if (o instanceof rt) {
const c = o.definition.concat([
new Ae({
definition: [new ue({ terminalType: o.separator })].concat(o.definition)
})
]);
r = a(c);
} else if (o instanceof Ae) {
const c = o.definition.concat([
new Ae({
definition: o.definition
})
]);
r = a(c);
} else {
if (o instanceof it)
return j(o.definition, (c) => {
oe(c.definition) === !1 && (r = a(c.definition));
}), r;
if (o instanceof ue)
n.push(o.terminalType);
else
throw Error("non exhaustive match");
}
i++;
}
return r.push({
partialPath: n,
suffixDef: Fe(t, i)
}), r;
}
function mh(t, e, n, r) {
const i = "EXIT_NONE_TERMINAL", s = [i], a = "EXIT_ALTERNATIVE";
let o = !1;
const c = e.length, l = c - r - 1, u = [], f = [];
for (f.push({
idx: -1,
def: t,
ruleStack: [],
occurrenceStack: []
}); !oe(f); ) {
const m = f.pop();
if (m === a) {
o && jn(f).idx <= l && f.pop();
continue;
}
const g = m.def, A = m.idx, N = m.ruleStack, $ = m.occurrenceStack;
if (oe(g))
continue;
const w = g[0];
if (w === i) {
const O = {
idx: A,
def: Fe(g),
ruleStack: zi(N),
occurrenceStack: zi($)
};
f.push(O);
} else if (w instanceof ue)
if (A < c - 1) {
const O = A + 1, b = e[O];
if (n(b, w.terminalType)) {
const x = {
idx: O,
def: Fe(g),
ruleStack: N,
occurrenceStack: $
};
f.push(x);
}
} else if (A === c - 1)
u.push({
nextTokenType: w.terminalType,
nextTokenOccurrence: w.idx,
ruleStack: N,
occurrenceStack: $
}), o = !0;
else
throw Error("non exhaustive match");
else if (w instanceof Xe) {
const O = Be(N);
O.push(w.nonTerminalName);
const b = Be($);
b.push(w.idx);
const x = {
idx: A,
def: w.definition.concat(s, Fe(g)),
ruleStack: O,
occurrenceStack: b
};
f.push(x);
} else if (w instanceof ze) {
const O = {
idx: A,
def: Fe(g),
ruleStack: N,
occurrenceStack: $
};
f.push(O), f.push(a);
const b = {
idx: A,
def: w.definition.concat(Fe(g)),
ruleStack: N,
occurrenceStack: $
};
f.push(b);
} else if (w instanceof ft) {
const O = new Ae({
definition: w.definition,
idx: w.idx
}), b = w.definition.concat([O], Fe(g)), x = {
idx: A,
def: b,
ruleStack: N,
occurrenceStack: $
};
f.push(x);
} else if (w instanceof ht) {
const O = new ue({
terminalType: w.separator
}), b = new Ae({
definition: [O].concat(w.definition),
idx: w.idx
}), x = w.definition.concat([b], Fe(g)), X = {
idx: A,
def: x,
ruleStack: N,
occurrenceStack: $
};
f.push(X);
} else if (w instanceof rt) {
const O = {
idx: A,
def: Fe(g),
ruleStack: N,
occurrenceStack: $
};
f.push(O), f.push(a);
const b = new ue({
terminalType: w.separator
}), x = new Ae({
definition: [b].concat(w.definition),
idx: w.idx
}), X = w.definition.concat([x], Fe(g)), te = {
idx: A,
def: X,
ruleStack: N,
occurrenceStack: $
};
f.push(te);
} else if (w instanceof Ae) {
const O = {
idx: A,
def: Fe(g),
ruleStack: N,
occurrenceStack: $
};
f.push(O), f.push(a);
const b = new Ae({
definition: w.definition,
idx: w.idx
}), x = w.definition.concat([b], Fe(g)), X = {
idx: A,
def: x,
ruleStack: N,
occurrenceStack: $
};
f.push(X);
} else if (w instanceof it)
for (let O = w.definition.length - 1; O >= 0; O--) {
const b = w.definition[O], x = {
idx: A,
def: b.definition.concat(Fe(g)),
ruleStack: N,
occurrenceStack: $
};
f.push(x), f.push(a);
}
else if (w instanceof nt)
f.push({
idx: A,
def: w.definition.concat(Fe(g)),
ruleStack: N,
occurrenceStack: $
});
else if (w instanceof si)
f.push(Ty(w, A, N, $));
else
throw Error("non exhaustive match");
}
return u;
}
function Ty(t, e, n, r) {
const i = Be(n);
i.push(t.name);
const s = Be(r);
return s.push(1), {
idx: e,
def: t.definition,
ruleStack: i,
occurrenceStack: s
};
}
var me;
(function(t) {
t[t.OPTION = 0] = "OPTION", t[t.REPETITION = 1] = "REPETITION", t[t.REPETITION_MANDATORY = 2] = "REPETITION_MANDATORY", t[t.REPETITION_MANDATORY_WITH_SEPARATOR = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR", t[t.REPETITION_WITH_SEPARATOR = 4] = "REPETITION_WITH_SEPARATOR", t[t.ALTERNATION = 5] = "ALTERNATION";
})(me || (me = {}));
function $l(t) {
if (t instanceof ze || t === "Option")
return me.OPTION;
if (t instanceof Ae || t === "Repetition")
return me.REPETITION;
if (t instanceof ft || t === "RepetitionMandatory")
return me.REPETITION_MANDATORY;
if (t instanceof ht || t === "RepetitionMandatoryWithSeparator")
return me.REPETITION_MANDATORY_WITH_SEPARATOR;
if (t instanceof rt || t === "RepetitionWithSeparator")
return me.REPETITION_WITH_SEPARATOR;
if (t instanceof it || t === "Alternation")
return me.ALTERNATION;
throw Error("non exhaustive match");
}
function Cu(t) {
const { occurrence: e, rule: n, prodType: r, maxLookahead: i } = t, s = $l(r);
return s === me.ALTERNATION ? Ba(e, n, i) : qa(e, n, s, i);
}
function Ry(t, e, n, r, i, s) {
const a = Ba(t, e, n), o = Th(a) ? da : cs;
return s(a, r, o, i);
}
function vy(t, e, n, r, i, s) {
const a = qa(t, e, i, n), o = Th(a) ? da : cs;
return s(a[0], o, r);
}
function Ey(t, e, n, r) {
const i = t.length, s = Nt(t, (a) => Nt(a, (o) => o.length === 1));
if (e)
return function(a) {
const o = M(a, (c) => c.GATE);
for (let c = 0; c < i; c++) {
const l = t[c], u = l.length, f = o[c];
if (!(f !== void 0 && f.call(this) === !1))
e: for (let m = 0; m < u; m++) {
const g = l[m], A = g.length;
for (let N = 0; N < A; N++) {
const $ = this.LA(N + 1);
if (n($, g[N]) === !1)
continue e;
}
return c;
}
}
};
if (s && !r) {
const a = M(t, (c) => yt(c)), o = Ye(a, (c, l, u) => (j(l, (f) => {
B(c, f.tokenTypeIdx) || (c[f.tokenTypeIdx] = u), j(f.categoryMatches, (m) => {
B(c, m) || (c[m] = u);
});
}), c), {});
return function() {
const c = this.LA(1);
return o[c.tokenTypeIdx];
};
} else
return function() {
for (let a = 0; a < i; a++) {
const o = t[a], c = o.length;
e: for (let l = 0; l < c; l++) {
const u = o[l], f = u.length;
for (let m = 0; m < f; m++) {
const g = this.LA(m + 1);
if (n(g, u[m]) === !1)
continue e;
}
return a;
}
}
};
}
function Ay(t, e, n) {
const r = Nt(t, (s) => s.length === 1), i = t.length;
if (r && !n) {
const s = yt(t);
if (s.length === 1 && oe(s[0].categoryMatches)) {
const o = s[0].tokenTypeIdx;
return function() {
return this.LA(1).tokenTypeIdx === o;
};
} else {
const a = Ye(s, (o, c, l) => (o[c.tokenTypeIdx] = !0, j(c.categoryMatches, (u) => {
o[u] = !0;
}), o), []);
return function() {
const o = this.LA(1);
return a[o.tokenTypeIdx] === !0;
};
}
} else
return function() {
e: for (let s = 0; s < i; s++) {
const a = t[s], o = a.length;
for (let c = 0; c < o; c++) {
const l = this.LA(c + 1);
if (e(l, a[c]) === !1)
continue e;
}
return !0;
}
return !1;
};
}
class Sy extends Ua {
constructor(e, n, r) {
super(), this.topProd = e, this.targetOccurrence = n, this.targetProdType = r;
}
startWalking() {
return this.walk(this.topProd), this.restDef;
}
checkIsTarget(e, n, r, i) {
return e.idx === this.targetOccurrence && this.targetProdType === n ? (this.restDef = r.concat(i), !0) : !1;
}
walkOption(e, n, r) {
this.checkIsTarget(e, me.OPTION, n, r) || super.walkOption(e, n, r);
}
walkAtLeastOne(e, n, r) {
this.checkIsTarget(e, me.REPETITION_MANDATORY, n, r) || super.walkOption(e, n, r);
}
walkAtLeastOneSep(e, n, r) {
this.checkIsTarget(e, me.REPETITION_MANDATORY_WITH_SEPARATOR, n, r) || super.walkOption(e, n, r);
}
walkMany(e, n, r) {
this.checkIsTarget(e, me.REPETITION, n, r) || super.walkOption(e, n, r);
}
walkManySep(e, n, r) {
this.checkIsTarget(e, me.REPETITION_WITH_SEPARATOR, n, r) || super.walkOption(e, n, r);
}
}
class gh extends ai {
constructor(e, n, r) {
super(), this.targetOccurrence = e, this.targetProdType = n, this.targetRef = r, this.result = [];
}
checkIsTarget(e, n) {
e.idx === this.targetOccurrence && this.targetProdType === n && (this.targetRef === void 0 || e === this.targetRef) && (this.result = e.definition);
}
visitOption(e) {
this.checkIsTarget(e, me.OPTION);
}
visitRepetition(e) {
this.checkIsTarget(e, me.REPETITION);
}
visitRepetitionMandatory(e) {
this.checkIsTarget(e, me.REPETITION_MANDATORY);
}
visitRepetitionMandatoryWithSeparator(e) {
this.checkIsTarget(e, me.REPETITION_MANDATORY_WITH_SEPARATOR);
}
visitRepetitionWithSeparator(e) {
this.checkIsTarget(e, me.REPETITION_WITH_SEPARATOR);
}
visitAlternation(e) {
this.checkIsTarget(e, me.ALTERNATION);
}
}
function ku(t) {
const e = new Array(t);
for (let n = 0; n < t; n++)
e[n] = [];
return e;
}
function po(t) {
let e = [""];
for (let n = 0; n < t.length; n++) {
const r = t[n], i = [];
for (let s = 0; s < e.length; s++) {
const a = e[s];
i.push(a + "_" + r.tokenTypeIdx);
for (let o = 0; o < r.categoryMatches.length; o++) {
const c = "_" + r.categoryMatches[o];
i.push(a + c);
}
}
e = i;
}
return e;
}
function Cy(t, e, n) {
for (let r = 0; r < t.length; r++) {
if (r === n)
continue;
const i = t[r];
for (let s = 0; s < e.length; s++) {
const a = e[s];
if (i[a] === !0)
return !1;
}
}
return !0;
}
function yh(t, e) {
const n = M(t, (a) => qo([a], 1)), r = ku(n.length), i = M(n, (a) => {
const o = {};
return j(a, (c) => {
const l = po(c.partialPath);
j(l, (u) => {
o[u] = !0;
});
}), o;
});
let s = n;
for (let a = 1; a <= e; a++) {
const o = s;
s = ku(o.length);
for (let c = 0; c < o.length; c++) {
const l = o[c];
for (let u = 0; u < l.length; u++) {
const f = l[u].partialPath, m = l[u].suffixDef, g = po(f);
if (Cy(i, g, c) || oe(m) || f.length === e) {
const N = r[c];
if (Wo(N, f) === !1) {
N.push(f);
for (let $ = 0; $ < g.length; $++) {
const w = g[$];
i[c][w] = !0;
}
}
} else {
const N = qo(m, a + 1, f);
s[c] = s[c].concat(N), j(N, ($) => {
const w = po($.partialPath);
j(w, (O) => {
i[c][O] = !0;
});
});
}
}
}
}
return r;
}
function Ba(t, e, n, r) {
const i = new gh(t, me.ALTERNATION, r);
return e.accept(i), yh(i.result, n);
}
function qa(t, e, n, r) {
const i = new gh(t, n);
e.accept(i);
const s = i.result, o = new Sy(e, t, n).startWalking(), c = new nt({ definition: s }), l = new nt({ definition: o });
return yh([c, l], r);
}
function Wo(t, e) {
e: for (let n = 0; n < t.length; n++) {
const r = t[n];
if (r.length === e.length) {
for (let i = 0; i < r.length; i++) {
const s = e[i], a = r[i];
if ((s === a || a.categoryMatchesMap[s.tokenTypeIdx] !== void 0) === !1)
continue e;
}
return !0;
}
}
return !1;
}
function ky(t, e) {
return t.length < e.length && Nt(t, (n, r) => {
const i = e[r];
return n === i || i.categoryMatchesMap[n.tokenTypeIdx];
});
}
function Th(t) {
return Nt(t, (e) => Nt(e, (n) => Nt(n, (r) => oe(r.categoryMatches))));
}
function Ny(t) {
const e = t.lookaheadStrategy.validate({
rules: t.rules,
tokenTypes: t.tokenTypes,
grammarName: t.grammarName
});
return M(e, (n) => Object.assign({ type: Je.CUSTOM_LOOKAHEAD_VALIDATION }, n));
}
function wy(t, e, n, r) {
const i = lt(t, (c) => by(c, n)), s = Uy(t, e, n), a = lt(t, (c) => Dy(c, n)), o = lt(t, (c) => $y(c, t, r, n));
return i.concat(s, a, o);
}
function by(t, e) {
const n = new _y();
t.accept(n);
const r = n.allProductions, i = am(r, Iy), s = It(i, (o) => o.length > 1);
return M(Le(s), (o) => {
const c = bt(o), l = e.buildDuplicateFoundError(t, o), u = Ot(c), f = {
message: l,
type: Je.DUPLICATE_PRODUCTIONS,
ruleName: t.name,
dslName: u,
occurrence: c.idx
}, m = Rh(c);
return m && (f.parameter = m), f;
});
}
function Iy(t) {
return `${Ot(t)}_#_${t.idx}_#_${Rh(t)}`;
}
function Rh(t) {
return t instanceof ue ? t.terminalType.name : t instanceof Xe ? t.nonTerminalName : "";
}
class _y extends ai {
constructor() {
super(...arguments), this.allProductions = [];
}
visitNonTerminal(e) {
this.allProductions.push(e);
}
visitOption(e) {
this.allProductions.push(e);
}
visitRepetitionWithSeparator(e) {
this.allProductions.push(e);
}
visitRepetitionMandatory(e) {
this.allProductions.push(e);
}
visitRepetitionMandatoryWithSeparator(e) {
this.allProductions.push(e);
}
visitRepetition(e) {
this.allProductions.push(e);
}
visitAlternation(e) {
this.allProductions.push(e);
}
visitTerminal(e) {
this.allProductions.push(e);
}
}
function $y(t, e, n, r) {
const i = [];
if (Ye(e, (a, o) => o.name === t.name ? a + 1 : a, 0) > 1) {
const a = r.buildDuplicateRuleNameError({
topLevelRule: t,
grammarName: n
});
i.push({
message: a,
type: Je.DUPLICATE_RULE_NAME,
ruleName: t.name
});
}
return i;
}
function Py(t, e, n) {
const r = [];
let i;
return Qe(e, t) || (i = `Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `, r.push({
message: i,
type: Je.INVALID_RULE_OVERRIDE,
ruleName: t
})), r;
}
function vh(t, e, n, r = []) {
const i = [], s = Qs(e.definition);
if (oe(s))
return [];
{
const a = t.name;
Qe(s, t) && i.push({
message: n.buildLeftRecursionError({
topLevelRule: t,
leftRecursionPath: r
}),
type: Je.LEFT_RECURSION,
ruleName: a
});
const c = La(s, r.concat([t])), l = lt(c, (u) => {
const f = Be(r);
return f.push(u), vh(t, u, n, f);
});
return i.concat(l);
}
}
function Qs(t) {
let e = [];
if (oe(t))
return e;
const n = bt(t);
if (n instanceof Xe)
e.push(n.referencedRule);
else if (n instanceof nt || n instanceof ze || n instanceof ft || n instanceof ht || n instanceof rt || n instanceof Ae)
e = e.concat(Qs(n.definition));
else if (n instanceof it)
e = yt(M(n.definition, (s) => Qs(s.definition)));
else if (!(n instanceof ue)) throw Error("non exhaustive match");
const r = la(n), i = t.length > 1;
if (r && i) {
const s = Fe(t);
return e.concat(Qs(s));
} else
return e;
}
class Pl extends ai {
constructor() {
super(...arguments), this.alternations = [];
}
visitAlternation(e) {
this.alternations.push(e);
}
}
function Ly(t, e) {
const n = new Pl();
t.accept(n);
const r = n.alternations;
return lt(r, (s) => {
const a = zi(s.definition);
return lt(a, (o, c) => {
const l = mh([o], [], cs, 1);
return oe(l) ? [
{
message: e.buildEmptyAlternationError({
topLevelRule: t,
alternation: s,
emptyChoiceIdx: c
}),
type: Je.NONE_LAST_EMPTY_ALT,
ruleName: t.name,
occurrence: s.idx,
alternative: c + 1
}
] : [];
});
});
}
function Oy(t, e, n) {
const r = new Pl();
t.accept(r);
let i = r.alternations;
return i = Oa(i, (a) => a.ignoreAmbiguities === !0), lt(i, (a) => {
const o = a.idx, c = a.maxLookahead || e, l = Ba(o, t, c, a), u = Fy(l, a, t, n), f = Gy(l, a, t, n);
return u.concat(f);
});
}
class xy extends ai {
constructor() {
super(...arguments), this.allProductions = [];
}
visitRepetitionWithSeparator(e) {
this.allProductions.push(e);
}
visitRepetitionMandatory(e) {
this.allProductions.push(e);
}
visitRepetitionMandatoryWithSeparator(e) {
this.allProductions.push(e);
}
visitRepetition(e) {
this.allProductions.push(e);
}
}
function Dy(t, e) {
const n = new Pl();
t.accept(n);
const r = n.alternations;
return lt(r, (s) => s.definition.length > 255 ? [
{
message: e.buildTooManyAlternativesError({
topLevelRule: t,
alternation: s
}),
type: Je.TOO_MANY_ALTS,
ruleName: t.name,
occurrence: s.idx
}
] : []);
}
function My(t, e, n) {
const r = [];
return j(t, (i) => {
const s = new xy();
i.accept(s);
const a = s.allProductions;
j(a, (o) => {
const c = $l(o), l = o.maxLookahead || e, u = o.idx, m = qa(u, i, c, l)[0];
if (oe(yt(m))) {
const g = n.buildEmptyRepetitionError({
topLevelRule: i,
repetition: o
});
r.push({
message: g,
type: Je.NO_NON_EMPTY_LOOKAHEAD,
ruleName: i.name
});
}
});
}), r;
}
function Fy(t, e, n, r) {
const i = [], s = Ye(t, (o, c, l) => (e.definition[l].ignoreAmbiguities === !0 || j(c, (u) => {
const f = [l];
j(t, (m, g) => {
l !== g && Wo(m, u) && // ignore (skip) ambiguities with this "other" alternative
e.definition[g].ignoreAmbiguities !== !0 && f.push(g);
}), f.length > 1 && !Wo(i, u) && (i.push(u), o.push({
alts: f,
path: u
}));
}), o), []);
return M(s, (o) => {
const c = M(o.alts, (u) => u + 1);
return {
message: r.buildAlternationAmbiguityError({
topLevelRule: n,
alternation: e,
ambiguityIndices: c,
prefixPath: o.path
}),
type: Je.AMBIGUOUS_ALTS,
ruleName: n.name,
occurrence: e.idx,
alternatives: o.alts
};
});
}
function Gy(t, e, n, r) {
const i = Ye(t, (a, o, c) => {
const l = M(o, (u) => ({ idx: c, path: u }));
return a.concat(l);
}, []);
return rs(lt(i, (a) => {
if (e.definition[a.idx].ignoreAmbiguities === !0)
return [];
const c = a.idx, l = a.path, u = dt(i, (m) => (
// ignore (skip) ambiguities with this "other" alternative
e.definition[m.idx].ignoreAmbiguities !== !0 && m.idx < c && // checking for strict prefix because identical lookaheads
// will be be detected using a different validation.
ky(m.path, l)
));
return M(u, (m) => {
const g = [m.idx + 1, c + 1], A = e.idx === 0 ? "" : e.idx;
return {
message: r.buildAlternationPrefixAmbiguityError({
topLevelRule: n,
alternation: e,
ambiguityIndices: g,
prefixPath: m.path
}),
type: Je.AMBIGUOUS_PREFIX_ALTS,
ruleName: n.name,
occurrence: A,
alternatives: g
};
});
}));
}
function Uy(t, e, n) {
const r = [], i = M(e, (s) => s.name);
return j(t, (s) => {
const a = s.name;
if (Qe(i, a)) {
const o = n.buildNamespaceConflictError(s);
r.push({
message: o,
type: Je.CONFLICT_TOKENS_RULES_NAMESPACE,
ruleName: a
});
}
}), r;
}
function jy(t) {
const e = El(t, {
errMsgProvider: dy
}), n = {};
return j(t.rules, (r) => {
n[r.name] = r;
}), fy(n, e.errMsgProvider);
}
function zy(t) {
return t = El(t, {
errMsgProvider: Gn
}), wy(t.rules, t.tokenTypes, t.errMsgProvider, t.grammarName);
}
const Eh = "MismatchedTokenException", Ah = "NoViableAltException", Sh = "EarlyExitException", Ch = "NotAllInputParsedException", kh = [
Eh,
Ah,
Sh,
Ch
];
Object.freeze(kh);
function fa(t) {
return Qe(kh, t.name);
}
class Wa extends Error {
constructor(e, n) {
super(e), this.token = n, this.resyncedTokens = [], Object.setPrototypeOf(this, new.target.prototype), Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
}
}
class Nh extends Wa {
constructor(e, n, r) {
super(e, n), this.previousToken = r, this.name = Eh;
}
}
class By extends Wa {
constructor(e, n, r) {
super(e, n), this.previousToken = r, this.name = Ah;
}
}
class qy extends Wa {
constructor(e, n) {
super(e, n), this.name = Ch;
}
}
class Wy extends Wa {
constructor(e, n, r) {
super(e, n), this.previousToken = r, this.name = Sh;
}
}
const mo = {}, wh = "InRuleRecoveryException";
class Vy extends Error {
constructor(e) {
super(e), this.name = wh;
}
}
class Ky {
initRecoverable(e) {
this.firstAfterRepMap = {}, this.resyncFollows = {}, this.recoveryEnabled = B(e, "recoveryEnabled") ? e.recoveryEnabled : rn.recoveryEnabled, this.recoveryEnabled && (this.attemptInRepetitionRecovery = Hy);
}
getTokenToInsert(e) {
const n = _l(e, "", NaN, NaN, NaN, NaN, NaN, NaN);
return n.isInsertedInRecovery = !0, n;
}
canTokenTypeBeInsertedInRecovery(e) {
return !0;
}
canTokenTypeBeDeletedInRecovery(e) {
return !0;
}
tryInRepetitionRecovery(e, n, r, i) {
const s = this.findReSyncTokenType(), a = this.exportLexerState(), o = [];
let c = !1;
const l = this.LA(1);
let u = this.LA(1);
const f = () => {
const m = this.LA(0), g = this.errorMessageProvider.buildMismatchTokenMessage({
expected: i,
actual: l,
previous: m,
ruleName: this.getCurrRuleFullName()
}), A = new Nh(g, l, this.LA(0));
A.resyncedTokens = zi(o), this.SAVE_ERROR(A);
};
for (; !c; )
if (this.tokenMatcher(u, i)) {
f();
return;
} else if (r.call(this)) {
f(), e.apply(this, n);
return;
} else this.tokenMatcher(u, s) ? c = !0 : (u = this.SKIP_TOKEN(), this.addToResyncTokens(u, o));
this.importLexerState(a);
}
shouldInRepetitionRecoveryBeTried(e, n, r) {
return !(r === !1 || this.tokenMatcher(this.LA(1), e) || this.isBackTracking() || this.canPerformInRuleRecovery(e, this.getFollowsForInRuleRecovery(e, n)));
}
// Error Recovery functionality
getFollowsForInRuleRecovery(e, n) {
const r = this.getCurrentGrammarPath(e, n);
return this.getNextPossibleTokenTypes(r);
}
tryInRuleRecovery(e, n) {
if (this.canRecoverWithSingleTokenInsertion(e, n))
return this.getTokenToInsert(e);
if (this.canRecoverWithSingleTokenDeletion(e)) {
const r = this.SKIP_TOKEN();
return this.consumeToken(), r;
}
throw new Vy("sad sad panda");
}
canPerformInRuleRecovery(e, n) {
return this.canRecoverWithSingleTokenInsertion(e, n) || this.canRecoverWithSingleTokenDeletion(e);
}
canRecoverWithSingleTokenInsertion(e, n) {
if (!this.canTokenTypeBeInsertedInRecovery(e) || oe(n))
return !1;
const r = this.LA(1);
return jr(n, (s) => this.tokenMatcher(r, s)) !== void 0;
}
canRecoverWithSingleTokenDeletion(e) {
return this.canTokenTypeBeDeletedInRecovery(e) ? this.tokenMatcher(this.LA(2), e) : !1;
}
isInCurrentRuleReSyncSet(e) {
const n = this.getCurrFollowKey(), r = this.getFollowSetFromFollowKey(n);
return Qe(r, e);
}
findReSyncTokenType() {
const e = this.flattenFollowSet();
let n = this.LA(1), r = 2;
for (; ; ) {
const i = jr(e, (s) => ph(n, s));
if (i !== void 0)
return i;
n = this.LA(r), r++;
}
}
getCurrFollowKey() {
if (this.RULE_STACK.length === 1)
return mo;
const e = this.getLastExplicitRuleShortName(), n = this.getLastExplicitRuleOccurrenceIndex(), r = this.getPreviousExplicitRuleShortName();
return {
ruleName: this.shortRuleNameToFullName(e),
idxInCallingRule: n,
inRule: this.shortRuleNameToFullName(r)
};
}
buildFullFollowKeyStack() {
const e = this.RULE_STACK, n = this.RULE_OCCURRENCE_STACK;
return M(e, (r, i) => i === 0 ? mo : {
ruleName: this.shortRuleNameToFullName(r),
idxInCallingRule: n[i],
inRule: this.shortRuleNameToFullName(e[i - 1])
});
}
flattenFollowSet() {
const e = M(this.buildFullFollowKeyStack(), (n) => this.getFollowSetFromFollowKey(n));
return yt(e);
}
getFollowSetFromFollowKey(e) {
if (e === mo)
return [vn];
const n = e.ruleName + e.idxInCallingRule + ih + e.inRule;
return this.resyncFollows[n];
}
// It does not make any sense to include a virtual EOF token in the list of resynced tokens
// as EOF does not really exist and thus does not contain any useful information (line/column numbers)
addToResyncTokens(e, n) {
return this.tokenMatcher(e, vn) || n.push(e), n;
}
reSyncTo(e) {
const n = [];
let r = this.LA(1);
for (; this.tokenMatcher(r, e) === !1; )
r = this.SKIP_TOKEN(), this.addToResyncTokens(r, n);
return zi(n);
}
attemptInRepetitionRecovery(e, n, r, i, s, a, o) {
}
getCurrentGrammarPath(e, n) {
const r = this.getHumanReadableRuleStack(), i = Be(this.RULE_OCCURRENCE_STACK);
return {
ruleStack: r,
occurrenceStack: i,
lastTok: e,
lastTokOccurrence: n
};
}
getHumanReadableRuleStack() {
return M(this.RULE_STACK, (e) => this.shortRuleNameToFullName(e));
}
}
function Hy(t, e, n, r, i, s, a) {
const o = this.getKeyForAutomaticLookahead(r, i);
let c = this.firstAfterRepMap[o];
if (c === void 0) {
const m = this.getCurrRuleFullName(), g = this.getGAstProductions()[m];
c = new s(g, i).startWalking(), this.firstAfterRepMap[o] = c;
}
let l = c.token, u = c.occurrence;
const f = c.isEndOfRule;
this.RULE_STACK.length === 1 && f && l === void 0 && (l = vn, u = 1), !(l === void 0 || u === void 0) && this.shouldInRepetitionRecoveryBeTried(l, u, a) && this.tryInRepetitionRecovery(t, e, n, l);
}
const Yy = 4, Sn = 8, bh = 1 << Sn, Ih = 2 << Sn, Vo = 3 << Sn, Ko = 4 << Sn, Ho = 5 << Sn, Zs = 6 << Sn;
function go(t, e, n) {
return n | e | t;
}
class Ll {
constructor(e) {
var n;
this.maxLookahead = (n = e == null ? void 0 : e.maxLookahead) !== null && n !== void 0 ? n : rn.maxLookahead;
}
validate(e) {
const n = this.validateNoLeftRecursion(e.rules);
if (oe(n)) {
const r = this.validateEmptyOrAlternatives(e.rules), i = this.validateAmbiguousAlternationAlternatives(e.rules, this.maxLookahead), s = this.validateSomeNonEmptyLookaheadPath(e.rules, this.maxLookahead);
return [
...n,
...r,
...i,
...s
];
}
return n;
}
validateNoLeftRecursion(e) {
return lt(e, (n) => vh(n, n, Gn));
}
validateEmptyOrAlternatives(e) {
return lt(e, (n) => Ly(n, Gn));
}
validateAmbiguousAlternationAlternatives(e, n) {
return lt(e, (r) => Oy(r, n, Gn));
}
validateSomeNonEmptyLookaheadPath(e, n) {
return My(e, n, Gn);
}
buildLookaheadForAlternation(e) {
return Ry(e.prodOccurrence, e.rule, e.maxLookahead, e.hasPredicates, e.dynamicTokensEnabled, Ey);
}
buildLookaheadForOptional(e) {
return vy(e.prodOccurrence, e.rule, e.maxLookahead, e.dynamicTokensEnabled, $l(e.prodType), Ay);
}
}
class Xy {
initLooksAhead(e) {
this.dynamicTokensEnabled = B(e, "dynamicTokensEnabled") ? e.dynamicTokensEnabled : rn.dynamicTokensEnabled, this.maxLookahead = B(e, "maxLookahead") ? e.maxLookahead : rn.maxLookahead, this.lookaheadStrategy = B(e, "lookaheadStrategy") ? e.lookaheadStrategy : new Ll({ maxLookahead: this.maxLookahead }), this.lookAheadFuncsCache = /* @__PURE__ */ new Map();
}
preComputeLookaheadFunctions(e) {
j(e, (n) => {
this.TRACE_INIT(`${n.name} Rule Lookahead`, () => {
const { alternation: r, repetition: i, option: s, repetitionMandatory: a, repetitionMandatoryWithSeparator: o, repetitionWithSeparator: c } = Qy(n);
j(r, (l) => {
const u = l.idx === 0 ? "" : l.idx;
this.TRACE_INIT(`${Ot(l)}${u}`, () => {
const f = this.lookaheadStrategy.buildLookaheadForAlternation({
prodOccurrence: l.idx,
rule: n,
maxLookahead: l.maxLookahead || this.maxLookahead,
hasPredicates: l.hasPredicates,
dynamicTokensEnabled: this.dynamicTokensEnabled
}), m = go(this.fullRuleNameToShort[n.name], bh, l.idx);
this.setLaFuncCache(m, f);
});
}), j(i, (l) => {
this.computeLookaheadFunc(n, l.idx, Vo, "Repetition", l.maxLookahead, Ot(l));
}), j(s, (l) => {
this.computeLookaheadFunc(n, l.idx, Ih, "Option", l.maxLookahead, Ot(l));
}), j(a, (l) => {
this.computeLookaheadFunc(n, l.idx, Ko, "RepetitionMandatory", l.maxLookahead, Ot(l));
}), j(o, (l) => {
this.computeLookaheadFunc(n, l.idx, Zs, "RepetitionMandatoryWithSeparator", l.maxLookahead, Ot(l));
}), j(c, (l) => {
this.computeLookaheadFunc(n, l.idx, Ho, "RepetitionWithSeparator", l.maxLookahead, Ot(l));
});
});
});
}
computeLookaheadFunc(e, n, r, i, s, a) {
this.TRACE_INIT(`${a}${n === 0 ? "" : n}`, () => {
const o = this.lookaheadStrategy.buildLookaheadForOptional({
prodOccurrence: n,
rule: e,
maxLookahead: s || this.maxLookahead,
dynamicTokensEnabled: this.dynamicTokensEnabled,
prodType: i
}), c = go(this.fullRuleNameToShort[e.name], r, n);
this.setLaFuncCache(c, o);
});
}
// this actually returns a number, but it is always used as a string (object prop key)
getKeyForAutomaticLookahead(e, n) {
const r = this.getLastExplicitRuleShortName();
return go(r, e, n);
}
getLaFuncFromCache(e) {
return this.lookAheadFuncsCache.get(e);
}
/* istanbul ignore next */
setLaFuncCache(e, n) {
this.lookAheadFuncsCache.set(e, n);
}
}
class Jy extends ai {
constructor() {
super(...arguments), this.dslMethods = {
option: [],
alternation: [],
repetition: [],
repetitionWithSeparator: [],
repetitionMandatory: [],
repetitionMandatoryWithSeparator: []
};
}
reset() {
this.dslMethods = {
option: [],
alternation: [],
repetition: [],
repetitionWithSeparator: [],
repetitionMandatory: [],
repetitionMandatoryWithSeparator: []
};
}
visitOption(e) {
this.dslMethods.option.push(e);
}
visitRepetitionWithSeparator(e) {
this.dslMethods.repetitionWithSeparator.push(e);
}
visitRepetitionMandatory(e) {
this.dslMethods.repetitionMandatory.push(e);
}
visitRepetitionMandatoryWithSeparator(e) {
this.dslMethods.repetitionMandatoryWithSeparator.push(e);
}
visitRepetition(e) {
this.dslMethods.repetition.push(e);
}
visitAlternation(e) {
this.dslMethods.alternation.push(e);
}
}
const Ds = new Jy();
function Qy(t) {
Ds.reset(), t.accept(Ds);
const e = Ds.dslMethods;
return Ds.reset(), e;
}
function Nu(t, e) {
isNaN(t.startOffset) === !0 ? (t.startOffset = e.startOffset, t.endOffset = e.endOffset) : t.endOffset < e.endOffset && (t.endOffset = e.endOffset);
}
function wu(t, e) {
isNaN(t.startOffset) === !0 ? (t.startOffset = e.startOffset, t.startColumn = e.startColumn, t.startLine = e.startLine, t.endOffset = e.endOffset, t.endColumn = e.endColumn, t.endLine = e.endLine) : t.endOffset < e.endOffset && (t.endOffset = e.endOffset, t.endColumn = e.endColumn, t.endLine = e.endLine);
}
function Zy(t, e, n) {
t.children[n] === void 0 ? t.children[n] = [e] : t.children[n].push(e);
}
function eT(t, e, n) {
t.children[e] === void 0 ? t.children[e] = [n] : t.children[e].push(n);
}
const tT = "name";
function _h(t, e) {
Object.defineProperty(t, tT, {
enumerable: !1,
configurable: !0,
writable: !1,
value: e
});
}
function nT(t, e) {
const n = Ur(t), r = n.length;
for (let i = 0; i < r; i++) {
const s = n[i], a = t[s], o = a.length;
for (let c = 0; c < o; c++) {
const l = a[c];
l.tokenTypeIdx === void 0 && this[l.name](l.children, e);
}
}
}
function rT(t, e) {
const n = function() {
};
_h(n, t + "BaseSemantics");
const r = {
visit: function(i, s) {
if (je(i) && (i = i[0]), !tn(i))
return this[i.name](i.children, s);
},
validateVisitor: function() {
const i = sT(this, e);
if (!oe(i)) {
const s = M(i, (a) => a.msg);
throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
${s.join(`
`).replace(/\n/g, `
`)}`);
}
}
};
return n.prototype = r, n.prototype.constructor = n, n._RULE_NAMES = e, n;
}
function iT(t, e, n) {
const r = function() {
};
_h(r, t + "BaseSemanticsWithDefaults");
const i = Object.create(n.prototype);
return j(e, (s) => {
i[s] = nT;
}), r.prototype = i, r.prototype.constructor = r, r;
}
var Yo;
(function(t) {
t[t.REDUNDANT_METHOD = 0] = "REDUNDANT_METHOD", t[t.MISSING_METHOD = 1] = "MISSING_METHOD";
})(Yo || (Yo = {}));
function sT(t, e) {
return aT(t, e);
}
function aT(t, e) {
const n = dt(e, (i) => Hn(t[i]) === !1), r = M(n, (i) => ({
msg: `Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,
type: Yo.MISSING_METHOD,
methodName: i
}));
return rs(r);
}
class oT {
initTreeBuilder(e) {
if (this.CST_STACK = [], this.outputCst = e.outputCst, this.nodeLocationTracking = B(e, "nodeLocationTracking") ? e.nodeLocationTracking : rn.nodeLocationTracking, !this.outputCst)
this.cstInvocationStateUpdate = Me, this.cstFinallyStateUpdate = Me, this.cstPostTerminal = Me, this.cstPostNonTerminal = Me, this.cstPostRule = Me;
else if (/full/i.test(this.nodeLocationTracking))
this.recoveryEnabled ? (this.setNodeLocationFromToken = wu, this.setNodeLocationFromNode = wu, this.cstPostRule = Me, this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery) : (this.setNodeLocationFromToken = Me, this.setNodeLocationFromNode = Me, this.cstPostRule = this.cstPostRuleFull, this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular);
else if (/onlyOffset/i.test(this.nodeLocationTracking))
this.recoveryEnabled ? (this.setNodeLocationFromToken = Nu, this.setNodeLocationFromNode = Nu, this.cstPostRule = Me, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery) : (this.setNodeLocationFromToken = Me, this.setNodeLocationFromNode = Me, this.cstPostRule = this.cstPostRuleOnlyOffset, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular);
else if (/none/i.test(this.nodeLocationTracking))
this.setNodeLocationFromToken = Me, this.setNodeLocationFromNode = Me, this.cstPostRule = Me, this.setInitialNodeLocation = Me;
else
throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`);
}
setInitialNodeLocationOnlyOffsetRecovery(e) {
e.location = {
startOffset: NaN,
endOffset: NaN
};
}
setInitialNodeLocationOnlyOffsetRegular(e) {
e.location = {
// without error recovery the starting Location of a new CstNode is guaranteed
// To be the next Token's startOffset (for valid inputs).
// For invalid inputs there won't be any CSTOutput so this potential
// inaccuracy does not matter
startOffset: this.LA(1).startOffset,
endOffset: NaN
};
}
setInitialNodeLocationFullRecovery(e) {
e.location = {
startOffset: NaN,
startLine: NaN,
startColumn: NaN,
endOffset: NaN,
endLine: NaN,
endColumn: NaN
};
}
/**
* @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work
* @param cstNode
*/
setInitialNodeLocationFullRegular(e) {
const n = this.LA(1);
e.location = {
startOffset: n.startOffset,
startLine: n.startLine,
startColumn: n.startColumn,
endOffset: NaN,
endLine: NaN,
endColumn: NaN
};
}
cstInvocationStateUpdate(e) {
const n = {
name: e,
children: /* @__PURE__ */ Object.create(null)
};
this.setInitialNodeLocation(n), this.CST_STACK.push(n);
}
cstFinallyStateUpdate() {
this.CST_STACK.pop();
}
cstPostRuleFull(e) {
const n = this.LA(0), r = e.location;
r.startOffset <= n.startOffset ? (r.endOffset = n.endOffset, r.endLine = n.endLine, r.endColumn = n.endColumn) : (r.startOffset = NaN, r.startLine = NaN, r.startColumn = NaN);
}
cstPostRuleOnlyOffset(e) {
const n = this.LA(0), r = e.location;
r.startOffset <= n.startOffset ? r.endOffset = n.endOffset : r.startOffset = NaN;
}
cstPostTerminal(e, n) {
const r = this.CST_STACK[this.CST_STACK.length - 1];
Zy(r, n, e), this.setNodeLocationFromToken(r.location, n);
}
cstPostNonTerminal(e, n) {
const r = this.CST_STACK[this.CST_STACK.length - 1];
eT(r, n, e), this.setNodeLocationFromNode(r.location, e.location);
}
getBaseCstVisitorConstructor() {
if (tn(this.baseCstVisitorConstructor)) {
const e = rT(this.className, Ur(this.gastProductionsCache));
return this.baseCstVisitorConstructor = e, e;
}
return this.baseCstVisitorConstructor;
}
getBaseCstVisitorConstructorWithDefaults() {
if (tn(this.baseCstVisitorWithDefaultsConstructor)) {
const e = iT(this.className, Ur(this.gastProductionsCache), this.getBaseCstVisitorConstructor());
return this.baseCstVisitorWithDefaultsConstructor = e, e;
}
return this.baseCstVisitorWithDefaultsConstructor;
}
getLastExplicitRuleShortName() {
const e = this.RULE_STACK;
return e[e.length - 1];
}
getPreviousExplicitRuleShortName() {
const e = this.RULE_STACK;
return e[e.length - 2];
}
getLastExplicitRuleOccurrenceIndex() {
const e = this.RULE_OCCURRENCE_STACK;
return e[e.length - 1];
}
}
class cT {
initLexerAdapter() {
this.tokVector = [], this.tokVectorLength = 0, this.currIdx = -1;
}
set input(e) {
if (this.selfAnalysisDone !== !0)
throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");
this.reset(), this.tokVector = e, this.tokVectorLength = e.length;
}
get input() {
return this.tokVector;
}
// skips a token and returns the next token
SKIP_TOKEN() {
return this.currIdx <= this.tokVector.length - 2 ? (this.consumeToken(), this.LA(1)) : pa;
}
// Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers
// or lexers dependent on parser context.
LA(e) {
const n = this.currIdx + e;
return n < 0 || this.tokVectorLength <= n ? pa : this.tokVector[n];
}
consumeToken() {
this.currIdx++;
}
exportLexerState() {
return this.currIdx;
}
importLexerState(e) {
this.currIdx = e;
}
resetLexerState() {
this.currIdx = -1;
}
moveToTerminatedState() {
this.currIdx = this.tokVector.length - 1;
}
getLexerPosition() {
return this.exportLexerState();
}
}
class lT {
ACTION(e) {
return e.call(this);
}
consume(e, n, r) {
return this.consumeInternal(n, e, r);
}
subrule(e, n, r) {
return this.subruleInternal(n, e, r);
}
option(e, n) {
return this.optionInternal(n, e);
}
or(e, n) {
return this.orInternal(n, e);
}
many(e, n) {
return this.manyInternal(e, n);
}
atLeastOne(e, n) {
return this.atLeastOneInternal(e, n);
}
CONSUME(e, n) {
return this.consumeInternal(e, 0, n);
}
CONSUME1(e, n) {
return this.consumeInternal(e, 1, n);
}
CONSUME2(e, n) {
return this.consumeInternal(e, 2, n);
}
CONSUME3(e, n) {
return this.consumeInternal(e, 3, n);
}
CONSUME4(e, n) {
return this.consumeInternal(e, 4, n);
}
CONSUME5(e, n) {
return this.consumeInternal(e, 5, n);
}
CONSUME6(e, n) {
return this.consumeInternal(e, 6, n);
}
CONSUME7(e, n) {
return this.consumeInternal(e, 7, n);
}
CONSUME8(e, n) {
return this.consumeInternal(e, 8, n);
}
CONSUME9(e, n) {
return this.consumeInternal(e, 9, n);
}
SUBRULE(e, n) {
return this.subruleInternal(e, 0, n);
}
SUBRULE1(e, n) {
return this.subruleInternal(e, 1, n);
}
SUBRULE2(e, n) {
return this.subruleInternal(e, 2, n);
}
SUBRULE3(e, n) {
return this.subruleInternal(e, 3, n);
}
SUBRULE4(e, n) {
return this.subruleInternal(e, 4, n);
}
SUBRULE5(e, n) {
return this.subruleInternal(e, 5, n);
}
SUBRULE6(e, n) {
return this.subruleInternal(e, 6, n);
}
SUBRULE7(e, n) {
return this.subruleInternal(e, 7, n);
}
SUBRULE8(e, n) {
return this.subruleInternal(e, 8, n);
}
SUBRULE9(e, n) {
return this.subruleInternal(e, 9, n);
}
OPTION(e) {
return this.optionInternal(e, 0);
}
OPTION1(e) {
return this.optionInternal(e, 1);
}
OPTION2(e) {
return this.optionInternal(e, 2);
}
OPTION3(e) {
return this.optionInternal(e, 3);
}
OPTION4(e) {
return this.optionInternal(e, 4);
}
OPTION5(e) {
return this.optionInternal(e, 5);
}
OPTION6(e) {
return this.optionInternal(e, 6);
}
OPTION7(e) {
return this.optionInternal(e, 7);
}
OPTION8(e) {
return this.optionInternal(e, 8);
}
OPTION9(e) {
return this.optionInternal(e, 9);
}
OR(e) {
return this.orInternal(e, 0);
}
OR1(e) {
return this.orInternal(e, 1);
}
OR2(e) {
return this.orInternal(e, 2);
}
OR3(e) {
return this.orInternal(e, 3);
}
OR4(e) {
return this.orInternal(e, 4);
}
OR5(e) {
return this.orInternal(e, 5);
}
OR6(e) {
return this.orInternal(e, 6);
}
OR7(e) {
return this.orInternal(e, 7);
}
OR8(e) {
return this.orInternal(e, 8);
}
OR9(e) {
return this.orInternal(e, 9);
}
MANY(e) {
this.manyInternal(0, e);
}
MANY1(e) {
this.manyInternal(1, e);
}
MANY2(e) {
this.manyInternal(2, e);
}
MANY3(e) {
this.manyInternal(3, e);
}
MANY4(e) {
this.manyInternal(4, e);
}
MANY5(e) {
this.manyInternal(5, e);
}
MANY6(e) {
this.manyInternal(6, e);
}
MANY7(e) {
this.manyInternal(7, e);
}
MANY8(e) {
this.manyInternal(8, e);
}
MANY9(e) {
this.manyInternal(9, e);
}
MANY_SEP(e) {
this.manySepFirstInternal(0, e);
}
MANY_SEP1(e) {
this.manySepFirstInternal(1, e);
}
MANY_SEP2(e) {
this.manySepFirstInternal(2, e);
}
MANY_SEP3(e) {
this.manySepFirstInternal(3, e);
}
MANY_SEP4(e) {
this.manySepFirstInternal(4, e);
}
MANY_SEP5(e) {
this.manySepFirstInternal(5, e);
}
MANY_SEP6(e) {
this.manySepFirstInternal(6, e);
}
MANY_SEP7(e) {
this.manySepFirstInternal(7, e);
}
MANY_SEP8(e) {
this.manySepFirstInternal(8, e);
}
MANY_SEP9(e) {
this.manySepFirstInternal(9, e);
}
AT_LEAST_ONE(e) {
this.atLeastOneInternal(0, e);
}
AT_LEAST_ONE1(e) {
return this.atLeastOneInternal(1, e);
}
AT_LEAST_ONE2(e) {
this.atLeastOneInternal(2, e);
}
AT_LEAST_ONE3(e) {
this.atLeastOneInternal(3, e);
}
AT_LEAST_ONE4(e) {
this.atLeastOneInternal(4, e);
}
AT_LEAST_ONE5(e) {
this.atLeastOneInternal(5, e);
}
AT_LEAST_ONE6(e) {
this.atLeastOneInternal(6, e);
}
AT_LEAST_ONE7(e) {
this.atLeastOneInternal(7, e);
}
AT_LEAST_ONE8(e) {
this.atLeastOneInternal(8, e);
}
AT_LEAST_ONE9(e) {
this.atLeastOneInternal(9, e);
}
AT_LEAST_ONE_SEP(e) {
this.atLeastOneSepFirstInternal(0, e);
}
AT_LEAST_ONE_SEP1(e) {
this.atLeastOneSepFirstInternal(1, e);
}
AT_LEAST_ONE_SEP2(e) {
this.atLeastOneSepFirstInternal(2, e);
}
AT_LEAST_ONE_SEP3(e) {
this.atLeastOneSepFirstInternal(3, e);
}
AT_LEAST_ONE_SEP4(e) {
this.atLeastOneSepFirstInternal(4, e);
}
AT_LEAST_ONE_SEP5(e) {
this.atLeastOneSepFirstInternal(5, e);
}
AT_LEAST_ONE_SEP6(e) {
this.atLeastOneSepFirstInternal(6, e);
}
AT_LEAST_ONE_SEP7(e) {
this.atLeastOneSepFirstInternal(7, e);
}
AT_LEAST_ONE_SEP8(e) {
this.atLeastOneSepFirstInternal(8, e);
}
AT_LEAST_ONE_SEP9(e) {
this.atLeastOneSepFirstInternal(9, e);
}
RULE(e, n, r = ma) {
if (Qe(this.definedRulesNames, e)) {
const a = {
message: Gn.buildDuplicateRuleNameError({
topLevelRule: e,
grammarName: this.className
}),
type: Je.DUPLICATE_RULE_NAME,
ruleName: e
};
this.definitionErrors.push(a);
}
this.definedRulesNames.push(e);
const i = this.defineRule(e, n, r);
return this[e] = i, i;
}
OVERRIDE_RULE(e, n, r = ma) {
const i = Py(e, this.definedRulesNames, this.className);
this.definitionErrors = this.definitionErrors.concat(i);
const s = this.defineRule(e, n, r);
return this[e] = s, s;
}
BACKTRACK(e, n) {
return function() {
this.isBackTrackingStack.push(1);
const r = this.saveRecogState();
try {
return e.apply(this, n), !0;
} catch (i) {
if (fa(i))
return !1;
throw i;
} finally {
this.reloadRecogState(r), this.isBackTrackingStack.pop();
}
};
}
// GAST export APIs
getGAstProductions() {
return this.gastProductionsCache;
}
getSerializedGastProductions() {
return yg(Le(this.gastProductionsCache));
}
}
class uT {
initRecognizerEngine(e, n) {
if (this.className = this.constructor.name, this.shortRuleNameToFull = {}, this.fullRuleNameToShort = {}, this.ruleShortNameIdx = 256, this.tokenMatcher = da, this.subruleIdx = 0, this.definedRulesNames = [], this.tokensMap = {}, this.isBackTrackingStack = [], this.RULE_STACK = [], this.RULE_OCCURRENCE_STACK = [], this.gastProductionsCache = {}, B(n, "serializedGrammar"))
throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
For Further details.`);
if (je(e)) {
if (oe(e))
throw Error(`A Token Vocabulary cannot be empty.
Note that the first argument for the parser constructor
is no longer a Token vector (since v4.0).`);
if (typeof e[0].startOffset == "number")
throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
For Further details.`);
}
if (je(e))
this.tokensMap = Ye(e, (s, a) => (s[a.name] = a, s), {});
else if (B(e, "modes") && Nt(yt(Le(e.modes)), cy)) {
const s = yt(Le(e.modes)), a = Al(s);
this.tokensMap = Ye(a, (o, c) => (o[c.name] = c, o), {});
} else if (Mp(e))
this.tokensMap = Be(e);
else
throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");
this.tokensMap.EOF = vn;
const r = B(e, "modes") ? yt(Le(e.modes)) : Le(e), i = Nt(r, (s) => oe(s.categoryMatches));
this.tokenMatcher = i ? da : cs, ls(Le(this.tokensMap));
}
defineRule(e, n, r) {
if (this.selfAnalysisDone)
throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'
Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);
const i = B(r, "resyncEnabled") ? r.resyncEnabled : ma.resyncEnabled, s = B(r, "recoveryValueFunc") ? r.recoveryValueFunc : ma.recoveryValueFunc, a = this.ruleShortNameIdx << Yy + Sn;
this.ruleShortNameIdx++, this.shortRuleNameToFull[a] = e, this.fullRuleNameToShort[e] = a;
let o;
return this.outputCst === !0 ? o = function(...u) {
try {
this.ruleInvocationStateUpdate(a, e, this.subruleIdx), n.apply(this, u);
const f = this.CST_STACK[this.CST_STACK.length - 1];
return this.cstPostRule(f), f;
} catch (f) {
return this.invokeRuleCatch(f, i, s);
} finally {
this.ruleFinallyStateUpdate();
}
} : o = function(...u) {
try {
return this.ruleInvocationStateUpdate(a, e, this.subruleIdx), n.apply(this, u);
} catch (f) {
return this.invokeRuleCatch(f, i, s);
} finally {
this.ruleFinallyStateUpdate();
}
}, Object.assign(o, { ruleName: e, originalGrammarAction: n });
}
invokeRuleCatch(e, n, r) {
const i = this.RULE_STACK.length === 1, s = n && !this.isBackTracking() && this.recoveryEnabled;
if (fa(e)) {
const a = e;
if (s) {
const o = this.findReSyncTokenType();
if (this.isInCurrentRuleReSyncSet(o))
if (a.resyncedTokens = this.reSyncTo(o), this.outputCst) {
const c = this.CST_STACK[this.CST_STACK.length - 1];
return c.recoveredNode = !0, c;
} else
return r(e);
else {
if (this.outputCst) {
const c = this.CST_STACK[this.CST_STACK.length - 1];
c.recoveredNode = !0, a.partialCstResult = c;
}
throw a;
}
} else {
if (i)
return this.moveToTerminatedState(), r(e);
throw a;
}
} else
throw e;
}
// Implementation of parsing DSL
optionInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(Ih, n);
return this.optionInternalLogic(e, n, r);
}
optionInternalLogic(e, n, r) {
let i = this.getLaFuncFromCache(r), s;
if (typeof e != "function") {
s = e.DEF;
const a = e.GATE;
if (a !== void 0) {
const o = i;
i = () => a.call(this) && o.call(this);
}
} else
s = e;
if (i.call(this) === !0)
return s.call(this);
}
atLeastOneInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(Ko, e);
return this.atLeastOneInternalLogic(e, n, r);
}
atLeastOneInternalLogic(e, n, r) {
let i = this.getLaFuncFromCache(r), s;
if (typeof n != "function") {
s = n.DEF;
const a = n.GATE;
if (a !== void 0) {
const o = i;
i = () => a.call(this) && o.call(this);
}
} else
s = n;
if (i.call(this) === !0) {
let a = this.doSingleRepetition(s);
for (; i.call(this) === !0 && a === !0; )
a = this.doSingleRepetition(s);
} else
throw this.raiseEarlyExitException(e, me.REPETITION_MANDATORY, n.ERR_MSG);
this.attemptInRepetitionRecovery(this.atLeastOneInternal, [e, n], i, Ko, e, yy);
}
atLeastOneSepFirstInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(Zs, e);
this.atLeastOneSepFirstInternalLogic(e, n, r);
}
atLeastOneSepFirstInternalLogic(e, n, r) {
const i = n.DEF, s = n.SEP;
if (this.getLaFuncFromCache(r).call(this) === !0) {
i.call(this);
const o = () => this.tokenMatcher(this.LA(1), s);
for (; this.tokenMatcher(this.LA(1), s) === !0; )
this.CONSUME(s), i.call(this);
this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [
e,
s,
o,
i,
Su
], o, Zs, e, Su);
} else
throw this.raiseEarlyExitException(e, me.REPETITION_MANDATORY_WITH_SEPARATOR, n.ERR_MSG);
}
manyInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(Vo, e);
return this.manyInternalLogic(e, n, r);
}
manyInternalLogic(e, n, r) {
let i = this.getLaFuncFromCache(r), s;
if (typeof n != "function") {
s = n.DEF;
const o = n.GATE;
if (o !== void 0) {
const c = i;
i = () => o.call(this) && c.call(this);
}
} else
s = n;
let a = !0;
for (; i.call(this) === !0 && a === !0; )
a = this.doSingleRepetition(s);
this.attemptInRepetitionRecovery(
this.manyInternal,
[e, n],
i,
Vo,
e,
gy,
// The notStuck parameter is only relevant when "attemptInRepetitionRecovery"
// is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]
// An infinite loop cannot occur as:
// - Either the lookahead is guaranteed to consume something (Single Token Separator)
// - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).
a
);
}
manySepFirstInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(Ho, e);
this.manySepFirstInternalLogic(e, n, r);
}
manySepFirstInternalLogic(e, n, r) {
const i = n.DEF, s = n.SEP;
if (this.getLaFuncFromCache(r).call(this) === !0) {
i.call(this);
const o = () => this.tokenMatcher(this.LA(1), s);
for (; this.tokenMatcher(this.LA(1), s) === !0; )
this.CONSUME(s), i.call(this);
this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [
e,
s,
o,
i,
Au
], o, Ho, e, Au);
}
}
repetitionSepSecondInternal(e, n, r, i, s) {
for (; r(); )
this.CONSUME(n), i.call(this);
this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [
e,
n,
r,
i,
s
], r, Zs, e, s);
}
doSingleRepetition(e) {
const n = this.getLexerPosition();
return e.call(this), this.getLexerPosition() > n;
}
orInternal(e, n) {
const r = this.getKeyForAutomaticLookahead(bh, n), i = je(e) ? e : e.DEF, a = this.getLaFuncFromCache(r).call(this, i);
if (a !== void 0)
return i[a].ALT.call(this);
this.raiseNoAltException(n, e.ERR_MSG);
}
ruleFinallyStateUpdate() {
if (this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstFinallyStateUpdate(), this.RULE_STACK.length === 0 && this.isAtEndOfInput() === !1) {
const e = this.LA(1), n = this.errorMessageProvider.buildNotAllInputParsedMessage({
firstRedundant: e,
ruleName: this.getCurrRuleFullName()
});
this.SAVE_ERROR(new qy(n, e));
}
}
subruleInternal(e, n, r) {
let i;
try {
const s = r !== void 0 ? r.ARGS : void 0;
return this.subruleIdx = n, i = e.apply(this, s), this.cstPostNonTerminal(i, r !== void 0 && r.LABEL !== void 0 ? r.LABEL : e.ruleName), i;
} catch (s) {
throw this.subruleInternalError(s, r, e.ruleName);
}
}
subruleInternalError(e, n, r) {
throw fa(e) && e.partialCstResult !== void 0 && (this.cstPostNonTerminal(e.partialCstResult, n !== void 0 && n.LABEL !== void 0 ? n.LABEL : r), delete e.partialCstResult), e;
}
consumeInternal(e, n, r) {
let i;
try {
const s = this.LA(1);
this.tokenMatcher(s, e) === !0 ? (this.consumeToken(), i = s) : this.consumeInternalError(e, s, r);
} catch (s) {
i = this.consumeInternalRecovery(e, n, s);
}
return this.cstPostTerminal(r !== void 0 && r.LABEL !== void 0 ? r.LABEL : e.name, i), i;
}
consumeInternalError(e, n, r) {
let i;
const s = this.LA(0);
throw r !== void 0 && r.ERR_MSG ? i = r.ERR_MSG : i = this.errorMessageProvider.buildMismatchTokenMessage({
expected: e,
actual: n,
previous: s,
ruleName: this.getCurrRuleFullName()
}), this.SAVE_ERROR(new Nh(i, n, s));
}
consumeInternalRecovery(e, n, r) {
if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?
r.name === "MismatchedTokenException" && !this.isBackTracking()) {
const i = this.getFollowsForInRuleRecovery(e, n);
try {
return this.tryInRuleRecovery(e, i);
} catch (s) {
throw s.name === wh ? r : s;
}
} else
throw r;
}
saveRecogState() {
const e = this.errors, n = Be(this.RULE_STACK);
return {
errors: e,
lexerState: this.exportLexerState(),
RULE_STACK: n,
CST_STACK: this.CST_STACK
};
}
reloadRecogState(e) {
this.errors = e.errors, this.importLexerState(e.lexerState), this.RULE_STACK = e.RULE_STACK;
}
ruleInvocationStateUpdate(e, n, r) {
this.RULE_OCCURRENCE_STACK.push(r), this.RULE_STACK.push(e), this.cstInvocationStateUpdate(n);
}
isBackTracking() {
return this.isBackTrackingStack.length !== 0;
}
getCurrRuleFullName() {
const e = this.getLastExplicitRuleShortName();
return this.shortRuleNameToFull[e];
}
shortRuleNameToFullName(e) {
return this.shortRuleNameToFull[e];
}
isAtEndOfInput() {
return this.tokenMatcher(this.LA(1), vn);
}
reset() {
this.resetLexerState(), this.subruleIdx = 0, this.isBackTrackingStack = [], this.errors = [], this.RULE_STACK = [], this.CST_STACK = [], this.RULE_OCCURRENCE_STACK = [];
}
}
class dT {
initErrorHandler(e) {
this._errors = [], this.errorMessageProvider = B(e, "errorMessageProvider") ? e.errorMessageProvider : rn.errorMessageProvider;
}
SAVE_ERROR(e) {
if (fa(e))
return e.context = {
ruleStack: this.getHumanReadableRuleStack(),
ruleOccurrenceStack: Be(this.RULE_OCCURRENCE_STACK)
}, this._errors.push(e), e;
throw Error("Trying to save an Error which is not a RecognitionException");
}
get errors() {
return Be(this._errors);
}
set errors(e) {
this._errors = e;
}
// TODO: consider caching the error message computed information
raiseEarlyExitException(e, n, r) {
const i = this.getCurrRuleFullName(), s = this.getGAstProductions()[i], o = qa(e, s, n, this.maxLookahead)[0], c = [];
for (let u = 1; u <= this.maxLookahead; u++)
c.push(this.LA(u));
const l = this.errorMessageProvider.buildEarlyExitMessage({
expectedIterationPaths: o,
actual: c,
previous: this.LA(0),
customUserDescription: r,
ruleName: i
});
throw this.SAVE_ERROR(new Wy(l, this.LA(1), this.LA(0)));
}
// TODO: consider caching the error message computed information
raiseNoAltException(e, n) {
const r = this.getCurrRuleFullName(), i = this.getGAstProductions()[r], s = Ba(e, i, this.maxLookahead), a = [];
for (let l = 1; l <= this.maxLookahead; l++)
a.push(this.LA(l));
const o = this.LA(0), c = this.errorMessageProvider.buildNoViableAltMessage({
expectedPathsPerAlt: s,
actual: a,
previous: o,
customUserDescription: n,
ruleName: this.getCurrRuleFullName()
});
throw this.SAVE_ERROR(new By(c, this.LA(1), o));
}
}
class fT {
initContentAssist() {
}
computeContentAssist(e, n) {
const r = this.gastProductionsCache[e];
if (tn(r))
throw Error(`Rule ->${e}<- does not exist in this grammar.`);
return mh([r], n, this.tokenMatcher, this.maxLookahead);
}
// TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...
// TODO: should this be more explicitly part of the public API?
getNextPossibleTokenTypes(e) {
const n = bt(e.ruleStack), i = this.getGAstProductions()[n];
return new my(i, e).startWalking();
}
}
const Va = {
description: "This Object indicates the Parser is during Recording Phase"
};
Object.freeze(Va);
const bu = !0, Iu = Math.pow(2, Sn) - 1, $h = hh({ name: "RECORDING_PHASE_TOKEN", pattern: et.NA });
ls([$h]);
const Ph = _l(
$h,
`This IToken indicates the Parser is in Recording Phase
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,
// Using "-1" instead of NaN (as in EOF) because an actual number is less likely to
// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.
-1,
-1,
-1,
-1,
-1,
-1
);
Object.freeze(Ph);
const hT = {
name: `This CSTNode indicates the Parser is in Recording Phase
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,
children: {}
};
class pT {
initGastRecorder(e) {
this.recordingProdStack = [], this.RECORDING_PHASE = !1;
}
enableRecording() {
this.RECORDING_PHASE = !0, this.TRACE_INIT("Enable Recording", () => {
for (let e = 0; e < 10; e++) {
const n = e > 0 ? e : "";
this[`CONSUME${n}`] = function(r, i) {
return this.consumeInternalRecord(r, e, i);
}, this[`SUBRULE${n}`] = function(r, i) {
return this.subruleInternalRecord(r, e, i);
}, this[`OPTION${n}`] = function(r) {
return this.optionInternalRecord(r, e);
}, this[`OR${n}`] = function(r) {
return this.orInternalRecord(r, e);
}, this[`MANY${n}`] = function(r) {
this.manyInternalRecord(e, r);
}, this[`MANY_SEP${n}`] = function(r) {
this.manySepFirstInternalRecord(e, r);
}, this[`AT_LEAST_ONE${n}`] = function(r) {
this.atLeastOneInternalRecord(e, r);
}, this[`AT_LEAST_ONE_SEP${n}`] = function(r) {
this.atLeastOneSepFirstInternalRecord(e, r);
};
}
this.consume = function(e, n, r) {
return this.consumeInternalRecord(n, e, r);
}, this.subrule = function(e, n, r) {
return this.subruleInternalRecord(n, e, r);
}, this.option = function(e, n) {
return this.optionInternalRecord(n, e);
}, this.or = function(e, n) {
return this.orInternalRecord(n, e);
}, this.many = function(e, n) {
this.manyInternalRecord(e, n);
}, this.atLeastOne = function(e, n) {
this.atLeastOneInternalRecord(e, n);
}, this.ACTION = this.ACTION_RECORD, this.BACKTRACK = this.BACKTRACK_RECORD, this.LA = this.LA_RECORD;
});
}
disableRecording() {
this.RECORDING_PHASE = !1, this.TRACE_INIT("Deleting Recording methods", () => {
const e = this;
for (let n = 0; n < 10; n++) {
const r = n > 0 ? n : "";
delete e[`CONSUME${r}`], delete e[`SUBRULE${r}`], delete e[`OPTION${r}`], delete e[`OR${r}`], delete e[`MANY${r}`], delete e[`MANY_SEP${r}`], delete e[`AT_LEAST_ONE${r}`], delete e[`AT_LEAST_ONE_SEP${r}`];
}
delete e.consume, delete e.subrule, delete e.option, delete e.or, delete e.many, delete e.atLeastOne, delete e.ACTION, delete e.BACKTRACK, delete e.LA;
});
}
// Parser methods are called inside an ACTION?
// Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?
// @ts-expect-error -- noop place holder
ACTION_RECORD(e) {
}
// Executing backtracking logic will break our recording logic assumptions
BACKTRACK_RECORD(e, n) {
return () => !0;
}
// LA is part of the official API and may be used for custom lookahead logic
// by end users who may forget to wrap it in ACTION or inside a GATE
LA_RECORD(e) {
return pa;
}
topLevelRuleRecord(e, n) {
try {
const r = new si({ definition: [], name: e });
return r.name = e, this.recordingProdStack.push(r), n.call(this), this.recordingProdStack.pop(), r;
} catch (r) {
if (r.KNOWN_RECORDER_ERROR !== !0)
try {
r.message = r.message + `
This error was thrown during the "grammar recording phase" For more info see:
https://chevrotain.io/docs/guide/internals.html#grammar-recording`;
} catch {
throw r;
}
throw r;
}
}
// Implementation of parsing DSL
optionInternalRecord(e, n) {
return Ci.call(this, ze, e, n);
}
atLeastOneInternalRecord(e, n) {
Ci.call(this, ft, n, e);
}
atLeastOneSepFirstInternalRecord(e, n) {
Ci.call(this, ht, n, e, bu);
}
manyInternalRecord(e, n) {
Ci.call(this, Ae, n, e);
}
manySepFirstInternalRecord(e, n) {
Ci.call(this, rt, n, e, bu);
}
orInternalRecord(e, n) {
return mT.call(this, e, n);
}
subruleInternalRecord(e, n, r) {
if (ha(n), !e || B(e, "ruleName") === !1) {
const o = new Error(`<SUBRULE${_u(n)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>
inside top level rule: <${this.recordingProdStack[0].name}>`);
throw o.KNOWN_RECORDER_ERROR = !0, o;
}
const i = jn(this.recordingProdStack), s = e.ruleName, a = new Xe({
idx: n,
nonTerminalName: s,
label: r == null ? void 0 : r.LABEL,
// The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created
referencedRule: void 0
});
return i.definition.push(a), this.outputCst ? hT : Va;
}
consumeInternalRecord(e, n, r) {
if (ha(n), !dh(e)) {
const a = new Error(`<CONSUME${_u(n)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>
inside top level rule: <${this.recordingProdStack[0].name}>`);
throw a.KNOWN_RECORDER_ERROR = !0, a;
}
const i = jn(this.recordingProdStack), s = new ue({
idx: n,
terminalType: e,
label: r == null ? void 0 : r.LABEL
});
return i.definition.push(s), Ph;
}
}
function Ci(t, e, n, r = !1) {
ha(n);
const i = jn(this.recordingProdStack), s = Hn(e) ? e : e.DEF, a = new t({ definition: [], idx: n });
return r && (a.separator = e.SEP), B(e, "MAX_LOOKAHEAD") && (a.maxLookahead = e.MAX_LOOKAHEAD), this.recordingProdStack.push(a), s.call(this), i.definition.push(a), this.recordingProdStack.pop(), Va;
}
function mT(t, e) {
ha(e);
const n = jn(this.recordingProdStack), r = je(t) === !1, i = r === !1 ? t : t.DEF, s = new it({
definition: [],
idx: e,
ignoreAmbiguities: r && t.IGNORE_AMBIGUITIES === !0
});
B(t, "MAX_LOOKAHEAD") && (s.maxLookahead = t.MAX_LOOKAHEAD);
const a = Of(i, (o) => Hn(o.GATE));
return s.hasPredicates = a, n.definition.push(s), j(i, (o) => {
const c = new nt({ definition: [] });
s.definition.push(c), B(o, "IGNORE_AMBIGUITIES") ? c.ignoreAmbiguities = o.IGNORE_AMBIGUITIES : B(o, "GATE") && (c.ignoreAmbiguities = !0), this.recordingProdStack.push(c), o.ALT.call(this), this.recordingProdStack.pop();
}), Va;
}
function _u(t) {
return t === 0 ? "" : `${t}`;
}
function ha(t) {
if (t < 0 || t > Iu) {
const e = new Error(
// The stack trace will contain all the needed details
`Invalid DSL Method idx value: <${t}>
Idx value must be a none negative value smaller than ${Iu + 1}`
);
throw e.KNOWN_RECORDER_ERROR = !0, e;
}
}
class gT {
initPerformanceTracer(e) {
if (B(e, "traceInitPerf")) {
const n = e.traceInitPerf, r = typeof n == "number";
this.traceInitMaxIdent = r ? n : 1 / 0, this.traceInitPerf = r ? n > 0 : n;
} else
this.traceInitMaxIdent = 0, this.traceInitPerf = rn.traceInitPerf;
this.traceInitIndent = -1;
}
TRACE_INIT(e, n) {
if (this.traceInitPerf === !0) {
this.traceInitIndent++;
const r = new Array(this.traceInitIndent + 1).join(" ");
this.traceInitIndent < this.traceInitMaxIdent && console.log(`${r}--> <${e}>`);
const { time: i, value: s } = nh(n), a = i > 10 ? console.warn : console.log;
return this.traceInitIndent < this.traceInitMaxIdent && a(`${r}<-- <${e}> time: ${i}ms`), this.traceInitIndent--, s;
} else
return n();
}
}
function yT(t, e) {
e.forEach((n) => {
const r = n.prototype;
Object.getOwnPropertyNames(r).forEach((i) => {
if (i === "constructor")
return;
const s = Object.getOwnPropertyDescriptor(r, i);
s && (s.get || s.set) ? Object.defineProperty(t.prototype, i, s) : t.prototype[i] = n.prototype[i];
});
});
}
const pa = _l(vn, "", NaN, NaN, NaN, NaN, NaN, NaN);
Object.freeze(pa);
const rn = Object.freeze({
recoveryEnabled: !1,
maxLookahead: 3,
dynamicTokensEnabled: !1,
outputCst: !0,
errorMessageProvider: vr,
nodeLocationTracking: "none",
traceInitPerf: !1,
skipValidations: !1
}), ma = Object.freeze({
recoveryValueFunc: () => {
},
resyncEnabled: !0
});
var Je;
(function(t) {
t[t.INVALID_RULE_NAME = 0] = "INVALID_RULE_NAME", t[t.DUPLICATE_RULE_NAME = 1] = "DUPLICATE_RULE_NAME", t[t.INVALID_RULE_OVERRIDE = 2] = "INVALID_RULE_OVERRIDE", t[t.DUPLICATE_PRODUCTIONS = 3] = "DUPLICATE_PRODUCTIONS", t[t.UNRESOLVED_SUBRULE_REF = 4] = "UNRESOLVED_SUBRULE_REF", t[t.LEFT_RECURSION = 5] = "LEFT_RECURSION", t[t.NONE_LAST_EMPTY_ALT = 6] = "NONE_LAST_EMPTY_ALT", t[t.AMBIGUOUS_ALTS = 7] = "AMBIGUOUS_ALTS", t[t.CONFLICT_TOKENS_RULES_NAMESPACE = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE", t[t.INVALID_TOKEN_NAME = 9] = "INVALID_TOKEN_NAME", t[t.NO_NON_EMPTY_LOOKAHEAD = 10] = "NO_NON_EMPTY_LOOKAHEAD", t[t.AMBIGUOUS_PREFIX_ALTS = 11] = "AMBIGUOUS_PREFIX_ALTS", t[t.TOO_MANY_ALTS = 12] = "TOO_MANY_ALTS", t[t.CUSTOM_LOOKAHEAD_VALIDATION = 13] = "CUSTOM_LOOKAHEAD_VALIDATION";
})(Je || (Je = {}));
function $u(t = void 0) {
return function() {
return t;
};
}
class us {
/**
* @deprecated use the **instance** method with the same name instead
*/
static performSelfAnalysis(e) {
throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.");
}
performSelfAnalysis() {
this.TRACE_INIT("performSelfAnalysis", () => {
let e;
this.selfAnalysisDone = !0;
const n = this.className;
this.TRACE_INIT("toFastProps", () => {
rh(this);
}), this.TRACE_INIT("Grammar Recording", () => {
try {
this.enableRecording(), j(this.definedRulesNames, (i) => {
const a = this[i].originalGrammarAction;
let o;
this.TRACE_INIT(`${i} Rule`, () => {
o = this.topLevelRuleRecord(i, a);
}), this.gastProductionsCache[i] = o;
});
} finally {
this.disableRecording();
}
});
let r = [];
if (this.TRACE_INIT("Grammar Resolving", () => {
r = jy({
rules: Le(this.gastProductionsCache)
}), this.definitionErrors = this.definitionErrors.concat(r);
}), this.TRACE_INIT("Grammar Validations", () => {
if (oe(r) && this.skipValidations === !1) {
const i = zy({
rules: Le(this.gastProductionsCache),
tokenTypes: Le(this.tokensMap),
errMsgProvider: Gn,
grammarName: n
}), s = Ny({
lookaheadStrategy: this.lookaheadStrategy,
rules: Le(this.gastProductionsCache),
tokenTypes: Le(this.tokensMap),
grammarName: n
});
this.definitionErrors = this.definitionErrors.concat(i, s);
}
}), oe(this.definitionErrors) && (this.recoveryEnabled && this.TRACE_INIT("computeAllProdsFollows", () => {
const i = Cg(Le(this.gastProductionsCache));
this.resyncFollows = i;
}), this.TRACE_INIT("ComputeLookaheadFunctions", () => {
var i, s;
(s = (i = this.lookaheadStrategy).initialize) === null || s === void 0 || s.call(i, {
rules: Le(this.gastProductionsCache)
}), this.preComputeLookaheadFunctions(Le(this.gastProductionsCache));
})), !us.DEFER_DEFINITION_ERRORS_HANDLING && !oe(this.definitionErrors))
throw e = M(this.definitionErrors, (i) => i.message), new Error(`Parser Definition Errors detected:
${e.join(`
-------------------------------
`)}`);
});
}
constructor(e, n) {
this.definitionErrors = [], this.selfAnalysisDone = !1;
const r = this;
if (r.initErrorHandler(n), r.initLexerAdapter(), r.initLooksAhead(n), r.initRecognizerEngine(e, n), r.initRecoverable(n), r.initTreeBuilder(n), r.initContentAssist(), r.initGastRecorder(n), r.initPerformanceTracer(n), B(n, "ignoredIssues"))
throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
For further details.`);
this.skipValidations = B(n, "skipValidations") ? n.skipValidations : rn.skipValidations;
}
}
us.DEFER_DEFINITION_ERRORS_HANDLING = !1;
yT(us, [
Ky,
Xy,
oT,
cT,
uT,
lT,
dT,
fT,
pT,
gT
]);
class TT extends us {
constructor(e, n = rn) {
const r = Be(n);
r.outputCst = !1, super(e, r);
}
}
function zr(t, e, n) {
return `${t.name}_${e}_${n}`;
}
const En = 1, RT = 2, Lh = 4, Oh = 5, ds = 7, vT = 8, ET = 9, AT = 10, ST = 11, xh = 12;
class Ol {
constructor(e) {
this.target = e;
}
isEpsilon() {
return !1;
}
}
class xl extends Ol {
constructor(e, n) {
super(e), this.tokenType = n;
}
}
class Dh extends Ol {
constructor(e) {
super(e);
}
isEpsilon() {
return !0;
}
}
class Dl extends Ol {
constructor(e, n, r) {
super(e), this.rule = n, this.followState = r;
}
isEpsilon() {
return !0;
}
}
function CT(t) {
const e = {
decisionMap: {},
decisionStates: [],
ruleToStartState: /* @__PURE__ */ new Map(),
ruleToStopState: /* @__PURE__ */ new Map(),
states: []
};
kT(e, t);
const n = t.length;
for (let r = 0; r < n; r++) {
const i = t[r], s = Yn(e, i, i);
s !== void 0 && DT(e, i, s);
}
return e;
}
function kT(t, e) {
const n = e.length;
for (let r = 0; r < n; r++) {
const i = e[r], s = Oe(t, i, void 0, {
type: RT
}), a = Oe(t, i, void 0, {
type: ds
});
s.stop = a, t.ruleToStartState.set(i, s), t.ruleToStopState.set(i, a);
}
}
function Mh(t, e, n) {
return n instanceof ue ? Ml(t, e, n.terminalType, n) : n instanceof Xe ? xT(t, e, n) : n instanceof it ? _T(t, e, n) : n instanceof ze ? $T(t, e, n) : n instanceof Ae ? NT(t, e, n) : n instanceof rt ? wT(t, e, n) : n instanceof ft ? bT(t, e, n) : n instanceof ht ? IT(t, e, n) : Yn(t, e, n);
}
function NT(t, e, n) {
const r = Oe(t, e, n, {
type: Oh
});
Cn(t, r);
const i = oi(t, e, r, n, Yn(t, e, n));
return Gh(t, e, n, i);
}
function wT(t, e, n) {
const r = Oe(t, e, n, {
type: Oh
});
Cn(t, r);
const i = oi(t, e, r, n, Yn(t, e, n)), s = Ml(t, e, n.separator, n);
return Gh(t, e, n, i, s);
}
function bT(t, e, n) {
const r = Oe(t, e, n, {
type: Lh
});
Cn(t, r);
const i = oi(t, e, r, n, Yn(t, e, n));
return Fh(t, e, n, i);
}
function IT(t, e, n) {
const r = Oe(t, e, n, {
type: Lh
});
Cn(t, r);
const i = oi(t, e, r, n, Yn(t, e, n)), s = Ml(t, e, n.separator, n);
return Fh(t, e, n, i, s);
}
function _T(t, e, n) {
const r = Oe(t, e, n, {
type: En
});
Cn(t, r);
const i = M(n.definition, (a) => Mh(t, e, a));
return oi(t, e, r, n, ...i);
}
function $T(t, e, n) {
const r = Oe(t, e, n, {
type: En
});
Cn(t, r);
const i = oi(t, e, r, n, Yn(t, e, n));
return PT(t, e, n, i);
}
function Yn(t, e, n) {
const r = dt(M(n.definition, (i) => Mh(t, e, i)), (i) => i !== void 0);
return r.length === 1 ? r[0] : r.length === 0 ? void 0 : OT(t, r);
}
function Fh(t, e, n, r, i) {
const s = r.left, a = r.right, o = Oe(t, e, n, {
type: ST
});
Cn(t, o);
const c = Oe(t, e, n, {
type: xh
});
return s.loopback = o, c.loopback = o, t.decisionMap[zr(e, i ? "RepetitionMandatoryWithSeparator" : "RepetitionMandatory", n.idx)] = o, Ie(a, o), i === void 0 ? (Ie(o, s), Ie(o, c)) : (Ie(o, c), Ie(o, i.left), Ie(i.right, s)), {
left: s,
right: c
};
}
function Gh(t, e, n, r, i) {
const s = r.left, a = r.right, o = Oe(t, e, n, {
type: AT
});
Cn(t, o);
const c = Oe(t, e, n, {
type: xh
}), l = Oe(t, e, n, {
type: ET
});
return o.loopback = l, c.loopback = l, Ie(o, s), Ie(o, c), Ie(a, l), i !== void 0 ? (Ie(l, c), Ie(l, i.left), Ie(i.right, s)) : Ie(l, o), t.decisionMap[zr(e, i ? "RepetitionWithSeparator" : "Repetition", n.idx)] = o, {
left: o,
right: c
};
}
function PT(t, e, n, r) {
const i = r.left, s = r.right;
return Ie(i, s), t.decisionMap[zr(e, "Option", n.idx)] = i, r;
}
function Cn(t, e) {
return t.decisionStates.push(e), e.decision = t.decisionStates.length - 1, e.decision;
}
function oi(t, e, n, r, ...i) {
const s = Oe(t, e, r, {
type: vT,
start: n
});
n.end = s;
for (const o of i)
o !== void 0 ? (Ie(n, o.left), Ie(o.right, s)) : Ie(n, s);
const a = {
left: n,
right: s
};
return t.decisionMap[zr(e, LT(r), r.idx)] = n, a;
}
function LT(t) {
if (t instanceof it)
return "Alternation";
if (t instanceof ze)
return "Option";
if (t instanceof Ae)
return "Repetition";
if (t instanceof rt)
return "RepetitionWithSeparator";
if (t instanceof ft)
return "RepetitionMandatory";
if (t instanceof ht)
return "RepetitionMandatoryWithSeparator";
throw new Error("Invalid production type encountered");
}
function OT(t, e) {
const n = e.length;
for (let s = 0; s < n - 1; s++) {
const a = e[s];
let o;
a.left.transitions.length === 1 && (o = a.left.transitions[0]);
const c = o instanceof Dl, l = o, u = e[s + 1].left;
a.left.type === En && a.right.type === En && o !== void 0 && (c && l.followState === a.right || o.target === a.right) ? (c ? l.followState = u : o.target = u, MT(t, a.right)) : Ie(a.right, u);
}
const r = e[0], i = e[n - 1];
return {
left: r.left,
right: i.right
};
}
function Ml(t, e, n, r) {
const i = Oe(t, e, r, {
type: En
}), s = Oe(t, e, r, {
type: En
});
return Fl(i, new xl(s, n)), {
left: i,
right: s
};
}
function xT(t, e, n) {
const r = n.referencedRule, i = t.ruleToStartState.get(r), s = Oe(t, e, n, {
type: En
}), a = Oe(t, e, n, {
type: En
}), o = new Dl(i, r, a);
return Fl(s, o), {
left: s,
right: a
};
}
function DT(t, e, n) {
const r = t.ruleToStartState.get(e);
Ie(r, n.left);
const i = t.ruleToStopState.get(e);
return Ie(n.right, i), {
left: r,
right: i
};
}
function Ie(t, e) {
const n = new Dh(e);
Fl(t, n);
}
function Oe(t, e, n, r) {
const i = Object.assign({
atn: t,
production: n,
epsilonOnlyTransitions: !1,
rule: e,
transitions: [],
nextTokenWithinRule: [],
stateNumber: t.states.length
}, r);
return t.states.push(i), i;
}
function Fl(t, e) {
t.transitions.length === 0 && (t.epsilonOnlyTransitions = e.isEpsilon()), t.transitions.push(e);
}
function MT(t, e) {
t.states.splice(t.states.indexOf(e), 1);
}
const ga = {};
class Xo {
constructor() {
this.map = {}, this.configs = [];
}
get size() {
return this.configs.length;
}
finalize() {
this.map = {};
}
add(e) {
const n = Uh(e);
n in this.map || (this.map[n] = this.configs.length, this.configs.push(e));
}
get elements() {
return this.configs;
}
get alts() {
return M(this.configs, (e) => e.alt);
}
get key() {
let e = "";
for (const n in this.map)
e += n + ":";
return e;
}
}
function Uh(t, e = !0) {
return `${e ? `a${t.alt}` : ""}s${t.state.stateNumber}:${t.stack.map((n) => n.stateNumber.toString()).join("_")}`;
}
function FT(t, e) {
const n = {};
return (r) => {
const i = r.toString();
let s = n[i];
return s !== void 0 || (s = {
atnStartState: t,
decision: e,
states: {}
}, n[i] = s), s;
};
}
class jh {
constructor() {
this.predicates = [];
}
is(e) {
return e >= this.predicates.length || this.predicates[e];
}
set(e, n) {
this.predicates[e] = n;
}
toString() {
let e = "";
const n = this.predicates.length;
for (let r = 0; r < n; r++)
e += this.predicates[r] === !0 ? "1" : "0";
return e;
}
}
const Pu = new jh();
class GT extends Ll {
constructor(e) {
var n;
super(), this.logging = (n = e == null ? void 0 : e.logging) !== null && n !== void 0 ? n : (r) => console.log(r);
}
initialize(e) {
this.atn = CT(e.rules), this.dfas = UT(this.atn);
}
validateAmbiguousAlternationAlternatives() {
return [];
}
validateEmptyOrAlternatives() {
return [];
}
buildLookaheadForAlternation(e) {
const { prodOccurrence: n, rule: r, hasPredicates: i, dynamicTokensEnabled: s } = e, a = this.dfas, o = this.logging, c = zr(r, "Alternation", n), u = this.atn.decisionMap[c].decision, f = M(Cu({
maxLookahead: 1,
occurrence: n,
prodType: "Alternation",
rule: r
}), (m) => M(m, (g) => g[0]));
if (Lu(f, !1) && !s) {
const m = Ye(f, (g, A, N) => (j(A, ($) => {
$ && (g[$.tokenTypeIdx] = N, j($.categoryMatches, (w) => {
g[w] = N;
}));
}), g), {});
return i ? function(g) {
var A;
const N = this.LA(1), $ = m[N.tokenTypeIdx];
if (g !== void 0 && $ !== void 0) {
const w = (A = g[$]) === null || A === void 0 ? void 0 : A.GATE;
if (w !== void 0 && w.call(this) === !1)
return;
}
return $;
} : function() {
const g = this.LA(1);
return m[g.tokenTypeIdx];
};
} else return i ? function(m) {
const g = new jh(), A = m === void 0 ? 0 : m.length;
for (let $ = 0; $ < A; $++) {
const w = m == null ? void 0 : m[$].GATE;
g.set($, w === void 0 || w.call(this));
}
const N = yo.call(this, a, u, g, o);
return typeof N == "number" ? N : void 0;
} : function() {
const m = yo.call(this, a, u, Pu, o);
return typeof m == "number" ? m : void 0;
};
}
buildLookaheadForOptional(e) {
const { prodOccurrence: n, rule: r, prodType: i, dynamicTokensEnabled: s } = e, a = this.dfas, o = this.logging, c = zr(r, i, n), u = this.atn.decisionMap[c].decision, f = M(Cu({
maxLookahead: 1,
occurrence: n,
prodType: i,
rule: r
}), (m) => M(m, (g) => g[0]));
if (Lu(f) && f[0][0] && !s) {
const m = f[0], g = yt(m);
if (g.length === 1 && oe(g[0].categoryMatches)) {
const N = g[0].tokenTypeIdx;
return function() {
return this.LA(1).tokenTypeIdx === N;
};
} else {
const A = Ye(g, (N, $) => ($ !== void 0 && (N[$.tokenTypeIdx] = !0, j($.categoryMatches, (w) => {
N[w] = !0;
})), N), {});
return function() {
const N = this.LA(1);
return A[N.tokenTypeIdx] === !0;
};
}
}
return function() {
const m = yo.call(this, a, u, Pu, o);
return typeof m == "object" ? !1 : m === 0;
};
}
}
function Lu(t, e = !0) {
const n = /* @__PURE__ */ new Set();
for (const r of t) {
const i = /* @__PURE__ */ new Set();
for (const s of r) {
if (s === void 0) {
if (e)
break;
return !1;
}
const a = [s.tokenTypeIdx].concat(s.categoryMatches);
for (const o of a)
if (n.has(o)) {
if (!i.has(o))
return !1;
} else
n.add(o), i.add(o);
}
}
return !0;
}
function UT(t) {
const e = t.decisionStates.length, n = Array(e);
for (let r = 0; r < e; r++)
n[r] = FT(t.decisionStates[r], r);
return n;
}
function yo(t, e, n, r) {
const i = t[e](n);
let s = i.start;
if (s === void 0) {
const o = JT(i.atnStartState);
s = Bh(i, zh(o)), i.start = s;
}
return jT.apply(this, [i, s, n, r]);
}
function jT(t, e, n, r) {
let i = e, s = 1;
const a = [];
let o = this.LA(s++);
for (; ; ) {
let c = KT(i, o);
if (c === void 0 && (c = zT.apply(this, [t, i, o, s, n, r])), c === ga)
return VT(a, i, o);
if (c.isAcceptState === !0)
return c.prediction;
i = c, a.push(o), o = this.LA(s++);
}
}
function zT(t, e, n, r, i, s) {
const a = HT(e.configs, n, i);
if (a.size === 0)
return Ou(t, e, n, ga), ga;
let o = zh(a);
const c = XT(a, i);
if (c !== void 0)
o.isAcceptState = !0, o.prediction = c, o.configs.uniqueAlt = c;
else if (tR(a)) {
const l = Kp(a.alts);
o.isAcceptState = !0, o.prediction = l, o.configs.uniqueAlt = l, BT.apply(this, [t, r, a.alts, s]);
}
return o = Ou(t, e, n, o), o;
}
function BT(t, e, n, r) {
const i = [];
for (let l = 1; l <= e; l++)
i.push(this.LA(l).tokenType);
const s = t.atnStartState, a = s.rule, o = s.production, c = qT({
topLevelRule: a,
ambiguityIndices: n,
production: o,
prefixPath: i
});
r(c);
}
function qT(t) {
const e = M(t.prefixPath, (i) => Ar(i)).join(", "), n = t.production.idx === 0 ? "" : t.production.idx;
let r = `Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${WT(t.production)}${n}> inside <${t.topLevelRule.name}> Rule,
<${e}> may appears as a prefix path in all these alternatives.
`;
return r = r + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
For Further details.`, r;
}
function WT(t) {
if (t instanceof Xe)
return "SUBRULE";
if (t instanceof ze)
return "OPTION";
if (t instanceof it)
return "OR";
if (t instanceof ft)
return "AT_LEAST_ONE";
if (t instanceof ht)
return "AT_LEAST_ONE_SEP";
if (t instanceof rt)
return "MANY_SEP";
if (t instanceof Ae)
return "MANY";
if (t instanceof ue)
return "CONSUME";
throw Error("non exhaustive match");
}
function VT(t, e, n) {
const r = lt(e.configs.elements, (s) => s.state.transitions), i = pm(r.filter((s) => s instanceof xl).map((s) => s.tokenType), (s) => s.tokenTypeIdx);
return {
actualToken: n,
possibleTokenTypes: i,
tokenPath: t
};
}
function KT(t, e) {
return t.edges[e.tokenTypeIdx];
}
function HT(t, e, n) {
const r = new Xo(), i = [];
for (const a of t.elements) {
if (n.is(a.alt) === !1)
continue;
if (a.state.type === ds) {
i.push(a);
continue;
}
const o = a.state.transitions.length;
for (let c = 0; c < o; c++) {
const l = a.state.transitions[c], u = YT(l, e);
u !== void 0 && r.add({
state: u,
alt: a.alt,
stack: a.stack
});
}
}
let s;
if (i.length === 0 && r.size === 1 && (s = r), s === void 0) {
s = new Xo();
for (const a of r.elements)
ya(a, s);
}
if (i.length > 0 && !ZT(s))
for (const a of i)
s.add(a);
return s;
}
function YT(t, e) {
if (t instanceof xl && ph(e, t.tokenType))
return t.target;
}
function XT(t, e) {
let n;
for (const r of t.elements)
if (e.is(r.alt) === !0) {
if (n === void 0)
n = r.alt;
else if (n !== r.alt)
return;
}
return n;
}
function zh(t) {
return {
configs: t,
edges: {},
isAcceptState: !1,
prediction: -1
};
}
function Ou(t, e, n, r) {
return r = Bh(t, r), e.edges[n.tokenTypeIdx] = r, r;
}
function Bh(t, e) {
if (e === ga)
return e;
const n = e.configs.key, r = t.states[n];
return r !== void 0 ? r : (e.configs.finalize(), t.states[n] = e, e);
}
function JT(t) {
const e = new Xo(), n = t.transitions.length;
for (let r = 0; r < n; r++) {
const s = {
state: t.transitions[r].target,
alt: r,
stack: []
};
ya(s, e);
}
return e;
}
function ya(t, e) {
const n = t.state;
if (n.type === ds) {
if (t.stack.length > 0) {
const i = [...t.stack], a = {
state: i.pop(),
alt: t.alt,
stack: i
};
ya(a, e);
} else
e.add(t);
return;
}
n.epsilonOnlyTransitions || e.add(t);
const r = n.transitions.length;
for (let i = 0; i < r; i++) {
const s = n.transitions[i], a = QT(t, s);
a !== void 0 && ya(a, e);
}
}
function QT(t, e) {
if (e instanceof Dh)
return {
state: e.target,
alt: t.alt,
stack: t.stack
};
if (e instanceof Dl) {
const n = [...t.stack, e.followState];
return {
state: e.target,
alt: t.alt,
stack: n
};
}
}
function ZT(t) {
for (const e of t.elements)
if (e.state.type === ds)
return !0;
return !1;
}
function eR(t) {
for (const e of t.elements)
if (e.state.type !== ds)
return !1;
return !0;
}
function tR(t) {
if (eR(t))
return !0;
const e = nR(t.elements);
return rR(e) && !iR(e);
}
function nR(t) {
const e = /* @__PURE__ */ new Map();
for (const n of t) {
const r = Uh(n, !1);
let i = e.get(r);
i === void 0 && (i = {}, e.set(r, i)), i[n.alt] = !0;
}
return e;
}
function rR(t) {
for (const e of Array.from(t.values()))
if (Object.keys(e).length > 1)
return !0;
return !1;
}
function iR(t) {
for (const e of Array.from(t.values()))
if (Object.keys(e).length === 1)
return !0;
return !1;
}
var Jo;
(function(t) {
function e(n) {
return typeof n == "string";
}
t.is = e;
})(Jo || (Jo = {}));
var Ta;
(function(t) {
function e(n) {
return typeof n == "string";
}
t.is = e;
})(Ta || (Ta = {}));
var Qo;
(function(t) {
t.MIN_VALUE = -2147483648, t.MAX_VALUE = 2147483647;
function e(n) {
return typeof n == "number" && t.MIN_VALUE <= n && n <= t.MAX_VALUE;
}
t.is = e;
})(Qo || (Qo = {}));
var Wi;
(function(t) {
t.MIN_VALUE = 0, t.MAX_VALUE = 2147483647;
function e(n) {
return typeof n == "number" && t.MIN_VALUE <= n && n <= t.MAX_VALUE;
}
t.is = e;
})(Wi || (Wi = {}));
var ee;
(function(t) {
function e(r, i) {
return r === Number.MAX_VALUE && (r = Wi.MAX_VALUE), i === Number.MAX_VALUE && (i = Wi.MAX_VALUE), { line: r, character: i };
}
t.create = e;
function n(r) {
let i = r;
return v.objectLiteral(i) && v.uinteger(i.line) && v.uinteger(i.character);
}
t.is = n;
})(ee || (ee = {}));
var Y;
(function(t) {
function e(r, i, s, a) {
if (v.uinteger(r) && v.uinteger(i) && v.uinteger(s) && v.uinteger(a))
return { start: ee.create(r, i), end: ee.create(s, a) };
if (ee.is(r) && ee.is(i))
return { start: r, end: i };
throw new Error(`Range#create called with invalid arguments[${r}, ${i}, ${s}, ${a}]`);
}
t.create = e;
function n(r) {
let i = r;
return v.objectLiteral(i) && ee.is(i.start) && ee.is(i.end);
}
t.is = n;
})(Y || (Y = {}));
var Vi;
(function(t) {
function e(r, i) {
return { uri: r, range: i };
}
t.create = e;
function n(r) {
let i = r;
return v.objectLiteral(i) && Y.is(i.range) && (v.string(i.uri) || v.undefined(i.uri));
}
t.is = n;
})(Vi || (Vi = {}));
var Zo;
(function(t) {
function e(r, i, s, a) {
return { targetUri: r, targetRange: i, targetSelectionRange: s, originSelectionRange: a };
}
t.create = e;
function n(r) {
let i = r;
return v.objectLiteral(i) && Y.is(i.targetRange) && v.string(i.targetUri) && Y.is(i.targetSelectionRange) && (Y.is(i.originSelectionRange) || v.undefined(i.originSelectionRange));
}
t.is = n;
})(Zo || (Zo = {}));
var Ra;
(function(t) {
function e(r, i, s, a) {
return {
red: r,
green: i,
blue: s,
alpha: a
};
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && v.numberRange(i.red, 0, 1) && v.numberRange(i.green, 0, 1) && v.numberRange(i.blue, 0, 1) && v.numberRange(i.alpha, 0, 1);
}
t.is = n;
})(Ra || (Ra = {}));
var ec;
(function(t) {
function e(r, i) {
return {
range: r,
color: i
};
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && Y.is(i.range) && Ra.is(i.color);
}
t.is = n;
})(ec || (ec = {}));
var tc;
(function(t) {
function e(r, i, s) {
return {
label: r,
textEdit: i,
additionalTextEdits: s
};
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && v.string(i.label) && (v.undefined(i.textEdit) || Mt.is(i)) && (v.undefined(i.additionalTextEdits) || v.typedArray(i.additionalTextEdits, Mt.is));
}
t.is = n;
})(tc || (tc = {}));
var nc;
(function(t) {
t.Comment = "comment", t.Imports = "imports", t.Region = "region";
})(nc || (nc = {}));
var rc;
(function(t) {
function e(r, i, s, a, o, c) {
const l = {
startLine: r,
endLine: i
};
return v.defined(s) && (l.startCharacter = s), v.defined(a) && (l.endCharacter = a), v.defined(o) && (l.kind = o), v.defined(c) && (l.collapsedText = c), l;
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && v.uinteger(i.startLine) && v.uinteger(i.startLine) && (v.undefined(i.startCharacter) || v.uinteger(i.startCharacter)) && (v.undefined(i.endCharacter) || v.uinteger(i.endCharacter)) && (v.undefined(i.kind) || v.string(i.kind));
}
t.is = n;
})(rc || (rc = {}));
var va;
(function(t) {
function e(r, i) {
return {
location: r,
message: i
};
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && Vi.is(i.location) && v.string(i.message);
}
t.is = n;
})(va || (va = {}));
var ic;
(function(t) {
t.Error = 1, t.Warning = 2, t.Information = 3, t.Hint = 4;
})(ic || (ic = {}));
var sc;
(function(t) {
t.Unnecessary = 1, t.Deprecated = 2;
})(sc || (sc = {}));
var ac;
(function(t) {
function e(n) {
const r = n;
return v.objectLiteral(r) && v.string(r.href);
}
t.is = e;
})(ac || (ac = {}));
var Ki;
(function(t) {
function e(r, i, s, a, o, c) {
let l = { range: r, message: i };
return v.defined(s) && (l.severity = s), v.defined(a) && (l.code = a), v.defined(o) && (l.source = o), v.defined(c) && (l.relatedInformation = c), l;
}
t.create = e;
function n(r) {
var i;
let s = r;
return v.defined(s) && Y.is(s.range) && v.string(s.message) && (v.number(s.severity) || v.undefined(s.severity)) && (v.integer(s.code) || v.string(s.code) || v.undefined(s.code)) && (v.undefined(s.codeDescription) || v.string((i = s.codeDescription) === null || i === void 0 ? void 0 : i.href)) && (v.string(s.source) || v.undefined(s.source)) && (v.undefined(s.relatedInformation) || v.typedArray(s.relatedInformation, va.is));
}
t.is = n;
})(Ki || (Ki = {}));
var Vn;
(function(t) {
function e(r, i, ...s) {
let a = { title: r, command: i };
return v.defined(s) && s.length > 0 && (a.arguments = s), a;
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.string(i.title) && v.string(i.command);
}
t.is = n;
})(Vn || (Vn = {}));
var Mt;
(function(t) {
function e(s, a) {
return { range: s, newText: a };
}
t.replace = e;
function n(s, a) {
return { range: { start: s, end: s }, newText: a };
}
t.insert = n;
function r(s) {
return { range: s, newText: "" };
}
t.del = r;
function i(s) {
const a = s;
return v.objectLiteral(a) && v.string(a.newText) && Y.is(a.range);
}
t.is = i;
})(Mt || (Mt = {}));
var Un;
(function(t) {
function e(r, i, s) {
const a = { label: r };
return i !== void 0 && (a.needsConfirmation = i), s !== void 0 && (a.description = s), a;
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && v.string(i.label) && (v.boolean(i.needsConfirmation) || i.needsConfirmation === void 0) && (v.string(i.description) || i.description === void 0);
}
t.is = n;
})(Un || (Un = {}));
var Ue;
(function(t) {
function e(n) {
const r = n;
return v.string(r);
}
t.is = e;
})(Ue || (Ue = {}));
var Jt;
(function(t) {
function e(s, a, o) {
return { range: s, newText: a, annotationId: o };
}
t.replace = e;
function n(s, a, o) {
return { range: { start: s, end: s }, newText: a, annotationId: o };
}
t.insert = n;
function r(s, a) {
return { range: s, newText: "", annotationId: a };
}
t.del = r;
function i(s) {
const a = s;
return Mt.is(a) && (Un.is(a.annotationId) || Ue.is(a.annotationId));
}
t.is = i;
})(Jt || (Jt = {}));
var Hi;
(function(t) {
function e(r, i) {
return { textDocument: r, edits: i };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && Yi.is(i.textDocument) && Array.isArray(i.edits);
}
t.is = n;
})(Hi || (Hi = {}));
var Br;
(function(t) {
function e(r, i, s) {
let a = {
kind: "create",
uri: r
};
return i !== void 0 && (i.overwrite !== void 0 || i.ignoreIfExists !== void 0) && (a.options = i), s !== void 0 && (a.annotationId = s), a;
}
t.create = e;
function n(r) {
let i = r;
return i && i.kind === "create" && v.string(i.uri) && (i.options === void 0 || (i.options.overwrite === void 0 || v.boolean(i.options.overwrite)) && (i.options.ignoreIfExists === void 0 || v.boolean(i.options.ignoreIfExists))) && (i.annotationId === void 0 || Ue.is(i.annotationId));
}
t.is = n;
})(Br || (Br = {}));
var qr;
(function(t) {
function e(r, i, s, a) {
let o = {
kind: "rename",
oldUri: r,
newUri: i
};
return s !== void 0 && (s.overwrite !== void 0 || s.ignoreIfExists !== void 0) && (o.options = s), a !== void 0 && (o.annotationId = a), o;
}
t.create = e;
function n(r) {
let i = r;
return i && i.kind === "rename" && v.string(i.oldUri) && v.string(i.newUri) && (i.options === void 0 || (i.options.overwrite === void 0 || v.boolean(i.options.overwrite)) && (i.options.ignoreIfExists === void 0 || v.boolean(i.options.ignoreIfExists))) && (i.annotationId === void 0 || Ue.is(i.annotationId));
}
t.is = n;
})(qr || (qr = {}));
var Wr;
(function(t) {
function e(r, i, s) {
let a = {
kind: "delete",
uri: r
};
return i !== void 0 && (i.recursive !== void 0 || i.ignoreIfNotExists !== void 0) && (a.options = i), s !== void 0 && (a.annotationId = s), a;
}
t.create = e;
function n(r) {
let i = r;
return i && i.kind === "delete" && v.string(i.uri) && (i.options === void 0 || (i.options.recursive === void 0 || v.boolean(i.options.recursive)) && (i.options.ignoreIfNotExists === void 0 || v.boolean(i.options.ignoreIfNotExists))) && (i.annotationId === void 0 || Ue.is(i.annotationId));
}
t.is = n;
})(Wr || (Wr = {}));
var Ea;
(function(t) {
function e(n) {
let r = n;
return r && (r.changes !== void 0 || r.documentChanges !== void 0) && (r.documentChanges === void 0 || r.documentChanges.every((i) => v.string(i.kind) ? Br.is(i) || qr.is(i) || Wr.is(i) : Hi.is(i)));
}
t.is = e;
})(Ea || (Ea = {}));
class Ms {
constructor(e, n) {
this.edits = e, this.changeAnnotations = n;
}
insert(e, n, r) {
let i, s;
if (r === void 0 ? i = Mt.insert(e, n) : Ue.is(r) ? (s = r, i = Jt.insert(e, n, r)) : (this.assertChangeAnnotations(this.changeAnnotations), s = this.changeAnnotations.manage(r), i = Jt.insert(e, n, s)), this.edits.push(i), s !== void 0)
return s;
}
replace(e, n, r) {
let i, s;
if (r === void 0 ? i = Mt.replace(e, n) : Ue.is(r) ? (s = r, i = Jt.replace(e, n, r)) : (this.assertChangeAnnotations(this.changeAnnotations), s = this.changeAnnotations.manage(r), i = Jt.replace(e, n, s)), this.edits.push(i), s !== void 0)
return s;
}
delete(e, n) {
let r, i;
if (n === void 0 ? r = Mt.del(e) : Ue.is(n) ? (i = n, r = Jt.del(e, n)) : (this.assertChangeAnnotations(this.changeAnnotations), i = this.changeAnnotations.manage(n), r = Jt.del(e, i)), this.edits.push(r), i !== void 0)
return i;
}
add(e) {
this.edits.push(e);
}
all() {
return this.edits;
}
clear() {
this.edits.splice(0, this.edits.length);
}
assertChangeAnnotations(e) {
if (e === void 0)
throw new Error("Text edit change is not configured to manage change annotations.");
}
}
class xu {
constructor(e) {
this._annotations = e === void 0 ? /* @__PURE__ */ Object.create(null) : e, this._counter = 0, this._size = 0;
}
all() {
return this._annotations;
}
get size() {
return this._size;
}
manage(e, n) {
let r;
if (Ue.is(e) ? r = e : (r = this.nextId(), n = e), this._annotations[r] !== void 0)
throw new Error(`Id ${r} is already in use.`);
if (n === void 0)
throw new Error(`No annotation provided for id ${r}`);
return this._annotations[r] = n, this._size++, r;
}
nextId() {
return this._counter++, this._counter.toString();
}
}
class sR {
constructor(e) {
this._textEditChanges = /* @__PURE__ */ Object.create(null), e !== void 0 ? (this._workspaceEdit = e, e.documentChanges ? (this._changeAnnotations = new xu(e.changeAnnotations), e.changeAnnotations = this._changeAnnotations.all(), e.documentChanges.forEach((n) => {
if (Hi.is(n)) {
const r = new Ms(n.edits, this._changeAnnotations);
this._textEditChanges[n.textDocument.uri] = r;
}
})) : e.changes && Object.keys(e.changes).forEach((n) => {
const r = new Ms(e.changes[n]);
this._textEditChanges[n] = r;
})) : this._workspaceEdit = {};
}
/**
* Returns the underlying {@link WorkspaceEdit} literal
* use to be returned from a workspace edit operation like rename.
*/
get edit() {
return this.initDocumentChanges(), this._changeAnnotations !== void 0 && (this._changeAnnotations.size === 0 ? this._workspaceEdit.changeAnnotations = void 0 : this._workspaceEdit.changeAnnotations = this._changeAnnotations.all()), this._workspaceEdit;
}
getTextEditChange(e) {
if (Yi.is(e)) {
if (this.initDocumentChanges(), this._workspaceEdit.documentChanges === void 0)
throw new Error("Workspace edit is not configured for document changes.");
const n = { uri: e.uri, version: e.version };
let r = this._textEditChanges[n.uri];
if (!r) {
const i = [], s = {
textDocument: n,
edits: i
};
this._workspaceEdit.documentChanges.push(s), r = new Ms(i, this._changeAnnotations), this._textEditChanges[n.uri] = r;
}
return r;
} else {
if (this.initChanges(), this._workspaceEdit.changes === void 0)
throw new Error("Workspace edit is not configured for normal text edit changes.");
let n = this._textEditChanges[e];
if (!n) {
let r = [];
this._workspaceEdit.changes[e] = r, n = new Ms(r), this._textEditChanges[e] = n;
}
return n;
}
}
initDocumentChanges() {
this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0 && (this._changeAnnotations = new xu(), this._workspaceEdit.documentChanges = [], this._workspaceEdit.changeAnnotations = this._changeAnnotations.all());
}
initChanges() {
this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0 && (this._workspaceEdit.changes = /* @__PURE__ */ Object.create(null));
}
createFile(e, n, r) {
if (this.initDocumentChanges(), this._workspaceEdit.documentChanges === void 0)
throw new Error("Workspace edit is not configured for document changes.");
let i;
Un.is(n) || Ue.is(n) ? i = n : r = n;
let s, a;
if (i === void 0 ? s = Br.create(e, r) : (a = Ue.is(i) ? i : this._changeAnnotations.manage(i), s = Br.create(e, r, a)), this._workspaceEdit.documentChanges.push(s), a !== void 0)
return a;
}
renameFile(e, n, r, i) {
if (this.initDocumentChanges(), this._workspaceEdit.documentChanges === void 0)
throw new Error("Workspace edit is not configured for document changes.");
let s;
Un.is(r) || Ue.is(r) ? s = r : i = r;
let a, o;
if (s === void 0 ? a = qr.create(e, n, i) : (o = Ue.is(s) ? s : this._changeAnnotations.manage(s), a = qr.create(e, n, i, o)), this._workspaceEdit.documentChanges.push(a), o !== void 0)
return o;
}
deleteFile(e, n, r) {
if (this.initDocumentChanges(), this._workspaceEdit.documentChanges === void 0)
throw new Error("Workspace edit is not configured for document changes.");
let i;
Un.is(n) || Ue.is(n) ? i = n : r = n;
let s, a;
if (i === void 0 ? s = Wr.create(e, r) : (a = Ue.is(i) ? i : this._changeAnnotations.manage(i), s = Wr.create(e, r, a)), this._workspaceEdit.documentChanges.push(s), a !== void 0)
return a;
}
}
var oc;
(function(t) {
function e(r) {
return { uri: r };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.string(i.uri);
}
t.is = n;
})(oc || (oc = {}));
var cc;
(function(t) {
function e(r, i) {
return { uri: r, version: i };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.string(i.uri) && v.integer(i.version);
}
t.is = n;
})(cc || (cc = {}));
var Yi;
(function(t) {
function e(r, i) {
return { uri: r, version: i };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.string(i.uri) && (i.version === null || v.integer(i.version));
}
t.is = n;
})(Yi || (Yi = {}));
var lc;
(function(t) {
function e(r, i, s, a) {
return { uri: r, languageId: i, version: s, text: a };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.string(i.uri) && v.string(i.languageId) && v.integer(i.version) && v.string(i.text);
}
t.is = n;
})(lc || (lc = {}));
var Aa;
(function(t) {
t.PlainText = "plaintext", t.Markdown = "markdown";
function e(n) {
const r = n;
return r === t.PlainText || r === t.Markdown;
}
t.is = e;
})(Aa || (Aa = {}));
var Vr;
(function(t) {
function e(n) {
const r = n;
return v.objectLiteral(n) && Aa.is(r.kind) && v.string(r.value);
}
t.is = e;
})(Vr || (Vr = {}));
var uc;
(function(t) {
t.Text = 1, t.Method = 2, t.Function = 3, t.Constructor = 4, t.Field = 5, t.Variable = 6, t.Class = 7, t.Interface = 8, t.Module = 9, t.Property = 10, t.Unit = 11, t.Value = 12, t.Enum = 13, t.Keyword = 14, t.Snippet = 15, t.Color = 16, t.File = 17, t.Reference = 18, t.Folder = 19, t.EnumMember = 20, t.Constant = 21, t.Struct = 22, t.Event = 23, t.Operator = 24, t.TypeParameter = 25;
})(uc || (uc = {}));
var dc;
(function(t) {
t.PlainText = 1, t.Snippet = 2;
})(dc || (dc = {}));
var fc;
(function(t) {
t.Deprecated = 1;
})(fc || (fc = {}));
var hc;
(function(t) {
function e(r, i, s) {
return { newText: r, insert: i, replace: s };
}
t.create = e;
function n(r) {
const i = r;
return i && v.string(i.newText) && Y.is(i.insert) && Y.is(i.replace);
}
t.is = n;
})(hc || (hc = {}));
var pc;
(function(t) {
t.asIs = 1, t.adjustIndentation = 2;
})(pc || (pc = {}));
var mc;
(function(t) {
function e(n) {
const r = n;
return r && (v.string(r.detail) || r.detail === void 0) && (v.string(r.description) || r.description === void 0);
}
t.is = e;
})(mc || (mc = {}));
var gc;
(function(t) {
function e(n) {
return { label: n };
}
t.create = e;
})(gc || (gc = {}));
var yc;
(function(t) {
function e(n, r) {
return { items: n || [], isIncomplete: !!r };
}
t.create = e;
})(yc || (yc = {}));
var Xi;
(function(t) {
function e(r) {
return r.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&");
}
t.fromPlainText = e;
function n(r) {
const i = r;
return v.string(i) || v.objectLiteral(i) && v.string(i.language) && v.string(i.value);
}
t.is = n;
})(Xi || (Xi = {}));
var Tc;
(function(t) {
function e(n) {
let r = n;
return !!r && v.objectLiteral(r) && (Vr.is(r.contents) || Xi.is(r.contents) || v.typedArray(r.contents, Xi.is)) && (n.range === void 0 || Y.is(n.range));
}
t.is = e;
})(Tc || (Tc = {}));
var Rc;
(function(t) {
function e(n, r) {
return r ? { label: n, documentation: r } : { label: n };
}
t.create = e;
})(Rc || (Rc = {}));
var vc;
(function(t) {
function e(n, r, ...i) {
let s = { label: n };
return v.defined(r) && (s.documentation = r), v.defined(i) ? s.parameters = i : s.parameters = [], s;
}
t.create = e;
})(vc || (vc = {}));
var Ec;
(function(t) {
t.Text = 1, t.Read = 2, t.Write = 3;
})(Ec || (Ec = {}));
var Ac;
(function(t) {
function e(n, r) {
let i = { range: n };
return v.number(r) && (i.kind = r), i;
}
t.create = e;
})(Ac || (Ac = {}));
var Sc;
(function(t) {
t.File = 1, t.Module = 2, t.Namespace = 3, t.Package = 4, t.Class = 5, t.Method = 6, t.Property = 7, t.Field = 8, t.Constructor = 9, t.Enum = 10, t.Interface = 11, t.Function = 12, t.Variable = 13, t.Constant = 14, t.String = 15, t.Number = 16, t.Boolean = 17, t.Array = 18, t.Object = 19, t.Key = 20, t.Null = 21, t.EnumMember = 22, t.Struct = 23, t.Event = 24, t.Operator = 25, t.TypeParameter = 26;
})(Sc || (Sc = {}));
var Cc;
(function(t) {
t.Deprecated = 1;
})(Cc || (Cc = {}));
var kc;
(function(t) {
function e(n, r, i, s, a) {
let o = {
name: n,
kind: r,
location: { uri: s, range: i }
};
return a && (o.containerName = a), o;
}
t.create = e;
})(kc || (kc = {}));
var Nc;
(function(t) {
function e(n, r, i, s) {
return s !== void 0 ? { name: n, kind: r, location: { uri: i, range: s } } : { name: n, kind: r, location: { uri: i } };
}
t.create = e;
})(Nc || (Nc = {}));
var wc;
(function(t) {
function e(r, i, s, a, o, c) {
let l = {
name: r,
detail: i,
kind: s,
range: a,
selectionRange: o
};
return c !== void 0 && (l.children = c), l;
}
t.create = e;
function n(r) {
let i = r;
return i && v.string(i.name) && v.number(i.kind) && Y.is(i.range) && Y.is(i.selectionRange) && (i.detail === void 0 || v.string(i.detail)) && (i.deprecated === void 0 || v.boolean(i.deprecated)) && (i.children === void 0 || Array.isArray(i.children)) && (i.tags === void 0 || Array.isArray(i.tags));
}
t.is = n;
})(wc || (wc = {}));
var bc;
(function(t) {
t.Empty = "", t.QuickFix = "quickfix", t.Refactor = "refactor", t.RefactorExtract = "refactor.extract", t.RefactorInline = "refactor.inline", t.RefactorRewrite = "refactor.rewrite", t.Source = "source", t.SourceOrganizeImports = "source.organizeImports", t.SourceFixAll = "source.fixAll";
})(bc || (bc = {}));
var Ji;
(function(t) {
t.Invoked = 1, t.Automatic = 2;
})(Ji || (Ji = {}));
var Ic;
(function(t) {
function e(r, i, s) {
let a = { diagnostics: r };
return i != null && (a.only = i), s != null && (a.triggerKind = s), a;
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.typedArray(i.diagnostics, Ki.is) && (i.only === void 0 || v.typedArray(i.only, v.string)) && (i.triggerKind === void 0 || i.triggerKind === Ji.Invoked || i.triggerKind === Ji.Automatic);
}
t.is = n;
})(Ic || (Ic = {}));
var _c;
(function(t) {
function e(r, i, s) {
let a = { title: r }, o = !0;
return typeof i == "string" ? (o = !1, a.kind = i) : Vn.is(i) ? a.command = i : a.edit = i, o && s !== void 0 && (a.kind = s), a;
}
t.create = e;
function n(r) {
let i = r;
return i && v.string(i.title) && (i.diagnostics === void 0 || v.typedArray(i.diagnostics, Ki.is)) && (i.kind === void 0 || v.string(i.kind)) && (i.edit !== void 0 || i.command !== void 0) && (i.command === void 0 || Vn.is(i.command)) && (i.isPreferred === void 0 || v.boolean(i.isPreferred)) && (i.edit === void 0 || Ea.is(i.edit));
}
t.is = n;
})(_c || (_c = {}));
var $c;
(function(t) {
function e(r, i) {
let s = { range: r };
return v.defined(i) && (s.data = i), s;
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && Y.is(i.range) && (v.undefined(i.command) || Vn.is(i.command));
}
t.is = n;
})($c || ($c = {}));
var Pc;
(function(t) {
function e(r, i) {
return { tabSize: r, insertSpaces: i };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && v.uinteger(i.tabSize) && v.boolean(i.insertSpaces);
}
t.is = n;
})(Pc || (Pc = {}));
var Lc;
(function(t) {
function e(r, i, s) {
return { range: r, target: i, data: s };
}
t.create = e;
function n(r) {
let i = r;
return v.defined(i) && Y.is(i.range) && (v.undefined(i.target) || v.string(i.target));
}
t.is = n;
})(Lc || (Lc = {}));
var Oc;
(function(t) {
function e(r, i) {
return { range: r, parent: i };
}
t.create = e;
function n(r) {
let i = r;
return v.objectLiteral(i) && Y.is(i.range) && (i.parent === void 0 || t.is(i.parent));
}
t.is = n;
})(Oc || (Oc = {}));
var xc;
(function(t) {
t.namespace = "namespace", t.type = "type", t.class = "class", t.enum = "enum", t.interface = "interface", t.struct = "struct", t.typeParameter = "typeParameter", t.parameter = "parameter", t.variable = "variable", t.property = "property", t.enumMember = "enumMember", t.event = "event", t.function = "function", t.method = "method", t.macro = "macro", t.keyword = "keyword", t.modifier = "modifier", t.comment = "comment", t.string = "string", t.number = "number", t.regexp = "regexp", t.operator = "operator", t.decorator = "decorator";
})(xc || (xc = {}));
var Dc;
(function(t) {
t.declaration = "declaration", t.definition = "definition", t.readonly = "readonly", t.static = "static", t.deprecated = "deprecated", t.abstract = "abstract", t.async = "async", t.modification = "modification", t.documentation = "documentation", t.defaultLibrary = "defaultLibrary";
})(Dc || (Dc = {}));
var Mc;
(function(t) {
function e(n) {
const r = n;
return v.objectLiteral(r) && (r.resultId === void 0 || typeof r.resultId == "string") && Array.isArray(r.data) && (r.data.length === 0 || typeof r.data[0] == "number");
}
t.is = e;
})(Mc || (Mc = {}));
var Fc;
(function(t) {
function e(r, i) {
return { range: r, text: i };
}
t.create = e;
function n(r) {
const i = r;
return i != null && Y.is(i.range) && v.string(i.text);
}
t.is = n;
})(Fc || (Fc = {}));
var Gc;
(function(t) {
function e(r, i, s) {
return { range: r, variableName: i, caseSensitiveLookup: s };
}
t.create = e;
function n(r) {
const i = r;
return i != null && Y.is(i.range) && v.boolean(i.caseSensitiveLookup) && (v.string(i.variableName) || i.variableName === void 0);
}
t.is = n;
})(Gc || (Gc = {}));
var Uc;
(function(t) {
function e(r, i) {
return { range: r, expression: i };
}
t.create = e;
function n(r) {
const i = r;
return i != null && Y.is(i.range) && (v.string(i.expression) || i.expression === void 0);
}
t.is = n;
})(Uc || (Uc = {}));
var jc;
(function(t) {
function e(r, i) {
return { frameId: r, stoppedLocation: i };
}
t.create = e;
function n(r) {
const i = r;
return v.defined(i) && Y.is(r.stoppedLocation);
}
t.is = n;
})(jc || (jc = {}));
var Sa;
(function(t) {
t.Type = 1, t.Parameter = 2;
function e(n) {
return n === 1 || n === 2;
}
t.is = e;
})(Sa || (Sa = {}));
var Ca;
(function(t) {
function e(r) {
return { value: r };
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && (i.tooltip === void 0 || v.string(i.tooltip) || Vr.is(i.tooltip)) && (i.location === void 0 || Vi.is(i.location)) && (i.command === void 0 || Vn.is(i.command));
}
t.is = n;
})(Ca || (Ca = {}));
var zc;
(function(t) {
function e(r, i, s) {
const a = { position: r, label: i };
return s !== void 0 && (a.kind = s), a;
}
t.create = e;
function n(r) {
const i = r;
return v.objectLiteral(i) && ee.is(i.position) && (v.string(i.label) || v.typedArray(i.label, Ca.is)) && (i.kind === void 0 || Sa.is(i.kind)) && i.textEdits === void 0 || v.typedArray(i.textEdits, Mt.is) && (i.tooltip === void 0 || v.string(i.tooltip) || Vr.is(i.tooltip)) && (i.paddingLeft === void 0 || v.boolean(i.paddingLeft)) && (i.paddingRight === void 0 || v.boolean(i.paddingRight));
}
t.is = n;
})(zc || (zc = {}));
var Bc;
(function(t) {
function e(n) {
return { kind: "snippet", value: n };
}
t.createSnippet = e;
})(Bc || (Bc = {}));
var qc;
(function(t) {
function e(n, r, i, s) {
return { insertText: n, filterText: r, range: i, command: s };
}
t.create = e;
})(qc || (qc = {}));
var Wc;
(function(t) {
function e(n) {
return { items: n };
}
t.create = e;
})(Wc || (Wc = {}));
var Vc;
(function(t) {
t.Invoked = 0, t.Automatic = 1;
})(Vc || (Vc = {}));
var Kc;
(function(t) {
function e(n, r) {
return { range: n, text: r };
}
t.create = e;
})(Kc || (Kc = {}));
var Hc;
(function(t) {
function e(n, r) {
return { triggerKind: n, selectedCompletionInfo: r };
}
t.create = e;
})(Hc || (Hc = {}));
var Yc;
(function(t) {
function e(n) {
const r = n;
return v.objectLiteral(r) && Ta.is(r.uri) && v.string(r.name);
}
t.is = e;
})(Yc || (Yc = {}));
const aR = [`
`, `\r
`, "\r"];
var Xc;
(function(t) {
function e(s, a, o, c) {
return new oR(s, a, o, c);
}
t.create = e;
function n(s) {
let a = s;
return !!(v.defined(a) && v.string(a.uri) && (v.undefined(a.languageId) || v.string(a.languageId)) && v.uinteger(a.lineCount) && v.func(a.getText) && v.func(a.positionAt) && v.func(a.offsetAt));
}
t.is = n;
function r(s, a) {
let o = s.getText(), c = i(a, (u, f) => {
let m = u.range.start.line - f.range.start.line;
return m === 0 ? u.range.start.character - f.range.start.character : m;
}), l = o.length;
for (let u = c.length - 1; u >= 0; u--) {
let f = c[u], m = s.offsetAt(f.range.start), g = s.offsetAt(f.range.end);
if (g <= l)
o = o.substring(0, m) + f.newText + o.substring(g, o.length);
else
throw new Error("Overlapping edit");
l = m;
}
return o;
}
t.applyEdits = r;
function i(s, a) {
if (s.length <= 1)
return s;
const o = s.length / 2 | 0, c = s.slice(0, o), l = s.slice(o);
i(c, a), i(l, a);
let u = 0, f = 0, m = 0;
for (; u < c.length && f < l.length; )
a(c[u], l[f]) <= 0 ? s[m++] = c[u++] : s[m++] = l[f++];
for (; u < c.length; )
s[m++] = c[u++];
for (; f < l.length; )
s[m++] = l[f++];
return s;
}
})(Xc || (Xc = {}));
let oR = class {
constructor(e, n, r, i) {
this._uri = e, this._languageId = n, this._version = r, this._content = i, this._lineOffsets = void 0;
}
get uri() {
return this._uri;
}
get languageId() {
return this._languageId;
}
get version() {
return this._version;
}
getText(e) {
if (e) {
let n = this.offsetAt(e.start), r = this.offsetAt(e.end);
return this._content.substring(n, r);
}
return this._content;
}
update(e, n) {
this._content = e.text, this._version = n, this._lineOffsets = void 0;
}
getLineOffsets() {
if (this._lineOffsets === void 0) {
let e = [], n = this._content, r = !0;
for (let i = 0; i < n.length; i++) {
r && (e.push(i), r = !1);
let s = n.charAt(i);
r = s === "\r" || s === `
`, s === "\r" && i + 1 < n.length && n.charAt(i + 1) === `
` && i++;
}
r && n.length > 0 && e.push(n.length), this._lineOffsets = e;
}
return this._lineOffsets;
}
positionAt(e) {
e = Math.max(Math.min(e, this._content.length), 0);
let n = this.getLineOffsets(), r = 0, i = n.length;
if (i === 0)
return ee.create(0, e);
for (; r < i; ) {
let a = Math.floor((r + i) / 2);
n[a] > e ? i = a : r = a + 1;
}
let s = r - 1;
return ee.create(s, e - n[s]);
}
offsetAt(e) {
let n = this.getLineOffsets();
if (e.line >= n.length)
return this._content.length;
if (e.line < 0)
return 0;
let r = n[e.line], i = e.line + 1 < n.length ? n[e.line + 1] : this._content.length;
return Math.max(Math.min(r + e.character, i), r);
}
get lineCount() {
return this.getLineOffsets().length;
}
};
var v;
(function(t) {
const e = Object.prototype.toString;
function n(g) {
return typeof g < "u";
}
t.defined = n;
function r(g) {
return typeof g > "u";
}
t.undefined = r;
function i(g) {
return g === !0 || g === !1;
}
t.boolean = i;
function s(g) {
return e.call(g) === "[object String]";
}
t.string = s;
function a(g) {
return e.call(g) === "[object Number]";
}
t.number = a;
function o(g, A, N) {
return e.call(g) === "[object Number]" && A <= g && g <= N;
}
t.numberRange = o;
function c(g) {
return e.call(g) === "[object Number]" && -2147483648 <= g && g <= 2147483647;
}
t.integer = c;
function l(g) {
return e.call(g) === "[object Number]" && 0 <= g && g <= 2147483647;
}
t.uinteger = l;
function u(g) {
return e.call(g) === "[object Function]";
}
t.func = u;
function f(g) {
return g !== null && typeof g == "object";
}
t.objectLiteral = f;
function m(g, A) {
return Array.isArray(g) && g.every(A);
}
t.typedArray = m;
})(v || (v = {}));
const cR = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
get AnnotatedTextEdit() {
return Jt;
},
get ChangeAnnotation() {
return Un;
},
get ChangeAnnotationIdentifier() {
return Ue;
},
get CodeAction() {
return _c;
},
get CodeActionContext() {
return Ic;
},
get CodeActionKind() {
return bc;
},
get CodeActionTriggerKind() {
return Ji;
},
get CodeDescription() {
return ac;
},
get CodeLens() {
return $c;
},
get Color() {
return Ra;
},
get ColorInformation() {
return ec;
},
get ColorPresentation() {
return tc;
},
get Command() {
return Vn;
},
get CompletionItem() {
return gc;
},
get CompletionItemKind() {
return uc;
},
get CompletionItemLabelDetails() {
return mc;
},
get CompletionItemTag() {
return fc;
},
get CompletionList() {
return yc;
},
get CreateFile() {
return Br;
},
get DeleteFile() {
return Wr;
},
get Diagnostic() {
return Ki;
},
get DiagnosticRelatedInformation() {
return va;
},
get DiagnosticSeverity() {
return ic;
},
get DiagnosticTag() {
return sc;
},
get DocumentHighlight() {
return Ac;
},
get DocumentHighlightKind() {
return Ec;
},
get DocumentLink() {
return Lc;
},
get DocumentSymbol() {
return wc;
},
get DocumentUri() {
return Jo;
},
EOL: aR,
get FoldingRange() {
return rc;
},
get FoldingRangeKind() {
return nc;
},
get FormattingOptions() {
return Pc;
},
get Hover() {
return Tc;
},
get InlayHint() {
return zc;
},
get InlayHintKind() {
return Sa;
},
get InlayHintLabelPart() {
return Ca;
},
get InlineCompletionContext() {
return Hc;
},
get InlineCompletionItem() {
return qc;
},
get InlineCompletionList() {
return Wc;
},
get InlineCompletionTriggerKind() {
return Vc;
},
get InlineValueContext() {
return jc;
},
get InlineValueEvaluatableExpression() {
return Uc;
},
get InlineValueText() {
return Fc;
},
get InlineValueVariableLookup() {
return Gc;
},
get InsertReplaceEdit() {
return hc;
},
get InsertTextFormat() {
return dc;
},
get InsertTextMode() {
return pc;
},
get Location() {
return Vi;
},
get LocationLink() {
return Zo;
},
get MarkedString() {
return Xi;
},
get MarkupContent() {
return Vr;
},
get MarkupKind() {
return Aa;
},
get OptionalVersionedTextDocumentIdentifier() {
return Yi;
},
get ParameterInformation() {
return Rc;
},
get Position() {
return ee;
},
get Range() {
return Y;
},
get RenameFile() {
return qr;
},
get SelectedCompletionInfo() {
return Kc;
},
get SelectionRange() {
return Oc;
},
get SemanticTokenModifiers() {
return Dc;
},
get SemanticTokenTypes() {
return xc;
},
get SemanticTokens() {
return Mc;
},
get SignatureInformation() {
return vc;
},
get StringValue() {
return Bc;
},
get SymbolInformation() {
return kc;
},
get SymbolKind() {
return Sc;
},
get SymbolTag() {
return Cc;
},
get TextDocument() {
return Xc;
},
get TextDocumentEdit() {
return Hi;
},
get TextDocumentIdentifier() {
return oc;
},
get TextDocumentItem() {
return lc;
},
get TextEdit() {
return Mt;
},
get URI() {
return Ta;
},
get VersionedTextDocumentIdentifier() {
return cc;
},
WorkspaceChange: sR,
get WorkspaceEdit() {
return Ea;
},
get WorkspaceFolder() {
return Yc;
},
get WorkspaceSymbol() {
return Nc;
},
get integer() {
return Qo;
},
get uinteger() {
return Wi;
}
}, Symbol.toStringTag, { value: "Module" }));
class lR {
constructor() {
this.nodeStack = [];
}
get current() {
return this.nodeStack[this.nodeStack.length - 1] ?? this.rootNode;
}
buildRootNode(e) {
return this.rootNode = new Wh(e), this.rootNode.root = this.rootNode, this.nodeStack = [this.rootNode], this.rootNode;
}
buildCompositeNode(e) {
const n = new Gl();
return n.grammarSource = e, n.root = this.rootNode, this.current.content.push(n), this.nodeStack.push(n), n;
}
buildLeafNode(e, n) {
const r = new Jc(e.startOffset, e.image.length, Go(e), e.tokenType, !n);
return r.grammarSource = n, r.root = this.rootNode, this.current.content.push(r), r;
}
removeNode(e) {
const n = e.container;
if (n) {
const r = n.content.indexOf(e);
r >= 0 && n.content.splice(r, 1);
}
}
addHiddenNodes(e) {
const n = [];
for (const s of e) {
const a = new Jc(s.startOffset, s.image.length, Go(s), s.tokenType, !0);
a.root = this.rootNode, n.push(a);
}
let r = this.current, i = !1;
if (r.content.length > 0) {
r.content.push(...n);
return;
}
for (; r.container; ) {
const s = r.container.content.indexOf(r);
if (s > 0) {
r.container.content.splice(s, 0, ...n), i = !0;
break;
}
r = r.container;
}
i || this.rootNode.content.unshift(...n);
}
construct(e) {
const n = this.current;
typeof e.$type == "string" && !e.$infixName && (this.current.astNode = e), e.$cstNode = n;
const r = this.nodeStack.pop();
(r == null ? void 0 : r.content.length) === 0 && this.removeNode(r);
}
}
class qh {
get hidden() {
return !1;
}
get astNode() {
var n, r;
const e = typeof ((n = this._astNode) == null ? void 0 : n.$type) == "string" ? this._astNode : (r = this.container) == null ? void 0 : r.astNode;
if (!e)
throw new Error("This node has no associated AST element");
return e;
}
set astNode(e) {
this._astNode = e;
}
get text() {
return this.root.fullText.substring(this.offset, this.end);
}
}
class Jc extends qh {
get offset() {
return this._offset;
}
get length() {
return this._length;
}
get end() {
return this._offset + this._length;
}
get hidden() {
return this._hidden;
}
get tokenType() {
return this._tokenType;
}
get range() {
return this._range;
}
constructor(e, n, r, i, s = !1) {
super(), this._hidden = s, this._offset = e, this._tokenType = i, this._length = n, this._range = r;
}
}
class Gl extends qh {
constructor() {
super(...arguments), this.content = new Ul(this);
}
get offset() {
var e;
return ((e = this.firstNonHiddenNode) == null ? void 0 : e.offset) ?? 0;
}
get length() {
return this.end - this.offset;
}
get end() {
var e;
return ((e = this.lastNonHiddenNode) == null ? void 0 : e.end) ?? 0;
}
get range() {
const e = this.firstNonHiddenNode, n = this.lastNonHiddenNode;
if (e && n) {
if (this._rangeCache === void 0) {
const { range: r } = e, { range: i } = n;
this._rangeCache = { start: r.start, end: i.end.line < r.start.line ? r.start : i.end };
}
return this._rangeCache;
} else
return { start: ee.create(0, 0), end: ee.create(0, 0) };
}
get firstNonHiddenNode() {
for (const e of this.content)
if (!e.hidden)
return e;
return this.content[0];
}
get lastNonHiddenNode() {
for (let e = this.content.length - 1; e >= 0; e--) {
const n = this.content[e];
if (!n.hidden)
return n;
}
return this.content[this.content.length - 1];
}
}
class Ul extends Array {
constructor(e) {
super(), this.parent = e, Object.setPrototypeOf(this, Ul.prototype);
}
push(...e) {
return this.addParents(e), super.push(...e);
}
unshift(...e) {
return this.addParents(e), super.unshift(...e);
}
splice(e, n, ...r) {
return this.addParents(r), super.splice(e, n, ...r);
}
addParents(e) {
for (const n of e)
n.container = this.parent;
}
}
class Wh extends Gl {
get text() {
return this._text.substring(this.offset, this.end);
}
get fullText() {
return this._text;
}
constructor(e) {
super(), this._text = "", this._text = e ?? "";
}
}
const Qc = Symbol("Datatype");
function To(t) {
return t.$type === Qc;
}
const Du = "", Vh = (t) => t.endsWith(Du) ? t : t + Du;
class Kh {
constructor(e) {
var i;
this._unorderedGroups = /* @__PURE__ */ new Map(), this.allRules = /* @__PURE__ */ new Map(), this.lexer = e.parser.Lexer;
const n = this.lexer.definition, r = e.LanguageMetaData.mode === "production";
(i = e.shared.profilers.LangiumProfiler) != null && i.isActive("parsing") ? this.wrapper = new pR(n, {
...e.parser.ParserConfig,
skipValidations: r,
errorMessageProvider: e.parser.ParserErrorMessageProvider
}, e.shared.profilers.LangiumProfiler.createTask("parsing", e.LanguageMetaData.languageId)) : this.wrapper = new Yh(n, {
...e.parser.ParserConfig,
skipValidations: r,
errorMessageProvider: e.parser.ParserErrorMessageProvider
});
}
alternatives(e, n) {
this.wrapper.wrapOr(e, n);
}
optional(e, n) {
this.wrapper.wrapOption(e, n);
}
many(e, n) {
this.wrapper.wrapMany(e, n);
}
atLeastOne(e, n) {
this.wrapper.wrapAtLeastOne(e, n);
}
getRule(e) {
return this.allRules.get(e);
}
isRecording() {
return this.wrapper.IS_RECORDING;
}
get unorderedGroups() {
return this._unorderedGroups;
}
getRuleStack() {
return this.wrapper.RULE_STACK;
}
finalize() {
this.wrapper.wrapSelfAnalysis();
}
}
class uR extends Kh {
get current() {
return this.stack[this.stack.length - 1];
}
constructor(e) {
super(e), this.nodeBuilder = new lR(), this.stack = [], this.assignmentMap = /* @__PURE__ */ new Map(), this.operatorPrecedence = /* @__PURE__ */ new Map(), this.linker = e.references.Linker, this.converter = e.parser.ValueConverter, this.astReflection = e.shared.AstReflection;
}
rule(e, n) {
const r = this.computeRuleType(e);
let i;
sa(e) && (i = e.name, this.registerPrecedenceMap(e));
const s = this.wrapper.DEFINE_RULE(Vh(e.name), this.startImplementation(r, i, n).bind(this));
return this.allRules.set(e.name, s), an(e) && e.entry && (this.mainRule = s), s;
}
registerPrecedenceMap(e) {
const n = e.name, r = /* @__PURE__ */ new Map();
for (let i = 0; i < e.operators.precedences.length; i++) {
const s = e.operators.precedences[i];
for (const a of s.operators)
r.set(a.value, {
precedence: i,
rightAssoc: s.associativity === "right"
});
}
this.operatorPrecedence.set(n, r);
}
computeRuleType(e) {
return sa(e) ? qi(e) : e.fragment ? void 0 : Qf(e) ? Qc : qi(e);
}
parse(e, n = {}) {
this.nodeBuilder.buildRootNode(e);
const r = this.lexerResult = this.lexer.tokenize(e);
this.wrapper.input = r.tokens;
const i = n.rule ? this.allRules.get(n.rule) : this.mainRule;
if (!i)
throw new Error(n.rule ? `No rule found with name '${n.rule}'` : "No main rule available.");
const s = this.doParse(i);
return this.nodeBuilder.addHiddenNodes(r.hidden), this.unorderedGroups.clear(), this.lexerResult = void 0, $o(s, { deep: !0 }), {
value: s,
lexerErrors: r.errors,
lexerReport: r.report,
parserErrors: this.wrapper.errors
};
}
doParse(e) {
let n = this.wrapper.rule(e);
if (this.stack.length > 0 && (n = this.construct()), n === void 0)
throw new Error("No result from parser");
if (this.stack.length > 0)
throw new Error("Parser stack is not empty after parsing");
return n;
}
startImplementation(e, n, r) {
return (i) => {
const s = !this.isRecording() && e !== void 0;
if (s) {
const a = { $type: e };
this.stack.push(a), e === Qc ? a.value = "" : n !== void 0 && (a.$infixName = n);
}
return r(i), s ? this.construct() : void 0;
};
}
extractHiddenTokens(e) {
const n = this.lexerResult.hidden;
if (!n.length)
return [];
const r = e.startOffset;
for (let i = 0; i < n.length; i++)
if (n[i].startOffset > r)
return n.splice(0, i);
return n.splice(0, n.length);
}
consume(e, n, r) {
const i = this.wrapper.wrapConsume(e, n);
if (!this.isRecording() && this.isValidToken(i)) {
const s = this.extractHiddenTokens(i);
this.nodeBuilder.addHiddenNodes(s);
const a = this.nodeBuilder.buildLeafNode(i, r), { assignment: o, crossRef: c } = this.getAssignment(r), l = this.current;
if (o) {
const u = Bn(r) ? i.image : this.converter.convert(i.image, a);
this.assign(o.operator, o.feature, u, a, c);
} else if (To(l)) {
let u = i.image;
Bn(r) || (u = this.converter.convert(u, a).toString()), l.value += u;
}
}
}
/**
* Most consumed parser tokens are valid. However there are two cases in which they are not valid:
*
* 1. They were inserted during error recovery by the parser. These tokens don't really exist and should not be further processed
* 2. They contain invalid token ranges. This might include the special EOF token, or other tokens produced by invalid token builders.
*/
isValidToken(e) {
return !e.isInsertedInRecovery && !isNaN(e.startOffset) && typeof e.endOffset == "number" && !isNaN(e.endOffset);
}
subrule(e, n, r, i, s) {
let a;
!this.isRecording() && !r && (a = this.nodeBuilder.buildCompositeNode(i));
let o;
try {
o = this.wrapper.wrapSubrule(e, n, s);
} finally {
this.isRecording() || (o === void 0 && !r && (o = this.construct()), o !== void 0 && a && a.length > 0 && this.performSubruleAssignment(o, i, a));
}
}
performSubruleAssignment(e, n, r) {
const { assignment: i, crossRef: s } = this.getAssignment(n);
if (i)
this.assign(i.operator, i.feature, e, r, s);
else if (!i) {
const a = this.current;
if (To(a))
a.value += e.toString();
else if (typeof e == "object" && e) {
const c = this.assignWithoutOverride(e, a);
this.stack.pop(), this.stack.push(c);
}
}
}
action(e, n) {
if (!this.isRecording()) {
let r = this.current;
if (n.feature && n.operator) {
r = this.construct(), this.nodeBuilder.removeNode(r.$cstNode), this.nodeBuilder.buildCompositeNode(n).content.push(r.$cstNode);
const s = { $type: e };
this.stack.push(s), this.assign(n.operator, n.feature, r, r.$cstNode);
} else
r.$type = e;
}
}
construct() {
if (this.isRecording())
return;
const e = this.stack.pop();
return this.nodeBuilder.construct(e), "$infixName" in e ? this.constructInfix(e, this.operatorPrecedence.get(e.$infixName)) : To(e) ? this.converter.convert(e.value, e.$cstNode) : (ym(this.astReflection, e), e);
}
constructInfix(e, n) {
const r = e.parts;
if (!Array.isArray(r) || r.length === 0)
return;
const i = e.operators;
if (!Array.isArray(i) || r.length < 2)
return r[0];
let s = 0, a = -1;
for (let N = 0; N < i.length; N++) {
const $ = i[N], w = n.get($) ?? {
precedence: 1 / 0,
rightAssoc: !1
};
w.precedence > a ? (a = w.precedence, s = N) : w.precedence === a && (w.rightAssoc || (s = N));
}
const o = i.slice(0, s), c = i.slice(s + 1), l = r.slice(0, s + 1), u = r.slice(s + 1), f = {
$infixName: e.$infixName,
$type: e.$type,
$cstNode: e.$cstNode,
parts: l,
operators: o
}, m = {
$infixName: e.$infixName,
$type: e.$type,
$cstNode: e.$cstNode,
parts: u,
operators: c
}, g = this.constructInfix(f, n), A = this.constructInfix(m, n);
return {
$type: e.$type,
$cstNode: e.$cstNode,
left: g,
operator: i[s],
right: A
};
}
getAssignment(e) {
if (!this.assignmentMap.has(e)) {
const n = xa(e, zn);
this.assignmentMap.set(e, {
assignment: n,
crossRef: n && Ma(n.terminal) ? n.terminal.isMulti ? "multi" : "single" : void 0
});
}
return this.assignmentMap.get(e);
}
assign(e, n, r, i, s) {
const a = this.current;
let o;
switch (s === "single" && typeof r == "string" ? o = this.linker.buildReference(a, n, i, r) : s === "multi" && typeof r == "string" ? o = this.linker.buildMultiReference(a, n, i, r) : o = r, e) {
case "=": {
a[n] = o;
break;
}
case "?=": {
a[n] = !0;
break;
}
case "+=":
Array.isArray(a[n]) || (a[n] = []), a[n].push(o);
}
}
assignWithoutOverride(e, n) {
for (const [i, s] of Object.entries(n)) {
const a = e[i];
a === void 0 ? e[i] = s : Array.isArray(a) && Array.isArray(s) && (s.push(...a), e[i] = s);
}
const r = e.$cstNode;
return r && (r.astNode = void 0, e.$cstNode = void 0), e;
}
get definitionErrors() {
return this.wrapper.definitionErrors;
}
}
class dR {
buildMismatchTokenMessage(e) {
return vr.buildMismatchTokenMessage(e);
}
buildNotAllInputParsedMessage(e) {
return vr.buildNotAllInputParsedMessage(e);
}
buildNoViableAltMessage(e) {
return vr.buildNoViableAltMessage(e);
}
buildEarlyExitMessage(e) {
return vr.buildEarlyExitMessage(e);
}
}
class Hh extends dR {
buildMismatchTokenMessage({ expected: e, actual: n }) {
return `Expecting ${e.LABEL ? "`" + e.LABEL + "`" : e.name.endsWith(":KW") ? `keyword '${e.name.substring(0, e.name.length - 3)}'` : `token of type '${e.name}'`} but found \`${n.image}\`.`;
}
buildNotAllInputParsedMessage({ firstRedundant: e }) {
return `Expecting end of file but found \`${e.image}\`.`;
}
}
class fR extends Kh {
constructor() {
super(...arguments), this.tokens = [], this.elementStack = [], this.lastElementStack = [], this.nextTokenIndex = 0, this.stackSize = 0;
}
action() {
}
construct() {
}
parse(e) {
this.resetState();
const n = this.lexer.tokenize(e, { mode: "partial" });
return this.tokens = n.tokens, this.wrapper.input = [...this.tokens], this.mainRule.call(this.wrapper, {}), this.unorderedGroups.clear(), {
tokens: this.tokens,
elementStack: [...this.lastElementStack],
tokenIndex: this.nextTokenIndex
};
}
rule(e, n) {
const r = this.wrapper.DEFINE_RULE(Vh(e.name), this.startImplementation(n).bind(this));
return this.allRules.set(e.name, r), e.entry && (this.mainRule = r), r;
}
resetState() {
this.elementStack = [], this.lastElementStack = [], this.nextTokenIndex = 0, this.stackSize = 0;
}
startImplementation(e) {
return (n) => {
const r = this.keepStackSize();
try {
e(n);
} finally {
this.resetStackSize(r);
}
};
}
removeUnexpectedElements() {
this.elementStack.splice(this.stackSize);
}
keepStackSize() {
const e = this.elementStack.length;
return this.stackSize = e, e;
}
resetStackSize(e) {
this.removeUnexpectedElements(), this.stackSize = e;
}
consume(e, n, r) {
this.wrapper.wrapConsume(e, n), this.isRecording() || (this.lastElementStack = [...this.elementStack, r], this.nextTokenIndex = this.currIdx + 1);
}
subrule(e, n, r, i, s) {
this.before(i), this.wrapper.wrapSubrule(e, n, s), this.after(i);
}
before(e) {
this.isRecording() || this.elementStack.push(e);
}
after(e) {
if (!this.isRecording()) {
const n = this.elementStack.lastIndexOf(e);
n >= 0 && this.elementStack.splice(n);
}
}
get currIdx() {
return this.wrapper.currIdx;
}
}
const hR = {
recoveryEnabled: !0,
nodeLocationTracking: "full",
skipValidations: !0,
errorMessageProvider: new Hh()
};
class Yh extends TT {
constructor(e, n) {
const r = n && "maxLookahead" in n;
super(e, {
...hR,
lookaheadStrategy: r ? new Ll({ maxLookahead: n.maxLookahead }) : new GT({
// If validations are skipped, don't log the lookahead warnings
logging: n.skipValidations ? () => {
} : void 0
}),
...n
});
}
get IS_RECORDING() {
return this.RECORDING_PHASE;
}
DEFINE_RULE(e, n, r) {
return this.RULE(e, n, r);
}
wrapSelfAnalysis() {
this.performSelfAnalysis();
}
wrapConsume(e, n) {
return this.consume(e, n, void 0);
}
wrapSubrule(e, n, r) {
return this.subrule(e, n, {
ARGS: [r]
});
}
wrapOr(e, n) {
this.or(e, n);
}
wrapOption(e, n) {
this.option(e, n);
}
wrapMany(e, n) {
this.many(e, n);
}
wrapAtLeastOne(e, n) {
this.atLeastOne(e, n);
}
rule(e) {
return e.call(this, {});
}
}
class pR extends Yh {
constructor(e, n, r) {
super(e, n), this.task = r;
}
rule(e) {
this.task.start(), this.task.startSubTask(this.ruleName(e));
try {
return super.rule(e);
} finally {
this.task.stopSubTask(this.ruleName(e)), this.task.stop();
}
}
ruleName(e) {
return e.ruleName;
}
subrule(e, n, r) {
this.task.startSubTask(this.ruleName(n));
try {
return super.subrule(e, n, r);
} finally {
this.task.stopSubTask(this.ruleName(n));
}
}
}
function Xh(t, e, n) {
return mR({
parser: e,
tokens: n,
ruleNames: /* @__PURE__ */ new Map()
}, t), e;
}
function mR(t, e) {
const n = Kf(e, !1), r = pe(e.rules).filter(an).filter((s) => n.has(s));
for (const s of r) {
const a = {
...t,
consume: 1,
optional: 1,
subrule: 1,
many: 1,
or: 1
};
t.parser.rule(s, Kn(a, s.definition));
}
const i = pe(e.rules).filter(sa).filter((s) => n.has(s));
for (const s of i)
t.parser.rule(s, gR(t, s));
}
function gR(t, e) {
const n = e.call.rule.ref;
if (!n)
throw new Error("Could not resolve reference to infix operator rule: " + e.call.rule.$refText);
if (on(n))
throw new Error("Cannot use terminal rule in infix expression");
const r = e.operators.precedences.flatMap((g) => g.operators), i = {
$type: "Group",
elements: []
}, s = {
$container: i,
$type: "Assignment",
feature: "parts",
operator: "+=",
terminal: e.call
}, a = {
$container: i,
$type: "Group",
elements: [],
cardinality: "*"
};
i.elements.push(s, a);
const c = {
$container: a,
$type: "Assignment",
feature: "operators",
operator: "+=",
terminal: {
$type: "Alternatives",
elements: r
}
}, l = {
...s,
$container: a
};
a.elements.push(c, l);
const f = r.map((g) => t.tokens[g.value]).map((g, A) => ({
ALT: () => t.parser.consume(A, g, c)
}));
let m;
return (g) => {
m ?? (m = jl(t, n)), t.parser.subrule(0, m, !1, s, g), t.parser.many(0, {
DEF: () => {
t.parser.alternatives(0, f), t.parser.subrule(1, m, !1, l, g);
}
});
};
}
function Kn(t, e, n = !1) {
let r;
if (Bn(e))
r = SR(t, e);
else if (Da(e))
r = yR(t, e);
else if (zn(e))
r = Kn(t, e.terminal);
else if (Ma(e))
r = Jh(t, e);
else if (qn(e))
r = TR(t, e);
else if (Uf(e))
r = vR(t, e);
else if (zf(e))
r = ER(t, e);
else if (kl(e))
r = AR(t, e);
else if (Sm(e)) {
const i = t.consume++;
r = () => t.parser.consume(i, vn, e);
} else
throw new qf(e.$cstNode, `Unexpected element type: ${e.$type}`);
return Qh(t, n ? void 0 : ka(e), r, e.cardinality);
}
function yR(t, e) {
const n = qi(e);
return () => t.parser.action(n, e);
}
function TR(t, e) {
const n = e.rule.ref;
if (ss(n)) {
const r = t.subrule++, i = an(n) && n.fragment, s = e.arguments.length > 0 ? RR(n, e.arguments) : () => ({});
let a;
return (o) => {
a ?? (a = jl(t, n)), t.parser.subrule(r, a, i, e, s(o));
};
} else if (on(n)) {
const r = t.consume++, i = Zc(t, n.name);
return () => t.parser.consume(r, i, e);
} else if (n)
as();
else
throw new qf(e.$cstNode, `Undefined rule: ${e.rule.$refText}`);
}
function RR(t, e) {
if (e.some((r) => r.calledByName)) {
const r = e.map((i) => {
var s, a;
return {
parameterName: (a = (s = i.parameter) == null ? void 0 : s.ref) == null ? void 0 : a.name,
predicate: xt(i.value)
};
});
return (i) => {
const s = {};
for (const { parameterName: a, predicate: o } of r)
a && (s[a] = o(i));
return s;
};
} else {
const r = e.map((i) => xt(i.value));
return (i) => {
const s = {};
for (let a = 0; a < r.length; a++)
if (a < t.parameters.length) {
const o = t.parameters[a].name, c = r[a];
s[o] = c(i);
}
return s;
};
}
}
function xt(t) {
if (Am(t)) {
const e = xt(t.left), n = xt(t.right);
return (r) => e(r) || n(r);
} else if (Em(t)) {
const e = xt(t.left), n = xt(t.right);
return (r) => e(r) && n(r);
} else if (Nm(t)) {
const e = xt(t.value);
return (n) => !e(n);
} else if (wm(t)) {
const e = t.parameter.ref.name;
return (n) => n !== void 0 && n[e] === !0;
} else if (Rm(t)) {
const e = !!t.true;
return () => e;
}
as();
}
function vR(t, e) {
if (e.elements.length === 1)
return Kn(t, e.elements[0]);
{
const n = [];
for (const i of e.elements) {
const s = {
// Since we handle the guard condition in the alternative already
// We can ignore the group guard condition inside
ALT: Kn(t, i, !0)
}, a = ka(i);
a && (s.GATE = xt(a)), n.push(s);
}
const r = t.or++;
return (i) => t.parser.alternatives(r, n.map((s) => {
const a = {
ALT: () => s.ALT(i)
}, o = s.GATE;
return o && (a.GATE = () => o(i)), a;
}));
}
}
function ER(t, e) {
if (e.elements.length === 1)
return Kn(t, e.elements[0]);
const n = [];
for (const o of e.elements) {
const c = {
// Since we handle the guard condition in the alternative already
// We can ignore the group guard condition inside
ALT: Kn(t, o, !0)
}, l = ka(o);
l && (c.GATE = xt(l)), n.push(c);
}
const r = t.or++, i = (o, c) => {
const l = c.getRuleStack().join("-");
return `uGroup_${o}_${l}`;
}, s = (o) => t.parser.alternatives(r, n.map((c, l) => {
const u = { ALT: () => !0 }, f = t.parser;
u.ALT = () => {
if (c.ALT(o), !f.isRecording()) {
const g = i(r, f);
f.unorderedGroups.get(g) || f.unorderedGroups.set(g, []);
const A = f.unorderedGroups.get(g);
typeof (A == null ? void 0 : A[l]) > "u" && (A[l] = !0);
}
};
const m = c.GATE;
return m ? u.GATE = () => m(o) : u.GATE = () => {
const g = f.unorderedGroups.get(i(r, f));
return !(g != null && g[l]);
}, u;
})), a = Qh(t, ka(e), s, "*");
return (o) => {
a(o), t.parser.isRecording() || t.parser.unorderedGroups.delete(i(r, t.parser));
};
}
function AR(t, e) {
const n = e.elements.map((r) => Kn(t, r));
return (r) => n.forEach((i) => i(r));
}
function ka(t) {
if (kl(t))
return t.guardCondition;
}
function Jh(t, e, n = e.terminal) {
if (n)
if (qn(n) && an(n.rule.ref)) {
const r = n.rule.ref, i = t.subrule++;
let s;
return (a) => {
s ?? (s = jl(t, r)), t.parser.subrule(i, s, !1, e, a);
};
} else if (qn(n) && on(n.rule.ref)) {
const r = t.consume++, i = Zc(t, n.rule.ref.name);
return () => t.parser.consume(r, i, e);
} else if (Bn(n)) {
const r = t.consume++, i = Zc(t, n.value);
return () => t.parser.consume(r, i, e);
} else
throw new Error("Could not build cross reference parser");
else {
if (!e.type.ref)
throw new Error("Could not resolve reference to type: " + e.type.$refText);
const r = Xf(e.type.ref), i = r == null ? void 0 : r.terminal;
if (!i)
throw new Error("Could not find name assignment for type: " + qi(e.type.ref));
return Jh(t, e, i);
}
}
function SR(t, e) {
const n = t.consume++, r = t.tokens[e.value];
if (!r)
throw new Error("Could not find token for keyword: " + e.value);
return () => t.parser.consume(n, r, e);
}
function Qh(t, e, n, r) {
const i = e && xt(e);
if (!r)
if (i) {
const s = t.or++;
return (a) => t.parser.alternatives(s, [
{
ALT: () => n(a),
GATE: () => i(a)
},
{
ALT: $u(),
GATE: () => !i(a)
}
]);
} else
return n;
if (r === "*") {
const s = t.many++;
return (a) => t.parser.many(s, {
DEF: () => n(a),
GATE: i ? () => i(a) : void 0
});
} else if (r === "+") {
const s = t.many++;
if (i) {
const a = t.or++;
return (o) => t.parser.alternatives(a, [
{
ALT: () => t.parser.atLeastOne(s, {
DEF: () => n(o)
}),
GATE: () => i(o)
},
{
ALT: $u(),
GATE: () => !i(o)
}
]);
} else
return (a) => t.parser.atLeastOne(s, {
DEF: () => n(a)
});
} else if (r === "?") {
const s = t.optional++;
return (a) => t.parser.optional(s, {
DEF: () => n(a),
GATE: i ? () => i(a) : void 0
});
} else
as();
}
function jl(t, e) {
const n = CR(t, e), r = t.parser.getRule(n);
if (!r)
throw new Error(`Rule "${n}" not found."`);
return r;
}
function CR(t, e) {
if (ss(e))
return e.name;
if (t.ruleNames.has(e))
return t.ruleNames.get(e);
{
let n = e, r = n.$container, i = e.$type;
for (; !an(r); )
(kl(r) || Uf(r) || zf(r)) && (i = r.elements.indexOf(n).toString() + ":" + i), n = r, r = r.$container;
return i = r.name + ":" + i, t.ruleNames.set(e, i), i;
}
}
function Zc(t, e) {
const n = t.tokens[e];
if (!n)
throw new Error(`Token "${e}" not found."`);
return n;
}
function kR(t) {
const e = t.Grammar, n = t.parser.Lexer, r = new fR(t);
return Xh(e, r, n.definition), r.finalize(), r;
}
function NR(t) {
const e = wR(t);
return e.finalize(), e;
}
function wR(t) {
const e = t.Grammar, n = t.parser.Lexer, r = new uR(t);
return Xh(e, r, n.definition);
}
class Zh {
constructor() {
this.diagnostics = [];
}
buildTokens(e, n) {
const r = pe(Kf(e, !1)), i = this.buildTerminalTokens(r), s = this.buildKeywordTokens(r, i, n);
return s.push(...i), s;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
flushLexingReport(e) {
return { diagnostics: this.popDiagnostics() };
}
popDiagnostics() {
const e = [...this.diagnostics];
return this.diagnostics = [], e;
}
buildTerminalTokens(e) {
return e.filter(on).filter((n) => !n.fragment).map((n) => this.buildTerminalToken(n)).toArray();
}
buildTerminalToken(e) {
const n = wl(e), r = this.requiresCustomPattern(n) ? this.regexPatternFunction(n) : n, i = {
name: e.name,
PATTERN: r
};
return typeof r == "function" && (i.LINE_BREAKS = !0), e.hidden && (i.GROUP = Vf(n) ? et.SKIPPED : "hidden"), i;
}
requiresCustomPattern(e) {
return !!(e.flags.includes("u") || e.flags.includes("s"));
}
regexPatternFunction(e) {
const n = new RegExp(e, e.flags + "y");
return (r, i) => (n.lastIndex = i, n.exec(r));
}
buildKeywordTokens(e, n, r) {
return e.filter(ss).flatMap((i) => is(i).filter(Bn)).distinct((i) => i.value).toArray().sort((i, s) => s.value.length - i.value.length).map((i) => this.buildKeywordToken(i, n, !!(r != null && r.caseInsensitive)));
}
buildKeywordToken(e, n, r) {
const i = this.buildKeywordPattern(e, r), s = {
name: e.value,
PATTERN: i,
LONGER_ALT: this.findLongerAlt(e, n)
};
return typeof i == "function" && (s.LINE_BREAKS = !0), s;
}
buildKeywordPattern(e, n) {
return n ? new RegExp(Ga(e.value), "i") : e.value;
}
findLongerAlt(e, n) {
return n.reduce((r, i) => {
const s = i == null ? void 0 : i.PATTERN;
return s != null && s.source && Jm("^" + s.source + "$", e.value) && r.push(i), r;
}, []);
}
}
class ep {
convert(e, n) {
let r = n.grammarSource;
if (Ma(r) && (r = tg(r)), qn(r)) {
const i = r.rule.ref;
if (!i)
throw new Error("This cst node was not parsed by a rule.");
return this.runConverter(i, e, n);
}
return e;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
runConverter(e, n, r) {
var i;
switch (e.name.toUpperCase()) {
case "INT":
return Ht.convertInt(n);
case "STRING":
return Ht.convertString(n);
case "ID":
return Ht.convertID(n);
}
switch ((i = cg(e)) == null ? void 0 : i.toLowerCase()) {
case "number":
return Ht.convertNumber(n);
case "boolean":
return Ht.convertBoolean(n);
case "bigint":
return Ht.convertBigint(n);
case "date":
return Ht.convertDate(n);
default:
return n;
}
}
}
var Ht;
(function(t) {
function e(l) {
let u = "";
for (let f = 1; f < l.length - 1; f++) {
const m = l.charAt(f);
if (m === "\\") {
const g = l.charAt(++f);
u += n(g);
} else
u += m;
}
return u;
}
t.convertString = e;
function n(l) {
switch (l) {
case "b":
return "\b";
case "f":
return "\f";
case "n":
return `
`;
case "r":
return "\r";
case "t":
return " ";
case "v":
return "\v";
case "0":
return "\0";
default:
return l;
}
}
function r(l) {
return l.charAt(0) === "^" ? l.substring(1) : l;
}
t.convertID = r;
function i(l) {
return parseInt(l);
}
t.convertInt = i;
function s(l) {
return BigInt(l);
}
t.convertBigint = s;
function a(l) {
return new Date(l);
}
t.convertDate = a;
function o(l) {
return Number(l);
}
t.convertNumber = o;
function c(l) {
return l.toLowerCase() === "true";
}
t.convertBoolean = c;
})(Ht || (Ht = {}));
var An = {}, cn = {};
Object.defineProperty(cn, "__esModule", { value: !0 });
let el;
function tl() {
if (el === void 0)
throw new Error("No runtime abstraction layer installed");
return el;
}
(function(t) {
function e(n) {
if (n === void 0)
throw new Error("No runtime abstraction layer provided");
el = n;
}
t.install = e;
})(tl || (tl = {}));
cn.default = tl;
var _e = {};
Object.defineProperty(_e, "__esModule", { value: !0 });
_e.stringArray = _e.array = _e.func = _e.error = _e.number = _e.string = _e.boolean = void 0;
function bR(t) {
return t === !0 || t === !1;
}
_e.boolean = bR;
function tp(t) {
return typeof t == "string" || t instanceof String;
}
_e.string = tp;
function IR(t) {
return typeof t == "number" || t instanceof Number;
}
_e.number = IR;
function _R(t) {
return t instanceof Error;
}
_e.error = _R;
function $R(t) {
return typeof t == "function";
}
_e.func = $R;
function np(t) {
return Array.isArray(t);
}
_e.array = np;
function PR(t) {
return np(t) && t.every((e) => tp(e));
}
_e.stringArray = PR;
var Ft = {};
Object.defineProperty(Ft, "__esModule", { value: !0 });
var rp = Ft.Emitter = Ft.Event = void 0;
const LR = cn;
var Mu;
(function(t) {
const e = { dispose() {
} };
t.None = function() {
return e;
};
})(Mu || (Ft.Event = Mu = {}));
class OR {
add(e, n = null, r) {
this._callbacks || (this._callbacks = [], this._contexts = []), this._callbacks.push(e), this._contexts.push(n), Array.isArray(r) && r.push({ dispose: () => this.remove(e, n) });
}
remove(e, n = null) {
if (!this._callbacks)
return;
let r = !1;
for (let i = 0, s = this._callbacks.length; i < s; i++)
if (this._callbacks[i] === e)
if (this._contexts[i] === n) {
this._callbacks.splice(i, 1), this._contexts.splice(i, 1);
return;
} else
r = !0;
if (r)
throw new Error("When adding a listener with a context, you should remove it with the same context");
}
invoke(...e) {
if (!this._callbacks)
return [];
const n = [], r = this._callbacks.slice(0), i = this._contexts.slice(0);
for (let s = 0, a = r.length; s < a; s++)
try {
n.push(r[s].apply(i[s], e));
} catch (o) {
(0, LR.default)().console.error(o);
}
return n;
}
isEmpty() {
return !this._callbacks || this._callbacks.length === 0;
}
dispose() {
this._callbacks = void 0, this._contexts = void 0;
}
}
class Ka {
constructor(e) {
this._options = e;
}
/**
* For the public to allow to subscribe
* to events from this Emitter
*/
get event() {
return this._event || (this._event = (e, n, r) => {
this._callbacks || (this._callbacks = new OR()), this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty() && this._options.onFirstListenerAdd(this), this._callbacks.add(e, n);
const i = {
dispose: () => {
this._callbacks && (this._callbacks.remove(e, n), i.dispose = Ka._noop, this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty() && this._options.onLastListenerRemove(this));
}
};
return Array.isArray(r) && r.push(i), i;
}), this._event;
}
/**
* To be kept private to fire an event to
* subscribers
*/
fire(e) {
this._callbacks && this._callbacks.invoke.call(this._callbacks, e);
}
dispose() {
this._callbacks && (this._callbacks.dispose(), this._callbacks = void 0);
}
}
rp = Ft.Emitter = Ka;
Ka._noop = function() {
};
var ge;
Object.defineProperty(An, "__esModule", { value: !0 });
var zl = An.CancellationTokenSource = ge = An.CancellationToken = void 0;
const xR = cn, DR = _e, nl = Ft;
var Na;
(function(t) {
t.None = Object.freeze({
isCancellationRequested: !1,
onCancellationRequested: nl.Event.None
}), t.Cancelled = Object.freeze({
isCancellationRequested: !0,
onCancellationRequested: nl.Event.None
});
function e(n) {
const r = n;
return r && (r === t.None || r === t.Cancelled || DR.boolean(r.isCancellationRequested) && !!r.onCancellationRequested);
}
t.is = e;
})(Na || (ge = An.CancellationToken = Na = {}));
const MR = Object.freeze(function(t, e) {
const n = (0, xR.default)().timer.setTimeout(t.bind(e), 0);
return { dispose() {
n.dispose();
} };
});
class Fu {
constructor() {
this._isCancelled = !1;
}
cancel() {
this._isCancelled || (this._isCancelled = !0, this._emitter && (this._emitter.fire(void 0), this.dispose()));
}
get isCancellationRequested() {
return this._isCancelled;
}
get onCancellationRequested() {
return this._isCancelled ? MR : (this._emitter || (this._emitter = new nl.Emitter()), this._emitter.event);
}
dispose() {
this._emitter && (this._emitter.dispose(), this._emitter = void 0);
}
}
class FR {
get token() {
return this._token || (this._token = new Fu()), this._token;
}
cancel() {
this._token ? this._token.cancel() : this._token = Na.Cancelled;
}
dispose() {
this._token ? this._token instanceof Fu && this._token.dispose() : this._token = Na.None;
}
}
zl = An.CancellationTokenSource = FR;
function GR() {
return new Promise((t) => {
typeof setImmediate > "u" ? setTimeout(t, 0) : setImmediate(t);
});
}
let ea = 0, UR = 10;
function jR() {
return ea = performance.now(), new zl();
}
const Er = Symbol("OperationCancelled");
function Ha(t) {
return t === Er;
}
async function He(t) {
if (t === ge.None)
return;
const e = performance.now();
if (e - ea >= UR && (ea = e, await GR(), ea = performance.now()), t.isCancellationRequested)
throw Er;
}
class Bl {
constructor() {
this.promise = new Promise((e, n) => {
this.resolve = (r) => (e(r), this), this.reject = (r) => (n(r), this);
});
}
}
class Qi {
constructor(e, n, r, i) {
this._uri = e, this._languageId = n, this._version = r, this._content = i, this._lineOffsets = void 0;
}
get uri() {
return this._uri;
}
get languageId() {
return this._languageId;
}
get version() {
return this._version;
}
getText(e) {
if (e) {
const n = this.offsetAt(e.start), r = this.offsetAt(e.end);
return this._content.substring(n, r);
}
return this._content;
}
update(e, n) {
for (const r of e)
if (Qi.isIncremental(r)) {
const i = sp(r.range), s = this.offsetAt(i.start), a = this.offsetAt(i.end);
this._content = this._content.substring(0, s) + r.text + this._content.substring(a, this._content.length);
const o = Math.max(i.start.line, 0), c = Math.max(i.end.line, 0);
let l = this._lineOffsets;
const u = Gu(r.text, !1, s);
if (c - o === u.length)
for (let m = 0, g = u.length; m < g; m++)
l[m + o + 1] = u[m];
else
u.length < 1e4 ? l.splice(o + 1, c - o, ...u) : this._lineOffsets = l = l.slice(0, o + 1).concat(u, l.slice(c + 1));
const f = r.text.length - (a - s);
if (f !== 0)
for (let m = o + 1 + u.length, g = l.length; m < g; m++)
l[m] = l[m] + f;
} else if (Qi.isFull(r))
this._content = r.text, this._lineOffsets = void 0;
else
throw new Error("Unknown change event received");
this._version = n;
}
getLineOffsets() {
return this._lineOffsets === void 0 && (this._lineOffsets = Gu(this._content, !0)), this._lineOffsets;
}
positionAt(e) {
e = Math.max(Math.min(e, this._content.length), 0);
const n = this.getLineOffsets();
let r = 0, i = n.length;
if (i === 0)
return { line: 0, character: e };
for (; r < i; ) {
const a = Math.floor((r + i) / 2);
n[a] > e ? i = a : r = a + 1;
}
const s = r - 1;
return e = this.ensureBeforeEOL(e, n[s]), { line: s, character: e - n[s] };
}
offsetAt(e) {
const n = this.getLineOffsets();
if (e.line >= n.length)
return this._content.length;
if (e.line < 0)
return 0;
const r = n[e.line];
if (e.character <= 0)
return r;
const i = e.line + 1 < n.length ? n[e.line + 1] : this._content.length, s = Math.min(r + e.character, i);
return this.ensureBeforeEOL(s, r);
}
ensureBeforeEOL(e, n) {
for (; e > n && ip(this._content.charCodeAt(e - 1)); )
e--;
return e;
}
get lineCount() {
return this.getLineOffsets().length;
}
static isIncremental(e) {
const n = e;
return n != null && typeof n.text == "string" && n.range !== void 0 && (n.rangeLength === void 0 || typeof n.rangeLength == "number");
}
static isFull(e) {
const n = e;
return n != null && typeof n.text == "string" && n.range === void 0 && n.rangeLength === void 0;
}
}
var rl;
(function(t) {
function e(i, s, a, o) {
return new Qi(i, s, a, o);
}
t.create = e;
function n(i, s, a) {
if (i instanceof Qi)
return i.update(s, a), i;
throw new Error("TextDocument.update: document must be created by TextDocument.create");
}
t.update = n;
function r(i, s) {
const a = i.getText(), o = il(s.map(zR), (u, f) => {
const m = u.range.start.line - f.range.start.line;
return m === 0 ? u.range.start.character - f.range.start.character : m;
});
let c = 0;
const l = [];
for (const u of o) {
const f = i.offsetAt(u.range.start);
if (f < c)
throw new Error("Overlapping edit");
f > c && l.push(a.substring(c, f)), u.newText.length && l.push(u.newText), c = i.offsetAt(u.range.end);
}
return l.push(a.substr(c)), l.join("");
}
t.applyEdits = r;
})(rl || (rl = {}));
function il(t, e) {
if (t.length <= 1)
return t;
const n = t.length / 2 | 0, r = t.slice(0, n), i = t.slice(n);
il(r, e), il(i, e);
let s = 0, a = 0, o = 0;
for (; s < r.length && a < i.length; )
e(r[s], i[a]) <= 0 ? t[o++] = r[s++] : t[o++] = i[a++];
for (; s < r.length; )
t[o++] = r[s++];
for (; a < i.length; )
t[o++] = i[a++];
return t;
}
function Gu(t, e, n = 0) {
const r = e ? [n] : [];
for (let i = 0; i < t.length; i++) {
const s = t.charCodeAt(i);
ip(s) && (s === 13 && i + 1 < t.length && t.charCodeAt(i + 1) === 10 && i++, r.push(n + i + 1));
}
return r;
}
function ip(t) {
return t === 13 || t === 10;
}
function sp(t) {
const e = t.start, n = t.end;
return e.line > n.line || e.line === n.line && e.character > n.character ? { start: n, end: e } : t;
}
function zR(t) {
const e = sp(t.range);
return e !== t.range ? { newText: t.newText, range: e } : t;
}
var ap;
(() => {
var t = { 975: (k) => {
function R(y) {
if (typeof y != "string") throw new TypeError("Path must be a string. Received " + JSON.stringify(y));
}
function p(y, T) {
for (var E, P = "", D = 0, L = -1, z = 0, G = 0; G <= y.length; ++G) {
if (G < y.length) E = y.charCodeAt(G);
else {
if (E === 47) break;
E = 47;
}
if (E === 47) {
if (!(L === G - 1 || z === 1)) if (L !== G - 1 && z === 2) {
if (P.length < 2 || D !== 2 || P.charCodeAt(P.length - 1) !== 46 || P.charCodeAt(P.length - 2) !== 46) {
if (P.length > 2) {
var se = P.lastIndexOf("/");
if (se !== P.length - 1) {
se === -1 ? (P = "", D = 0) : D = (P = P.slice(0, se)).length - 1 - P.lastIndexOf("/"), L = G, z = 0;
continue;
}
} else if (P.length === 2 || P.length === 1) {
P = "", D = 0, L = G, z = 0;
continue;
}
}
T && (P.length > 0 ? P += "/.." : P = "..", D = 2);
} else P.length > 0 ? P += "/" + y.slice(L + 1, G) : P = y.slice(L + 1, G), D = G - L - 1;
L = G, z = 0;
} else E === 46 && z !== -1 ? ++z : z = -1;
}
return P;
}
var S = { resolve: function() {
for (var y, T = "", E = !1, P = arguments.length - 1; P >= -1 && !E; P--) {
var D;
P >= 0 ? D = arguments[P] : (y === void 0 && (y = process.cwd()), D = y), R(D), D.length !== 0 && (T = D + "/" + T, E = D.charCodeAt(0) === 47);
}
return T = p(T, !E), E ? T.length > 0 ? "/" + T : "/" : T.length > 0 ? T : ".";
}, normalize: function(y) {
if (R(y), y.length === 0) return ".";
var T = y.charCodeAt(0) === 47, E = y.charCodeAt(y.length - 1) === 47;
return (y = p(y, !T)).length !== 0 || T || (y = "."), y.length > 0 && E && (y += "/"), T ? "/" + y : y;
}, isAbsolute: function(y) {
return R(y), y.length > 0 && y.charCodeAt(0) === 47;
}, join: function() {
if (arguments.length === 0) return ".";
for (var y, T = 0; T < arguments.length; ++T) {
var E = arguments[T];
R(E), E.length > 0 && (y === void 0 ? y = E : y += "/" + E);
}
return y === void 0 ? "." : S.normalize(y);
}, relative: function(y, T) {
if (R(y), R(T), y === T || (y = S.resolve(y)) === (T = S.resolve(T))) return "";
for (var E = 1; E < y.length && y.charCodeAt(E) === 47; ++E) ;
for (var P = y.length, D = P - E, L = 1; L < T.length && T.charCodeAt(L) === 47; ++L) ;
for (var z = T.length - L, G = D < z ? D : z, se = -1, q = 0; q <= G; ++q) {
if (q === G) {
if (z > G) {
if (T.charCodeAt(L + q) === 47) return T.slice(L + q + 1);
if (q === 0) return T.slice(L + q);
} else D > G && (y.charCodeAt(E + q) === 47 ? se = q : q === 0 && (se = 0));
break;
}
var re = y.charCodeAt(E + q);
if (re !== T.charCodeAt(L + q)) break;
re === 47 && (se = q);
}
var xe = "";
for (q = E + se + 1; q <= P; ++q) q !== P && y.charCodeAt(q) !== 47 || (xe.length === 0 ? xe += ".." : xe += "/..");
return xe.length > 0 ? xe + T.slice(L + se) : (L += se, T.charCodeAt(L) === 47 && ++L, T.slice(L));
}, _makeLong: function(y) {
return y;
}, dirname: function(y) {
if (R(y), y.length === 0) return ".";
for (var T = y.charCodeAt(0), E = T === 47, P = -1, D = !0, L = y.length - 1; L >= 1; --L) if ((T = y.charCodeAt(L)) === 47) {
if (!D) {
P = L;
break;
}
} else D = !1;
return P === -1 ? E ? "/" : "." : E && P === 1 ? "//" : y.slice(0, P);
}, basename: function(y, T) {
if (T !== void 0 && typeof T != "string") throw new TypeError('"ext" argument must be a string');
R(y);
var E, P = 0, D = -1, L = !0;
if (T !== void 0 && T.length > 0 && T.length <= y.length) {
if (T.length === y.length && T === y) return "";
var z = T.length - 1, G = -1;
for (E = y.length - 1; E >= 0; --E) {
var se = y.charCodeAt(E);
if (se === 47) {
if (!L) {
P = E + 1;
break;
}
} else G === -1 && (L = !1, G = E + 1), z >= 0 && (se === T.charCodeAt(z) ? --z == -1 && (D = E) : (z = -1, D = G));
}
return P === D ? D = G : D === -1 && (D = y.length), y.slice(P, D);
}
for (E = y.length - 1; E >= 0; --E) if (y.charCodeAt(E) === 47) {
if (!L) {
P = E + 1;
break;
}
} else D === -1 && (L = !1, D = E + 1);
return D === -1 ? "" : y.slice(P, D);
}, extname: function(y) {
R(y);
for (var T = -1, E = 0, P = -1, D = !0, L = 0, z = y.length - 1; z >= 0; --z) {
var G = y.charCodeAt(z);
if (G !== 47) P === -1 && (D = !1, P = z + 1), G === 46 ? T === -1 ? T = z : L !== 1 && (L = 1) : T !== -1 && (L = -1);
else if (!D) {
E = z + 1;
break;
}
}
return T === -1 || P === -1 || L === 0 || L === 1 && T === P - 1 && T === E + 1 ? "" : y.slice(T, P);
}, format: function(y) {
if (y === null || typeof y != "object") throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof y);
return function(T, E) {
var P = E.dir || E.root, D = E.base || (E.name || "") + (E.ext || "");
return P ? P === E.root ? P + D : P + "/" + D : D;
}(0, y);
}, parse: function(y) {
R(y);
var T = { root: "", dir: "", base: "", ext: "", name: "" };
if (y.length === 0) return T;
var E, P = y.charCodeAt(0), D = P === 47;
D ? (T.root = "/", E = 1) : E = 0;
for (var L = -1, z = 0, G = -1, se = !0, q = y.length - 1, re = 0; q >= E; --q) if ((P = y.charCodeAt(q)) !== 47) G === -1 && (se = !1, G = q + 1), P === 46 ? L === -1 ? L = q : re !== 1 && (re = 1) : L !== -1 && (re = -1);
else if (!se) {
z = q + 1;
break;
}
return L === -1 || G === -1 || re === 0 || re === 1 && L === G - 1 && L === z + 1 ? G !== -1 && (T.base = T.name = z === 0 && D ? y.slice(1, G) : y.slice(z, G)) : (z === 0 && D ? (T.name = y.slice(1, L), T.base = y.slice(1, G)) : (T.name = y.slice(z, L), T.base = y.slice(z, G)), T.ext = y.slice(L, G)), z > 0 ? T.dir = y.slice(0, z - 1) : D && (T.dir = "/"), T;
}, sep: "/", delimiter: ":", win32: null, posix: null };
S.posix = S, k.exports = S;
} }, e = {};
function n(k) {
var R = e[k];
if (R !== void 0) return R.exports;
var p = e[k] = { exports: {} };
return t[k](p, p.exports, n), p.exports;
}
n.d = (k, R) => {
for (var p in R) n.o(R, p) && !n.o(k, p) && Object.defineProperty(k, p, { enumerable: !0, get: R[p] });
}, n.o = (k, R) => Object.prototype.hasOwnProperty.call(k, R), n.r = (k) => {
typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(k, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(k, "__esModule", { value: !0 });
};
var r = {};
let i;
n.r(r), n.d(r, { URI: () => m, Utils: () => de }), typeof process == "object" ? i = process.platform === "win32" : typeof navigator == "object" && (i = navigator.userAgent.indexOf("Windows") >= 0);
const s = /^\w[\w\d+.-]*$/, a = /^\//, o = /^\/\//;
function c(k, R) {
if (!k.scheme && R) throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${k.authority}", path: "${k.path}", query: "${k.query}", fragment: "${k.fragment}"}`);
if (k.scheme && !s.test(k.scheme)) throw new Error("[UriError]: Scheme contains illegal characters.");
if (k.path) {
if (k.authority) {
if (!a.test(k.path)) throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character');
} else if (o.test(k.path)) throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")');
}
}
const l = "", u = "/", f = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
class m {
constructor(R, p, S, y, T, E = !1) {
dn(this, "scheme");
dn(this, "authority");
dn(this, "path");
dn(this, "query");
dn(this, "fragment");
typeof R == "object" ? (this.scheme = R.scheme || l, this.authority = R.authority || l, this.path = R.path || l, this.query = R.query || l, this.fragment = R.fragment || l) : (this.scheme = /* @__PURE__ */ function(P, D) {
return P || D ? P : "file";
}(R, E), this.authority = p || l, this.path = function(P, D) {
switch (P) {
case "https":
case "http":
case "file":
D ? D[0] !== u && (D = u + D) : D = u;
}
return D;
}(this.scheme, S || l), this.query = y || l, this.fragment = T || l, c(this, E));
}
static isUri(R) {
return R instanceof m || !!R && typeof R.authority == "string" && typeof R.fragment == "string" && typeof R.path == "string" && typeof R.query == "string" && typeof R.scheme == "string" && typeof R.fsPath == "string" && typeof R.with == "function" && typeof R.toString == "function";
}
get fsPath() {
return O(this);
}
with(R) {
if (!R) return this;
let { scheme: p, authority: S, path: y, query: T, fragment: E } = R;
return p === void 0 ? p = this.scheme : p === null && (p = l), S === void 0 ? S = this.authority : S === null && (S = l), y === void 0 ? y = this.path : y === null && (y = l), T === void 0 ? T = this.query : T === null && (T = l), E === void 0 ? E = this.fragment : E === null && (E = l), p === this.scheme && S === this.authority && y === this.path && T === this.query && E === this.fragment ? this : new A(p, S, y, T, E);
}
static parse(R, p = !1) {
const S = f.exec(R);
return S ? new A(S[2] || l, te(S[4] || l), te(S[5] || l), te(S[7] || l), te(S[9] || l), p) : new A(l, l, l, l, l);
}
static file(R) {
let p = l;
if (i && (R = R.replace(/\\/g, u)), R[0] === u && R[1] === u) {
const S = R.indexOf(u, 2);
S === -1 ? (p = R.substring(2), R = u) : (p = R.substring(2, S), R = R.substring(S) || u);
}
return new A("file", p, R, l, l);
}
static from(R) {
const p = new A(R.scheme, R.authority, R.path, R.query, R.fragment);
return c(p, !0), p;
}
toString(R = !1) {
return b(this, R);
}
toJSON() {
return this;
}
static revive(R) {
if (R) {
if (R instanceof m) return R;
{
const p = new A(R);
return p._formatted = R.external, p._fsPath = R._sep === g ? R.fsPath : null, p;
}
}
return R;
}
}
const g = i ? 1 : void 0;
class A extends m {
constructor() {
super(...arguments);
dn(this, "_formatted", null);
dn(this, "_fsPath", null);
}
get fsPath() {
return this._fsPath || (this._fsPath = O(this)), this._fsPath;
}
toString(p = !1) {
return p ? b(this, !0) : (this._formatted || (this._formatted = b(this, !1)), this._formatted);
}
toJSON() {
const p = { $mid: 1 };
return this._fsPath && (p.fsPath = this._fsPath, p._sep = g), this._formatted && (p.external = this._formatted), this.path && (p.path = this.path), this.scheme && (p.scheme = this.scheme), this.authority && (p.authority = this.authority), this.query && (p.query = this.query), this.fragment && (p.fragment = this.fragment), p;
}
}
const N = { 58: "%3A", 47: "%2F", 63: "%3F", 35: "%23", 91: "%5B", 93: "%5D", 64: "%40", 33: "%21", 36: "%24", 38: "%26", 39: "%27", 40: "%28", 41: "%29", 42: "%2A", 43: "%2B", 44: "%2C", 59: "%3B", 61: "%3D", 32: "%20" };
function $(k, R, p) {
let S, y = -1;
for (let T = 0; T < k.length; T++) {
const E = k.charCodeAt(T);
if (E >= 97 && E <= 122 || E >= 65 && E <= 90 || E >= 48 && E <= 57 || E === 45 || E === 46 || E === 95 || E === 126 || R && E === 47 || p && E === 91 || p && E === 93 || p && E === 58) y !== -1 && (S += encodeURIComponent(k.substring(y, T)), y = -1), S !== void 0 && (S += k.charAt(T));
else {
S === void 0 && (S = k.substr(0, T));
const P = N[E];
P !== void 0 ? (y !== -1 && (S += encodeURIComponent(k.substring(y, T)), y = -1), S += P) : y === -1 && (y = T);
}
}
return y !== -1 && (S += encodeURIComponent(k.substring(y))), S !== void 0 ? S : k;
}
function w(k) {
let R;
for (let p = 0; p < k.length; p++) {
const S = k.charCodeAt(p);
S === 35 || S === 63 ? (R === void 0 && (R = k.substr(0, p)), R += N[S]) : R !== void 0 && (R += k[p]);
}
return R !== void 0 ? R : k;
}
function O(k, R) {
let p;
return p = k.authority && k.path.length > 1 && k.scheme === "file" ? `//${k.authority}${k.path}` : k.path.charCodeAt(0) === 47 && (k.path.charCodeAt(1) >= 65 && k.path.charCodeAt(1) <= 90 || k.path.charCodeAt(1) >= 97 && k.path.charCodeAt(1) <= 122) && k.path.charCodeAt(2) === 58 ? k.path[1].toLowerCase() + k.path.substr(2) : k.path, i && (p = p.replace(/\//g, "\\")), p;
}
function b(k, R) {
const p = R ? w : $;
let S = "", { scheme: y, authority: T, path: E, query: P, fragment: D } = k;
if (y && (S += y, S += ":"), (T || y === "file") && (S += u, S += u), T) {
let L = T.indexOf("@");
if (L !== -1) {
const z = T.substr(0, L);
T = T.substr(L + 1), L = z.lastIndexOf(":"), L === -1 ? S += p(z, !1, !1) : (S += p(z.substr(0, L), !1, !1), S += ":", S += p(z.substr(L + 1), !1, !0)), S += "@";
}
T = T.toLowerCase(), L = T.lastIndexOf(":"), L === -1 ? S += p(T, !1, !0) : (S += p(T.substr(0, L), !1, !0), S += T.substr(L));
}
if (E) {
if (E.length >= 3 && E.charCodeAt(0) === 47 && E.charCodeAt(2) === 58) {
const L = E.charCodeAt(1);
L >= 65 && L <= 90 && (E = `/${String.fromCharCode(L + 32)}:${E.substr(3)}`);
} else if (E.length >= 2 && E.charCodeAt(1) === 58) {
const L = E.charCodeAt(0);
L >= 65 && L <= 90 && (E = `${String.fromCharCode(L + 32)}:${E.substr(2)}`);
}
S += p(E, !0, !1);
}
return P && (S += "?", S += p(P, !1, !1)), D && (S += "#", S += R ? D : $(D, !1, !1)), S;
}
function x(k) {
try {
return decodeURIComponent(k);
} catch {
return k.length > 3 ? k.substr(0, 3) + x(k.substr(3)) : k;
}
}
const X = /(%[0-9A-Za-z][0-9A-Za-z])+/g;
function te(k) {
return k.match(X) ? k.replace(X, (R) => x(R)) : k;
}
var ne = n(975);
const ye = ne.posix || ne, Ce = "/";
var de;
(function(k) {
k.joinPath = function(R, ...p) {
return R.with({ path: ye.join(R.path, ...p) });
}, k.resolvePath = function(R, ...p) {
let S = R.path, y = !1;
S[0] !== Ce && (S = Ce + S, y = !0);
let T = ye.resolve(S, ...p);
return y && T[0] === Ce && !R.authority && (T = T.substring(1)), R.with({ path: T });
}, k.dirname = function(R) {
if (R.path.length === 0 || R.path === Ce) return R;
let p = ye.dirname(R.path);
return p.length === 1 && p.charCodeAt(0) === 46 && (p = ""), R.with({ path: p });
}, k.basename = function(R) {
return ye.basename(R.path);
}, k.extname = function(R) {
return ye.extname(R.path);
};
})(de || (de = {})), ap = r;
})();
const { URI: wt, Utils: ki } = ap;
var ct;
(function(t) {
t.basename = ki.basename, t.dirname = ki.dirname, t.extname = ki.extname, t.joinPath = ki.joinPath, t.resolvePath = ki.resolvePath;
const e = typeof process == "object" && (process == null ? void 0 : process.platform) === "win32";
function n(a, o) {
return (a == null ? void 0 : a.toString()) === (o == null ? void 0 : o.toString());
}
t.equals = n;
function r(a, o) {
const c = typeof a == "string" ? wt.parse(a).path : a.path, l = typeof o == "string" ? wt.parse(o).path : o.path, u = c.split("/").filter((N) => N.length > 0), f = l.split("/").filter((N) => N.length > 0);
if (e) {
const N = /^[A-Z]:$/;
if (u[0] && N.test(u[0]) && (u[0] = u[0].toLowerCase()), f[0] && N.test(f[0]) && (f[0] = f[0].toLowerCase()), u[0] !== f[0])
return l.substring(1);
}
let m = 0;
for (; m < u.length && u[m] === f[m]; m++)
;
const g = "../".repeat(u.length - m), A = f.slice(m).join("/");
return g + A;
}
t.relative = r;
function i(a) {
return wt.parse(a.toString()).toString();
}
t.normalize = i;
function s(a, o) {
let c = typeof a == "string" ? a : a.path, l = typeof o == "string" ? o : o.path;
return l.charAt(l.length - 1) === "/" && (l = l.slice(0, -1)), c.charAt(c.length - 1) === "/" && (c = c.slice(0, -1)), l === c ? !0 : l.length < c.length || l.charAt(c.length) !== "/" ? !1 : l.startsWith(c);
}
t.contains = s;
})(ct || (ct = {}));
class BR {
constructor() {
this.root = { name: "", children: /* @__PURE__ */ new Map() };
}
normalizeUri(e) {
return ct.normalize(e);
}
clear() {
this.root.children.clear();
}
insert(e, n) {
const r = this.getNode(this.normalizeUri(e), !0);
r.element = n;
}
delete(e) {
const n = this.getNode(this.normalizeUri(e), !1);
n != null && n.parent && n.parent.children.delete(n.name);
}
has(e) {
var n;
return ((n = this.getNode(this.normalizeUri(e), !1)) == null ? void 0 : n.element) !== void 0;
}
hasNode(e) {
return this.getNode(this.normalizeUri(e), !1) !== void 0;
}
find(e) {
var n;
return (n = this.getNode(this.normalizeUri(e), !1)) == null ? void 0 : n.element;
}
findNode(e) {
const n = this.normalizeUri(e), r = this.getNode(n, !1);
if (r)
return {
name: r.name,
uri: ct.joinPath(wt.parse(n), r.name).toString(),
element: r.element
};
}
findChildren(e) {
const n = this.normalizeUri(e), r = this.getNode(n, !1);
return r ? Array.from(r.children.values()).map((i) => ({
name: i.name,
uri: ct.joinPath(wt.parse(n), i.name).toString(),
element: i.element
})) : [];
}
all() {
return this.collectValues(this.root);
}
findAll(e) {
const n = this.getNode(ct.normalize(e), !1);
return n ? this.collectValues(n) : [];
}
getNode(e, n) {
const r = e.split("/");
e.charAt(e.length - 1) === "/" && r.pop();
let i = this.root;
for (const s of r) {
let a = i.children.get(s);
if (!a)
if (n)
a = {
name: s,
children: /* @__PURE__ */ new Map(),
parent: i
}, i.children.set(s, a);
else
return;
i = a;
}
return i;
}
collectValues(e) {
const n = [];
e.element && n.push(e.element);
for (const r of e.children.values())
n.push(...this.collectValues(r));
return n;
}
}
var K;
(function(t) {
t[t.Changed = 0] = "Changed", t[t.Parsed = 1] = "Parsed", t[t.IndexedContent = 2] = "IndexedContent", t[t.ComputedScopes = 3] = "ComputedScopes", t[t.Linked = 4] = "Linked", t[t.IndexedReferences = 5] = "IndexedReferences", t[t.Validated = 6] = "Validated";
})(K || (K = {}));
class qR {
constructor(e) {
this.serviceRegistry = e.ServiceRegistry, this.textDocuments = e.workspace.TextDocuments, this.fileSystemProvider = e.workspace.FileSystemProvider;
}
async fromUri(e, n = ge.None) {
const r = await this.fileSystemProvider.readFile(e);
return this.createAsync(e, r, n);
}
fromTextDocument(e, n, r) {
return n = n ?? wt.parse(e.uri), ge.is(r) ? this.createAsync(n, e, r) : this.create(n, e, r);
}
fromString(e, n, r) {
return ge.is(r) ? this.createAsync(n, e, r) : this.create(n, e, r);
}
fromModel(e, n) {
return this.create(n, { $model: e });
}
create(e, n, r) {
if (typeof n == "string") {
const i = this.parse(e, n, r);
return this.createLangiumDocument(i, e, void 0, n);
} else if ("$model" in n) {
const i = { value: n.$model, parserErrors: [], lexerErrors: [] };
return this.createLangiumDocument(i, e);
} else {
const i = this.parse(e, n.getText(), r);
return this.createLangiumDocument(i, e, n);
}
}
async createAsync(e, n, r) {
if (typeof n == "string") {
const i = await this.parseAsync(e, n, r);
return this.createLangiumDocument(i, e, void 0, n);
} else {
const i = await this.parseAsync(e, n.getText(), r);
return this.createLangiumDocument(i, e, n);
}
}
/**
* Create a LangiumDocument from a given parse result.
*
* A TextDocument is created on demand if it is not provided as argument here. Usually this
* should not be necessary because the main purpose of the TextDocument is to convert between
* text ranges and offsets, which is done solely in LSP request handling.
*
* With the introduction of {@link update} below this method is supposed to be mainly called
* during workspace initialization and on addition/recognition of new files, while changes in
* existing documents are processed via {@link update}.
*/
createLangiumDocument(e, n, r, i) {
let s;
if (r)
s = {
parseResult: e,
uri: n,
state: K.Parsed,
references: [],
textDocument: r
};
else {
const a = this.createTextDocumentGetter(n, i);
s = {
parseResult: e,
uri: n,
state: K.Parsed,
references: [],
get textDocument() {
return a();
}
};
}
return e.value.$document = s, s;
}
async update(e, n) {
var a, o;
const r = (a = e.parseResult.value.$cstNode) == null ? void 0 : a.root.fullText, i = (o = this.textDocuments) == null ? void 0 : o.get(e.uri.toString()), s = i ? i.getText() : await this.fileSystemProvider.readFile(e.uri);
if (i)
Object.defineProperty(e, "textDocument", {
value: i
});
else {
const c = this.createTextDocumentGetter(e.uri, s);
Object.defineProperty(e, "textDocument", {
get: c
});
}
return r !== s && (e.parseResult = await this.parseAsync(e.uri, s, n), e.parseResult.value.$document = e), e.state = K.Parsed, e;
}
parse(e, n, r) {
return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(n, r);
}
parseAsync(e, n, r) {
return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(n, r);
}
createTextDocumentGetter(e, n) {
const r = this.serviceRegistry;
let i;
return () => i ?? (i = rl.create(e.toString(), r.getServices(e).LanguageMetaData.languageId, 0, n ?? ""));
}
}
class WR {
constructor(e) {
this.documentTrie = new BR(), this.services = e, this.langiumDocumentFactory = e.workspace.LangiumDocumentFactory, this.documentBuilder = () => e.workspace.DocumentBuilder;
}
get all() {
return pe(this.documentTrie.all());
}
addDocument(e) {
const n = e.uri.toString();
if (this.documentTrie.has(n))
throw new Error(`A document with the URI '${n}' is already present.`);
this.documentTrie.insert(n, e);
}
getDocument(e) {
const n = e.toString();
return this.documentTrie.find(n);
}
getDocuments(e) {
const n = e.toString();
return this.documentTrie.findAll(n);
}
async getOrCreateDocument(e, n) {
let r = this.getDocument(e);
return r || (r = await this.langiumDocumentFactory.fromUri(e, n), this.addDocument(r), r);
}
createDocument(e, n, r) {
if (r)
return this.langiumDocumentFactory.fromString(n, e, r).then((i) => (this.addDocument(i), i));
{
const i = this.langiumDocumentFactory.fromString(n, e);
return this.addDocument(i), i;
}
}
hasDocument(e) {
return this.documentTrie.has(e.toString());
}
/**
* @deprecated Since 4.2 use `DocumentBuilder.resetToState(DocumentState.Changed)` instead
* TODO remove this for the next major release
*/
invalidateDocument(e) {
const n = e.toString(), r = this.documentTrie.find(n);
return r && this.documentBuilder().resetToState(r, K.Changed), r;
}
deleteDocument(e) {
const n = e.toString(), r = this.documentTrie.find(n);
return r && (r.state = K.Changed, this.documentTrie.delete(n)), r;
}
deleteDocuments(e) {
const n = e.toString(), r = this.documentTrie.findAll(n);
for (const i of r)
i.state = K.Changed;
return this.documentTrie.delete(n), r;
}
}
const rr = Symbol("RefResolving");
class VR {
constructor(e) {
this.reflection = e.shared.AstReflection, this.langiumDocuments = () => e.shared.workspace.LangiumDocuments, this.scopeProvider = e.references.ScopeProvider, this.astNodeLocator = e.workspace.AstNodeLocator, this.profiler = e.shared.profilers.LangiumProfiler, this.languageId = e.LanguageMetaData.languageId;
}
async link(e, n = ge.None) {
var r;
if ((r = this.profiler) != null && r.isActive("linking")) {
const i = this.profiler.createTask("linking", this.languageId);
i.start();
try {
for (const s of Zt(e.parseResult.value))
await He(n), ia(s).forEach((a) => {
const o = `${s.$type}:${a.property}`;
i.startSubTask(o);
try {
this.doLink(a, e);
} finally {
i.stopSubTask(o);
}
});
} finally {
i.stop();
}
} else
for (const i of Zt(e.parseResult.value))
await He(n), ia(i).forEach((s) => this.doLink(s, e));
}
doLink(e, n) {
const r = e.reference;
if ("_ref" in r && r._ref === void 0) {
r._ref = rr;
try {
const i = this.getCandidate(e);
if (Ri(i))
r._ref = i;
else {
r._nodeDescription = i;
const s = this.loadAstNode(i);
r._ref = s ?? this.createLinkingError(e, i);
}
} catch (i) {
console.error(`An error occurred while resolving reference to '${r.$refText}':`, i);
const s = i.message ?? String(i);
r._ref = {
info: e,
message: `An error occurred while resolving reference to '${r.$refText}': ${s}`
};
}
n.references.push(r);
} else if ("_items" in r && r._items === void 0) {
r._items = rr;
try {
const i = this.getCandidates(e), s = [];
if (Ri(i))
r._linkingError = i;
else
for (const a of i) {
const o = this.loadAstNode(a);
o && s.push({ ref: o, $nodeDescription: a });
}
r._items = s;
} catch (i) {
r._linkingError = {
info: e,
message: `An error occurred while resolving reference to '${r.$refText}': ${i}`
}, r._items = [];
}
n.references.push(r);
}
}
unlink(e) {
for (const n of e.references)
"_ref" in n ? (n._ref = void 0, delete n._nodeDescription) : "_items" in n && (n._items = void 0, delete n._linkingError);
e.references = [];
}
getCandidate(e) {
return this.scopeProvider.getScope(e).getElement(e.reference.$refText) ?? this.createLinkingError(e);
}
getCandidates(e) {
const r = this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct((i) => `${i.documentUri}#${i.path}`).toArray();
return r.length > 0 ? r : this.createLinkingError(e);
}
buildReference(e, n, r, i) {
const s = this, a = {
$refNode: r,
$refText: i,
_ref: void 0,
get ref() {
if (We(this._ref))
return this._ref;
if (mm(this._nodeDescription)) {
const o = s.loadAstNode(this._nodeDescription);
this._ref = o ?? s.createLinkingError({ reference: a, container: e, property: n }, this._nodeDescription);
} else if (this._ref === void 0) {
this._ref = rr;
const o = zs(e).$document, c = s.getLinkedNode({ reference: a, container: e, property: n });
if (c.error && o && o.state < K.ComputedScopes)
return this._ref = void 0;
this._ref = c.node ?? c.error, this._nodeDescription = c.descr, o == null || o.references.push(this);
} else this._ref === rr && s.throwCyclicReferenceError(e, n, i);
return We(this._ref) ? this._ref : void 0;
},
get $nodeDescription() {
return this._nodeDescription;
},
get error() {
return Ri(this._ref) ? this._ref : void 0;
}
};
return a;
}
buildMultiReference(e, n, r, i) {
const s = this, a = {
$refNode: r,
$refText: i,
_items: void 0,
get items() {
if (Array.isArray(this._items))
return this._items;
if (this._items === void 0) {
this._items = rr;
const o = zs(e).$document, c = s.getCandidates({
reference: a,
container: e,
property: n
}), l = [];
if (Ri(c))
this._linkingError = c;
else
for (const u of c) {
const f = s.loadAstNode(u);
f && l.push({ ref: f, $nodeDescription: u });
}
this._items = l, o == null || o.references.push(this);
} else this._items === rr && s.throwCyclicReferenceError(e, n, i);
return Array.isArray(this._items) ? this._items : [];
},
get error() {
if (this._linkingError)
return this._linkingError;
if (!(this.items.length > 0))
return this._linkingError = s.createLinkingError({ reference: a, container: e, property: n });
}
};
return a;
}
throwCyclicReferenceError(e, n, r) {
throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${n} (symbol '${r}')`);
}
getLinkedNode(e) {
try {
const n = this.getCandidate(e);
if (Ri(n))
return { error: n };
const r = this.loadAstNode(n);
return r ? { node: r, descr: n } : {
descr: n,
error: this.createLinkingError(e, n)
};
} catch (n) {
console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`, n);
const r = n.message ?? String(n);
return {
error: {
info: e,
message: `An error occurred while resolving reference to '${e.reference.$refText}': ${r}`
}
};
}
}
loadAstNode(e) {
if (e.node)
return e.node;
const n = this.langiumDocuments().getDocument(e.documentUri);
if (n)
return this.astNodeLocator.getAstNode(n.parseResult.value, e.path);
}
createLinkingError(e, n) {
const r = zs(e.container).$document;
r && r.state < K.ComputedScopes && console.warn(`Attempted reference resolution before document reached ComputedScopes state (${r.uri}).`);
const i = this.reflection.getReferenceType(e);
return {
info: e,
message: `Could not resolve reference to ${i} named '${e.reference.$refText}'.`,
targetDescription: n
};
}
}
function KR(t) {
return typeof t.name == "string";
}
class HR {
getName(e) {
if (KR(e))
return e.name;
}
getNameNode(e) {
return Yf(e.$cstNode, "name");
}
}
class YR {
constructor(e) {
this.nameProvider = e.references.NameProvider, this.index = e.shared.workspace.IndexManager, this.nodeLocator = e.workspace.AstNodeLocator, this.documents = e.shared.workspace.LangiumDocuments, this.hasMultiReference = Zt(e.Grammar).some((n) => Ma(n) && n.isMulti);
}
findDeclarations(e) {
if (e) {
const n = ag(e), r = e.astNode;
if (n && r) {
const i = r[n.feature];
if (Ct(i) || hn(i))
return Jl(i);
if (Array.isArray(i)) {
for (const s of i)
if ((Ct(s) || hn(s)) && s.$refNode && s.$refNode.offset <= e.offset && s.$refNode.end >= e.end)
return Jl(s);
}
}
if (r) {
const i = this.nameProvider.getNameNode(r);
if (i && (i === e || Mm(e, i)))
return this.getSelfNodes(r);
}
}
return [];
}
/**
* Returns all self-references for the specified node.
* Since the node can be part of a multi-reference, this method returns all nodes that are part of the same multi-reference.
*/
getSelfNodes(e) {
if (this.hasMultiReference) {
const n = this.index.findAllReferences(e, this.nodeLocator.getAstNodePath(e)), r = this.getNodeFromReferenceDescription(n.head());
if (r) {
for (const i of ia(r))
if (hn(i.reference) && i.reference.items.some((s) => s.ref === e))
return i.reference.items.map((s) => s.ref);
}
return [e];
} else
return [e];
}
getNodeFromReferenceDescription(e) {
if (!e)
return;
const n = this.documents.getDocument(e.sourceUri);
if (n)
return this.nodeLocator.getAstNode(n.parseResult.value, e.sourcePath);
}
findDeclarationNodes(e) {
const n = this.findDeclarations(e), r = [];
for (const i of n) {
const s = this.nameProvider.getNameNode(i) ?? i.$cstNode;
s && r.push(s);
}
return r;
}
findReferences(e, n) {
const r = [];
n.includeDeclaration && r.push(...this.getSelfReferences(e));
let i = this.index.findAllReferences(e, this.nodeLocator.getAstNodePath(e));
return n.documentUri && (i = i.filter((s) => ct.equals(s.sourceUri, n.documentUri))), r.push(...i), pe(r);
}
getSelfReferences(e) {
const n = this.getSelfNodes(e), r = [];
for (const i of n) {
const s = this.nameProvider.getNameNode(i);
if (s) {
const a = Qt(i), o = this.nodeLocator.getAstNodePath(i);
r.push({
sourceUri: a.uri,
sourcePath: o,
targetUri: a.uri,
targetPath: o,
segment: aa(s),
local: !0
});
}
}
return r;
}
}
class Zi {
constructor(e) {
if (this.map = /* @__PURE__ */ new Map(), e)
for (const [n, r] of e)
this.add(n, r);
}
/**
* The total number of values in the multimap.
*/
get size() {
return _o.sum(pe(this.map.values()).map((e) => e.length));
}
/**
* Clear all entries in the multimap.
*/
clear() {
this.map.clear();
}
/**
* Operates differently depending on whether a `value` is given:
* * With a value, this method deletes the specific key / value pair from the multimap.
* * Without a value, all values associated with the given key are deleted.
*
* @returns `true` if a value existed and has been removed, or `false` if the specified
* key / value does not exist.
*/
delete(e, n) {
if (n === void 0)
return this.map.delete(e);
{
const r = this.map.get(e);
if (r) {
const i = r.indexOf(n);
if (i >= 0)
return r.length === 1 ? this.map.delete(e) : r.splice(i, 1), !0;
}
return !1;
}
}
/**
* Returns an array of all values associated with the given key. If no value exists,
* an empty array is returned.
*
* _Note:_ The returned array is assumed not to be modified. Use the `set` method to add a
* value and `delete` to remove a value from the multimap.
*/
get(e) {
return this.map.get(e) ?? [];
}
/**
* Returns a stream of all values associated with the given key. If no value exists,
* {@link EMPTY_STREAM} is returned.
*/
getStream(e) {
const n = this.map.get(e);
return n ? pe(n) : Ff;
}
/**
* Operates differently depending on whether a `value` is given:
* * With a value, this method returns `true` if the specific key / value pair is present in the multimap.
* * Without a value, this method returns `true` if the given key is present in the multimap.
*/
has(e, n) {
if (n === void 0)
return this.map.has(e);
{
const r = this.map.get(e);
return r ? r.indexOf(n) >= 0 : !1;
}
}
/**
* Add the given key / value pair to the multimap.
*/
add(e, n) {
return this.map.has(e) ? this.map.get(e).push(n) : this.map.set(e, [n]), this;
}
/**
* Add the given set of key / value pairs to the multimap.
*/
addAll(e, n) {
return this.map.has(e) ? this.map.get(e).push(...n) : this.map.set(e, Array.from(n)), this;
}
/**
* Invokes the given callback function for every key / value pair in the multimap.
*/
forEach(e) {
this.map.forEach((n, r) => n.forEach((i) => e(i, r, this)));
}
/**
* Returns an iterator of key, value pairs for every entry in the map.
*/
[Symbol.iterator]() {
return this.entries().iterator();
}
/**
* Returns a stream of key, value pairs for every entry in the map.
*/
entries() {
return pe(this.map.entries()).flatMap(([e, n]) => n.map((r) => [e, r]));
}
/**
* Returns a stream of keys in the map.
*/
keys() {
return pe(this.map.keys());
}
/**
* Returns a stream of values in the map.
*/
values() {
return pe(this.map.values()).flat();
}
/**
* Returns a stream of key, value set pairs for every key in the map.
*/
entriesGroupedByKey() {
return pe(this.map.entries());
}
}
class Uu {
get size() {
return this.map.size;
}
constructor(e) {
if (this.map = /* @__PURE__ */ new Map(), this.inverse = /* @__PURE__ */ new Map(), e)
for (const [n, r] of e)
this.set(n, r);
}
clear() {
this.map.clear(), this.inverse.clear();
}
set(e, n) {
return this.map.set(e, n), this.inverse.set(n, e), this;
}
get(e) {
return this.map.get(e);
}
getKey(e) {
return this.inverse.get(e);
}
delete(e) {
const n = this.map.get(e);
return n !== void 0 ? (this.map.delete(e), this.inverse.delete(n), !0) : !1;
}
}
class XR {
constructor(e) {
this.nameProvider = e.references.NameProvider, this.descriptions = e.workspace.AstNodeDescriptionProvider;
}
async collectExportedSymbols(e, n = ge.None) {
return this.collectExportedSymbolsForNode(e.parseResult.value, e, void 0, n);
}
/**
* Creates {@link AstNodeDescription AstNodeDescriptions} for the given {@link AstNode parentNode} and its children.
* The list of children to be considered is determined by the function parameter {@link children}.
* By default only the direct children of {@link parentNode} are visited, nested nodes are not exported.
*
* @param parentNode AST node to be exported, i.e., of which an {@link AstNodeDescription} shall be added to the returned list.
* @param document The document containing the AST node to be exported.
* @param children A function called with {@link parentNode} as single argument and returning an {@link Iterable} supplying the children to be visited, which must be directly or transitively contained in {@link parentNode}.
* @param cancelToken Indicates when to cancel the current operation.
* @throws `OperationCancelled` if a user action occurs during execution.
* @returns A list of {@link AstNodeDescription AstNodeDescriptions} to be published to index.
*/
async collectExportedSymbolsForNode(e, n, r = Cl, i = ge.None) {
const s = [];
this.addExportedSymbol(e, s, n);
for (const a of r(e))
await He(i), this.addExportedSymbol(a, s, n);
return s;
}
/**
* Adds a single node to the list of exports if it has a name. Override this method to change how
* symbols are exported, e.g. by modifying their exported name.
*/
addExportedSymbol(e, n, r) {
const i = this.nameProvider.getName(e);
i && n.push(this.descriptions.createDescription(e, i, r));
}
// --- local symbols gathering ---
async collectLocalSymbols(e, n = ge.None) {
const r = e.parseResult.value, i = new Zi();
for (const s of is(r))
await He(n), this.addLocalSymbol(s, e, i);
return i;
}
/**
* Adds a single node to the local symbols of its containing document if it has a name.
* The default implementation makes the node visible in the subtree of its container if it does have a container.
* Override this method to change this, e.g. by increasing the visibility to a higher level in the AST.
*/
addLocalSymbol(e, n, r) {
const i = e.$container;
if (i) {
const s = this.nameProvider.getName(e);
s && r.add(i, this.descriptions.createDescription(e, s, n));
}
}
}
class ju {
constructor(e, n, r) {
this.elements = e, this.outerScope = n, this.caseInsensitive = (r == null ? void 0 : r.caseInsensitive) ?? !1, this.concatOuterScope = (r == null ? void 0 : r.concatOuterScope) ?? !0;
}
getAllElements() {
return this.outerScope ? this.elements.concat(this.outerScope.getAllElements()) : this.elements;
}
getElement(e) {
const n = this.caseInsensitive ? e.toLowerCase() : e, r = this.caseInsensitive ? this.elements.find((i) => i.name.toLowerCase() === n) : this.elements.find((i) => i.name === e);
if (r)
return r;
if (this.outerScope)
return this.outerScope.getElement(e);
}
getElements(e) {
const n = this.caseInsensitive ? e.toLowerCase() : e, r = this.caseInsensitive ? this.elements.filter((i) => i.name.toLowerCase() === n) : this.elements.filter((i) => i.name === e);
return (this.concatOuterScope || r.isEmpty()) && this.outerScope ? r.concat(this.outerScope.getElements(e)) : r;
}
}
class JR {
constructor(e, n, r) {
this.elements = new Zi(), this.caseInsensitive = (r == null ? void 0 : r.caseInsensitive) ?? !1, this.concatOuterScope = (r == null ? void 0 : r.concatOuterScope) ?? !0;
for (const i of e) {
const s = this.caseInsensitive ? i.name.toLowerCase() : i.name;
this.elements.add(s, i);
}
this.outerScope = n;
}
getElement(e) {
const n = this.caseInsensitive ? e.toLowerCase() : e, r = this.elements.get(n)[0];
if (r)
return r;
if (this.outerScope)
return this.outerScope.getElement(e);
}
getElements(e) {
const n = this.caseInsensitive ? e.toLowerCase() : e, r = this.elements.get(n);
return (this.concatOuterScope || r.length === 0) && this.outerScope ? pe(r).concat(this.outerScope.getElements(e)) : pe(r);
}
getAllElements() {
let e = pe(this.elements.values());
return this.outerScope && (e = e.concat(this.outerScope.getAllElements())), e;
}
}
class op {
constructor() {
this.toDispose = [], this.isDisposed = !1;
}
onDispose(e) {
this.toDispose.push(e);
}
dispose() {
this.throwIfDisposed(), this.clear(), this.isDisposed = !0, this.toDispose.forEach((e) => e.dispose());
}
throwIfDisposed() {
if (this.isDisposed)
throw new Error("This cache has already been disposed");
}
}
class QR extends op {
constructor() {
super(...arguments), this.cache = /* @__PURE__ */ new Map();
}
has(e) {
return this.throwIfDisposed(), this.cache.has(e);
}
set(e, n) {
this.throwIfDisposed(), this.cache.set(e, n);
}
get(e, n) {
if (this.throwIfDisposed(), this.cache.has(e))
return this.cache.get(e);
if (n) {
const r = n();
return this.cache.set(e, r), r;
} else
return;
}
delete(e) {
return this.throwIfDisposed(), this.cache.delete(e);
}
clear() {
this.throwIfDisposed(), this.cache.clear();
}
}
class ZR extends op {
constructor(e) {
super(), this.cache = /* @__PURE__ */ new Map(), this.converter = e ?? ((n) => n);
}
has(e, n) {
return this.throwIfDisposed(), this.cacheForContext(e).has(n);
}
set(e, n, r) {
this.throwIfDisposed(), this.cacheForContext(e).set(n, r);
}
get(e, n, r) {
this.throwIfDisposed();
const i = this.cacheForContext(e);
if (i.has(n))
return i.get(n);
if (r) {
const s = r();
return i.set(n, s), s;
} else
return;
}
delete(e, n) {
return this.throwIfDisposed(), this.cacheForContext(e).delete(n);
}
clear(e) {
if (this.throwIfDisposed(), e) {
const n = this.converter(e);
this.cache.delete(n);
} else
this.cache.clear();
}
cacheForContext(e) {
const n = this.converter(e);
let r = this.cache.get(n);
return r || (r = /* @__PURE__ */ new Map(), this.cache.set(n, r)), r;
}
}
class ev extends QR {
/**
* Creates a new workspace cache.
*
* @param sharedServices Service container instance to hook into document lifecycle events.
* @param state Optional document state on which the cache should evict.
* If not provided, the cache will evict on `DocumentBuilder#onUpdate`.
* *Deleted* documents are considered in both cases.
*/
constructor(e, n) {
super(), n ? (this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(n, () => {
this.clear();
})), this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r, i) => {
i.length > 0 && this.clear();
}))) : this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(() => {
this.clear();
}));
}
}
class tv {
constructor(e) {
this.reflection = e.shared.AstReflection, this.nameProvider = e.references.NameProvider, this.descriptions = e.workspace.AstNodeDescriptionProvider, this.indexManager = e.shared.workspace.IndexManager, this.globalScopeCache = new ev(e.shared);
}
getScope(e) {
const n = [], r = this.reflection.getReferenceType(e), i = Qt(e.container).localSymbols;
if (i) {
let a = e.container;
do
i.has(a) && n.push(i.getStream(a).filter((o) => this.reflection.isSubtype(o.type, r))), a = a.$container;
while (a);
}
let s = this.getGlobalScope(r, e);
for (let a = n.length - 1; a >= 0; a--)
s = this.createScope(n[a], s);
return s;
}
/**
* Create a scope for the given collection of AST node descriptions.
*/
createScope(e, n, r) {
return new ju(pe(e), n, r);
}
/**
* Create a scope for the given collection of AST nodes, which need to be transformed into respective
* descriptions first. This is done using the `NameProvider` and `AstNodeDescriptionProvider` services.
*/
createScopeForNodes(e, n, r) {
const i = pe(e).map((s) => {
const a = this.nameProvider.getName(s);
if (a)
return this.descriptions.createDescription(s, a);
}).nonNullable();
return new ju(i, n, r);
}
/**
* Create a global scope filtered for the given reference type.
*/
getGlobalScope(e, n) {
return this.globalScopeCache.get(e, () => new JR(this.indexManager.allElements(e)));
}
}
function nv(t) {
return typeof t.$comment == "string";
}
function zu(t) {
return typeof t == "object" && !!t && ("$ref" in t || "$error" in t);
}
class rv {
constructor(e) {
this.ignoreProperties = /* @__PURE__ */ new Set(["$container", "$containerProperty", "$containerIndex", "$document", "$cstNode"]), this.langiumDocuments = e.shared.workspace.LangiumDocuments, this.astNodeLocator = e.workspace.AstNodeLocator, this.nameProvider = e.references.NameProvider, this.commentProvider = e.documentation.CommentProvider;
}
serialize(e, n) {
const r = n ?? {}, i = n == null ? void 0 : n.replacer, s = (o, c) => this.replacer(o, c, r), a = i ? (o, c) => i(o, c, s) : s;
try {
return this.currentDocument = Qt(e), JSON.stringify(e, a, n == null ? void 0 : n.space);
} finally {
this.currentDocument = void 0;
}
}
deserialize(e, n) {
const r = n ?? {}, i = JSON.parse(e);
return this.linkNode(i, i, r), i;
}
replacer(e, n, { refText: r, sourceText: i, textRegions: s, comments: a, uriConverter: o }) {
var c, l, u;
if (!this.ignoreProperties.has(e))
if (Ct(n)) {
const f = n.ref, m = r ? n.$refText : void 0;
if (f) {
const g = Qt(f);
let A = "";
this.currentDocument && this.currentDocument !== g && (o ? A = o(g.uri, f) : A = g.uri.toString());
const N = this.astNodeLocator.getAstNodePath(f);
return {
$ref: `${A}#${N}`,
$refText: m
};
} else
return {
$error: ((c = n.error) == null ? void 0 : c.message) ?? "Could not resolve reference",
$refText: m
};
} else if (hn(n)) {
const f = r ? n.$refText : void 0, m = [];
for (const g of n.items) {
const A = g.ref, N = Qt(g.ref);
let $ = "";
this.currentDocument && this.currentDocument !== N && (o ? $ = o(N.uri, A) : $ = N.uri.toString());
const w = this.astNodeLocator.getAstNodePath(A);
m.push(`${$}#${w}`);
}
return {
$refs: m,
$refText: f
};
} else if (We(n)) {
let f;
if (s && (f = this.addAstNodeRegionWithAssignmentsTo({ ...n }), (!e || n.$document) && (f != null && f.$textRegion) && (f.$textRegion.documentURI = (l = this.currentDocument) == null ? void 0 : l.uri.toString())), i && !e && (f ?? (f = { ...n }), f.$sourceText = (u = n.$cstNode) == null ? void 0 : u.text), a) {
f ?? (f = { ...n });
const m = this.commentProvider.getComment(n);
m && (f.$comment = m.replace(/\r/g, ""));
}
return f ?? n;
} else
return n;
}
addAstNodeRegionWithAssignmentsTo(e) {
const n = (r) => ({
offset: r.offset,
end: r.end,
length: r.length,
range: r.range
});
if (e.$cstNode) {
const r = e.$textRegion = n(e.$cstNode), i = r.assignments = {};
return Object.keys(e).filter((s) => !s.startsWith("$")).forEach((s) => {
const a = rg(e.$cstNode, s).map(n);
a.length !== 0 && (i[s] = a);
}), e;
}
}
linkNode(e, n, r, i, s, a) {
for (const [c, l] of Object.entries(e))
if (Array.isArray(l))
for (let u = 0; u < l.length; u++) {
const f = l[u];
zu(f) ? l[u] = this.reviveReference(e, c, n, f, r) : We(f) && this.linkNode(f, n, r, e, c, u);
}
else zu(l) ? e[c] = this.reviveReference(e, c, n, l, r) : We(l) && this.linkNode(l, n, r, e, c);
const o = e;
o.$container = i, o.$containerProperty = s, o.$containerIndex = a;
}
reviveReference(e, n, r, i, s) {
let a = i.$refText, o = i.$error, c;
if (i.$ref) {
const l = this.getRefNode(r, i.$ref, s.uriConverter);
if (We(l))
return a || (a = this.nameProvider.getName(l)), {
$refText: a ?? "",
ref: l
};
o = l;
} else if (i.$refs) {
const l = [];
for (const u of i.$refs) {
const f = this.getRefNode(r, u, s.uriConverter);
We(f) && l.push({ ref: f });
}
if (l.length === 0)
c = {
$refText: a ?? "",
items: l
}, o ?? (o = "Could not resolve multi-reference");
else
return {
$refText: a ?? "",
items: l
};
}
if (o)
return c ?? (c = {
$refText: a ?? "",
ref: void 0
}), c.error = {
info: {
container: e,
property: n,
reference: c
},
message: o
}, c;
}
getRefNode(e, n, r) {
try {
const i = n.indexOf("#");
if (i === 0) {
const c = this.astNodeLocator.getAstNode(e, n.substring(1));
return c || "Could not resolve path: " + n;
}
if (i < 0) {
const c = r ? r(n) : wt.parse(n), l = this.langiumDocuments.getDocument(c);
return l ? l.parseResult.value : "Could not find document for URI: " + n;
}
const s = r ? r(n.substring(0, i)) : wt.parse(n.substring(0, i)), a = this.langiumDocuments.getDocument(s);
if (!a)
return "Could not find document for URI: " + n;
if (i === n.length - 1)
return a.parseResult.value;
const o = this.astNodeLocator.getAstNode(a.parseResult.value, n.substring(i + 1));
return o || "Could not resolve URI: " + n;
} catch (i) {
return String(i);
}
}
}
class iv {
/**
* @deprecated Since 3.1.0. Use the new `fileExtensionMap` (or `languageIdMap`) property instead.
*/
get map() {
return this.fileExtensionMap;
}
constructor(e) {
this.languageIdMap = /* @__PURE__ */ new Map(), this.fileExtensionMap = /* @__PURE__ */ new Map(), this.fileNameMap = /* @__PURE__ */ new Map(), this.textDocuments = e == null ? void 0 : e.workspace.TextDocuments;
}
register(e) {
const n = e.LanguageMetaData;
for (const r of n.fileExtensions)
this.fileExtensionMap.has(r) && console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${n.languageId}'.`), this.fileExtensionMap.set(r, e);
if (n.fileNames)
for (const r of n.fileNames)
this.fileNameMap.has(r) && console.warn(`The file name ${r} is used by multiple languages. It is now assigned to '${n.languageId}'.`), this.fileNameMap.set(r, e);
this.languageIdMap.set(n.languageId, e);
}
getServices(e) {
var a, o;
if (this.languageIdMap.size === 0)
throw new Error("The service registry is empty. Use `register` to register the services of a language.");
const n = (o = (a = this.textDocuments) == null ? void 0 : a.get(e)) == null ? void 0 : o.languageId;
if (n !== void 0) {
const c = this.languageIdMap.get(n);
if (c)
return c;
}
const r = ct.extname(e), i = ct.basename(e), s = this.fileNameMap.get(i) ?? this.fileExtensionMap.get(r);
if (!s)
throw n ? new Error(`The service registry contains no services for the extension '${r}' for language '${n}'.`) : new Error(`The service registry contains no services for the extension '${r}'.`);
return s;
}
hasServices(e) {
try {
return this.getServices(e), !0;
} catch {
return !1;
}
}
get all() {
return Array.from(this.languageIdMap.values());
}
}
function Fi(t) {
return { code: t };
}
var sl;
(function(t) {
t.defaults = ["fast", "slow", "built-in"], t.all = t.defaults;
})(sl || (sl = {}));
class sv {
constructor(e) {
this.entries = new Zi(), this.knownCategories = new Set(sl.defaults), this.entriesBefore = [], this.entriesAfter = [], this.reflection = e.shared.AstReflection;
}
/**
* Register a set of validation checks. Each value in the record can be either a single validation check (i.e. a function)
* or an array of validation checks.
*
* @param checksRecord Set of validation checks to register.
* @param thisObj Optional object to be used as `this` when calling the validation check functions.
* @param category Optional category for the validation checks (defaults to `'fast'`).
*/
register(e, n = this, r = "fast") {
if (r === "built-in")
throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");
this.knownCategories.add(r);
for (const [i, s] of Object.entries(e)) {
const a = s;
if (Array.isArray(a))
for (const o of a) {
const c = {
check: this.wrapValidationException(o, n),
category: r
};
this.addEntry(i, c);
}
else if (typeof a == "function") {
const o = {
check: this.wrapValidationException(a, n),
category: r
};
this.addEntry(i, o);
} else
as();
}
}
wrapValidationException(e, n) {
return async (r, i, s) => {
await this.handleException(() => e.call(n, r, i, s), "An error occurred during validation", i, r);
};
}
async handleException(e, n, r, i) {
try {
await e();
} catch (s) {
if (Ha(s))
throw s;
console.error(`${n}:`, s), s instanceof Error && s.stack && console.error(s.stack);
const a = s instanceof Error ? s.message : String(s);
r("error", `${n}: ${a}`, { node: i });
}
}
addEntry(e, n) {
if (e === "AstNode") {
this.entries.add("AstNode", n);
return;
}
for (const r of this.reflection.getAllSubTypes(e))
this.entries.add(r, n);
}
getChecks(e, n) {
let r = pe(this.entries.get(e)).concat(this.entries.get("AstNode"));
return n && (r = r.filter((i) => n.includes(i.category))), r.map((i) => i.check);
}
/**
* Register logic which will be executed once before validating all the nodes of an AST/Langium document.
* This helps to prepare or initialize some information which are required or reusable for the following checks on the AstNodes.
*
* As an example, for validating unique fully-qualified names of nodes in the AST,
* here the map for mapping names to nodes could be established.
* During the usual checks on the nodes, they are put into this map with their name.
*
* Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.
* Therefore it is recommended to clear stored information
* _before_ validating an AST to validate each AST unaffected from other ASTs
* AND _after_ validating the AST to free memory by information which are no longer used.
*
* @param checkBefore a set-up function which will be called once before actually validating an AST
* @param thisObj Optional object to be used as `this` when calling the validation check functions.
*/
registerBeforeDocument(e, n = this) {
this.entriesBefore.push(this.wrapPreparationException(e, "An error occurred during set-up of the validation", n));
}
/**
* Register logic which will be executed once after validating all the nodes of an AST/Langium document.
* This helps to finally evaluate information which are collected during the checks on the AstNodes.
*
* As an example, for validating unique fully-qualified names of nodes in the AST,
* here the map with all the collected nodes and their names is checked
* and validation hints are created for all nodes with the same name.
*
* Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.
* Therefore it is recommended to clear stored information
* _before_ validating an AST to validate each AST unaffected from other ASTs
* AND _after_ validating the AST to free memory by information which are no longer used.
*
* @param checkBefore a set-up function which will be called once before actually validating an AST
* @param thisObj Optional object to be used as `this` when calling the validation check functions.
*/
registerAfterDocument(e, n = this) {
this.entriesAfter.push(this.wrapPreparationException(e, "An error occurred during tear-down of the validation", n));
}
wrapPreparationException(e, n, r) {
return async (i, s, a, o) => {
await this.handleException(() => e.call(r, i, s, a, o), n, s, i);
};
}
get checksBefore() {
return this.entriesBefore;
}
get checksAfter() {
return this.entriesAfter;
}
getAllValidationCategories(e) {
return this.knownCategories;
}
}
const av = Object.freeze({
validateNode: !0,
validateChildren: !0
});
class ov {
constructor(e) {
this.validationRegistry = e.validation.ValidationRegistry, this.metadata = e.LanguageMetaData, this.profiler = e.shared.profilers.LangiumProfiler, this.languageId = e.LanguageMetaData.languageId;
}
async validateDocument(e, n = {}, r = ge.None) {
const i = e.parseResult, s = [];
if (await He(r), (!n.categories || n.categories.includes("built-in")) && (this.processLexingErrors(i, s, n), n.stopAfterLexingErrors && s.some((a) => {
var o;
return ((o = a.data) == null ? void 0 : o.code) === St.LexingError;
}) || (this.processParsingErrors(i, s, n), n.stopAfterParsingErrors && s.some((a) => {
var o;
return ((o = a.data) == null ? void 0 : o.code) === St.ParsingError;
})) || (this.processLinkingErrors(e, s, n), n.stopAfterLinkingErrors && s.some((a) => {
var o;
return ((o = a.data) == null ? void 0 : o.code) === St.LinkingError;
}))))
return s;
try {
s.push(...await this.validateAst(i.value, n, r));
} catch (a) {
if (Ha(a))
throw a;
console.error("An error occurred during validation:", a);
}
return await He(r), s;
}
processLexingErrors(e, n, r) {
var s;
const i = [...e.lexerErrors, ...((s = e.lexerReport) == null ? void 0 : s.diagnostics) ?? []];
for (const a of i) {
const o = a.severity ?? "error", c = {
severity: Ro(o),
range: {
start: {
line: a.line - 1,
character: a.column - 1
},
end: {
line: a.line - 1,
character: a.column + a.length - 1
}
},
message: a.message,
data: lv(o),
source: this.getSource()
};
n.push(c);
}
}
processParsingErrors(e, n, r) {
for (const i of e.parserErrors) {
let s;
if (isNaN(i.token.startOffset)) {
if ("previousToken" in i) {
const a = i.previousToken;
if (isNaN(a.startOffset)) {
const o = { line: 0, character: 0 };
s = { start: o, end: o };
} else {
const o = { line: a.endLine - 1, character: a.endColumn };
s = { start: o, end: o };
}
}
} else
s = Go(i.token);
if (s) {
const a = {
severity: Ro("error"),
range: s,
message: i.message,
data: Fi(St.ParsingError),
source: this.getSource()
};
n.push(a);
}
}
}
processLinkingErrors(e, n, r) {
var i;
for (const s of e.references) {
const a = s.error;
if (a) {
const o = {
node: a.info.container,
range: (i = s.$refNode) == null ? void 0 : i.range,
property: a.info.property,
index: a.info.index,
data: {
code: St.LinkingError,
containerType: a.info.container.$type,
property: a.info.property,
refText: a.info.reference.$refText
}
};
n.push(this.toDiagnostic("error", a.message, o));
}
}
}
async validateAst(e, n, r = ge.None) {
const i = [], s = (a, o, c) => {
i.push(this.toDiagnostic(a, o, c));
};
return await this.validateAstBefore(e, n, s, r), await this.validateAstNodes(e, n, s, r), await this.validateAstAfter(e, n, s, r), i;
}
async validateAstBefore(e, n, r, i = ge.None) {
const s = this.validationRegistry.checksBefore;
for (const a of s)
await He(i), await a(e, r, n.categories ?? [], i);
}
async validateAstNodes(e, n, r, i = ge.None) {
var s;
if ((s = this.profiler) != null && s.isActive("validating")) {
const a = this.profiler.createTask("validating", this.languageId);
a.start();
try {
const o = Zt(e).iterator();
for (const c of o) {
a.startSubTask(c.$type);
const l = this.validateSingleNodeOptions(c, n);
if (l.validateNode)
try {
const u = this.validationRegistry.getChecks(c.$type, n.categories);
for (const f of u)
await f(c, r, i);
} finally {
a.stopSubTask(c.$type);
}
l.validateChildren || o.prune();
}
} finally {
a.stop();
}
} else {
const a = Zt(e).iterator();
for (const o of a) {
await He(i);
const c = this.validateSingleNodeOptions(o, n);
if (c.validateNode) {
const l = this.validationRegistry.getChecks(o.$type, n.categories);
for (const u of l)
await u(o, r, i);
}
c.validateChildren || a.prune();
}
}
}
validateSingleNodeOptions(e, n) {
return av;
}
async validateAstAfter(e, n, r, i = ge.None) {
const s = this.validationRegistry.checksAfter;
for (const a of s)
await He(i), await a(e, r, n.categories ?? [], i);
}
toDiagnostic(e, n, r) {
return {
message: n,
range: cv(r),
severity: Ro(e),
code: r.code,
codeDescription: r.codeDescription,
tags: r.tags,
relatedInformation: r.relatedInformation,
data: r.data,
source: this.getSource()
};
}
getSource() {
return this.metadata.languageId;
}
}
function cv(t) {
if (t.range)
return t.range;
let e;
return typeof t.property == "string" ? e = Yf(t.node.$cstNode, t.property, t.index) : typeof t.keyword == "string" && (e = ig(t.node.$cstNode, t.keyword, t.index)), e ?? (e = t.node.$cstNode), e ? e.range : {
start: { line: 0, character: 0 },
end: { line: 0, character: 0 }
};
}
function Ro(t) {
switch (t) {
case "error":
return 1;
case "warning":
return 2;
case "info":
return 3;
case "hint":
return 4;
default:
throw new Error("Invalid diagnostic severity: " + t);
}
}
function lv(t) {
switch (t) {
case "error":
return Fi(St.LexingError);
case "warning":
return Fi(St.LexingWarning);
case "info":
return Fi(St.LexingInfo);
case "hint":
return Fi(St.LexingHint);
default:
throw new Error("Invalid diagnostic severity: " + t);
}
}
var St;
(function(t) {
t.LexingError = "lexing-error", t.LexingWarning = "lexing-warning", t.LexingInfo = "lexing-info", t.LexingHint = "lexing-hint", t.ParsingError = "parsing-error", t.LinkingError = "linking-error";
})(St || (St = {}));
class uv {
constructor(e) {
this.astNodeLocator = e.workspace.AstNodeLocator, this.nameProvider = e.references.NameProvider;
}
createDescription(e, n, r) {
const i = r ?? Qt(e);
n ?? (n = this.nameProvider.getName(e));
const s = this.astNodeLocator.getAstNodePath(e);
if (!n)
throw new Error(`Node at path ${s} has no name.`);
let a;
const o = () => a ?? (a = aa(this.nameProvider.getNameNode(e) ?? e.$cstNode));
return {
node: e,
name: n,
get nameSegment() {
return o();
},
selectionSegment: aa(e.$cstNode),
type: e.$type,
documentUri: i.uri,
path: s
};
}
}
class dv {
constructor(e) {
this.nodeLocator = e.workspace.AstNodeLocator;
}
async createDescriptions(e, n = ge.None) {
const r = [], i = e.parseResult.value;
for (const s of Zt(i))
await He(n), ia(s).forEach((a) => {
a.reference.error || r.push(...this.createInfoDescriptions(a));
});
return r;
}
createInfoDescriptions(e) {
const n = e.reference;
if (n.error || !n.$refNode)
return [];
let r = [];
Ct(n) && n.$nodeDescription ? r = [n.$nodeDescription] : hn(n) && (r = n.items.map((c) => c.$nodeDescription).filter((c) => c !== void 0));
const i = Qt(e.container).uri, s = this.nodeLocator.getAstNodePath(e.container), a = [], o = aa(n.$refNode);
for (const c of r)
a.push({
sourceUri: i,
sourcePath: s,
targetUri: c.documentUri,
targetPath: c.path,
segment: o,
local: ct.equals(c.documentUri, i)
});
return a;
}
}
class fv {
constructor() {
this.segmentSeparator = "/", this.indexSeparator = "@";
}
getAstNodePath(e) {
if (e.$container) {
const n = this.getAstNodePath(e.$container), r = this.getPathSegment(e);
return n + this.segmentSeparator + r;
}
return "";
}
getPathSegment({ $containerProperty: e, $containerIndex: n }) {
if (!e)
throw new Error("Missing '$containerProperty' in AST node.");
return n !== void 0 ? e + this.indexSeparator + n : e;
}
getAstNode(e, n) {
return n.split(this.segmentSeparator).reduce((i, s) => {
if (!i || s.length === 0)
return i;
const a = s.indexOf(this.indexSeparator);
if (a > 0) {
const o = s.substring(0, a), c = parseInt(s.substring(a + 1)), l = i[o];
return l == null ? void 0 : l[c];
}
return i[s];
}, e);
}
}
class hv {
constructor(e) {
this._ready = new Bl(), this.onConfigurationSectionUpdateEmitter = new rp(), this.settings = {}, this.workspaceConfig = !1, this.serviceRegistry = e.ServiceRegistry;
}
get ready() {
return this._ready.promise;
}
initialize(e) {
var n;
this.workspaceConfig = ((n = e.capabilities.workspace) == null ? void 0 : n.configuration) ?? !1;
}
async initialized(e) {
if (this.workspaceConfig) {
if (e.register) {
const n = this.serviceRegistry.all;
e.register({
// Listen to configuration changes for all languages
section: n.map((r) => this.toSectionName(r.LanguageMetaData.languageId))
});
}
if (e.fetchConfiguration) {
const n = this.serviceRegistry.all.map((i) => ({
// Fetch the configuration changes for all languages
section: this.toSectionName(i.LanguageMetaData.languageId)
})), r = await e.fetchConfiguration(n);
n.forEach((i, s) => {
this.updateSectionConfiguration(i.section, r[s]);
});
}
}
this._ready.resolve();
}
/**
* Updates the cached configurations using the `change` notification parameters.
*
* @param change The parameters of a change configuration notification.
* `settings` property of the change object could be expressed as `Record<string, Record<string, any>>`
*/
updateConfiguration(e) {
typeof e.settings != "object" || e.settings === null || Object.entries(e.settings).forEach(([n, r]) => {
this.updateSectionConfiguration(n, r), this.onConfigurationSectionUpdateEmitter.fire({ section: n, configuration: r });
});
}
updateSectionConfiguration(e, n) {
this.settings[e] = n;
}
/**
* Returns a configuration value stored for the given language.
*
* @param language The language id
* @param configuration Configuration name
*/
async getConfiguration(e, n) {
await this.ready;
const r = this.toSectionName(e);
if (this.settings[r])
return this.settings[r][n];
}
toSectionName(e) {
return `${e}`;
}
get onConfigurationSectionUpdate() {
return this.onConfigurationSectionUpdateEmitter.event;
}
}
var Gi = {}, Xn = {}, ql = {}, vo = {}, U = {}, Bu;
function cp() {
if (Bu) return U;
Bu = 1, Object.defineProperty(U, "__esModule", { value: !0 }), U.Message = U.NotificationType9 = U.NotificationType8 = U.NotificationType7 = U.NotificationType6 = U.NotificationType5 = U.NotificationType4 = U.NotificationType3 = U.NotificationType2 = U.NotificationType1 = U.NotificationType0 = U.NotificationType = U.RequestType9 = U.RequestType8 = U.RequestType7 = U.RequestType6 = U.RequestType5 = U.RequestType4 = U.RequestType3 = U.RequestType2 = U.RequestType1 = U.RequestType = U.RequestType0 = U.AbstractMessageSignature = U.ParameterStructures = U.ResponseError = U.ErrorCodes = void 0;
const t = _e;
var e;
(function(R) {
R.ParseError = -32700, R.InvalidRequest = -32600, R.MethodNotFound = -32601, R.InvalidParams = -32602, R.InternalError = -32603, R.jsonrpcReservedErrorRangeStart = -32099, R.serverErrorStart = -32099, R.MessageWriteError = -32099, R.MessageReadError = -32098, R.PendingResponseRejected = -32097, R.ConnectionInactive = -32096, R.ServerNotInitialized = -32002, R.UnknownErrorCode = -32001, R.jsonrpcReservedErrorRangeEnd = -32e3, R.serverErrorEnd = -32e3;
})(e || (U.ErrorCodes = e = {}));
class n extends Error {
constructor(p, S, y) {
super(S), this.code = t.number(p) ? p : e.UnknownErrorCode, this.data = y, Object.setPrototypeOf(this, n.prototype);
}
toJson() {
const p = {
code: this.code,
message: this.message
};
return this.data !== void 0 && (p.data = this.data), p;
}
}
U.ResponseError = n;
class r {
constructor(p) {
this.kind = p;
}
static is(p) {
return p === r.auto || p === r.byName || p === r.byPosition;
}
toString() {
return this.kind;
}
}
U.ParameterStructures = r, r.auto = new r("auto"), r.byPosition = new r("byPosition"), r.byName = new r("byName");
class i {
constructor(p, S) {
this.method = p, this.numberOfParams = S;
}
get parameterStructures() {
return r.auto;
}
}
U.AbstractMessageSignature = i;
class s extends i {
constructor(p) {
super(p, 0);
}
}
U.RequestType0 = s;
class a extends i {
constructor(p, S = r.auto) {
super(p, 1), this._parameterStructures = S;
}
get parameterStructures() {
return this._parameterStructures;
}
}
U.RequestType = a;
class o extends i {
constructor(p, S = r.auto) {
super(p, 1), this._parameterStructures = S;
}
get parameterStructures() {
return this._parameterStructures;
}
}
U.RequestType1 = o;
class c extends i {
constructor(p) {
super(p, 2);
}
}
U.RequestType2 = c;
class l extends i {
constructor(p) {
super(p, 3);
}
}
U.RequestType3 = l;
class u extends i {
constructor(p) {
super(p, 4);
}
}
U.RequestType4 = u;
class f extends i {
constructor(p) {
super(p, 5);
}
}
U.RequestType5 = f;
class m extends i {
constructor(p) {
super(p, 6);
}
}
U.RequestType6 = m;
class g extends i {
constructor(p) {
super(p, 7);
}
}
U.RequestType7 = g;
class A extends i {
constructor(p) {
super(p, 8);
}
}
U.RequestType8 = A;
class N extends i {
constructor(p) {
super(p, 9);
}
}
U.RequestType9 = N;
class $ extends i {
constructor(p, S = r.auto) {
super(p, 1), this._parameterStructures = S;
}
get parameterStructures() {
return this._parameterStructures;
}
}
U.NotificationType = $;
class w extends i {
constructor(p) {
super(p, 0);
}
}
U.NotificationType0 = w;
class O extends i {
constructor(p, S = r.auto) {
super(p, 1), this._parameterStructures = S;
}
get parameterStructures() {
return this._parameterStructures;
}
}
U.NotificationType1 = O;
class b extends i {
constructor(p) {
super(p, 2);
}
}
U.NotificationType2 = b;
class x extends i {
constructor(p) {
super(p, 3);
}
}
U.NotificationType3 = x;
class X extends i {
constructor(p) {
super(p, 4);
}
}
U.NotificationType4 = X;
class te extends i {
constructor(p) {
super(p, 5);
}
}
U.NotificationType5 = te;
class ne extends i {
constructor(p) {
super(p, 6);
}
}
U.NotificationType6 = ne;
class ye extends i {
constructor(p) {
super(p, 7);
}
}
U.NotificationType7 = ye;
class Ce extends i {
constructor(p) {
super(p, 8);
}
}
U.NotificationType8 = Ce;
class de extends i {
constructor(p) {
super(p, 9);
}
}
U.NotificationType9 = de;
var k;
return function(R) {
function p(T) {
const E = T;
return E && t.string(E.method) && (t.string(E.id) || t.number(E.id));
}
R.isRequest = p;
function S(T) {
const E = T;
return E && t.string(E.method) && T.id === void 0;
}
R.isNotification = S;
function y(T) {
const E = T;
return E && (E.result !== void 0 || !!E.error) && (t.string(E.id) || t.number(E.id) || E.id === null);
}
R.isResponse = y;
}(k || (U.Message = k = {})), U;
}
var Bt = {}, qu;
function lp() {
if (qu) return Bt;
qu = 1;
var t;
Object.defineProperty(Bt, "__esModule", { value: !0 }), Bt.LRUCache = Bt.LinkedMap = Bt.Touch = void 0;
var e;
(function(i) {
i.None = 0, i.First = 1, i.AsOld = i.First, i.Last = 2, i.AsNew = i.Last;
})(e || (Bt.Touch = e = {}));
class n {
constructor() {
this[t] = "LinkedMap", this._map = /* @__PURE__ */ new Map(), this._head = void 0, this._tail = void 0, this._size = 0, this._state = 0;
}
clear() {
this._map.clear(), this._head = void 0, this._tail = void 0, this._size = 0, this._state++;
}
isEmpty() {
return !this._head && !this._tail;
}
get size() {
return this._size;
}
get first() {
var s;
return (s = this._head) == null ? void 0 : s.value;
}
get last() {
var s;
return (s = this._tail) == null ? void 0 : s.value;
}
has(s) {
return this._map.has(s);
}
get(s, a = e.None) {
const o = this._map.get(s);
if (o)
return a !== e.None && this.touch(o, a), o.value;
}
set(s, a, o = e.None) {
let c = this._map.get(s);
if (c)
c.value = a, o !== e.None && this.touch(c, o);
else {
switch (c = { key: s, value: a, next: void 0, previous: void 0 }, o) {
case e.None:
this.addItemLast(c);
break;
case e.First:
this.addItemFirst(c);
break;
case e.Last:
this.addItemLast(c);
break;
default:
this.addItemLast(c);
break;
}
this._map.set(s, c), this._size++;
}
return this;
}
delete(s) {
return !!this.remove(s);
}
remove(s) {
const a = this._map.get(s);
if (a)
return this._map.delete(s), this.removeItem(a), this._size--, a.value;
}
shift() {
if (!this._head && !this._tail)
return;
if (!this._head || !this._tail)
throw new Error("Invalid list");
const s = this._head;
return this._map.delete(s.key), this.removeItem(s), this._size--, s.value;
}
forEach(s, a) {
const o = this._state;
let c = this._head;
for (; c; ) {
if (a ? s.bind(a)(c.value, c.key, this) : s(c.value, c.key, this), this._state !== o)
throw new Error("LinkedMap got modified during iteration.");
c = c.next;
}
}
keys() {
const s = this._state;
let a = this._head;
const o = {
[Symbol.iterator]: () => o,
next: () => {
if (this._state !== s)
throw new Error("LinkedMap got modified during iteration.");
if (a) {
const c = { value: a.key, done: !1 };
return a = a.next, c;
} else
return { value: void 0, done: !0 };
}
};
return o;
}
values() {
const s = this._state;
let a = this._head;
const o = {
[Symbol.iterator]: () => o,
next: () => {
if (this._state !== s)
throw new Error("LinkedMap got modified during iteration.");
if (a) {
const c = { value: a.value, done: !1 };
return a = a.next, c;
} else
return { value: void 0, done: !0 };
}
};
return o;
}
entries() {
const s = this._state;
let a = this._head;
const o = {
[Symbol.iterator]: () => o,
next: () => {
if (this._state !== s)
throw new Error("LinkedMap got modified during iteration.");
if (a) {
const c = { value: [a.key, a.value], done: !1 };
return a = a.next, c;
} else
return { value: void 0, done: !0 };
}
};
return o;
}
[(t = Symbol.toStringTag, Symbol.iterator)]() {
return this.entries();
}
trimOld(s) {
if (s >= this.size)
return;
if (s === 0) {
this.clear();
return;
}
let a = this._head, o = this.size;
for (; a && o > s; )
this._map.delete(a.key), a = a.next, o--;
this._head = a, this._size = o, a && (a.previous = void 0), this._state++;
}
addItemFirst(s) {
if (!this._head && !this._tail)
this._tail = s;
else if (this._head)
s.next = this._head, this._head.previous = s;
else
throw new Error("Invalid list");
this._head = s, this._state++;
}
addItemLast(s) {
if (!this._head && !this._tail)
this._head = s;
else if (this._tail)
s.previous = this._tail, this._tail.next = s;
else
throw new Error("Invalid list");
this._tail = s, this._state++;
}
removeItem(s) {
if (s === this._head && s === this._tail)
this._head = void 0, this._tail = void 0;
else if (s === this._head) {
if (!s.next)
throw new Error("Invalid list");
s.next.previous = void 0, this._head = s.next;
} else if (s === this._tail) {
if (!s.previous)
throw new Error("Invalid list");
s.previous.next = void 0, this._tail = s.previous;
} else {
const a = s.next, o = s.previous;
if (!a || !o)
throw new Error("Invalid list");
a.previous = o, o.next = a;
}
s.next = void 0, s.previous = void 0, this._state++;
}
touch(s, a) {
if (!this._head || !this._tail)
throw new Error("Invalid list");
if (!(a !== e.First && a !== e.Last)) {
if (a === e.First) {
if (s === this._head)
return;
const o = s.next, c = s.previous;
s === this._tail ? (c.next = void 0, this._tail = c) : (o.previous = c, c.next = o), s.previous = void 0, s.next = this._head, this._head.previous = s, this._head = s, this._state++;
} else if (a === e.Last) {
if (s === this._tail)
return;
const o = s.next, c = s.previous;
s === this._head ? (o.previous = void 0, this._head = o) : (o.previous = c, c.next = o), s.next = void 0, s.previous = this._tail, this._tail.next = s, this._tail = s, this._state++;
}
}
}
toJSON() {
const s = [];
return this.forEach((a, o) => {
s.push([o, a]);
}), s;
}
fromJSON(s) {
this.clear();
for (const [a, o] of s)
this.set(a, o);
}
}
Bt.LinkedMap = n;
class r extends n {
constructor(s, a = 1) {
super(), this._limit = s, this._ratio = Math.min(Math.max(0, a), 1);
}
get limit() {
return this._limit;
}
set limit(s) {
this._limit = s, this.checkTrim();
}
get ratio() {
return this._ratio;
}
set ratio(s) {
this._ratio = Math.min(Math.max(0, s), 1), this.checkTrim();
}
get(s, a = e.AsNew) {
return super.get(s, a);
}
peek(s) {
return super.get(s, e.None);
}
set(s, a) {
return super.set(s, a, e.Last), this.checkTrim(), this;
}
checkTrim() {
this.size > this._limit && this.trimOld(Math.round(this._limit * this._ratio));
}
}
return Bt.LRUCache = r, Bt;
}
var Ni = {}, Wu;
function pv() {
if (Wu) return Ni;
Wu = 1, Object.defineProperty(Ni, "__esModule", { value: !0 }), Ni.Disposable = void 0;
var t;
return function(e) {
function n(r) {
return {
dispose: r
};
}
e.create = n;
}(t || (Ni.Disposable = t = {})), Ni;
}
var $n = {}, Vu;
function mv() {
if (Vu) return $n;
Vu = 1, Object.defineProperty($n, "__esModule", { value: !0 }), $n.SharedArrayReceiverStrategy = $n.SharedArraySenderStrategy = void 0;
const t = An;
var e;
(function(a) {
a.Continue = 0, a.Cancelled = 1;
})(e || (e = {}));
class n {
constructor() {
this.buffers = /* @__PURE__ */ new Map();
}
enableCancellation(o) {
if (o.id === null)
return;
const c = new SharedArrayBuffer(4), l = new Int32Array(c, 0, 1);
l[0] = e.Continue, this.buffers.set(o.id, c), o.$cancellationData = c;
}
async sendCancellation(o, c) {
const l = this.buffers.get(c);
if (l === void 0)
return;
const u = new Int32Array(l, 0, 1);
Atomics.store(u, 0, e.Cancelled);
}
cleanup(o) {
this.buffers.delete(o);
}
dispose() {
this.buffers.clear();
}
}
$n.SharedArraySenderStrategy = n;
class r {
constructor(o) {
this.data = new Int32Array(o, 0, 1);
}
get isCancellationRequested() {
return Atomics.load(this.data, 0) === e.Cancelled;
}
get onCancellationRequested() {
throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events");
}
}
class i {
constructor(o) {
this.token = new r(o);
}
cancel() {
}
dispose() {
}
}
class s {
constructor() {
this.kind = "request";
}
createCancellationTokenSource(o) {
const c = o.$cancellationData;
return c === void 0 ? new t.CancellationTokenSource() : new i(c);
}
}
return $n.SharedArrayReceiverStrategy = s, $n;
}
var qt = {}, wi = {}, Ku;
function up() {
if (Ku) return wi;
Ku = 1, Object.defineProperty(wi, "__esModule", { value: !0 }), wi.Semaphore = void 0;
const t = cn;
class e {
constructor(r = 1) {
if (r <= 0)
throw new Error("Capacity must be greater than 0");
this._capacity = r, this._active = 0, this._waiting = [];
}
lock(r) {
return new Promise((i, s) => {
this._waiting.push({ thunk: r, resolve: i, reject: s }), this.runNext();
});
}
get active() {
return this._active;
}
runNext() {
this._waiting.length === 0 || this._active === this._capacity || (0, t.default)().timer.setImmediate(() => this.doRunNext());
}
doRunNext() {
if (this._waiting.length === 0 || this._active === this._capacity)
return;
const r = this._waiting.shift();
if (this._active++, this._active > this._capacity)
throw new Error("To many thunks active");
try {
const i = r.thunk();
i instanceof Promise ? i.then((s) => {
this._active--, r.resolve(s), this.runNext();
}, (s) => {
this._active--, r.reject(s), this.runNext();
}) : (this._active--, r.resolve(i), this.runNext());
} catch (i) {
this._active--, r.reject(i), this.runNext();
}
}
}
return wi.Semaphore = e, wi;
}
var Hu;
function gv() {
if (Hu) return qt;
Hu = 1, Object.defineProperty(qt, "__esModule", { value: !0 }), qt.ReadableStreamMessageReader = qt.AbstractMessageReader = qt.MessageReader = void 0;
const t = cn, e = _e, n = Ft, r = up();
var i;
(function(c) {
function l(u) {
let f = u;
return f && e.func(f.listen) && e.func(f.dispose) && e.func(f.onError) && e.func(f.onClose) && e.func(f.onPartialMessage);
}
c.is = l;
})(i || (qt.MessageReader = i = {}));
class s {
constructor() {
this.errorEmitter = new n.Emitter(), this.closeEmitter = new n.Emitter(), this.partialMessageEmitter = new n.Emitter();
}
dispose() {
this.errorEmitter.dispose(), this.closeEmitter.dispose();
}
get onError() {
return this.errorEmitter.event;
}
fireError(l) {
this.errorEmitter.fire(this.asError(l));
}
get onClose() {
return this.closeEmitter.event;
}
fireClose() {
this.closeEmitter.fire(void 0);
}
get onPartialMessage() {
return this.partialMessageEmitter.event;
}
firePartialMessage(l) {
this.partialMessageEmitter.fire(l);
}
asError(l) {
return l instanceof Error ? l : new Error(`Reader received error. Reason: ${e.string(l.message) ? l.message : "unknown"}`);
}
}
qt.AbstractMessageReader = s;
var a;
(function(c) {
function l(u) {
let f, m;
const g = /* @__PURE__ */ new Map();
let A;
const N = /* @__PURE__ */ new Map();
if (u === void 0 || typeof u == "string")
f = u ?? "utf-8";
else {
if (f = u.charset ?? "utf-8", u.contentDecoder !== void 0 && (m = u.contentDecoder, g.set(m.name, m)), u.contentDecoders !== void 0)
for (const $ of u.contentDecoders)
g.set($.name, $);
if (u.contentTypeDecoder !== void 0 && (A = u.contentTypeDecoder, N.set(A.name, A)), u.contentTypeDecoders !== void 0)
for (const $ of u.contentTypeDecoders)
N.set($.name, $);
}
return A === void 0 && (A = (0, t.default)().applicationJson.decoder, N.set(A.name, A)), { charset: f, contentDecoder: m, contentDecoders: g, contentTypeDecoder: A, contentTypeDecoders: N };
}
c.fromOptions = l;
})(a || (a = {}));
class o extends s {
constructor(l, u) {
super(), this.readable = l, this.options = a.fromOptions(u), this.buffer = (0, t.default)().messageBuffer.create(this.options.charset), this._partialMessageTimeout = 1e4, this.nextMessageLength = -1, this.messageToken = 0, this.readSemaphore = new r.Semaphore(1);
}
set partialMessageTimeout(l) {
this._partialMessageTimeout = l;
}
get partialMessageTimeout() {
return this._partialMessageTimeout;
}
listen(l) {
this.nextMessageLength = -1, this.messageToken = 0, this.partialMessageTimer = void 0, this.callback = l;
const u = this.readable.onData((f) => {
this.onData(f);
});
return this.readable.onError((f) => this.fireError(f)), this.readable.onClose(() => this.fireClose()), u;
}
onData(l) {
try {
for (this.buffer.append(l); ; ) {
if (this.nextMessageLength === -1) {
const f = this.buffer.tryReadHeaders(!0);
if (!f)
return;
const m = f.get("content-length");
if (!m) {
this.fireError(new Error(`Header must provide a Content-Length property.
${JSON.stringify(Object.fromEntries(f))}`));
return;
}
const g = parseInt(m);
if (isNaN(g)) {
this.fireError(new Error(`Content-Length value must be a number. Got ${m}`));
return;
}
this.nextMessageLength = g;
}
const u = this.buffer.tryReadBody(this.nextMessageLength);
if (u === void 0) {
this.setPartialMessageTimer();
return;
}
this.clearPartialMessageTimer(), this.nextMessageLength = -1, this.readSemaphore.lock(async () => {
const f = this.options.contentDecoder !== void 0 ? await this.options.contentDecoder.decode(u) : u, m = await this.options.contentTypeDecoder.decode(f, this.options);
this.callback(m);
}).catch((f) => {
this.fireError(f);
});
}
} catch (u) {
this.fireError(u);
}
}
clearPartialMessageTimer() {
this.partialMessageTimer && (this.partialMessageTimer.dispose(), this.partialMessageTimer = void 0);
}
setPartialMessageTimer() {
this.clearPartialMessageTimer(), !(this._partialMessageTimeout <= 0) && (this.partialMessageTimer = (0, t.default)().timer.setTimeout((l, u) => {
this.partialMessageTimer = void 0, l === this.messageToken && (this.firePartialMessage({ messageToken: l, waitingTime: u }), this.setPartialMessageTimer());
}, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout));
}
}
return qt.ReadableStreamMessageReader = o, qt;
}
var Wt = {}, Yu;
function yv() {
if (Yu) return Wt;
Yu = 1, Object.defineProperty(Wt, "__esModule", { value: !0 }), Wt.WriteableStreamMessageWriter = Wt.AbstractMessageWriter = Wt.MessageWriter = void 0;
const t = cn, e = _e, n = up(), r = Ft, i = "Content-Length: ", s = `\r
`;
var a;
(function(u) {
function f(m) {
let g = m;
return g && e.func(g.dispose) && e.func(g.onClose) && e.func(g.onError) && e.func(g.write);
}
u.is = f;
})(a || (Wt.MessageWriter = a = {}));
class o {
constructor() {
this.errorEmitter = new r.Emitter(), this.closeEmitter = new r.Emitter();
}
dispose() {
this.errorEmitter.dispose(), this.closeEmitter.dispose();
}
get onError() {
return this.errorEmitter.event;
}
fireError(f, m, g) {
this.errorEmitter.fire([this.asError(f), m, g]);
}
get onClose() {
return this.closeEmitter.event;
}
fireClose() {
this.closeEmitter.fire(void 0);
}
asError(f) {
return f instanceof Error ? f : new Error(`Writer received error. Reason: ${e.string(f.message) ? f.message : "unknown"}`);
}
}
Wt.AbstractMessageWriter = o;
var c;
(function(u) {
function f(m) {
return m === void 0 || typeof m == "string" ? { charset: m ?? "utf-8", contentTypeEncoder: (0, t.default)().applicationJson.encoder } : { charset: m.charset ?? "utf-8", contentEncoder: m.contentEncoder, contentTypeEncoder: m.contentTypeEncoder ?? (0, t.default)().applicationJson.encoder };
}
u.fromOptions = f;
})(c || (c = {}));
class l extends o {
constructor(f, m) {
super(), this.writable = f, this.options = c.fromOptions(m), this.errorCount = 0, this.writeSemaphore = new n.Semaphore(1), this.writable.onError((g) => this.fireError(g)), this.writable.onClose(() => this.fireClose());
}
async write(f) {
return this.writeSemaphore.lock(async () => this.options.contentTypeEncoder.encode(f, this.options).then((g) => this.options.contentEncoder !== void 0 ? this.options.contentEncoder.encode(g) : g).then((g) => {
const A = [];
return A.push(i, g.byteLength.toString(), s), A.push(s), this.doWrite(f, A, g);
}, (g) => {
throw this.fireError(g), g;
}));
}
async doWrite(f, m, g) {
try {
return await this.writable.write(m.join(""), "ascii"), this.writable.write(g);
} catch (A) {
return this.handleError(A, f), Promise.reject(A);
}
}
handleError(f, m) {
this.errorCount++, this.fireError(f, m, this.errorCount);
}
end() {
this.writable.end();
}
}
return Wt.WriteableStreamMessageWriter = l, Wt;
}
var bi = {}, Xu;
function Tv() {
if (Xu) return bi;
Xu = 1, Object.defineProperty(bi, "__esModule", { value: !0 }), bi.AbstractMessageBuffer = void 0;
const t = 13, e = 10, n = `\r
`;
class r {
constructor(s = "utf-8") {
this._encoding = s, this._chunks = [], this._totalLength = 0;
}
get encoding() {
return this._encoding;
}
append(s) {
const a = typeof s == "string" ? this.fromString(s, this._encoding) : s;
this._chunks.push(a), this._totalLength += a.byteLength;
}
tryReadHeaders(s = !1) {
if (this._chunks.length === 0)
return;
let a = 0, o = 0, c = 0, l = 0;
e: for (; o < this._chunks.length; ) {
const g = this._chunks[o];
for (c = 0; c < g.length; ) {
switch (g[c]) {
case t:
switch (a) {
case 0:
a = 1;
break;
case 2:
a = 3;
break;
default:
a = 0;
}
break;
case e:
switch (a) {
case 1:
a = 2;
break;
case 3:
a = 4, c++;
break e;
default:
a = 0;
}
break;
default:
a = 0;
}
c++;
}
l += g.byteLength, o++;
}
if (a !== 4)
return;
const u = this._read(l + c), f = /* @__PURE__ */ new Map(), m = this.toString(u, "ascii").split(n);
if (m.length < 2)
return f;
for (let g = 0; g < m.length - 2; g++) {
const A = m[g], N = A.indexOf(":");
if (N === -1)
throw new Error(`Message header must separate key and value using ':'
${A}`);
const $ = A.substr(0, N), w = A.substr(N + 1).trim();
f.set(s ? $.toLowerCase() : $, w);
}
return f;
}
tryReadBody(s) {
if (!(this._totalLength < s))
return this._read(s);
}
get numberOfBytes() {
return this._totalLength;
}
_read(s) {
if (s === 0)
return this.emptyBuffer();
if (s > this._totalLength)
throw new Error("Cannot read so many bytes!");
if (this._chunks[0].byteLength === s) {
const l = this._chunks[0];
return this._chunks.shift(), this._totalLength -= s, this.asNative(l);
}
if (this._chunks[0].byteLength > s) {
const l = this._chunks[0], u = this.asNative(l, s);
return this._chunks[0] = l.slice(s), this._totalLength -= s, u;
}
const a = this.allocNative(s);
let o = 0, c = 0;
for (; s > 0; ) {
const l = this._chunks[c];
if (l.byteLength > s) {
const u = l.slice(0, s);
a.set(u, o), o += s, this._chunks[c] = l.slice(s), this._totalLength -= s, s -= s;
} else
a.set(l, o), o += l.byteLength, this._chunks.shift(), this._totalLength -= l.byteLength, s -= l.byteLength;
}
return a;
}
}
return bi.AbstractMessageBuffer = r, bi;
}
var Eo = {}, Ju;
function Rv() {
return Ju || (Ju = 1, function(t) {
Object.defineProperty(t, "__esModule", { value: !0 }), t.createMessageConnection = t.ConnectionOptions = t.MessageStrategy = t.CancellationStrategy = t.CancellationSenderStrategy = t.CancellationReceiverStrategy = t.RequestCancellationReceiverStrategy = t.IdCancellationReceiverStrategy = t.ConnectionStrategy = t.ConnectionError = t.ConnectionErrors = t.LogTraceNotification = t.SetTraceNotification = t.TraceFormat = t.TraceValues = t.Trace = t.NullLogger = t.ProgressType = t.ProgressToken = void 0;
const e = cn, n = _e, r = cp(), i = lp(), s = Ft, a = An;
var o;
(function(p) {
p.type = new r.NotificationType("$/cancelRequest");
})(o || (o = {}));
var c;
(function(p) {
function S(y) {
return typeof y == "string" || typeof y == "number";
}
p.is = S;
})(c || (t.ProgressToken = c = {}));
var l;
(function(p) {
p.type = new r.NotificationType("$/progress");
})(l || (l = {}));
class u {
constructor() {
}
}
t.ProgressType = u;
var f;
(function(p) {
function S(y) {
return n.func(y);
}
p.is = S;
})(f || (f = {})), t.NullLogger = Object.freeze({
error: () => {
},
warn: () => {
},
info: () => {
},
log: () => {
}
});
var m;
(function(p) {
p[p.Off = 0] = "Off", p[p.Messages = 1] = "Messages", p[p.Compact = 2] = "Compact", p[p.Verbose = 3] = "Verbose";
})(m || (t.Trace = m = {}));
var g;
(function(p) {
p.Off = "off", p.Messages = "messages", p.Compact = "compact", p.Verbose = "verbose";
})(g || (t.TraceValues = g = {})), function(p) {
function S(T) {
if (!n.string(T))
return p.Off;
switch (T = T.toLowerCase(), T) {
case "off":
return p.Off;
case "messages":
return p.Messages;
case "compact":
return p.Compact;
case "verbose":
return p.Verbose;
default:
return p.Off;
}
}
p.fromString = S;
function y(T) {
switch (T) {
case p.Off:
return "off";
case p.Messages:
return "messages";
case p.Compact:
return "compact";
case p.Verbose:
return "verbose";
default:
return "off";
}
}
p.toString = y;
}(m || (t.Trace = m = {}));
var A;
(function(p) {
p.Text = "text", p.JSON = "json";
})(A || (t.TraceFormat = A = {})), function(p) {
function S(y) {
return n.string(y) ? (y = y.toLowerCase(), y === "json" ? p.JSON : p.Text) : p.Text;
}
p.fromString = S;
}(A || (t.TraceFormat = A = {}));
var N;
(function(p) {
p.type = new r.NotificationType("$/setTrace");
})(N || (t.SetTraceNotification = N = {}));
var $;
(function(p) {
p.type = new r.NotificationType("$/logTrace");
})($ || (t.LogTraceNotification = $ = {}));
var w;
(function(p) {
p[p.Closed = 1] = "Closed", p[p.Disposed = 2] = "Disposed", p[p.AlreadyListening = 3] = "AlreadyListening";
})(w || (t.ConnectionErrors = w = {}));
class O extends Error {
constructor(S, y) {
super(y), this.code = S, Object.setPrototypeOf(this, O.prototype);
}
}
t.ConnectionError = O;
var b;
(function(p) {
function S(y) {
const T = y;
return T && n.func(T.cancelUndispatched);
}
p.is = S;
})(b || (t.ConnectionStrategy = b = {}));
var x;
(function(p) {
function S(y) {
const T = y;
return T && (T.kind === void 0 || T.kind === "id") && n.func(T.createCancellationTokenSource) && (T.dispose === void 0 || n.func(T.dispose));
}
p.is = S;
})(x || (t.IdCancellationReceiverStrategy = x = {}));
var X;
(function(p) {
function S(y) {
const T = y;
return T && T.kind === "request" && n.func(T.createCancellationTokenSource) && (T.dispose === void 0 || n.func(T.dispose));
}
p.is = S;
})(X || (t.RequestCancellationReceiverStrategy = X = {}));
var te;
(function(p) {
p.Message = Object.freeze({
createCancellationTokenSource(y) {
return new a.CancellationTokenSource();
}
});
function S(y) {
return x.is(y) || X.is(y);
}
p.is = S;
})(te || (t.CancellationReceiverStrategy = te = {}));
var ne;
(function(p) {
p.Message = Object.freeze({
sendCancellation(y, T) {
return y.sendNotification(o.type, { id: T });
},
cleanup(y) {
}
});
function S(y) {
const T = y;
return T && n.func(T.sendCancellation) && n.func(T.cleanup);
}
p.is = S;
})(ne || (t.CancellationSenderStrategy = ne = {}));
var ye;
(function(p) {
p.Message = Object.freeze({
receiver: te.Message,
sender: ne.Message
});
function S(y) {
const T = y;
return T && te.is(T.receiver) && ne.is(T.sender);
}
p.is = S;
})(ye || (t.CancellationStrategy = ye = {}));
var Ce;
(function(p) {
function S(y) {
const T = y;
return T && n.func(T.handleMessage);
}
p.is = S;
})(Ce || (t.MessageStrategy = Ce = {}));
var de;
(function(p) {
function S(y) {
const T = y;
return T && (ye.is(T.cancellationStrategy) || b.is(T.connectionStrategy) || Ce.is(T.messageStrategy));
}
p.is = S;
})(de || (t.ConnectionOptions = de = {}));
var k;
(function(p) {
p[p.New = 1] = "New", p[p.Listening = 2] = "Listening", p[p.Closed = 3] = "Closed", p[p.Disposed = 4] = "Disposed";
})(k || (k = {}));
function R(p, S, y, T) {
const E = y !== void 0 ? y : t.NullLogger;
let P = 0, D = 0, L = 0;
const z = "2.0";
let G;
const se = /* @__PURE__ */ new Map();
let q;
const re = /* @__PURE__ */ new Map(), xe = /* @__PURE__ */ new Map();
let Te, fe = new i.LinkedMap(), $e = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Set(), be = /* @__PURE__ */ new Map(), Q = m.Off, st = A.Text, Re, Rt = k.New;
const Zn = new s.Emitter(), ci = new s.Emitter(), li = new s.Emitter(), ui = new s.Emitter(), di = new s.Emitter(), vt = T && T.cancellationStrategy ? T.cancellationStrategy : ye.Message;
function fi(h) {
if (h === null)
throw new Error("Can't send requests with id null since the response can't be correlated.");
return "req-" + h.toString();
}
function fs(h) {
return h === null ? "res-unknown-" + (++L).toString() : "res-" + h.toString();
}
function hs() {
return "not-" + (++D).toString();
}
function ps(h, C) {
r.Message.isRequest(C) ? h.set(fi(C.id), C) : r.Message.isResponse(C) ? h.set(fs(C.id), C) : h.set(hs(), C);
}
function ms(h) {
}
function hi() {
return Rt === k.Listening;
}
function pi() {
return Rt === k.Closed;
}
function jt() {
return Rt === k.Disposed;
}
function mi() {
(Rt === k.New || Rt === k.Listening) && (Rt = k.Closed, ci.fire(void 0));
}
function gs(h) {
Zn.fire([h, void 0, void 0]);
}
function ys(h) {
Zn.fire(h);
}
p.onClose(mi), p.onError(gs), S.onClose(mi), S.onError(ys);
function gi() {
Te || fe.size === 0 || (Te = (0, e.default)().timer.setImmediate(() => {
Te = void 0, Ts();
}));
}
function yi(h) {
r.Message.isRequest(h) ? vs(h) : r.Message.isNotification(h) ? As(h) : r.Message.isResponse(h) ? Es(h) : Ss(h);
}
function Ts() {
if (fe.size === 0)
return;
const h = fe.shift();
try {
const C = T == null ? void 0 : T.messageStrategy;
Ce.is(C) ? C.handleMessage(h, yi) : yi(h);
} finally {
gi();
}
}
const Rs = (h) => {
try {
if (r.Message.isNotification(h) && h.method === o.type.method) {
const C = h.params.id, _ = fi(C), F = fe.get(_);
if (r.Message.isRequest(F)) {
const ae = T == null ? void 0 : T.connectionStrategy, ce = ae && ae.cancelUndispatched ? ae.cancelUndispatched(F, ms) : void 0;
if (ce && (ce.error !== void 0 || ce.result !== void 0)) {
fe.delete(_), be.delete(C), ce.id = F.id, In(ce, h.method, Date.now()), S.write(ce).catch(() => E.error("Sending response for canceled message failed."));
return;
}
}
const le = be.get(C);
if (le !== void 0) {
le.cancel(), er(h);
return;
} else
De.add(C);
}
ps(fe, h);
} finally {
gi();
}
};
function vs(h) {
if (jt())
return;
function C(J, he, ie) {
const Pe = {
jsonrpc: z,
id: h.id
};
J instanceof r.ResponseError ? Pe.error = J.toJson() : Pe.result = J === void 0 ? null : J, In(Pe, he, ie), S.write(Pe).catch(() => E.error("Sending response failed."));
}
function _(J, he, ie) {
const Pe = {
jsonrpc: z,
id: h.id,
error: J.toJson()
};
In(Pe, he, ie), S.write(Pe).catch(() => E.error("Sending response failed."));
}
function F(J, he, ie) {
J === void 0 && (J = null);
const Pe = {
jsonrpc: z,
id: h.id,
result: J
};
In(Pe, he, ie), S.write(Pe).catch(() => E.error("Sending response failed."));
}
Ns(h);
const le = se.get(h.method);
let ae, ce;
le && (ae = le.type, ce = le.handler);
const we = Date.now();
if (ce || G) {
const J = h.id ?? String(Date.now()), he = x.is(vt.receiver) ? vt.receiver.createCancellationTokenSource(J) : vt.receiver.createCancellationTokenSource(h);
h.id !== null && De.has(h.id) && he.cancel(), h.id !== null && be.set(J, he);
try {
let ie;
if (ce)
if (h.params === void 0) {
if (ae !== void 0 && ae.numberOfParams !== 0) {
_(new r.ResponseError(r.ErrorCodes.InvalidParams, `Request ${h.method} defines ${ae.numberOfParams} params but received none.`), h.method, we);
return;
}
ie = ce(he.token);
} else if (Array.isArray(h.params)) {
if (ae !== void 0 && ae.parameterStructures === r.ParameterStructures.byName) {
_(new r.ResponseError(r.ErrorCodes.InvalidParams, `Request ${h.method} defines parameters by name but received parameters by position`), h.method, we);
return;
}
ie = ce(...h.params, he.token);
} else {
if (ae !== void 0 && ae.parameterStructures === r.ParameterStructures.byPosition) {
_(new r.ResponseError(r.ErrorCodes.InvalidParams, `Request ${h.method} defines parameters by position but received parameters by name`), h.method, we);
return;
}
ie = ce(h.params, he.token);
}
else G && (ie = G(h.method, h.params, he.token));
const Pe = ie;
ie ? Pe.then ? Pe.then((Ke) => {
be.delete(J), C(Ke, h.method, we);
}, (Ke) => {
be.delete(J), Ke instanceof r.ResponseError ? _(Ke, h.method, we) : Ke && n.string(Ke.message) ? _(new r.ResponseError(r.ErrorCodes.InternalError, `Request ${h.method} failed with message: ${Ke.message}`), h.method, we) : _(new r.ResponseError(r.ErrorCodes.InternalError, `Request ${h.method} failed unexpectedly without providing any details.`), h.method, we);
}) : (be.delete(J), C(ie, h.method, we)) : (be.delete(J), F(ie, h.method, we));
} catch (ie) {
be.delete(J), ie instanceof r.ResponseError ? C(ie, h.method, we) : ie && n.string(ie.message) ? _(new r.ResponseError(r.ErrorCodes.InternalError, `Request ${h.method} failed with message: ${ie.message}`), h.method, we) : _(new r.ResponseError(r.ErrorCodes.InternalError, `Request ${h.method} failed unexpectedly without providing any details.`), h.method, we);
}
} else
_(new r.ResponseError(r.ErrorCodes.MethodNotFound, `Unhandled method ${h.method}`), h.method, we);
}
function Es(h) {
if (!jt())
if (h.id === null)
h.error ? E.error(`Received response message without id: Error is:
${JSON.stringify(h.error, void 0, 4)}`) : E.error("Received response message without id. No further error information provided.");
else {
const C = h.id, _ = $e.get(C);
if (ws(h, _), _ !== void 0) {
$e.delete(C);
try {
if (h.error) {
const F = h.error;
_.reject(new r.ResponseError(F.code, F.message, F.data));
} else if (h.result !== void 0)
_.resolve(h.result);
else
throw new Error("Should never happen.");
} catch (F) {
F.message ? E.error(`Response handler '${_.method}' failed with message: ${F.message}`) : E.error(`Response handler '${_.method}' failed unexpectedly.`);
}
}
}
}
function As(h) {
if (jt())
return;
let C, _;
if (h.method === o.type.method) {
const F = h.params.id;
De.delete(F), er(h);
return;
} else {
const F = re.get(h.method);
F && (_ = F.handler, C = F.type);
}
if (_ || q)
try {
if (er(h), _)
if (h.params === void 0)
C !== void 0 && C.numberOfParams !== 0 && C.parameterStructures !== r.ParameterStructures.byName && E.error(`Notification ${h.method} defines ${C.numberOfParams} params but received none.`), _();
else if (Array.isArray(h.params)) {
const F = h.params;
h.method === l.type.method && F.length === 2 && c.is(F[0]) ? _({ token: F[0], value: F[1] }) : (C !== void 0 && (C.parameterStructures === r.ParameterStructures.byName && E.error(`Notification ${h.method} defines parameters by name but received parameters by position`), C.numberOfParams !== h.params.length && E.error(`Notification ${h.method} defines ${C.numberOfParams} params but received ${F.length} arguments`)), _(...F));
} else
C !== void 0 && C.parameterStructures === r.ParameterStructures.byPosition && E.error(`Notification ${h.method} defines parameters by position but received parameters by name`), _(h.params);
else q && q(h.method, h.params);
} catch (F) {
F.message ? E.error(`Notification handler '${h.method}' failed with message: ${F.message}`) : E.error(`Notification handler '${h.method}' failed unexpectedly.`);
}
else
li.fire(h);
}
function Ss(h) {
if (!h) {
E.error("Received empty message.");
return;
}
E.error(`Received message which is neither a response nor a notification message:
${JSON.stringify(h, null, 4)}`);
const C = h;
if (n.string(C.id) || n.number(C.id)) {
const _ = C.id, F = $e.get(_);
F && F.reject(new Error("The received response has neither a result nor an error property."));
}
}
function Et(h) {
if (h != null)
switch (Q) {
case m.Verbose:
return JSON.stringify(h, null, 4);
case m.Compact:
return JSON.stringify(h);
default:
return;
}
}
function Cs(h) {
if (!(Q === m.Off || !Re))
if (st === A.Text) {
let C;
(Q === m.Verbose || Q === m.Compact) && h.params && (C = `Params: ${Et(h.params)}
`), Re.log(`Sending request '${h.method} - (${h.id})'.`, C);
} else
zt("send-request", h);
}
function ks(h) {
if (!(Q === m.Off || !Re))
if (st === A.Text) {
let C;
(Q === m.Verbose || Q === m.Compact) && (h.params ? C = `Params: ${Et(h.params)}
` : C = `No parameters provided.
`), Re.log(`Sending notification '${h.method}'.`, C);
} else
zt("send-notification", h);
}
function In(h, C, _) {
if (!(Q === m.Off || !Re))
if (st === A.Text) {
let F;
(Q === m.Verbose || Q === m.Compact) && (h.error && h.error.data ? F = `Error data: ${Et(h.error.data)}
` : h.result ? F = `Result: ${Et(h.result)}
` : h.error === void 0 && (F = `No result returned.
`)), Re.log(`Sending response '${C} - (${h.id})'. Processing request took ${Date.now() - _}ms`, F);
} else
zt("send-response", h);
}
function Ns(h) {
if (!(Q === m.Off || !Re))
if (st === A.Text) {
let C;
(Q === m.Verbose || Q === m.Compact) && h.params && (C = `Params: ${Et(h.params)}
`), Re.log(`Received request '${h.method} - (${h.id})'.`, C);
} else
zt("receive-request", h);
}
function er(h) {
if (!(Q === m.Off || !Re || h.method === $.type.method))
if (st === A.Text) {
let C;
(Q === m.Verbose || Q === m.Compact) && (h.params ? C = `Params: ${Et(h.params)}
` : C = `No parameters provided.
`), Re.log(`Received notification '${h.method}'.`, C);
} else
zt("receive-notification", h);
}
function ws(h, C) {
if (!(Q === m.Off || !Re))
if (st === A.Text) {
let _;
if ((Q === m.Verbose || Q === m.Compact) && (h.error && h.error.data ? _ = `Error data: ${Et(h.error.data)}
` : h.result ? _ = `Result: ${Et(h.result)}
` : h.error === void 0 && (_ = `No result returned.
`)), C) {
const F = h.error ? ` Request failed: ${h.error.message} (${h.error.code}).` : "";
Re.log(`Received response '${C.method} - (${h.id})' in ${Date.now() - C.timerStart}ms.${F}`, _);
} else
Re.log(`Received response ${h.id} without active response promise.`, _);
} else
zt("receive-response", h);
}
function zt(h, C) {
if (!Re || Q === m.Off)
return;
const _ = {
isLSPMessage: !0,
type: h,
message: C,
timestamp: Date.now()
};
Re.log(_);
}
function ln() {
if (pi())
throw new O(w.Closed, "Connection is closed.");
if (jt())
throw new O(w.Disposed, "Connection is disposed.");
}
function bs() {
if (hi())
throw new O(w.AlreadyListening, "Connection is already listening");
}
function Is() {
if (!hi())
throw new Error("Call listen() first.");
}
function un(h) {
return h === void 0 ? null : h;
}
function Ti(h) {
if (h !== null)
return h;
}
function d(h) {
return h != null && !Array.isArray(h) && typeof h == "object";
}
function ke(h, C) {
switch (h) {
case r.ParameterStructures.auto:
return d(C) ? Ti(C) : [un(C)];
case r.ParameterStructures.byName:
if (!d(C))
throw new Error("Received parameters by name but param is not an object literal.");
return Ti(C);
case r.ParameterStructures.byPosition:
return [un(C)];
default:
throw new Error(`Unknown parameter structure ${h.toString()}`);
}
}
function Ne(h, C) {
let _;
const F = h.numberOfParams;
switch (F) {
case 0:
_ = void 0;
break;
case 1:
_ = ke(h.parameterStructures, C[0]);
break;
default:
_ = [];
for (let le = 0; le < C.length && le < F; le++)
_.push(un(C[le]));
if (C.length < F)
for (let le = C.length; le < F; le++)
_.push(null);
break;
}
return _;
}
const V = {
sendNotification: (h, ...C) => {
ln();
let _, F;
if (n.string(h)) {
_ = h;
const ae = C[0];
let ce = 0, we = r.ParameterStructures.auto;
r.ParameterStructures.is(ae) && (ce = 1, we = ae);
let J = C.length;
const he = J - ce;
switch (he) {
case 0:
F = void 0;
break;
case 1:
F = ke(we, C[ce]);
break;
default:
if (we === r.ParameterStructures.byName)
throw new Error(`Received ${he} parameters for 'by Name' notification parameter structure.`);
F = C.slice(ce, J).map((ie) => un(ie));
break;
}
} else {
const ae = C;
_ = h.method, F = Ne(h, ae);
}
const le = {
jsonrpc: z,
method: _,
params: F
};
return ks(le), S.write(le).catch((ae) => {
throw E.error("Sending notification failed."), ae;
});
},
onNotification: (h, C) => {
ln();
let _;
return n.func(h) ? q = h : C && (n.string(h) ? (_ = h, re.set(h, { type: void 0, handler: C })) : (_ = h.method, re.set(h.method, { type: h, handler: C }))), {
dispose: () => {
_ !== void 0 ? re.delete(_) : q = void 0;
}
};
},
onProgress: (h, C, _) => {
if (xe.has(C))
throw new Error(`Progress handler for token ${C} already registered`);
return xe.set(C, _), {
dispose: () => {
xe.delete(C);
}
};
},
sendProgress: (h, C, _) => V.sendNotification(l.type, { token: C, value: _ }),
onUnhandledProgress: ui.event,
sendRequest: (h, ...C) => {
ln(), Is();
let _, F, le;
if (n.string(h)) {
_ = h;
const J = C[0], he = C[C.length - 1];
let ie = 0, Pe = r.ParameterStructures.auto;
r.ParameterStructures.is(J) && (ie = 1, Pe = J);
let Ke = C.length;
a.CancellationToken.is(he) && (Ke = Ke - 1, le = he);
const $t = Ke - ie;
switch ($t) {
case 0:
F = void 0;
break;
case 1:
F = ke(Pe, C[ie]);
break;
default:
if (Pe === r.ParameterStructures.byName)
throw new Error(`Received ${$t} parameters for 'by Name' request parameter structure.`);
F = C.slice(ie, Ke).map((Np) => un(Np));
break;
}
} else {
const J = C;
_ = h.method, F = Ne(h, J);
const he = h.numberOfParams;
le = a.CancellationToken.is(J[he]) ? J[he] : void 0;
}
const ae = P++;
let ce;
le && (ce = le.onCancellationRequested(() => {
const J = vt.sender.sendCancellation(V, ae);
return J === void 0 ? (E.log(`Received no promise from cancellation strategy when cancelling id ${ae}`), Promise.resolve()) : J.catch(() => {
E.log(`Sending cancellation messages for id ${ae} failed`);
});
}));
const we = {
jsonrpc: z,
id: ae,
method: _,
params: F
};
return Cs(we), typeof vt.sender.enableCancellation == "function" && vt.sender.enableCancellation(we), new Promise(async (J, he) => {
const ie = ($t) => {
J($t), vt.sender.cleanup(ae), ce == null || ce.dispose();
}, Pe = ($t) => {
he($t), vt.sender.cleanup(ae), ce == null || ce.dispose();
}, Ke = { method: _, timerStart: Date.now(), resolve: ie, reject: Pe };
try {
await S.write(we), $e.set(ae, Ke);
} catch ($t) {
throw E.error("Sending request failed."), Ke.reject(new r.ResponseError(r.ErrorCodes.MessageWriteError, $t.message ? $t.message : "Unknown reason")), $t;
}
});
},
onRequest: (h, C) => {
ln();
let _ = null;
return f.is(h) ? (_ = void 0, G = h) : n.string(h) ? (_ = null, C !== void 0 && (_ = h, se.set(h, { handler: C, type: void 0 }))) : C !== void 0 && (_ = h.method, se.set(h.method, { type: h, handler: C })), {
dispose: () => {
_ !== null && (_ !== void 0 ? se.delete(_) : G = void 0);
}
};
},
hasPendingResponse: () => $e.size > 0,
trace: async (h, C, _) => {
let F = !1, le = A.Text;
_ !== void 0 && (n.boolean(_) ? F = _ : (F = _.sendNotification || !1, le = _.traceFormat || A.Text)), Q = h, st = le, Q === m.Off ? Re = void 0 : Re = C, F && !pi() && !jt() && await V.sendNotification(N.type, { value: m.toString(h) });
},
onError: Zn.event,
onClose: ci.event,
onUnhandledNotification: li.event,
onDispose: di.event,
end: () => {
S.end();
},
dispose: () => {
if (jt())
return;
Rt = k.Disposed, di.fire(void 0);
const h = new r.ResponseError(r.ErrorCodes.PendingResponseRejected, "Pending response rejected since connection got disposed");
for (const C of $e.values())
C.reject(h);
$e = /* @__PURE__ */ new Map(), be = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Set(), fe = new i.LinkedMap(), n.func(S.dispose) && S.dispose(), n.func(p.dispose) && p.dispose();
},
listen: () => {
ln(), bs(), Rt = k.Listening, p.listen(Rs);
},
inspect: () => {
(0, e.default)().console.log("inspect");
}
};
return V.onNotification($.type, (h) => {
if (Q === m.Off || !Re)
return;
const C = Q === m.Verbose || Q === m.Compact;
Re.log(h.message, C ? h.verbose : void 0);
}), V.onNotification(l.type, (h) => {
const C = xe.get(h.token);
C ? C(h.value) : ui.fire(h);
}), V;
}
t.createMessageConnection = R;
}(Eo)), Eo;
}
var Qu;
function al() {
return Qu || (Qu = 1, function(t) {
Object.defineProperty(t, "__esModule", { value: !0 }), t.ProgressType = t.ProgressToken = t.createMessageConnection = t.NullLogger = t.ConnectionOptions = t.ConnectionStrategy = t.AbstractMessageBuffer = t.WriteableStreamMessageWriter = t.AbstractMessageWriter = t.MessageWriter = t.ReadableStreamMessageReader = t.AbstractMessageReader = t.MessageReader = t.SharedArrayReceiverStrategy = t.SharedArraySenderStrategy = t.CancellationToken = t.CancellationTokenSource = t.Emitter = t.Event = t.Disposable = t.LRUCache = t.Touch = t.LinkedMap = t.ParameterStructures = t.NotificationType9 = t.NotificationType8 = t.NotificationType7 = t.NotificationType6 = t.NotificationType5 = t.NotificationType4 = t.NotificationType3 = t.NotificationType2 = t.NotificationType1 = t.NotificationType0 = t.NotificationType = t.ErrorCodes = t.ResponseError = t.RequestType9 = t.RequestType8 = t.RequestType7 = t.RequestType6 = t.RequestType5 = t.RequestType4 = t.RequestType3 = t.RequestType2 = t.RequestType1 = t.RequestType0 = t.RequestType = t.Message = t.RAL = void 0, t.MessageStrategy = t.CancellationStrategy = t.CancellationSenderStrategy = t.CancellationReceiverStrategy = t.ConnectionError = t.ConnectionErrors = t.LogTraceNotification = t.SetTraceNotification = t.TraceFormat = t.TraceValues = t.Trace = void 0;
const e = cp();
Object.defineProperty(t, "Message", { enumerable: !0, get: function() {
return e.Message;
} }), Object.defineProperty(t, "RequestType", { enumerable: !0, get: function() {
return e.RequestType;
} }), Object.defineProperty(t, "RequestType0", { enumerable: !0, get: function() {
return e.RequestType0;
} }), Object.defineProperty(t, "RequestType1", { enumerable: !0, get: function() {
return e.RequestType1;
} }), Object.defineProperty(t, "RequestType2", { enumerable: !0, get: function() {
return e.RequestType2;
} }), Object.defineProperty(t, "RequestType3", { enumerable: !0, get: function() {
return e.RequestType3;
} }), Object.defineProperty(t, "RequestType4", { enumerable: !0, get: function() {
return e.RequestType4;
} }), Object.defineProperty(t, "RequestType5", { enumerable: !0, get: function() {
return e.RequestType5;
} }), Object.defineProperty(t, "RequestType6", { enumerable: !0, get: function() {
return e.RequestType6;
} }), Object.defineProperty(t, "RequestType7", { enumerable: !0, get: function() {
return e.RequestType7;
} }), Object.defineProperty(t, "RequestType8", { enumerable: !0, get: function() {
return e.RequestType8;
} }), Object.defineProperty(t, "RequestType9", { enumerable: !0, get: function() {
return e.RequestType9;
} }), Object.defineProperty(t, "ResponseError", { enumerable: !0, get: function() {
return e.ResponseError;
} }), Object.defineProperty(t, "ErrorCodes", { enumerable: !0, get: function() {
return e.ErrorCodes;
} }), Object.defineProperty(t, "NotificationType", { enumerable: !0, get: function() {
return e.NotificationType;
} }), Object.defineProperty(t, "NotificationType0", { enumerable: !0, get: function() {
return e.NotificationType0;
} }), Object.defineProperty(t, "NotificationType1", { enumerable: !0, get: function() {
return e.NotificationType1;
} }), Object.defineProperty(t, "NotificationType2", { enumerable: !0, get: function() {
return e.NotificationType2;
} }), Object.defineProperty(t, "NotificationType3", { enumerable: !0, get: function() {
return e.NotificationType3;
} }), Object.defineProperty(t, "NotificationType4", { enumerable: !0, get: function() {
return e.NotificationType4;
} }), Object.defineProperty(t, "NotificationType5", { enumerable: !0, get: function() {
return e.NotificationType5;
} }), Object.defineProperty(t, "NotificationType6", { enumerable: !0, get: function() {
return e.NotificationType6;
} }), Object.defineProperty(t, "NotificationType7", { enumerable: !0, get: function() {
return e.NotificationType7;
} }), Object.defineProperty(t, "NotificationType8", { enumerable: !0, get: function() {
return e.NotificationType8;
} }), Object.defineProperty(t, "NotificationType9", { enumerable: !0, get: function() {
return e.NotificationType9;
} }), Object.defineProperty(t, "ParameterStructures", { enumerable: !0, get: function() {
return e.ParameterStructures;
} });
const n = lp();
Object.defineProperty(t, "LinkedMap", { enumerable: !0, get: function() {
return n.LinkedMap;
} }), Object.defineProperty(t, "LRUCache", { enumerable: !0, get: function() {
return n.LRUCache;
} }), Object.defineProperty(t, "Touch", { enumerable: !0, get: function() {
return n.Touch;
} });
const r = pv();
Object.defineProperty(t, "Disposable", { enumerable: !0, get: function() {
return r.Disposable;
} });
const i = Ft;
Object.defineProperty(t, "Event", { enumerable: !0, get: function() {
return i.Event;
} }), Object.defineProperty(t, "Emitter", { enumerable: !0, get: function() {
return i.Emitter;
} });
const s = An;
Object.defineProperty(t, "CancellationTokenSource", { enumerable: !0, get: function() {
return s.CancellationTokenSource;
} }), Object.defineProperty(t, "CancellationToken", { enumerable: !0, get: function() {
return s.CancellationToken;
} });
const a = mv();
Object.defineProperty(t, "SharedArraySenderStrategy", { enumerable: !0, get: function() {
return a.SharedArraySenderStrategy;
} }), Object.defineProperty(t, "SharedArrayReceiverStrategy", { enumerable: !0, get: function() {
return a.SharedArrayReceiverStrategy;
} });
const o = gv();
Object.defineProperty(t, "MessageReader", { enumerable: !0, get: function() {
return o.MessageReader;
} }), Object.defineProperty(t, "AbstractMessageReader", { enumerable: !0, get: function() {
return o.AbstractMessageReader;
} }), Object.defineProperty(t, "ReadableStreamMessageReader", { enumerable: !0, get: function() {
return o.ReadableStreamMessageReader;
} });
const c = yv();
Object.defineProperty(t, "MessageWriter", { enumerable: !0, get: function() {
return c.MessageWriter;
} }), Object.defineProperty(t, "AbstractMessageWriter", { enumerable: !0, get: function() {
return c.AbstractMessageWriter;
} }), Object.defineProperty(t, "WriteableStreamMessageWriter", { enumerable: !0, get: function() {
return c.WriteableStreamMessageWriter;
} });
const l = Tv();
Object.defineProperty(t, "AbstractMessageBuffer", { enumerable: !0, get: function() {
return l.AbstractMessageBuffer;
} });
const u = Rv();
Object.defineProperty(t, "ConnectionStrategy", { enumerable: !0, get: function() {
return u.ConnectionStrategy;
} }), Object.defineProperty(t, "ConnectionOptions", { enumerable: !0, get: function() {
return u.ConnectionOptions;
} }), Object.defineProperty(t, "NullLogger", { enumerable: !0, get: function() {
return u.NullLogger;
} }), Object.defineProperty(t, "createMessageConnection", { enumerable: !0, get: function() {
return u.createMessageConnection;
} }), Object.defineProperty(t, "ProgressToken", { enumerable: !0, get: function() {
return u.ProgressToken;
} }), Object.defineProperty(t, "ProgressType", { enumerable: !0, get: function() {
return u.ProgressType;
} }), Object.defineProperty(t, "Trace", { enumerable: !0, get: function() {
return u.Trace;
} }), Object.defineProperty(t, "TraceValues", { enumerable: !0, get: function() {
return u.TraceValues;
} }), Object.defineProperty(t, "TraceFormat", { enumerable: !0, get: function() {
return u.TraceFormat;
} }), Object.defineProperty(t, "SetTraceNotification", { enumerable: !0, get: function() {
return u.SetTraceNotification;
} }), Object.defineProperty(t, "LogTraceNotification", { enumerable: !0, get: function() {
return u.LogTraceNotification;
} }), Object.defineProperty(t, "ConnectionErrors", { enumerable: !0, get: function() {
return u.ConnectionErrors;
} }), Object.defineProperty(t, "ConnectionError", { enumerable: !0, get: function() {
return u.ConnectionError;
} }), Object.defineProperty(t, "CancellationReceiverStrategy", { enumerable: !0, get: function() {
return u.CancellationReceiverStrategy;
} }), Object.defineProperty(t, "CancellationSenderStrategy", { enumerable: !0, get: function() {
return u.CancellationSenderStrategy;
} }), Object.defineProperty(t, "CancellationStrategy", { enumerable: !0, get: function() {
return u.CancellationStrategy;
} }), Object.defineProperty(t, "MessageStrategy", { enumerable: !0, get: function() {
return u.MessageStrategy;
} });
const f = cn;
t.RAL = f.default;
}(vo)), vo;
}
Object.defineProperty(ql, "__esModule", { value: !0 });
const Dt = al();
class Ya extends Dt.AbstractMessageBuffer {
constructor(e = "utf-8") {
super(e), this.asciiDecoder = new TextDecoder("ascii");
}
emptyBuffer() {
return Ya.emptyBuffer;
}
fromString(e, n) {
return new TextEncoder().encode(e);
}
toString(e, n) {
return n === "ascii" ? this.asciiDecoder.decode(e) : new TextDecoder(n).decode(e);
}
asNative(e, n) {
return n === void 0 ? e : e.slice(0, n);
}
allocNative(e) {
return new Uint8Array(e);
}
}
Ya.emptyBuffer = new Uint8Array(0);
class vv {
constructor(e) {
this.socket = e, this._onData = new Dt.Emitter(), this._messageListener = (n) => {
n.data.arrayBuffer().then((i) => {
this._onData.fire(new Uint8Array(i));
}, () => {
(0, Dt.RAL)().console.error("Converting blob to array buffer failed.");
});
}, this.socket.addEventListener("message", this._messageListener);
}
onClose(e) {
return this.socket.addEventListener("close", e), Dt.Disposable.create(() => this.socket.removeEventListener("close", e));
}
onError(e) {
return this.socket.addEventListener("error", e), Dt.Disposable.create(() => this.socket.removeEventListener("error", e));
}
onEnd(e) {
return this.socket.addEventListener("end", e), Dt.Disposable.create(() => this.socket.removeEventListener("end", e));
}
onData(e) {
return this._onData.event(e);
}
}
class Ev {
constructor(e) {
this.socket = e;
}
onClose(e) {
return this.socket.addEventListener("close", e), Dt.Disposable.create(() => this.socket.removeEventListener("close", e));
}
onError(e) {
return this.socket.addEventListener("error", e), Dt.Disposable.create(() => this.socket.removeEventListener("error", e));
}
onEnd(e) {
return this.socket.addEventListener("end", e), Dt.Disposable.create(() => this.socket.removeEventListener("end", e));
}
write(e, n) {
if (typeof e == "string") {
if (n !== void 0 && n !== "utf-8")
throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${n}`);
this.socket.send(e);
} else
this.socket.send(e);
return Promise.resolve();
}
end() {
this.socket.close();
}
}
const Av = new TextEncoder(), dp = Object.freeze({
messageBuffer: Object.freeze({
create: (t) => new Ya(t)
}),
applicationJson: Object.freeze({
encoder: Object.freeze({
name: "application/json",
encode: (t, e) => {
if (e.charset !== "utf-8")
throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${e.charset}`);
return Promise.resolve(Av.encode(JSON.stringify(t, void 0, 0)));
}
}),
decoder: Object.freeze({
name: "application/json",
decode: (t, e) => {
if (!(t instanceof Uint8Array))
throw new Error("In a Browser environments only Uint8Arrays are supported.");
return Promise.resolve(JSON.parse(new TextDecoder(e.charset).decode(t)));
}
})
}),
stream: Object.freeze({
asReadableStream: (t) => new vv(t),
asWritableStream: (t) => new Ev(t)
}),
console,
timer: Object.freeze({
setTimeout(t, e, ...n) {
const r = setTimeout(t, e, ...n);
return { dispose: () => clearTimeout(r) };
},
setImmediate(t, ...e) {
const n = setTimeout(t, 0, ...e);
return { dispose: () => clearTimeout(n) };
},
setInterval(t, e, ...n) {
const r = setInterval(t, e, ...n);
return { dispose: () => clearInterval(r) };
}
})
});
function ol() {
return dp;
}
(function(t) {
function e() {
Dt.RAL.install(dp);
}
t.install = e;
})(ol || (ol = {}));
ql.default = ol;
(function(t) {
var e = gt && gt.__createBinding || (Object.create ? function(c, l, u, f) {
f === void 0 && (f = u);
var m = Object.getOwnPropertyDescriptor(l, u);
(!m || ("get" in m ? !l.__esModule : m.writable || m.configurable)) && (m = { enumerable: !0, get: function() {
return l[u];
} }), Object.defineProperty(c, f, m);
} : function(c, l, u, f) {
f === void 0 && (f = u), c[f] = l[u];
}), n = gt && gt.__exportStar || function(c, l) {
for (var u in c) u !== "default" && !Object.prototype.hasOwnProperty.call(l, u) && e(l, c, u);
};
Object.defineProperty(t, "__esModule", { value: !0 }), t.createMessageConnection = t.BrowserMessageWriter = t.BrowserMessageReader = void 0, ql.default.install();
const i = al();
n(al(), t);
class s extends i.AbstractMessageReader {
constructor(l) {
super(), this._onData = new i.Emitter(), this._messageListener = (u) => {
this._onData.fire(u.data);
}, l.addEventListener("error", (u) => this.fireError(u)), l.onmessage = this._messageListener;
}
listen(l) {
return this._onData.event(l);
}
}
t.BrowserMessageReader = s;
class a extends i.AbstractMessageWriter {
constructor(l) {
super(), this.port = l, this.errorCount = 0, l.addEventListener("error", (u) => this.fireError(u));
}
write(l) {
try {
return this.port.postMessage(l), Promise.resolve();
} catch (u) {
return this.handleError(u, l), Promise.reject(u);
}
}
handleError(l, u) {
this.errorCount++, this.fireError(l, u, this.errorCount);
}
end() {
}
}
t.BrowserMessageWriter = a;
function o(c, l, u, f) {
return u === void 0 && (u = i.NullLogger), i.ConnectionStrategy.is(f) && (f = { connectionStrategy: f }), (0, i.createMessageConnection)(c, l, u, f);
}
t.createMessageConnection = o;
})(Xn);
var Zu = Xn, fp = {};
const Wl = /* @__PURE__ */ Hp(cR);
var H = {};
Object.defineProperty(H, "__esModule", { value: !0 });
H.ProtocolNotificationType = H.ProtocolNotificationType0 = H.ProtocolRequestType = H.ProtocolRequestType0 = H.RegistrationType = H.MessageDirection = void 0;
const Kr = Xn;
var ed;
(function(t) {
t.clientToServer = "clientToServer", t.serverToClient = "serverToClient", t.both = "both";
})(ed || (H.MessageDirection = ed = {}));
class Sv {
constructor(e) {
this.method = e;
}
}
H.RegistrationType = Sv;
class Cv extends Kr.RequestType0 {
constructor(e) {
super(e);
}
}
H.ProtocolRequestType0 = Cv;
class kv extends Kr.RequestType {
constructor(e) {
super(e, Kr.ParameterStructures.byName);
}
}
H.ProtocolRequestType = kv;
class Nv extends Kr.NotificationType0 {
constructor(e) {
super(e);
}
}
H.ProtocolNotificationType0 = Nv;
class wv extends Kr.NotificationType {
constructor(e) {
super(e, Kr.ParameterStructures.byName);
}
}
H.ProtocolNotificationType = wv;
var hp = {}, Ee = {};
Object.defineProperty(Ee, "__esModule", { value: !0 });
Ee.objectLiteral = Ee.typedArray = Ee.stringArray = Ee.array = Ee.func = Ee.error = Ee.number = Ee.string = Ee.boolean = void 0;
function bv(t) {
return t === !0 || t === !1;
}
Ee.boolean = bv;
function pp(t) {
return typeof t == "string" || t instanceof String;
}
Ee.string = pp;
function Iv(t) {
return typeof t == "number" || t instanceof Number;
}
Ee.number = Iv;
function _v(t) {
return t instanceof Error;
}
Ee.error = _v;
function $v(t) {
return typeof t == "function";
}
Ee.func = $v;
function mp(t) {
return Array.isArray(t);
}
Ee.array = mp;
function Pv(t) {
return mp(t) && t.every((e) => pp(e));
}
Ee.stringArray = Pv;
function Lv(t, e) {
return Array.isArray(t) && t.every(e);
}
Ee.typedArray = Lv;
function Ov(t) {
return t !== null && typeof t == "object";
}
Ee.objectLiteral = Ov;
var Xa = {};
Object.defineProperty(Xa, "__esModule", { value: !0 });
Xa.ImplementationRequest = void 0;
const td = H;
var nd;
(function(t) {
t.method = "textDocument/implementation", t.messageDirection = td.MessageDirection.clientToServer, t.type = new td.ProtocolRequestType(t.method);
})(nd || (Xa.ImplementationRequest = nd = {}));
var Ja = {};
Object.defineProperty(Ja, "__esModule", { value: !0 });
Ja.TypeDefinitionRequest = void 0;
const rd = H;
var id;
(function(t) {
t.method = "textDocument/typeDefinition", t.messageDirection = rd.MessageDirection.clientToServer, t.type = new rd.ProtocolRequestType(t.method);
})(id || (Ja.TypeDefinitionRequest = id = {}));
var Hr = {};
Object.defineProperty(Hr, "__esModule", { value: !0 });
Hr.DidChangeWorkspaceFoldersNotification = Hr.WorkspaceFoldersRequest = void 0;
const wa = H;
var sd;
(function(t) {
t.method = "workspace/workspaceFolders", t.messageDirection = wa.MessageDirection.serverToClient, t.type = new wa.ProtocolRequestType0(t.method);
})(sd || (Hr.WorkspaceFoldersRequest = sd = {}));
var ad;
(function(t) {
t.method = "workspace/didChangeWorkspaceFolders", t.messageDirection = wa.MessageDirection.clientToServer, t.type = new wa.ProtocolNotificationType(t.method);
})(ad || (Hr.DidChangeWorkspaceFoldersNotification = ad = {}));
var Qa = {};
Object.defineProperty(Qa, "__esModule", { value: !0 });
Qa.ConfigurationRequest = void 0;
const od = H;
var cd;
(function(t) {
t.method = "workspace/configuration", t.messageDirection = od.MessageDirection.serverToClient, t.type = new od.ProtocolRequestType(t.method);
})(cd || (Qa.ConfigurationRequest = cd = {}));
var Yr = {};
Object.defineProperty(Yr, "__esModule", { value: !0 });
Yr.ColorPresentationRequest = Yr.DocumentColorRequest = void 0;
const ba = H;
var ld;
(function(t) {
t.method = "textDocument/documentColor", t.messageDirection = ba.MessageDirection.clientToServer, t.type = new ba.ProtocolRequestType(t.method);
})(ld || (Yr.DocumentColorRequest = ld = {}));
var ud;
(function(t) {
t.method = "textDocument/colorPresentation", t.messageDirection = ba.MessageDirection.clientToServer, t.type = new ba.ProtocolRequestType(t.method);
})(ud || (Yr.ColorPresentationRequest = ud = {}));
var Xr = {};
Object.defineProperty(Xr, "__esModule", { value: !0 });
Xr.FoldingRangeRefreshRequest = Xr.FoldingRangeRequest = void 0;
const Ia = H;
var dd;
(function(t) {
t.method = "textDocument/foldingRange", t.messageDirection = Ia.MessageDirection.clientToServer, t.type = new Ia.ProtocolRequestType(t.method);
})(dd || (Xr.FoldingRangeRequest = dd = {}));
var fd;
(function(t) {
t.method = "workspace/foldingRange/refresh", t.messageDirection = Ia.MessageDirection.serverToClient, t.type = new Ia.ProtocolRequestType0(t.method);
})(fd || (Xr.FoldingRangeRefreshRequest = fd = {}));
var Za = {};
Object.defineProperty(Za, "__esModule", { value: !0 });
Za.DeclarationRequest = void 0;
const hd = H;
var pd;
(function(t) {
t.method = "textDocument/declaration", t.messageDirection = hd.MessageDirection.clientToServer, t.type = new hd.ProtocolRequestType(t.method);
})(pd || (Za.DeclarationRequest = pd = {}));
var eo = {};
Object.defineProperty(eo, "__esModule", { value: !0 });
eo.SelectionRangeRequest = void 0;
const md = H;
var gd;
(function(t) {
t.method = "textDocument/selectionRange", t.messageDirection = md.MessageDirection.clientToServer, t.type = new md.ProtocolRequestType(t.method);
})(gd || (eo.SelectionRangeRequest = gd = {}));
var pn = {};
Object.defineProperty(pn, "__esModule", { value: !0 });
pn.WorkDoneProgressCancelNotification = pn.WorkDoneProgressCreateRequest = pn.WorkDoneProgress = void 0;
const xv = Xn, _a = H;
var yd;
(function(t) {
t.type = new xv.ProgressType();
function e(n) {
return n === t.type;
}
t.is = e;
})(yd || (pn.WorkDoneProgress = yd = {}));
var Td;
(function(t) {
t.method = "window/workDoneProgress/create", t.messageDirection = _a.MessageDirection.serverToClient, t.type = new _a.ProtocolRequestType(t.method);
})(Td || (pn.WorkDoneProgressCreateRequest = Td = {}));
var Rd;
(function(t) {
t.method = "window/workDoneProgress/cancel", t.messageDirection = _a.MessageDirection.clientToServer, t.type = new _a.ProtocolNotificationType(t.method);
})(Rd || (pn.WorkDoneProgressCancelNotification = Rd = {}));
var mn = {};
Object.defineProperty(mn, "__esModule", { value: !0 });
mn.CallHierarchyOutgoingCallsRequest = mn.CallHierarchyIncomingCallsRequest = mn.CallHierarchyPrepareRequest = void 0;
const Jr = H;
var vd;
(function(t) {
t.method = "textDocument/prepareCallHierarchy", t.messageDirection = Jr.MessageDirection.clientToServer, t.type = new Jr.ProtocolRequestType(t.method);
})(vd || (mn.CallHierarchyPrepareRequest = vd = {}));
var Ed;
(function(t) {
t.method = "callHierarchy/incomingCalls", t.messageDirection = Jr.MessageDirection.clientToServer, t.type = new Jr.ProtocolRequestType(t.method);
})(Ed || (mn.CallHierarchyIncomingCallsRequest = Ed = {}));
var Ad;
(function(t) {
t.method = "callHierarchy/outgoingCalls", t.messageDirection = Jr.MessageDirection.clientToServer, t.type = new Jr.ProtocolRequestType(t.method);
})(Ad || (mn.CallHierarchyOutgoingCallsRequest = Ad = {}));
var Ze = {};
Object.defineProperty(Ze, "__esModule", { value: !0 });
Ze.SemanticTokensRefreshRequest = Ze.SemanticTokensRangeRequest = Ze.SemanticTokensDeltaRequest = Ze.SemanticTokensRequest = Ze.SemanticTokensRegistrationType = Ze.TokenFormat = void 0;
const sn = H;
var Sd;
(function(t) {
t.Relative = "relative";
})(Sd || (Ze.TokenFormat = Sd = {}));
var es;
(function(t) {
t.method = "textDocument/semanticTokens", t.type = new sn.RegistrationType(t.method);
})(es || (Ze.SemanticTokensRegistrationType = es = {}));
var Cd;
(function(t) {
t.method = "textDocument/semanticTokens/full", t.messageDirection = sn.MessageDirection.clientToServer, t.type = new sn.ProtocolRequestType(t.method), t.registrationMethod = es.method;
})(Cd || (Ze.SemanticTokensRequest = Cd = {}));
var kd;
(function(t) {
t.method = "textDocument/semanticTokens/full/delta", t.messageDirection = sn.MessageDirection.clientToServer, t.type = new sn.ProtocolRequestType(t.method), t.registrationMethod = es.method;
})(kd || (Ze.SemanticTokensDeltaRequest = kd = {}));
var Nd;
(function(t) {
t.method = "textDocument/semanticTokens/range", t.messageDirection = sn.MessageDirection.clientToServer, t.type = new sn.ProtocolRequestType(t.method), t.registrationMethod = es.method;
})(Nd || (Ze.SemanticTokensRangeRequest = Nd = {}));
var wd;
(function(t) {
t.method = "workspace/semanticTokens/refresh", t.messageDirection = sn.MessageDirection.serverToClient, t.type = new sn.ProtocolRequestType0(t.method);
})(wd || (Ze.SemanticTokensRefreshRequest = wd = {}));
var to = {};
Object.defineProperty(to, "__esModule", { value: !0 });
to.ShowDocumentRequest = void 0;
const bd = H;
var Id;
(function(t) {
t.method = "window/showDocument", t.messageDirection = bd.MessageDirection.serverToClient, t.type = new bd.ProtocolRequestType(t.method);
})(Id || (to.ShowDocumentRequest = Id = {}));
var no = {};
Object.defineProperty(no, "__esModule", { value: !0 });
no.LinkedEditingRangeRequest = void 0;
const _d = H;
var $d;
(function(t) {
t.method = "textDocument/linkedEditingRange", t.messageDirection = _d.MessageDirection.clientToServer, t.type = new _d.ProtocolRequestType(t.method);
})($d || (no.LinkedEditingRangeRequest = $d = {}));
var qe = {};
Object.defineProperty(qe, "__esModule", { value: !0 });
qe.WillDeleteFilesRequest = qe.DidDeleteFilesNotification = qe.DidRenameFilesNotification = qe.WillRenameFilesRequest = qe.DidCreateFilesNotification = qe.WillCreateFilesRequest = qe.FileOperationPatternKind = void 0;
const Tt = H;
var Pd;
(function(t) {
t.file = "file", t.folder = "folder";
})(Pd || (qe.FileOperationPatternKind = Pd = {}));
var Ld;
(function(t) {
t.method = "workspace/willCreateFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolRequestType(t.method);
})(Ld || (qe.WillCreateFilesRequest = Ld = {}));
var Od;
(function(t) {
t.method = "workspace/didCreateFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolNotificationType(t.method);
})(Od || (qe.DidCreateFilesNotification = Od = {}));
var xd;
(function(t) {
t.method = "workspace/willRenameFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolRequestType(t.method);
})(xd || (qe.WillRenameFilesRequest = xd = {}));
var Dd;
(function(t) {
t.method = "workspace/didRenameFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolNotificationType(t.method);
})(Dd || (qe.DidRenameFilesNotification = Dd = {}));
var Md;
(function(t) {
t.method = "workspace/didDeleteFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolNotificationType(t.method);
})(Md || (qe.DidDeleteFilesNotification = Md = {}));
var Fd;
(function(t) {
t.method = "workspace/willDeleteFiles", t.messageDirection = Tt.MessageDirection.clientToServer, t.type = new Tt.ProtocolRequestType(t.method);
})(Fd || (qe.WillDeleteFilesRequest = Fd = {}));
var gn = {};
Object.defineProperty(gn, "__esModule", { value: !0 });
gn.MonikerRequest = gn.MonikerKind = gn.UniquenessLevel = void 0;
const Gd = H;
var Ud;
(function(t) {
t.document = "document", t.project = "project", t.group = "group", t.scheme = "scheme", t.global = "global";
})(Ud || (gn.UniquenessLevel = Ud = {}));
var jd;
(function(t) {
t.$import = "import", t.$export = "export", t.local = "local";
})(jd || (gn.MonikerKind = jd = {}));
var zd;
(function(t) {
t.method = "textDocument/moniker", t.messageDirection = Gd.MessageDirection.clientToServer, t.type = new Gd.ProtocolRequestType(t.method);
})(zd || (gn.MonikerRequest = zd = {}));
var yn = {};
Object.defineProperty(yn, "__esModule", { value: !0 });
yn.TypeHierarchySubtypesRequest = yn.TypeHierarchySupertypesRequest = yn.TypeHierarchyPrepareRequest = void 0;
const Qr = H;
var Bd;
(function(t) {
t.method = "textDocument/prepareTypeHierarchy", t.messageDirection = Qr.MessageDirection.clientToServer, t.type = new Qr.ProtocolRequestType(t.method);
})(Bd || (yn.TypeHierarchyPrepareRequest = Bd = {}));
var qd;
(function(t) {
t.method = "typeHierarchy/supertypes", t.messageDirection = Qr.MessageDirection.clientToServer, t.type = new Qr.ProtocolRequestType(t.method);
})(qd || (yn.TypeHierarchySupertypesRequest = qd = {}));
var Wd;
(function(t) {
t.method = "typeHierarchy/subtypes", t.messageDirection = Qr.MessageDirection.clientToServer, t.type = new Qr.ProtocolRequestType(t.method);
})(Wd || (yn.TypeHierarchySubtypesRequest = Wd = {}));
var Zr = {};
Object.defineProperty(Zr, "__esModule", { value: !0 });
Zr.InlineValueRefreshRequest = Zr.InlineValueRequest = void 0;
const $a = H;
var Vd;
(function(t) {
t.method = "textDocument/inlineValue", t.messageDirection = $a.MessageDirection.clientToServer, t.type = new $a.ProtocolRequestType(t.method);
})(Vd || (Zr.InlineValueRequest = Vd = {}));
var Kd;
(function(t) {
t.method = "workspace/inlineValue/refresh", t.messageDirection = $a.MessageDirection.serverToClient, t.type = new $a.ProtocolRequestType0(t.method);
})(Kd || (Zr.InlineValueRefreshRequest = Kd = {}));
var Tn = {};
Object.defineProperty(Tn, "__esModule", { value: !0 });
Tn.InlayHintRefreshRequest = Tn.InlayHintResolveRequest = Tn.InlayHintRequest = void 0;
const ei = H;
var Hd;
(function(t) {
t.method = "textDocument/inlayHint", t.messageDirection = ei.MessageDirection.clientToServer, t.type = new ei.ProtocolRequestType(t.method);
})(Hd || (Tn.InlayHintRequest = Hd = {}));
var Yd;
(function(t) {
t.method = "inlayHint/resolve", t.messageDirection = ei.MessageDirection.clientToServer, t.type = new ei.ProtocolRequestType(t.method);
})(Yd || (Tn.InlayHintResolveRequest = Yd = {}));
var Xd;
(function(t) {
t.method = "workspace/inlayHint/refresh", t.messageDirection = ei.MessageDirection.serverToClient, t.type = new ei.ProtocolRequestType0(t.method);
})(Xd || (Tn.InlayHintRefreshRequest = Xd = {}));
var mt = {};
Object.defineProperty(mt, "__esModule", { value: !0 });
mt.DiagnosticRefreshRequest = mt.WorkspaceDiagnosticRequest = mt.DocumentDiagnosticRequest = mt.DocumentDiagnosticReportKind = mt.DiagnosticServerCancellationData = void 0;
const gp = Xn, Dv = Ee, ti = H;
var Jd;
(function(t) {
function e(n) {
const r = n;
return r && Dv.boolean(r.retriggerRequest);
}
t.is = e;
})(Jd || (mt.DiagnosticServerCancellationData = Jd = {}));
var Qd;
(function(t) {
t.Full = "full", t.Unchanged = "unchanged";
})(Qd || (mt.DocumentDiagnosticReportKind = Qd = {}));
var Zd;
(function(t) {
t.method = "textDocument/diagnostic", t.messageDirection = ti.MessageDirection.clientToServer, t.type = new ti.ProtocolRequestType(t.method), t.partialResult = new gp.ProgressType();
})(Zd || (mt.DocumentDiagnosticRequest = Zd = {}));
var ef;
(function(t) {
t.method = "workspace/diagnostic", t.messageDirection = ti.MessageDirection.clientToServer, t.type = new ti.ProtocolRequestType(t.method), t.partialResult = new gp.ProgressType();
})(ef || (mt.WorkspaceDiagnosticRequest = ef = {}));
var tf;
(function(t) {
t.method = "workspace/diagnostic/refresh", t.messageDirection = ti.MessageDirection.serverToClient, t.type = new ti.ProtocolRequestType0(t.method);
})(tf || (mt.DiagnosticRefreshRequest = tf = {}));
var ve = {};
Object.defineProperty(ve, "__esModule", { value: !0 });
ve.DidCloseNotebookDocumentNotification = ve.DidSaveNotebookDocumentNotification = ve.DidChangeNotebookDocumentNotification = ve.NotebookCellArrayChange = ve.DidOpenNotebookDocumentNotification = ve.NotebookDocumentSyncRegistrationType = ve.NotebookDocument = ve.NotebookCell = ve.ExecutionSummary = ve.NotebookCellKind = void 0;
const ts = Wl, kt = Ee, Gt = H;
var cl;
(function(t) {
t.Markup = 1, t.Code = 2;
function e(n) {
return n === 1 || n === 2;
}
t.is = e;
})(cl || (ve.NotebookCellKind = cl = {}));
var ll;
(function(t) {
function e(i, s) {
const a = { executionOrder: i };
return (s === !0 || s === !1) && (a.success = s), a;
}
t.create = e;
function n(i) {
const s = i;
return kt.objectLiteral(s) && ts.uinteger.is(s.executionOrder) && (s.success === void 0 || kt.boolean(s.success));
}
t.is = n;
function r(i, s) {
return i === s ? !0 : i == null || s === null || s === void 0 ? !1 : i.executionOrder === s.executionOrder && i.success === s.success;
}
t.equals = r;
})(ll || (ve.ExecutionSummary = ll = {}));
var Pa;
(function(t) {
function e(s, a) {
return { kind: s, document: a };
}
t.create = e;
function n(s) {
const a = s;
return kt.objectLiteral(a) && cl.is(a.kind) && ts.DocumentUri.is(a.document) && (a.metadata === void 0 || kt.objectLiteral(a.metadata));
}
t.is = n;
function r(s, a) {
const o = /* @__PURE__ */ new Set();
return s.document !== a.document && o.add("document"), s.kind !== a.kind && o.add("kind"), s.executionSummary !== a.executionSummary && o.add("executionSummary"), (s.metadata !== void 0 || a.metadata !== void 0) && !i(s.metadata, a.metadata) && o.add("metadata"), (s.executionSummary !== void 0 || a.executionSummary !== void 0) && !ll.equals(s.executionSummary, a.executionSummary) && o.add("executionSummary"), o;
}
t.diff = r;
function i(s, a) {
if (s === a)
return !0;
if (s == null || a === null || a === void 0 || typeof s != typeof a || typeof s != "object")
return !1;
const o = Array.isArray(s), c = Array.isArray(a);
if (o !== c)
return !1;
if (o && c) {
if (s.length !== a.length)
return !1;
for (let l = 0; l < s.length; l++)
if (!i(s[l], a[l]))
return !1;
}
if (kt.objectLiteral(s) && kt.objectLiteral(a)) {
const l = Object.keys(s), u = Object.keys(a);
if (l.length !== u.length || (l.sort(), u.sort(), !i(l, u)))
return !1;
for (let f = 0; f < l.length; f++) {
const m = l[f];
if (!i(s[m], a[m]))
return !1;
}
}
return !0;
}
})(Pa || (ve.NotebookCell = Pa = {}));
var nf;
(function(t) {
function e(r, i, s, a) {
return { uri: r, notebookType: i, version: s, cells: a };
}
t.create = e;
function n(r) {
const i = r;
return kt.objectLiteral(i) && kt.string(i.uri) && ts.integer.is(i.version) && kt.typedArray(i.cells, Pa.is);
}
t.is = n;
})(nf || (ve.NotebookDocument = nf = {}));
var ni;
(function(t) {
t.method = "notebookDocument/sync", t.messageDirection = Gt.MessageDirection.clientToServer, t.type = new Gt.RegistrationType(t.method);
})(ni || (ve.NotebookDocumentSyncRegistrationType = ni = {}));
var rf;
(function(t) {
t.method = "notebookDocument/didOpen", t.messageDirection = Gt.MessageDirection.clientToServer, t.type = new Gt.ProtocolNotificationType(t.method), t.registrationMethod = ni.method;
})(rf || (ve.DidOpenNotebookDocumentNotification = rf = {}));
var sf;
(function(t) {
function e(r) {
const i = r;
return kt.objectLiteral(i) && ts.uinteger.is(i.start) && ts.uinteger.is(i.deleteCount) && (i.cells === void 0 || kt.typedArray(i.cells, Pa.is));
}
t.is = e;
function n(r, i, s) {
const a = { start: r, deleteCount: i };
return s !== void 0 && (a.cells = s), a;
}
t.create = n;
})(sf || (ve.NotebookCellArrayChange = sf = {}));
var af;
(function(t) {
t.method = "notebookDocument/didChange", t.messageDirection = Gt.MessageDirection.clientToServer, t.type = new Gt.ProtocolNotificationType(t.method), t.registrationMethod = ni.method;
})(af || (ve.DidChangeNotebookDocumentNotification = af = {}));
var of;
(function(t) {
t.method = "notebookDocument/didSave", t.messageDirection = Gt.MessageDirection.clientToServer, t.type = new Gt.ProtocolNotificationType(t.method), t.registrationMethod = ni.method;
})(of || (ve.DidSaveNotebookDocumentNotification = of = {}));
var cf;
(function(t) {
t.method = "notebookDocument/didClose", t.messageDirection = Gt.MessageDirection.clientToServer, t.type = new Gt.ProtocolNotificationType(t.method), t.registrationMethod = ni.method;
})(cf || (ve.DidCloseNotebookDocumentNotification = cf = {}));
var ro = {};
Object.defineProperty(ro, "__esModule", { value: !0 });
ro.InlineCompletionRequest = void 0;
const lf = H;
var uf;
(function(t) {
t.method = "textDocument/inlineCompletion", t.messageDirection = lf.MessageDirection.clientToServer, t.type = new lf.ProtocolRequestType(t.method);
})(uf || (ro.InlineCompletionRequest = uf = {}));
(function(t) {
Object.defineProperty(t, "__esModule", { value: !0 }), t.WorkspaceSymbolRequest = t.CodeActionResolveRequest = t.CodeActionRequest = t.DocumentSymbolRequest = t.DocumentHighlightRequest = t.ReferencesRequest = t.DefinitionRequest = t.SignatureHelpRequest = t.SignatureHelpTriggerKind = t.HoverRequest = t.CompletionResolveRequest = t.CompletionRequest = t.CompletionTriggerKind = t.PublishDiagnosticsNotification = t.WatchKind = t.RelativePattern = t.FileChangeType = t.DidChangeWatchedFilesNotification = t.WillSaveTextDocumentWaitUntilRequest = t.WillSaveTextDocumentNotification = t.TextDocumentSaveReason = t.DidSaveTextDocumentNotification = t.DidCloseTextDocumentNotification = t.DidChangeTextDocumentNotification = t.TextDocumentContentChangeEvent = t.DidOpenTextDocumentNotification = t.TextDocumentSyncKind = t.TelemetryEventNotification = t.LogMessageNotification = t.ShowMessageRequest = t.ShowMessageNotification = t.MessageType = t.DidChangeConfigurationNotification = t.ExitNotification = t.ShutdownRequest = t.InitializedNotification = t.InitializeErrorCodes = t.InitializeRequest = t.WorkDoneProgressOptions = t.TextDocumentRegistrationOptions = t.StaticRegistrationOptions = t.PositionEncodingKind = t.FailureHandlingKind = t.ResourceOperationKind = t.UnregistrationRequest = t.RegistrationRequest = t.DocumentSelector = t.NotebookCellTextDocumentFilter = t.NotebookDocumentFilter = t.TextDocumentFilter = void 0, t.MonikerRequest = t.MonikerKind = t.UniquenessLevel = t.WillDeleteFilesRequest = t.DidDeleteFilesNotification = t.WillRenameFilesRequest = t.DidRenameFilesNotification = t.WillCreateFilesRequest = t.DidCreateFilesNotification = t.FileOperationPatternKind = t.LinkedEditingRangeRequest = t.ShowDocumentRequest = t.SemanticTokensRegistrationType = t.SemanticTokensRefreshRequest = t.SemanticTokensRangeRequest = t.SemanticTokensDeltaRequest = t.SemanticTokensRequest = t.TokenFormat = t.CallHierarchyPrepareRequest = t.CallHierarchyOutgoingCallsRequest = t.CallHierarchyIncomingCallsRequest = t.WorkDoneProgressCancelNotification = t.WorkDoneProgressCreateRequest = t.WorkDoneProgress = t.SelectionRangeRequest = t.DeclarationRequest = t.FoldingRangeRefreshRequest = t.FoldingRangeRequest = t.ColorPresentationRequest = t.DocumentColorRequest = t.ConfigurationRequest = t.DidChangeWorkspaceFoldersNotification = t.WorkspaceFoldersRequest = t.TypeDefinitionRequest = t.ImplementationRequest = t.ApplyWorkspaceEditRequest = t.ExecuteCommandRequest = t.PrepareRenameRequest = t.RenameRequest = t.PrepareSupportDefaultBehavior = t.DocumentOnTypeFormattingRequest = t.DocumentRangesFormattingRequest = t.DocumentRangeFormattingRequest = t.DocumentFormattingRequest = t.DocumentLinkResolveRequest = t.DocumentLinkRequest = t.CodeLensRefreshRequest = t.CodeLensResolveRequest = t.CodeLensRequest = t.WorkspaceSymbolResolveRequest = void 0, t.InlineCompletionRequest = t.DidCloseNotebookDocumentNotification = t.DidSaveNotebookDocumentNotification = t.DidChangeNotebookDocumentNotification = t.NotebookCellArrayChange = t.DidOpenNotebookDocumentNotification = t.NotebookDocumentSyncRegistrationType = t.NotebookDocument = t.NotebookCell = t.ExecutionSummary = t.NotebookCellKind = t.DiagnosticRefreshRequest = t.WorkspaceDiagnosticRequest = t.DocumentDiagnosticRequest = t.DocumentDiagnosticReportKind = t.DiagnosticServerCancellationData = t.InlayHintRefreshRequest = t.InlayHintResolveRequest = t.InlayHintRequest = t.InlineValueRefreshRequest = t.InlineValueRequest = t.TypeHierarchySupertypesRequest = t.TypeHierarchySubtypesRequest = t.TypeHierarchyPrepareRequest = void 0;
const e = H, n = Wl, r = Ee, i = Xa;
Object.defineProperty(t, "ImplementationRequest", { enumerable: !0, get: function() {
return i.ImplementationRequest;
} });
const s = Ja;
Object.defineProperty(t, "TypeDefinitionRequest", { enumerable: !0, get: function() {
return s.TypeDefinitionRequest;
} });
const a = Hr;
Object.defineProperty(t, "WorkspaceFoldersRequest", { enumerable: !0, get: function() {
return a.WorkspaceFoldersRequest;
} }), Object.defineProperty(t, "DidChangeWorkspaceFoldersNotification", { enumerable: !0, get: function() {
return a.DidChangeWorkspaceFoldersNotification;
} });
const o = Qa;
Object.defineProperty(t, "ConfigurationRequest", { enumerable: !0, get: function() {
return o.ConfigurationRequest;
} });
const c = Yr;
Object.defineProperty(t, "DocumentColorRequest", { enumerable: !0, get: function() {
return c.DocumentColorRequest;
} }), Object.defineProperty(t, "ColorPresentationRequest", { enumerable: !0, get: function() {
return c.ColorPresentationRequest;
} });
const l = Xr;
Object.defineProperty(t, "FoldingRangeRequest", { enumerable: !0, get: function() {
return l.FoldingRangeRequest;
} }), Object.defineProperty(t, "FoldingRangeRefreshRequest", { enumerable: !0, get: function() {
return l.FoldingRangeRefreshRequest;
} });
const u = Za;
Object.defineProperty(t, "DeclarationRequest", { enumerable: !0, get: function() {
return u.DeclarationRequest;
} });
const f = eo;
Object.defineProperty(t, "SelectionRangeRequest", { enumerable: !0, get: function() {
return f.SelectionRangeRequest;
} });
const m = pn;
Object.defineProperty(t, "WorkDoneProgress", { enumerable: !0, get: function() {
return m.WorkDoneProgress;
} }), Object.defineProperty(t, "WorkDoneProgressCreateRequest", { enumerable: !0, get: function() {
return m.WorkDoneProgressCreateRequest;
} }), Object.defineProperty(t, "WorkDoneProgressCancelNotification", { enumerable: !0, get: function() {
return m.WorkDoneProgressCancelNotification;
} });
const g = mn;
Object.defineProperty(t, "CallHierarchyIncomingCallsRequest", { enumerable: !0, get: function() {
return g.CallHierarchyIncomingCallsRequest;
} }), Object.defineProperty(t, "CallHierarchyOutgoingCallsRequest", { enumerable: !0, get: function() {
return g.CallHierarchyOutgoingCallsRequest;
} }), Object.defineProperty(t, "CallHierarchyPrepareRequest", { enumerable: !0, get: function() {
return g.CallHierarchyPrepareRequest;
} });
const A = Ze;
Object.defineProperty(t, "TokenFormat", { enumerable: !0, get: function() {
return A.TokenFormat;
} }), Object.defineProperty(t, "SemanticTokensRequest", { enumerable: !0, get: function() {
return A.SemanticTokensRequest;
} }), Object.defineProperty(t, "SemanticTokensDeltaRequest", { enumerable: !0, get: function() {
return A.SemanticTokensDeltaRequest;
} }), Object.defineProperty(t, "SemanticTokensRangeRequest", { enumerable: !0, get: function() {
return A.SemanticTokensRangeRequest;
} }), Object.defineProperty(t, "SemanticTokensRefreshRequest", { enumerable: !0, get: function() {
return A.SemanticTokensRefreshRequest;
} }), Object.defineProperty(t, "SemanticTokensRegistrationType", { enumerable: !0, get: function() {
return A.SemanticTokensRegistrationType;
} });
const N = to;
Object.defineProperty(t, "ShowDocumentRequest", { enumerable: !0, get: function() {
return N.ShowDocumentRequest;
} });
const $ = no;
Object.defineProperty(t, "LinkedEditingRangeRequest", { enumerable: !0, get: function() {
return $.LinkedEditingRangeRequest;
} });
const w = qe;
Object.defineProperty(t, "FileOperationPatternKind", { enumerable: !0, get: function() {
return w.FileOperationPatternKind;
} }), Object.defineProperty(t, "DidCreateFilesNotification", { enumerable: !0, get: function() {
return w.DidCreateFilesNotification;
} }), Object.defineProperty(t, "WillCreateFilesRequest", { enumerable: !0, get: function() {
return w.WillCreateFilesRequest;
} }), Object.defineProperty(t, "DidRenameFilesNotification", { enumerable: !0, get: function() {
return w.DidRenameFilesNotification;
} }), Object.defineProperty(t, "WillRenameFilesRequest", { enumerable: !0, get: function() {
return w.WillRenameFilesRequest;
} }), Object.defineProperty(t, "DidDeleteFilesNotification", { enumerable: !0, get: function() {
return w.DidDeleteFilesNotification;
} }), Object.defineProperty(t, "WillDeleteFilesRequest", { enumerable: !0, get: function() {
return w.WillDeleteFilesRequest;
} });
const O = gn;
Object.defineProperty(t, "UniquenessLevel", { enumerable: !0, get: function() {
return O.UniquenessLevel;
} }), Object.defineProperty(t, "MonikerKind", { enumerable: !0, get: function() {
return O.MonikerKind;
} }), Object.defineProperty(t, "MonikerRequest", { enumerable: !0, get: function() {
return O.MonikerRequest;
} });
const b = yn;
Object.defineProperty(t, "TypeHierarchyPrepareRequest", { enumerable: !0, get: function() {
return b.TypeHierarchyPrepareRequest;
} }), Object.defineProperty(t, "TypeHierarchySubtypesRequest", { enumerable: !0, get: function() {
return b.TypeHierarchySubtypesRequest;
} }), Object.defineProperty(t, "TypeHierarchySupertypesRequest", { enumerable: !0, get: function() {
return b.TypeHierarchySupertypesRequest;
} });
const x = Zr;
Object.defineProperty(t, "InlineValueRequest", { enumerable: !0, get: function() {
return x.InlineValueRequest;
} }), Object.defineProperty(t, "InlineValueRefreshRequest", { enumerable: !0, get: function() {
return x.InlineValueRefreshRequest;
} });
const X = Tn;
Object.defineProperty(t, "InlayHintRequest", { enumerable: !0, get: function() {
return X.InlayHintRequest;
} }), Object.defineProperty(t, "InlayHintResolveRequest", { enumerable: !0, get: function() {
return X.InlayHintResolveRequest;
} }), Object.defineProperty(t, "InlayHintRefreshRequest", { enumerable: !0, get: function() {
return X.InlayHintRefreshRequest;
} });
const te = mt;
Object.defineProperty(t, "DiagnosticServerCancellationData", { enumerable: !0, get: function() {
return te.DiagnosticServerCancellationData;
} }), Object.defineProperty(t, "DocumentDiagnosticReportKind", { enumerable: !0, get: function() {
return te.DocumentDiagnosticReportKind;
} }), Object.defineProperty(t, "DocumentDiagnosticRequest", { enumerable: !0, get: function() {
return te.DocumentDiagnosticRequest;
} }), Object.defineProperty(t, "WorkspaceDiagnosticRequest", { enumerable: !0, get: function() {
return te.WorkspaceDiagnosticRequest;
} }), Object.defineProperty(t, "DiagnosticRefreshRequest", { enumerable: !0, get: function() {
return te.DiagnosticRefreshRequest;
} });
const ne = ve;
Object.defineProperty(t, "NotebookCellKind", { enumerable: !0, get: function() {
return ne.NotebookCellKind;
} }), Object.defineProperty(t, "ExecutionSummary", { enumerable: !0, get: function() {
return ne.ExecutionSummary;
} }), Object.defineProperty(t, "NotebookCell", { enumerable: !0, get: function() {
return ne.NotebookCell;
} }), Object.defineProperty(t, "NotebookDocument", { enumerable: !0, get: function() {
return ne.NotebookDocument;
} }), Object.defineProperty(t, "NotebookDocumentSyncRegistrationType", { enumerable: !0, get: function() {
return ne.NotebookDocumentSyncRegistrationType;
} }), Object.defineProperty(t, "DidOpenNotebookDocumentNotification", { enumerable: !0, get: function() {
return ne.DidOpenNotebookDocumentNotification;
} }), Object.defineProperty(t, "NotebookCellArrayChange", { enumerable: !0, get: function() {
return ne.NotebookCellArrayChange;
} }), Object.defineProperty(t, "DidChangeNotebookDocumentNotification", { enumerable: !0, get: function() {
return ne.DidChangeNotebookDocumentNotification;
} }), Object.defineProperty(t, "DidSaveNotebookDocumentNotification", { enumerable: !0, get: function() {
return ne.DidSaveNotebookDocumentNotification;
} }), Object.defineProperty(t, "DidCloseNotebookDocumentNotification", { enumerable: !0, get: function() {
return ne.DidCloseNotebookDocumentNotification;
} });
const ye = ro;
Object.defineProperty(t, "InlineCompletionRequest", { enumerable: !0, get: function() {
return ye.InlineCompletionRequest;
} });
var Ce;
(function(d) {
function ke(Ne) {
const V = Ne;
return r.string(V) || r.string(V.language) || r.string(V.scheme) || r.string(V.pattern);
}
d.is = ke;
})(Ce || (t.TextDocumentFilter = Ce = {}));
var de;
(function(d) {
function ke(Ne) {
const V = Ne;
return r.objectLiteral(V) && (r.string(V.notebookType) || r.string(V.scheme) || r.string(V.pattern));
}
d.is = ke;
})(de || (t.NotebookDocumentFilter = de = {}));
var k;
(function(d) {
function ke(Ne) {
const V = Ne;
return r.objectLiteral(V) && (r.string(V.notebook) || de.is(V.notebook)) && (V.language === void 0 || r.string(V.language));
}
d.is = ke;
})(k || (t.NotebookCellTextDocumentFilter = k = {}));
var R;
(function(d) {
function ke(Ne) {
if (!Array.isArray(Ne))
return !1;
for (let V of Ne)
if (!r.string(V) && !Ce.is(V) && !k.is(V))
return !1;
return !0;
}
d.is = ke;
})(R || (t.DocumentSelector = R = {}));
var p;
(function(d) {
d.method = "client/registerCapability", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolRequestType(d.method);
})(p || (t.RegistrationRequest = p = {}));
var S;
(function(d) {
d.method = "client/unregisterCapability", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolRequestType(d.method);
})(S || (t.UnregistrationRequest = S = {}));
var y;
(function(d) {
d.Create = "create", d.Rename = "rename", d.Delete = "delete";
})(y || (t.ResourceOperationKind = y = {}));
var T;
(function(d) {
d.Abort = "abort", d.Transactional = "transactional", d.TextOnlyTransactional = "textOnlyTransactional", d.Undo = "undo";
})(T || (t.FailureHandlingKind = T = {}));
var E;
(function(d) {
d.UTF8 = "utf-8", d.UTF16 = "utf-16", d.UTF32 = "utf-32";
})(E || (t.PositionEncodingKind = E = {}));
var P;
(function(d) {
function ke(Ne) {
const V = Ne;
return V && r.string(V.id) && V.id.length > 0;
}
d.hasId = ke;
})(P || (t.StaticRegistrationOptions = P = {}));
var D;
(function(d) {
function ke(Ne) {
const V = Ne;
return V && (V.documentSelector === null || R.is(V.documentSelector));
}
d.is = ke;
})(D || (t.TextDocumentRegistrationOptions = D = {}));
var L;
(function(d) {
function ke(V) {
const h = V;
return r.objectLiteral(h) && (h.workDoneProgress === void 0 || r.boolean(h.workDoneProgress));
}
d.is = ke;
function Ne(V) {
const h = V;
return h && r.boolean(h.workDoneProgress);
}
d.hasWorkDoneProgress = Ne;
})(L || (t.WorkDoneProgressOptions = L = {}));
var z;
(function(d) {
d.method = "initialize", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(z || (t.InitializeRequest = z = {}));
var G;
(function(d) {
d.unknownProtocolVersion = 1;
})(G || (t.InitializeErrorCodes = G = {}));
var se;
(function(d) {
d.method = "initialized", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(se || (t.InitializedNotification = se = {}));
var q;
(function(d) {
d.method = "shutdown", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType0(d.method);
})(q || (t.ShutdownRequest = q = {}));
var re;
(function(d) {
d.method = "exit", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType0(d.method);
})(re || (t.ExitNotification = re = {}));
var xe;
(function(d) {
d.method = "workspace/didChangeConfiguration", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(xe || (t.DidChangeConfigurationNotification = xe = {}));
var Te;
(function(d) {
d.Error = 1, d.Warning = 2, d.Info = 3, d.Log = 4, d.Debug = 5;
})(Te || (t.MessageType = Te = {}));
var fe;
(function(d) {
d.method = "window/showMessage", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolNotificationType(d.method);
})(fe || (t.ShowMessageNotification = fe = {}));
var $e;
(function(d) {
d.method = "window/showMessageRequest", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolRequestType(d.method);
})($e || (t.ShowMessageRequest = $e = {}));
var De;
(function(d) {
d.method = "window/logMessage", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolNotificationType(d.method);
})(De || (t.LogMessageNotification = De = {}));
var be;
(function(d) {
d.method = "telemetry/event", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolNotificationType(d.method);
})(be || (t.TelemetryEventNotification = be = {}));
var Q;
(function(d) {
d.None = 0, d.Full = 1, d.Incremental = 2;
})(Q || (t.TextDocumentSyncKind = Q = {}));
var st;
(function(d) {
d.method = "textDocument/didOpen", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(st || (t.DidOpenTextDocumentNotification = st = {}));
var Re;
(function(d) {
function ke(V) {
let h = V;
return h != null && typeof h.text == "string" && h.range !== void 0 && (h.rangeLength === void 0 || typeof h.rangeLength == "number");
}
d.isIncremental = ke;
function Ne(V) {
let h = V;
return h != null && typeof h.text == "string" && h.range === void 0 && h.rangeLength === void 0;
}
d.isFull = Ne;
})(Re || (t.TextDocumentContentChangeEvent = Re = {}));
var Rt;
(function(d) {
d.method = "textDocument/didChange", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(Rt || (t.DidChangeTextDocumentNotification = Rt = {}));
var Zn;
(function(d) {
d.method = "textDocument/didClose", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(Zn || (t.DidCloseTextDocumentNotification = Zn = {}));
var ci;
(function(d) {
d.method = "textDocument/didSave", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(ci || (t.DidSaveTextDocumentNotification = ci = {}));
var li;
(function(d) {
d.Manual = 1, d.AfterDelay = 2, d.FocusOut = 3;
})(li || (t.TextDocumentSaveReason = li = {}));
var ui;
(function(d) {
d.method = "textDocument/willSave", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(ui || (t.WillSaveTextDocumentNotification = ui = {}));
var di;
(function(d) {
d.method = "textDocument/willSaveWaitUntil", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(di || (t.WillSaveTextDocumentWaitUntilRequest = di = {}));
var vt;
(function(d) {
d.method = "workspace/didChangeWatchedFiles", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolNotificationType(d.method);
})(vt || (t.DidChangeWatchedFilesNotification = vt = {}));
var fi;
(function(d) {
d.Created = 1, d.Changed = 2, d.Deleted = 3;
})(fi || (t.FileChangeType = fi = {}));
var fs;
(function(d) {
function ke(Ne) {
const V = Ne;
return r.objectLiteral(V) && (n.URI.is(V.baseUri) || n.WorkspaceFolder.is(V.baseUri)) && r.string(V.pattern);
}
d.is = ke;
})(fs || (t.RelativePattern = fs = {}));
var hs;
(function(d) {
d.Create = 1, d.Change = 2, d.Delete = 4;
})(hs || (t.WatchKind = hs = {}));
var ps;
(function(d) {
d.method = "textDocument/publishDiagnostics", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolNotificationType(d.method);
})(ps || (t.PublishDiagnosticsNotification = ps = {}));
var ms;
(function(d) {
d.Invoked = 1, d.TriggerCharacter = 2, d.TriggerForIncompleteCompletions = 3;
})(ms || (t.CompletionTriggerKind = ms = {}));
var hi;
(function(d) {
d.method = "textDocument/completion", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(hi || (t.CompletionRequest = hi = {}));
var pi;
(function(d) {
d.method = "completionItem/resolve", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(pi || (t.CompletionResolveRequest = pi = {}));
var jt;
(function(d) {
d.method = "textDocument/hover", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(jt || (t.HoverRequest = jt = {}));
var mi;
(function(d) {
d.Invoked = 1, d.TriggerCharacter = 2, d.ContentChange = 3;
})(mi || (t.SignatureHelpTriggerKind = mi = {}));
var gs;
(function(d) {
d.method = "textDocument/signatureHelp", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(gs || (t.SignatureHelpRequest = gs = {}));
var ys;
(function(d) {
d.method = "textDocument/definition", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(ys || (t.DefinitionRequest = ys = {}));
var gi;
(function(d) {
d.method = "textDocument/references", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(gi || (t.ReferencesRequest = gi = {}));
var yi;
(function(d) {
d.method = "textDocument/documentHighlight", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(yi || (t.DocumentHighlightRequest = yi = {}));
var Ts;
(function(d) {
d.method = "textDocument/documentSymbol", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Ts || (t.DocumentSymbolRequest = Ts = {}));
var Rs;
(function(d) {
d.method = "textDocument/codeAction", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Rs || (t.CodeActionRequest = Rs = {}));
var vs;
(function(d) {
d.method = "codeAction/resolve", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(vs || (t.CodeActionResolveRequest = vs = {}));
var Es;
(function(d) {
d.method = "workspace/symbol", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Es || (t.WorkspaceSymbolRequest = Es = {}));
var As;
(function(d) {
d.method = "workspaceSymbol/resolve", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(As || (t.WorkspaceSymbolResolveRequest = As = {}));
var Ss;
(function(d) {
d.method = "textDocument/codeLens", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Ss || (t.CodeLensRequest = Ss = {}));
var Et;
(function(d) {
d.method = "codeLens/resolve", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Et || (t.CodeLensResolveRequest = Et = {}));
var Cs;
(function(d) {
d.method = "workspace/codeLens/refresh", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolRequestType0(d.method);
})(Cs || (t.CodeLensRefreshRequest = Cs = {}));
var ks;
(function(d) {
d.method = "textDocument/documentLink", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(ks || (t.DocumentLinkRequest = ks = {}));
var In;
(function(d) {
d.method = "documentLink/resolve", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(In || (t.DocumentLinkResolveRequest = In = {}));
var Ns;
(function(d) {
d.method = "textDocument/formatting", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Ns || (t.DocumentFormattingRequest = Ns = {}));
var er;
(function(d) {
d.method = "textDocument/rangeFormatting", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(er || (t.DocumentRangeFormattingRequest = er = {}));
var ws;
(function(d) {
d.method = "textDocument/rangesFormatting", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(ws || (t.DocumentRangesFormattingRequest = ws = {}));
var zt;
(function(d) {
d.method = "textDocument/onTypeFormatting", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(zt || (t.DocumentOnTypeFormattingRequest = zt = {}));
var ln;
(function(d) {
d.Identifier = 1;
})(ln || (t.PrepareSupportDefaultBehavior = ln = {}));
var bs;
(function(d) {
d.method = "textDocument/rename", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(bs || (t.RenameRequest = bs = {}));
var Is;
(function(d) {
d.method = "textDocument/prepareRename", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(Is || (t.PrepareRenameRequest = Is = {}));
var un;
(function(d) {
d.method = "workspace/executeCommand", d.messageDirection = e.MessageDirection.clientToServer, d.type = new e.ProtocolRequestType(d.method);
})(un || (t.ExecuteCommandRequest = un = {}));
var Ti;
(function(d) {
d.method = "workspace/applyEdit", d.messageDirection = e.MessageDirection.serverToClient, d.type = new e.ProtocolRequestType("workspace/applyEdit");
})(Ti || (t.ApplyWorkspaceEditRequest = Ti = {}));
})(hp);
var io = {};
Object.defineProperty(io, "__esModule", { value: !0 });
io.createProtocolConnection = void 0;
const df = Xn;
function Mv(t, e, n, r) {
return df.ConnectionStrategy.is(r) && (r = { connectionStrategy: r }), (0, df.createMessageConnection)(t, e, n, r);
}
io.createProtocolConnection = Mv;
(function(t) {
var e = gt && gt.__createBinding || (Object.create ? function(s, a, o, c) {
c === void 0 && (c = o);
var l = Object.getOwnPropertyDescriptor(a, o);
(!l || ("get" in l ? !a.__esModule : l.writable || l.configurable)) && (l = { enumerable: !0, get: function() {
return a[o];
} }), Object.defineProperty(s, c, l);
} : function(s, a, o, c) {
c === void 0 && (c = o), s[c] = a[o];
}), n = gt && gt.__exportStar || function(s, a) {
for (var o in s) o !== "default" && !Object.prototype.hasOwnProperty.call(a, o) && e(a, s, o);
};
Object.defineProperty(t, "__esModule", { value: !0 }), t.LSPErrorCodes = t.createProtocolConnection = void 0, n(Xn, t), n(Wl, t), n(H, t), n(hp, t);
var r = io;
Object.defineProperty(t, "createProtocolConnection", { enumerable: !0, get: function() {
return r.createProtocolConnection;
} });
var i;
(function(s) {
s.lspReservedErrorRangeStart = -32899, s.RequestFailed = -32803, s.ServerCancelled = -32802, s.ContentModified = -32801, s.RequestCancelled = -32800, s.lspReservedErrorRangeEnd = -32800;
})(i || (t.LSPErrorCodes = i = {}));
})(fp);
(function(t) {
var e = gt && gt.__createBinding || (Object.create ? function(s, a, o, c) {
c === void 0 && (c = o);
var l = Object.getOwnPropertyDescriptor(a, o);
(!l || ("get" in l ? !a.__esModule : l.writable || l.configurable)) && (l = { enumerable: !0, get: function() {
return a[o];
} }), Object.defineProperty(s, c, l);
} : function(s, a, o, c) {
c === void 0 && (c = o), s[c] = a[o];
}), n = gt && gt.__exportStar || function(s, a) {
for (var o in s) o !== "default" && !Object.prototype.hasOwnProperty.call(a, o) && e(a, s, o);
};
Object.defineProperty(t, "__esModule", { value: !0 }), t.createProtocolConnection = void 0;
const r = Zu;
n(Zu, t), n(fp, t);
function i(s, a, o, c) {
return (0, r.createMessageConnection)(s, a, o, c);
}
t.createProtocolConnection = i;
})(Gi);
var ji;
(function(t) {
function e(n) {
return {
dispose: async () => await n()
};
}
t.create = e;
})(ji || (ji = {}));
class Fv {
constructor(e) {
this.updateBuildOptions = {
// Default: run only the built-in validation checks and those in the _fast_ category (includes those without category)
validation: {
categories: ["built-in", "fast"]
}
}, this.updateListeners = [], this.buildPhaseListeners = new Zi(), this.documentPhaseListeners = new Zi(), this.buildState = /* @__PURE__ */ new Map(), this.documentBuildWaiters = /* @__PURE__ */ new Map(), this.currentState = K.Changed, this.langiumDocuments = e.workspace.LangiumDocuments, this.langiumDocumentFactory = e.workspace.LangiumDocumentFactory, this.textDocuments = e.workspace.TextDocuments, this.indexManager = e.workspace.IndexManager, this.fileSystemProvider = e.workspace.FileSystemProvider, this.workspaceManager = () => e.workspace.WorkspaceManager, this.serviceRegistry = e.ServiceRegistry;
}
async build(e, n = {}, r = ge.None) {
var i;
for (const s of e) {
const a = s.uri.toString();
if (s.state === K.Validated) {
if (typeof n.validation == "boolean" && n.validation)
this.resetToState(s, K.IndexedReferences);
else if (typeof n.validation == "object") {
const o = this.findMissingValidationCategories(s, n);
o.length > 0 && (this.buildState.set(a, {
completed: !1,
options: {
validation: {
categories: o
}
},
result: (i = this.buildState.get(a)) == null ? void 0 : i.result
}), s.state = K.IndexedReferences);
}
} else
this.buildState.delete(a);
}
this.currentState = K.Changed, await this.emitUpdate(e.map((s) => s.uri), []), await this.buildDocuments(e, n, r);
}
async update(e, n, r = ge.None) {
this.currentState = K.Changed;
const i = [];
for (const c of n) {
const l = this.langiumDocuments.deleteDocuments(c);
for (const u of l)
i.push(u.uri), this.cleanUpDeleted(u);
}
const s = (await Promise.all(e.map((c) => this.findChangedUris(c)))).flat();
for (const c of s) {
let l = this.langiumDocuments.getDocument(c);
l === void 0 && (l = this.langiumDocumentFactory.fromModel({ $type: "INVALID" }, c), l.state = K.Changed, this.langiumDocuments.addDocument(l)), this.resetToState(l, K.Changed);
}
const a = pe(s).concat(i).map((c) => c.toString()).toSet();
this.langiumDocuments.all.filter((c) => !a.has(c.uri.toString()) && this.shouldRelink(c, a)).forEach((c) => this.resetToState(c, K.ComputedScopes)), await this.emitUpdate(s, i), await He(r);
const o = this.sortDocuments(this.langiumDocuments.all.filter((c) => {
var l;
return (
// This includes those that were reported as changed and those that we selected for relinking
c.state < K.Validated || !((l = this.buildState.get(c.uri.toString())) != null && l.completed) || this.resultsAreIncomplete(c, this.updateBuildOptions)
);
}).toArray());
await this.buildDocuments(o, this.updateBuildOptions, r);
}
resultsAreIncomplete(e, n) {
return this.findMissingValidationCategories(e, n).length >= 1;
}
findMissingValidationCategories(e, n) {
var o, c;
const r = this.buildState.get(e.uri.toString()), i = this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e), s = (o = r == null ? void 0 : r.result) != null && o.validationChecks ? new Set((c = r == null ? void 0 : r.result) == null ? void 0 : c.validationChecks) : r != null && r.completed ? i : /* @__PURE__ */ new Set(), a = n === void 0 || n.validation === !0 ? i : typeof n.validation == "object" ? n.validation.categories ?? i : [];
return pe(a).filter((l) => !s.has(l)).toArray();
}
async findChangedUris(e) {
var r;
if (this.langiumDocuments.getDocument(e) ?? ((r = this.textDocuments) == null ? void 0 : r.get(e)))
return [e];
try {
const i = await this.fileSystemProvider.stat(e);
if (i.isDirectory)
return await this.workspaceManager().searchFolder(e);
if (this.workspaceManager().shouldIncludeEntry(i))
return [e];
} catch {
}
return [];
}
async emitUpdate(e, n) {
await Promise.all(this.updateListeners.map((r) => r(e, n)));
}
/**
* Sort the given documents by priority. By default, documents with an open text document are prioritized.
* This is useful to ensure that visible documents show their diagnostics before all other documents.
*
* This improves the responsiveness in large workspaces as users usually don't care about diagnostics
* in files that are currently not opened in the editor.
*/
sortDocuments(e) {
let n = 0, r = e.length - 1;
for (; n < r; ) {
for (; n < e.length && this.hasTextDocument(e[n]); )
n++;
for (; r >= 0 && !this.hasTextDocument(e[r]); )
r--;
n < r && ([e[n], e[r]] = [e[r], e[n]]);
}
return e;
}
hasTextDocument(e) {
var n;
return !!((n = this.textDocuments) != null && n.get(e.uri));
}
/**
* Check whether the given document should be relinked after changes were found in the given URIs.
*/
shouldRelink(e, n) {
return e.references.some((r) => r.error !== void 0) ? !0 : this.indexManager.isAffected(e, n);
}
onUpdate(e) {
return this.updateListeners.push(e), ji.create(() => {
const n = this.updateListeners.indexOf(e);
n >= 0 && this.updateListeners.splice(n, 1);
});
}
resetToState(e, n) {
switch (n) {
case K.Changed:
case K.Parsed:
this.indexManager.removeContent(e.uri);
case K.IndexedContent:
e.localSymbols = void 0;
case K.ComputedScopes:
this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);
case K.Linked:
this.indexManager.removeReferences(e.uri);
case K.IndexedReferences:
e.diagnostics = void 0, this.buildState.delete(e.uri.toString());
case K.Validated:
}
e.state > n && (e.state = n);
}
cleanUpDeleted(e) {
this.buildState.delete(e.uri.toString()), this.indexManager.remove(e.uri), e.state = K.Changed;
}
/**
* Build the given documents by stepping through all build phases. If a document's state indicates
* that a certain build phase is already done, the phase is skipped for that document.
*
* @param documents The documents to build.
* @param options the {@link BuildOptions} to use.
* @param cancelToken A cancellation token that can be used to cancel the build.
* @returns A promise that resolves when the build is done.
*/
async buildDocuments(e, n, r) {
this.prepareBuild(e, n), await this.runCancelable(e, K.Parsed, r, (a) => this.langiumDocumentFactory.update(a, r)), await this.runCancelable(e, K.IndexedContent, r, (a) => this.indexManager.updateContent(a, r)), await this.runCancelable(e, K.ComputedScopes, r, async (a) => {
const o = this.serviceRegistry.getServices(a.uri).references.ScopeComputation;
a.localSymbols = await o.collectLocalSymbols(a, r);
});
const i = e.filter((a) => this.shouldLink(a));
await this.runCancelable(i, K.Linked, r, (a) => this.serviceRegistry.getServices(a.uri).references.Linker.link(a, r)), await this.runCancelable(i, K.IndexedReferences, r, (a) => this.indexManager.updateReferences(a, r));
const s = e.filter((a) => this.shouldValidate(a) ? !0 : (this.markAsCompleted(a), !1));
await this.runCancelable(s, K.Validated, r, async (a) => {
await this.validate(a, r), this.markAsCompleted(a);
});
}
markAsCompleted(e) {
const n = this.buildState.get(e.uri.toString());
n && (n.completed = !0);
}
/**
* Runs prior to beginning the build process to update the {@link DocumentBuildState} for each document
*
* @param documents collection of documents to be built
* @param options the {@link BuildOptions} to use
*/
prepareBuild(e, n) {
for (const r of e) {
const i = r.uri.toString(), s = this.buildState.get(i);
(!s || s.completed) && this.buildState.set(i, {
completed: !1,
options: n,
result: s == null ? void 0 : s.result
});
}
}
/**
* Runs a cancelable operation on a set of documents to bring them to a specified {@link DocumentState}.
*
* @param documents The array of documents to process.
* @param targetState The target {@link DocumentState} to bring the documents to.
* @param cancelToken A token that can be used to cancel the operation.
* @param callback A function to be called for each document.
* @returns A promise that resolves when all documents have been processed or the operation is canceled.
* @throws Will throw `OperationCancelled` if the operation is canceled via a `CancellationToken`.
*/
async runCancelable(e, n, r, i) {
for (const a of e)
a.state < n && (await He(r), await i(a), a.state = n, await this.notifyDocumentPhase(a, n, r));
const s = e.filter((a) => a.state === n);
await this.notifyBuildPhase(s, n, r), this.currentState = n;
}
onBuildPhase(e, n) {
return this.buildPhaseListeners.add(e, n), ji.create(() => {
this.buildPhaseListeners.delete(e, n);
});
}
onDocumentPhase(e, n) {
return this.documentPhaseListeners.add(e, n), ji.create(() => {
this.documentPhaseListeners.delete(e, n);
});
}
waitUntil(e, n, r) {
let i;
return n && "path" in n ? i = n : r = n, r ?? (r = ge.None), i ? this.awaitDocumentState(e, i, r) : this.awaitBuilderState(e, r);
}
awaitDocumentState(e, n, r) {
const i = this.langiumDocuments.getDocument(n);
if (i) {
if (i.state >= e)
return Promise.resolve(n);
if (r.isCancellationRequested)
return Promise.reject(Er);
if (this.currentState >= e && e > i.state)
return Promise.reject(new Gi.ResponseError(Gi.LSPErrorCodes.RequestFailed, `Document state of ${n.toString()} is ${K[i.state]}, requiring ${K[e]}, but workspace state is already ${K[this.currentState]}. Returning undefined.`));
} else return Promise.reject(new Gi.ResponseError(Gi.LSPErrorCodes.ServerCancelled, `No document found for URI: ${n.toString()}`));
return new Promise((s, a) => {
const o = this.onDocumentPhase(e, (l) => {
ct.equals(l.uri, n) && (o.dispose(), c.dispose(), s(l.uri));
}), c = r.onCancellationRequested(() => {
o.dispose(), c.dispose(), a(Er);
});
});
}
awaitBuilderState(e, n) {
return this.currentState >= e ? Promise.resolve() : n.isCancellationRequested ? Promise.reject(Er) : new Promise((r, i) => {
const s = this.onBuildPhase(e, () => {
s.dispose(), a.dispose(), r();
}), a = n.onCancellationRequested(() => {
s.dispose(), a.dispose(), i(Er);
});
});
}
async notifyDocumentPhase(e, n, r) {
const s = this.documentPhaseListeners.get(n).slice();
for (const a of s)
try {
await He(r), await a(e, r);
} catch (o) {
if (!Ha(o))
throw o;
}
}
async notifyBuildPhase(e, n, r) {
if (e.length === 0)
return;
const s = this.buildPhaseListeners.get(n).slice();
for (const a of s)
await He(r), await a(e, r);
}
/**
* Determine whether the given document should be linked during a build. The default
* implementation checks the `eagerLinking` property of the build options. If it's set to `true`
* or `undefined`, the document is included in the linking phase. This also affects the
* references indexing phase, which depends on eager linking.
*/
shouldLink(e) {
return this.getBuildOptions(e).eagerLinking ?? !0;
}
/**
* Determine whether the given document should be validated during a build. The default
* implementation checks the `validation` property of the build options. If it's set to `true`
* or a `ValidationOptions` object, the document is included in the validation phase.
*/
shouldValidate(e) {
return !!this.getBuildOptions(e).validation;
}
/**
* Run validation checks on the given document and store the resulting diagnostics in the document.
* If the document already contains diagnostics, the new ones are added to the list.
*/
async validate(e, n) {
const r = this.serviceRegistry.getServices(e.uri).validation.DocumentValidator, i = this.getBuildOptions(e), s = typeof i.validation == "object" ? { ...i.validation } : {};
s.categories = this.findMissingValidationCategories(e, i);
const a = await r.validateDocument(e, s, n);
e.diagnostics ? e.diagnostics.push(...a) : e.diagnostics = a;
const o = this.buildState.get(e.uri.toString());
o && (o.result ?? (o.result = {}), o.result.validationChecks ? o.result.validationChecks = pe(o.result.validationChecks).concat(s.categories).distinct().toArray() : o.result.validationChecks = [...s.categories]);
}
getBuildOptions(e) {
var n;
return ((n = this.buildState.get(e.uri.toString())) == null ? void 0 : n.options) ?? {};
}
}
class Gv {
constructor(e) {
this.symbolIndex = /* @__PURE__ */ new Map(), this.symbolByTypeIndex = new ZR(), this.referenceIndex = /* @__PURE__ */ new Map(), this.documents = e.workspace.LangiumDocuments, this.serviceRegistry = e.ServiceRegistry, this.astReflection = e.AstReflection;
}
findAllReferences(e, n) {
const r = Qt(e).uri, i = [];
return this.referenceIndex.forEach((s) => {
s.forEach((a) => {
ct.equals(a.targetUri, r) && a.targetPath === n && i.push(a);
});
}), pe(i);
}
allElements(e, n) {
let r = pe(this.symbolIndex.keys());
return n && (r = r.filter((i) => !n || n.has(i))), r.map((i) => this.getFileDescriptions(i, e)).flat();
}
getFileDescriptions(e, n) {
return n ? this.symbolByTypeIndex.get(e, n, () => (this.symbolIndex.get(e) ?? []).filter((s) => this.astReflection.isSubtype(s.type, n))) : this.symbolIndex.get(e) ?? [];
}
remove(e) {
this.removeContent(e), this.removeReferences(e);
}
removeContent(e) {
const n = e.toString();
this.symbolIndex.delete(n), this.symbolByTypeIndex.clear(n);
}
removeReferences(e) {
const n = e.toString();
this.referenceIndex.delete(n);
}
async updateContent(e, n = ge.None) {
const i = await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e, n), s = e.uri.toString();
this.symbolIndex.set(s, i), this.symbolByTypeIndex.clear(s);
}
async updateReferences(e, n = ge.None) {
const i = await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e, n);
this.referenceIndex.set(e.uri.toString(), i);
}
isAffected(e, n) {
const r = this.referenceIndex.get(e.uri.toString());
return r ? r.some((i) => !i.local && n.has(i.targetUri.toString())) : !1;
}
}
class Uv {
constructor(e) {
this.initialBuildOptions = {}, this._ready = new Bl(), this.serviceRegistry = e.ServiceRegistry, this.langiumDocuments = e.workspace.LangiumDocuments, this.documentBuilder = e.workspace.DocumentBuilder, this.fileSystemProvider = e.workspace.FileSystemProvider, this.mutex = e.workspace.WorkspaceLock;
}
get ready() {
return this._ready.promise;
}
get workspaceFolders() {
return this.folders;
}
initialize(e) {
this.folders = e.workspaceFolders ?? void 0;
}
initialized(e) {
return this.mutex.write((n) => this.initializeWorkspace(this.folders ?? [], n));
}
async initializeWorkspace(e, n = ge.None) {
const r = await this.performStartup(e);
await He(n), await this.documentBuilder.build(r, this.initialBuildOptions, n);
}
/**
* Performs the uninterruptable startup sequence of the workspace manager.
* This methods loads all documents in the workspace and other documents and returns them.
*/
async performStartup(e) {
const n = [], r = (a) => {
n.push(a), this.langiumDocuments.hasDocument(a.uri) || this.langiumDocuments.addDocument(a);
};
await this.loadAdditionalDocuments(e, r);
const i = [];
await Promise.all(e.map((a) => this.getRootFolder(a)).map(async (a) => this.traverseFolder(a, i)));
const s = pe(i).distinct((a) => a.toString()).filter((a) => !this.langiumDocuments.hasDocument(a));
return await this.loadWorkspaceDocuments(s, r), this._ready.resolve(), n;
}
async loadWorkspaceDocuments(e, n) {
await Promise.all(e.map(async (r) => {
const i = await this.langiumDocuments.getOrCreateDocument(r);
n(i);
}));
}
/**
* Load all additional documents that shall be visible in the context of the given workspace
* folders and add them to the collector. This can be used to include built-in libraries of
* your language, which can be either loaded from provided files or constructed in memory.
*/
loadAdditionalDocuments(e, n) {
return Promise.resolve();
}
/**
* Determine the root folder of the source documents in the given workspace folder.
* The default implementation returns the URI of the workspace folder, but you can override
* this to return a subfolder like `src` instead.
*/
getRootFolder(e) {
return wt.parse(e.uri);
}
/**
* Traverse the file system folder identified by the given URI and its subfolders. All
* contained files that match the file extensions are added to the `uris` array.
*/
async traverseFolder(e, n) {
try {
const r = await this.fileSystemProvider.readDirectory(e);
await Promise.all(r.map(async (i) => {
this.shouldIncludeEntry(i) && (i.isDirectory ? await this.traverseFolder(i.uri, n) : i.isFile && n.push(i.uri));
}));
} catch (r) {
console.error("Failure to read directory content of " + e.toString(!0), r);
}
}
async searchFolder(e) {
const n = [];
return await this.traverseFolder(e, n), n;
}
/**
* Determine whether the given folder entry shall be included while indexing the workspace.
*/
shouldIncludeEntry(e) {
const n = ct.basename(e.uri);
return n.startsWith(".") ? !1 : e.isDirectory ? n !== "node_modules" && n !== "out" : e.isFile ? this.serviceRegistry.hasServices(e.uri) : !1;
}
}
class jv {
buildUnexpectedCharactersMessage(e, n, r, i, s) {
return Bo.buildUnexpectedCharactersMessage(e, n, r, i, s);
}
buildUnableToPopLexerModeMessage(e) {
return Bo.buildUnableToPopLexerModeMessage(e);
}
}
const zv = { mode: "full" };
class Bv {
constructor(e) {
this.errorMessageProvider = e.parser.LexerErrorMessageProvider, this.tokenBuilder = e.parser.TokenBuilder;
const n = this.tokenBuilder.buildTokens(e.Grammar, {
caseInsensitive: e.LanguageMetaData.caseInsensitive
});
this.tokenTypes = this.toTokenTypeDictionary(n);
const r = ff(n) ? Object.values(n) : n, i = e.LanguageMetaData.mode === "production";
this.chevrotainLexer = new et(r, {
positionTracking: "full",
skipValidations: i,
errorMessageProvider: this.errorMessageProvider
});
}
get definition() {
return this.tokenTypes;
}
tokenize(e, n = zv) {
var i, s;
const r = this.chevrotainLexer.tokenize(e);
return {
tokens: r.tokens,
errors: r.errors,
hidden: r.groups.hidden ?? [],
report: (s = (i = this.tokenBuilder).flushLexingReport) == null ? void 0 : s.call(i, e)
};
}
toTokenTypeDictionary(e) {
if (ff(e))
return e;
const n = yp(e) ? Object.values(e.modes).flat() : e, r = {};
return n.forEach((i) => r[i.name] = i), r;
}
}
function qv(t) {
return Array.isArray(t) && (t.length === 0 || "name" in t[0]);
}
function yp(t) {
return t && "modes" in t && "defaultMode" in t;
}
function ff(t) {
return !qv(t) && !yp(t);
}
function Wv(t, e, n) {
let r, i;
typeof t == "string" ? (i = e, r = n) : (i = t.range.start, r = e), i || (i = ee.create(0, 0));
const s = Tp(t), a = Vl(r), o = Hv({
lines: s,
position: i,
options: a
});
return Zv({
index: 0,
tokens: o,
position: i
});
}
function Vv(t, e) {
const n = Vl(e), r = Tp(t);
if (r.length === 0)
return !1;
const i = r[0], s = r[r.length - 1], a = n.start, o = n.end;
return !!(a != null && a.exec(i)) && !!(o != null && o.exec(s));
}
function Tp(t) {
let e = "";
return typeof t == "string" ? e = t : e = t.text, e.split(Vm);
}
const hf = /\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy, Kv = /\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;
function Hv(t) {
var i, s, a;
const e = [];
let n = t.position.line, r = t.position.character;
for (let o = 0; o < t.lines.length; o++) {
const c = o === 0, l = o === t.lines.length - 1;
let u = t.lines[o], f = 0;
if (c && t.options.start) {
const g = (i = t.options.start) == null ? void 0 : i.exec(u);
g && (f = g.index + g[0].length);
} else {
const g = (s = t.options.line) == null ? void 0 : s.exec(u);
g && (f = g.index + g[0].length);
}
if (l) {
const g = (a = t.options.end) == null ? void 0 : a.exec(u);
g && (u = u.substring(0, g.index));
}
if (u = u.substring(0, Qv(u)), ul(u, f) >= u.length) {
if (e.length > 0) {
const g = ee.create(n, r);
e.push({
type: "break",
content: "",
range: Y.create(g, g)
});
}
} else {
hf.lastIndex = f;
const g = hf.exec(u);
if (g) {
const A = g[0], N = g[1], $ = ee.create(n, r + f), w = ee.create(n, r + f + A.length);
e.push({
type: "tag",
content: N,
range: Y.create($, w)
}), f += A.length, f = ul(u, f);
}
if (f < u.length) {
const A = u.substring(f), N = Array.from(A.matchAll(Kv));
e.push(...Yv(N, A, n, r + f));
}
}
n++, r = 0;
}
return e.length > 0 && e[e.length - 1].type === "break" ? e.slice(0, -1) : e;
}
function Yv(t, e, n, r) {
const i = [];
if (t.length === 0) {
const s = ee.create(n, r), a = ee.create(n, r + e.length);
i.push({
type: "text",
content: e,
range: Y.create(s, a)
});
} else {
let s = 0;
for (const o of t) {
const c = o.index, l = e.substring(s, c);
l.length > 0 && i.push({
type: "text",
content: e.substring(s, c),
range: Y.create(ee.create(n, s + r), ee.create(n, c + r))
});
let u = l.length + 1;
const f = o[1];
if (i.push({
type: "inline-tag",
content: f,
range: Y.create(ee.create(n, s + u + r), ee.create(n, s + u + f.length + r))
}), u += f.length, o.length === 4) {
u += o[2].length;
const m = o[3];
i.push({
type: "text",
content: m,
range: Y.create(ee.create(n, s + u + r), ee.create(n, s + u + m.length + r))
});
} else
i.push({
type: "text",
content: "",
range: Y.create(ee.create(n, s + u + r), ee.create(n, s + u + r))
});
s = c + o[0].length;
}
const a = e.substring(s);
a.length > 0 && i.push({
type: "text",
content: a,
range: Y.create(ee.create(n, s + r), ee.create(n, s + r + a.length))
});
}
return i;
}
const Xv = /\S/, Jv = /\s*$/;
function ul(t, e) {
const n = t.substring(e).match(Xv);
return n ? e + n.index : t.length;
}
function Qv(t) {
const e = t.match(Jv);
if (e && typeof e.index == "number")
return e.index;
}
function Zv(t) {
var s, a;
const e = ee.create(t.position.line, t.position.character);
if (t.tokens.length === 0)
return new pf([], Y.create(e, e));
const n = [];
for (; t.index < t.tokens.length; ) {
const o = eE(t, n[n.length - 1]);
o && n.push(o);
}
const r = ((s = n[0]) == null ? void 0 : s.range.start) ?? e, i = ((a = n[n.length - 1]) == null ? void 0 : a.range.end) ?? e;
return new pf(n, Y.create(r, i));
}
function eE(t, e) {
const n = t.tokens[t.index];
if (n.type === "tag")
return vp(t, !1);
if (n.type === "text" || n.type === "inline-tag")
return Rp(t);
tE(n, e), t.index++;
}
function tE(t, e) {
if (e) {
const n = new Ap("", t.range);
"inlines" in e ? e.inlines.push(n) : e.content.inlines.push(n);
}
}
function Rp(t) {
let e = t.tokens[t.index];
const n = e;
let r = e;
const i = [];
for (; e && e.type !== "break" && e.type !== "tag"; )
i.push(nE(t)), r = e, e = t.tokens[t.index];
return new dl(i, Y.create(n.range.start, r.range.end));
}
function nE(t) {
return t.tokens[t.index].type === "inline-tag" ? vp(t, !0) : Ep(t);
}
function vp(t, e) {
const n = t.tokens[t.index++], r = n.content.substring(1), i = t.tokens[t.index];
if ((i == null ? void 0 : i.type) === "text")
if (e) {
const s = Ep(t);
return new So(r, new dl([s], s.range), e, Y.create(n.range.start, s.range.end));
} else {
const s = Rp(t);
return new So(r, s, e, Y.create(n.range.start, s.range.end));
}
else {
const s = n.range;
return new So(r, new dl([], s), e, s);
}
}
function Ep(t) {
const e = t.tokens[t.index++];
return new Ap(e.content, e.range);
}
function Vl(t) {
if (!t)
return Vl({
start: "/**",
end: "*/",
line: "*"
});
const { start: e, end: n, line: r } = t;
return {
start: Ao(e, !0),
end: Ao(n, !1),
line: Ao(r, !0)
};
}
function Ao(t, e) {
if (typeof t == "string" || typeof t == "object") {
const n = typeof t == "string" ? Ga(t) : t.source;
return e ? new RegExp(`^\\s*${n}`) : new RegExp(`\\s*${n}\\s*$`);
} else
return t;
}
class pf {
constructor(e, n) {
this.elements = e, this.range = n;
}
getTag(e) {
return this.getAllTags().find((n) => n.name === e);
}
getTags(e) {
return this.getAllTags().filter((n) => n.name === e);
}
getAllTags() {
return this.elements.filter((e) => "name" in e);
}
toString() {
let e = "";
for (const n of this.elements)
if (e.length === 0)
e = n.toString();
else {
const r = n.toString();
e += mf(e) + r;
}
return e.trim();
}
toMarkdown(e) {
let n = "";
for (const r of this.elements)
if (n.length === 0)
n = r.toMarkdown(e);
else {
const i = r.toMarkdown(e);
n += mf(n) + i;
}
return n.trim();
}
}
class So {
constructor(e, n, r, i) {
this.name = e, this.content = n, this.inline = r, this.range = i;
}
toString() {
let e = `@${this.name}`;
const n = this.content.toString();
return this.content.inlines.length === 1 ? e = `${e} ${n}` : this.content.inlines.length > 1 && (e = `${e}
${n}`), this.inline ? `{${e}}` : e;
}
toMarkdown(e) {
var n;
return ((n = e == null ? void 0 : e.renderTag) == null ? void 0 : n.call(e, this)) ?? this.toMarkdownDefault(e);
}
toMarkdownDefault(e) {
const n = this.content.toMarkdown(e);
if (this.inline) {
const s = rE(this.name, n, e ?? {});
if (typeof s == "string")
return s;
}
let r = "";
(e == null ? void 0 : e.tag) === "italic" || (e == null ? void 0 : e.tag) === void 0 ? r = "*" : (e == null ? void 0 : e.tag) === "bold" ? r = "**" : (e == null ? void 0 : e.tag) === "bold-italic" && (r = "***");
let i = `${r}@${this.name}${r}`;
return this.content.inlines.length === 1 ? i = `${i} — ${n}` : this.content.inlines.length > 1 && (i = `${i}
${n}`), this.inline ? `{${i}}` : i;
}
}
function rE(t, e, n) {
var r;
if (t === "linkplain" || t === "linkcode" || t === "link") {
const i = e.indexOf(" ");
let s = e;
if (i > 0) {
const o = ul(e, i);
s = e.substring(o), e = e.substring(0, i);
}
return (t === "linkcode" || t === "link" && n.link === "code") && (s = `\`${s}\``), ((r = n.renderLink) == null ? void 0 : r.call(n, e, s)) ?? iE(e, s);
}
}
function iE(t, e) {
try {
return wt.parse(t, !0), `[${e}](${t})`;
} catch {
return t;
}
}
class dl {
constructor(e, n) {
this.inlines = e, this.range = n;
}
toString() {
let e = "";
for (let n = 0; n < this.inlines.length; n++) {
const r = this.inlines[n], i = this.inlines[n + 1];
e += r.toString(), i && i.range.start.line > r.range.start.line && (e += `
`);
}
return e;
}
toMarkdown(e) {
let n = "";
for (let r = 0; r < this.inlines.length; r++) {
const i = this.inlines[r], s = this.inlines[r + 1];
n += i.toMarkdown(e), s && s.range.start.line > i.range.start.line && (n += `
`);
}
return n;
}
}
class Ap {
constructor(e, n) {
this.text = e, this.range = n;
}
toString() {
return this.text;
}
toMarkdown() {
return this.text;
}
}
function mf(t) {
return t.endsWith(`
`) ? `
` : `
`;
}
class sE {
constructor(e) {
this.indexManager = e.shared.workspace.IndexManager, this.commentProvider = e.documentation.CommentProvider;
}
getDocumentation(e) {
const n = this.commentProvider.getComment(e);
if (n && Vv(n))
return Wv(n).toMarkdown({
renderLink: (i, s) => this.documentationLinkRenderer(e, i, s),
renderTag: (i) => this.documentationTagRenderer(e, i)
});
}
documentationLinkRenderer(e, n, r) {
const i = this.findNameInLocalSymbols(e, n) ?? this.findNameInGlobalScope(e, n);
if (i && i.nameSegment) {
const s = i.nameSegment.range.start.line + 1, a = i.nameSegment.range.start.character + 1, o = i.documentUri.with({ fragment: `L${s},${a}` });
return `[${r}](${o.toString()})`;
} else
return;
}
documentationTagRenderer(e, n) {
}
findNameInLocalSymbols(e, n) {
const i = Qt(e).localSymbols;
if (!i)
return;
let s = e;
do {
const o = i.getStream(s).find((c) => c.name === n);
if (o)
return o;
s = s.$container;
} while (s);
}
findNameInGlobalScope(e, n) {
return this.indexManager.allElements().find((i) => i.name === n);
}
}
class aE {
constructor(e) {
this.grammarConfig = () => e.parser.GrammarConfig;
}
getComment(e) {
var n;
return nv(e) ? e.$comment : (n = jm(e.$cstNode, this.grammarConfig().multilineCommentRules)) == null ? void 0 : n.text;
}
}
class oE {
constructor(e) {
this.syncParser = e.parser.LangiumParser;
}
parse(e, n) {
return Promise.resolve(this.syncParser.parse(e));
}
}
class cE {
constructor() {
this.previousTokenSource = new zl(), this.writeQueue = [], this.readQueue = [], this.done = !0;
}
write(e) {
this.cancelWrite();
const n = jR();
return this.previousTokenSource = n, this.enqueue(this.writeQueue, e, n.token);
}
read(e) {
return this.enqueue(this.readQueue, e);
}
enqueue(e, n, r = ge.None) {
const i = new Bl(), s = {
action: n,
deferred: i,
cancellationToken: r
};
return e.push(s), this.performNextOperation(), i.promise;
}
async performNextOperation() {
if (!this.done)
return;
const e = [];
if (this.writeQueue.length > 0)
e.push(this.writeQueue.shift());
else if (this.readQueue.length > 0)
e.push(...this.readQueue.splice(0, this.readQueue.length));
else
return;
this.done = !1, await Promise.all(e.map(async ({ action: n, deferred: r, cancellationToken: i }) => {
try {
const s = await Promise.resolve().then(() => n(i));
r.resolve(s);
} catch (s) {
Ha(s) ? r.resolve(void 0) : r.reject(s);
}
})), this.done = !0, this.performNextOperation();
}
cancelWrite() {
this.previousTokenSource.cancel();
}
}
class lE {
constructor(e) {
this.grammarElementIdMap = new Uu(), this.tokenTypeIdMap = new Uu(), this.grammar = e.Grammar, this.lexer = e.parser.Lexer, this.linker = e.references.Linker;
}
dehydrate(e) {
return {
lexerErrors: e.lexerErrors,
lexerReport: e.lexerReport ? this.dehydrateLexerReport(e.lexerReport) : void 0,
// We need to create shallow copies of the errors
// The original errors inherit from the `Error` class, which is not transferable across worker threads
parserErrors: e.parserErrors.map((n) => ({ ...n, message: n.message })),
value: this.dehydrateAstNode(e.value, this.createDehyrationContext(e.value))
};
}
dehydrateLexerReport(e) {
return e;
}
createDehyrationContext(e) {
const n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
for (const i of Zt(e))
n.set(i, {});
if (e.$cstNode)
for (const i of Fo(e.$cstNode))
r.set(i, {});
return {
astNodes: n,
cstNodes: r
};
}
dehydrateAstNode(e, n) {
const r = n.astNodes.get(e);
r.$type = e.$type, r.$containerIndex = e.$containerIndex, r.$containerProperty = e.$containerProperty, e.$cstNode !== void 0 && (r.$cstNode = this.dehydrateCstNode(e.$cstNode, n));
for (const [i, s] of Object.entries(e))
if (!i.startsWith("$"))
if (Array.isArray(s)) {
const a = [];
r[i] = a;
for (const o of s)
We(o) ? a.push(this.dehydrateAstNode(o, n)) : Ct(o) ? a.push(this.dehydrateReference(o, n)) : a.push(o);
} else We(s) ? r[i] = this.dehydrateAstNode(s, n) : Ct(s) ? r[i] = this.dehydrateReference(s, n) : s !== void 0 && (r[i] = s);
return r;
}
dehydrateReference(e, n) {
const r = {};
return r.$refText = e.$refText, e.$refNode && (r.$refNode = n.cstNodes.get(e.$refNode)), r;
}
dehydrateCstNode(e, n) {
const r = n.cstNodes.get(e);
return Mf(e) ? r.fullText = e.fullText : r.grammarSource = this.getGrammarElementId(e.grammarSource), r.hidden = e.hidden, r.astNode = n.astNodes.get(e.astNode), Bi(e) ? r.content = e.content.map((i) => this.dehydrateCstNode(i, n)) : Df(e) && (r.tokenType = e.tokenType.name, r.offset = e.offset, r.length = e.length, r.startLine = e.range.start.line, r.startColumn = e.range.start.character, r.endLine = e.range.end.line, r.endColumn = e.range.end.character), r;
}
hydrate(e) {
const n = e.value, r = this.createHydrationContext(n);
return "$cstNode" in n && this.hydrateCstNode(n.$cstNode, r), {
lexerErrors: e.lexerErrors,
lexerReport: e.lexerReport,
parserErrors: e.parserErrors,
value: this.hydrateAstNode(n, r)
};
}
createHydrationContext(e) {
const n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
for (const s of Zt(e))
n.set(s, {});
let i;
if (e.$cstNode)
for (const s of Fo(e.$cstNode)) {
let a;
"fullText" in s ? (a = new Wh(s.fullText), i = a) : "content" in s ? a = new Gl() : "tokenType" in s && (a = this.hydrateCstLeafNode(s)), a && (r.set(s, a), a.root = i);
}
return {
astNodes: n,
cstNodes: r
};
}
hydrateAstNode(e, n) {
const r = n.astNodes.get(e);
r.$type = e.$type, r.$containerIndex = e.$containerIndex, r.$containerProperty = e.$containerProperty, e.$cstNode && (r.$cstNode = n.cstNodes.get(e.$cstNode));
for (const [i, s] of Object.entries(e))
if (!i.startsWith("$"))
if (Array.isArray(s)) {
const a = [];
r[i] = a;
for (const o of s)
We(o) ? a.push(this.setParent(this.hydrateAstNode(o, n), r)) : Ct(o) ? a.push(this.hydrateReference(o, r, i, n)) : a.push(o);
} else We(s) ? r[i] = this.setParent(this.hydrateAstNode(s, n), r) : Ct(s) ? r[i] = this.hydrateReference(s, r, i, n) : s !== void 0 && (r[i] = s);
return r;
}
setParent(e, n) {
return e.$container = n, e;
}
hydrateReference(e, n, r, i) {
return this.linker.buildReference(n, r, i.cstNodes.get(e.$refNode), e.$refText);
}
hydrateCstNode(e, n, r = 0) {
const i = n.cstNodes.get(e);
if (typeof e.grammarSource == "number" && (i.grammarSource = this.getGrammarElement(e.grammarSource)), i.astNode = n.astNodes.get(e.astNode), Bi(i))
for (const s of e.content) {
const a = this.hydrateCstNode(s, n, r++);
i.content.push(a);
}
return i;
}
hydrateCstLeafNode(e) {
const n = this.getTokenType(e.tokenType), r = e.offset, i = e.length, s = e.startLine, a = e.startColumn, o = e.endLine, c = e.endColumn, l = e.hidden;
return new Jc(r, i, {
start: {
line: s,
character: a
},
end: {
line: o,
character: c
}
}, n, l);
}
getTokenType(e) {
return this.lexer.definition[e];
}
getGrammarElementId(e) {
if (e)
return this.grammarElementIdMap.size === 0 && this.createGrammarElementIdMap(), this.grammarElementIdMap.get(e);
}
getGrammarElement(e) {
return this.grammarElementIdMap.size === 0 && this.createGrammarElementIdMap(), this.grammarElementIdMap.getKey(e);
}
createGrammarElementIdMap() {
let e = 0;
for (const n of Zt(this.grammar))
Tm(n) && this.grammarElementIdMap.set(n, e++);
}
}
function kn(t) {
return {
documentation: {
CommentProvider: (e) => new aE(e),
DocumentationProvider: (e) => new sE(e)
},
parser: {
AsyncParser: (e) => new oE(e),
GrammarConfig: (e) => pg(e),
LangiumParser: (e) => NR(e),
CompletionParser: (e) => kR(e),
ValueConverter: () => new ep(),
TokenBuilder: () => new Zh(),
Lexer: (e) => new Bv(e),
ParserErrorMessageProvider: () => new Hh(),
LexerErrorMessageProvider: () => new jv()
},
workspace: {
AstNodeLocator: () => new fv(),
AstNodeDescriptionProvider: (e) => new uv(e),
ReferenceDescriptionProvider: (e) => new dv(e)
},
references: {
Linker: (e) => new VR(e),
NameProvider: () => new HR(),
ScopeProvider: (e) => new tv(e),
ScopeComputation: (e) => new XR(e),
References: (e) => new YR(e)
},
serializer: {
Hydrator: (e) => new lE(e),
JsonSerializer: (e) => new rv(e)
},
validation: {
DocumentValidator: (e) => new ov(e),
ValidationRegistry: (e) => new sv(e)
},
shared: () => t.shared
};
}
function Nn(t) {
return {
ServiceRegistry: (e) => new iv(e),
workspace: {
LangiumDocuments: (e) => new WR(e),
LangiumDocumentFactory: (e) => new qR(e),
DocumentBuilder: (e) => new Fv(e),
IndexManager: (e) => new Gv(e),
WorkspaceManager: (e) => new Uv(e),
FileSystemProvider: (e) => t.fileSystemProvider(e),
WorkspaceLock: () => new cE(),
ConfigurationProvider: (e) => new hv(e)
},
profilers: {}
};
}
var gf;
(function(t) {
t.merge = (e, n) => ns(ns({}, e), n);
})(gf || (gf = {}));
function Ve(t, e, n, r, i, s, a, o, c) {
const l = [t, e, n, r, i, s, a, o, c].reduce(ns, {});
return Sp(l);
}
const uE = Symbol("isProxy");
function Sp(t, e) {
const n = new Proxy({}, {
deleteProperty: () => !1,
set: () => {
throw new Error("Cannot set property on injected service container");
},
get: (r, i) => i === uE ? !0 : Tf(r, i, t, e || n),
getOwnPropertyDescriptor: (r, i) => (Tf(r, i, t, e || n), Object.getOwnPropertyDescriptor(r, i)),
// used by for..in
has: (r, i) => i in t,
// used by ..in..
ownKeys: () => [...Object.getOwnPropertyNames(t)]
// used by for..in
});
return n;
}
const yf = Symbol();
function Tf(t, e, n, r) {
if (e in t) {
if (t[e] instanceof Error)
throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: " + t[e]);
if (t[e] === yf)
throw new Error('Cycle detected. Please make "' + String(e) + '" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');
return t[e];
} else if (e in n) {
const i = n[e];
t[e] = yf;
try {
t[e] = typeof i == "function" ? i(r) : Sp(i, r);
} catch (s) {
throw t[e] = s instanceof Error ? s : void 0, s;
}
return t[e];
} else
return;
}
function ns(t, e) {
if (e) {
for (const [n, r] of Object.entries(e))
if (r != null)
if (typeof r == "object") {
const i = t[n];
typeof i == "object" && i !== null ? t[n] = ns(i, r) : t[n] = ns({}, r);
} else
t[n] = r;
}
return t;
}
class dE {
stat(e) {
throw new Error("No file system is available.");
}
statSync(e) {
throw new Error("No file system is available.");
}
async exists() {
return !1;
}
existsSync() {
return !1;
}
readBinary() {
throw new Error("No file system is available.");
}
readBinarySync() {
throw new Error("No file system is available.");
}
readFile() {
throw new Error("No file system is available.");
}
readFileSync() {
throw new Error("No file system is available.");
}
async readDirectory() {
return [];
}
readDirectorySync() {
return [];
}
}
const wn = {
fileSystemProvider: () => new dE()
}, fE = {
Grammar: () => {
},
LanguageMetaData: () => ({
caseInsensitive: !1,
fileExtensions: [".langium"],
languageId: "langium"
})
}, hE = {
AstReflection: () => new Bf()
};
function pE() {
const t = Ve(Nn(wn), hE), e = Ve(kn({ shared: t }), fE);
return t.ServiceRegistry.register(e), e;
}
function Jn(t) {
const e = pE(), n = e.serializer.JsonSerializer.deserialize(t);
return e.shared.workspace.LangiumDocumentFactory.fromModel(n, wt.parse(`memory:/${n.name ?? "grammar"}.langium`)), n;
}
var mE = Object.defineProperty, I = (t, e) => mE(t, "name", { value: e, configurable: !0 }), fl;
((t) => {
t.Terminals = {
ARROW_DIRECTION: /L|R|T|B/,
ARROW_GROUP: /\{group\}/,
ARROW_INTO: /<|>/,
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
STRING: /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,
ID: /[\w]([-\w]*\w)?/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/,
ARCH_ICON: /\([\w-:]+\)/,
ARCH_TITLE: /\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/
};
})(fl || (fl = {}));
var hl;
((t) => {
t.Terminals = {
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
INT: /0|[1-9][0-9]*(?!\.)/,
STRING: /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/,
REFERENCE: /\w([-\./\w]*[-\w])?/
};
})(hl || (hl = {}));
var pl;
((t) => {
t.Terminals = {
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/
};
})(pl || (pl = {}));
var ml;
((t) => {
t.Terminals = {
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
INT: /0|[1-9][0-9]*(?!\.)/,
STRING: /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/
};
})(ml || (ml = {}));
var gl;
((t) => {
t.Terminals = {
NUMBER_PIE: /(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
STRING: /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/
};
})(gl || (gl = {}));
var yl;
((t) => {
t.Terminals = {
GRATICULE: /circle|polygon/,
BOOLEAN: /true|false/,
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
NUMBER: /(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,
STRING: /"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,
ID: /[\w]([-\w]*\w)?/,
NEWLINE: /\r?\n/,
WHITESPACE: /[\t ]+/,
YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,
DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,
SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/
};
})(yl || (yl = {}));
var Tl;
((t) => {
t.Terminals = {
ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,
ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,
TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,
TREEMAP_KEYWORD: /treemap-beta|treemap/,
CLASS_DEF: /classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,
STYLE_SEPARATOR: /:::/,
SEPARATOR: /:/,
COMMA: /,/,
INDENTATION: /[ \t]{1,}/,
WS: /[ \t]+/,
ML_COMMENT: /\%\%[^\n]*/,
NL: /\r?\n/,
ID2: /[a-zA-Z_][a-zA-Z0-9_]*/,
NUMBER2: /[0-9_\.\,]+/,
STRING2: /"[^"]*"|'[^']*'/
};
})(Tl || (Tl = {}));
({
...fl.Terminals,
...hl.Terminals,
...pl.Terminals,
...ml.Terminals,
...gl.Terminals,
...yl.Terminals,
...Tl.Terminals
});
var Kt = {
$type: "Architecture",
accDescr: "accDescr",
accTitle: "accTitle",
edges: "edges",
groups: "groups",
junctions: "junctions",
services: "services",
title: "title"
};
function gE(t) {
return _t.isInstance(t, Kt.$type);
}
I(gE, "isArchitecture");
var Fs = {
$type: "Axis",
label: "label",
name: "name"
}, ta = {
$type: "Branch",
name: "name",
order: "order"
};
function yE(t) {
return _t.isInstance(t, ta.$type);
}
I(yE, "isBranch");
var Rf = {
$type: "Checkout",
branch: "branch"
}, Gs = {
$type: "CherryPicking",
id: "id",
parent: "parent",
tags: "tags"
}, Co = {
$type: "ClassDefStatement",
className: "className",
styleText: "styleText"
}, mr = {
$type: "Commit",
id: "id",
message: "message",
tags: "tags",
type: "type"
};
function TE(t) {
return _t.isInstance(t, mr.$type);
}
I(TE, "isCommit");
var Us = {
$type: "Curve",
entries: "entries",
label: "label",
name: "name"
}, ir = {
$type: "Direction",
accDescr: "accDescr",
accTitle: "accTitle",
dir: "dir",
statements: "statements",
title: "title"
}, Pt = {
$type: "Edge",
lhsDir: "lhsDir",
lhsGroup: "lhsGroup",
lhsId: "lhsId",
lhsInto: "lhsInto",
rhsDir: "rhsDir",
rhsGroup: "rhsGroup",
rhsId: "rhsId",
rhsInto: "rhsInto",
title: "title"
}, ko = {
$type: "Entry",
axis: "axis",
value: "value"
}, Mn = {
$type: "GitGraph",
accDescr: "accDescr",
accTitle: "accTitle",
statements: "statements",
title: "title"
};
function RE(t) {
return _t.isInstance(t, Mn.$type);
}
I(RE, "isGitGraph");
var Ii = {
$type: "Group",
icon: "icon",
id: "id",
in: "in",
title: "title"
}, Ui = {
$type: "Info",
accDescr: "accDescr",
accTitle: "accTitle",
title: "title"
};
function vE(t) {
return _t.isInstance(t, Ui.$type);
}
I(vE, "isInfo");
var _i = {
$type: "Item",
classSelector: "classSelector",
name: "name"
}, No = {
$type: "Junction",
id: "id",
in: "in"
}, js = {
$type: "Leaf",
classSelector: "classSelector",
name: "name",
value: "value"
}, gr = {
$type: "Merge",
branch: "branch",
id: "id",
tags: "tags",
type: "type"
};
function EE(t) {
return _t.isInstance(t, gr.$type);
}
I(EE, "isMerge");
var wo = {
$type: "Option",
name: "name",
value: "value"
}, yr = {
$type: "Packet",
accDescr: "accDescr",
accTitle: "accTitle",
blocks: "blocks",
title: "title"
};
function AE(t) {
return _t.isInstance(t, yr.$type);
}
I(AE, "isPacket");
var Tr = {
$type: "PacketBlock",
bits: "bits",
end: "end",
label: "label",
start: "start"
};
function SE(t) {
return _t.isInstance(t, Tr.$type);
}
I(SE, "isPacketBlock");
var Fn = {
$type: "Pie",
accDescr: "accDescr",
accTitle: "accTitle",
sections: "sections",
showData: "showData",
title: "title"
};
function CE(t) {
return _t.isInstance(t, Fn.$type);
}
I(CE, "isPie");
var na = {
$type: "PieSection",
label: "label",
value: "value"
};
function kE(t) {
return _t.isInstance(t, na.$type);
}
I(kE, "isPieSection");
var Pn = {
$type: "Radar",
accDescr: "accDescr",
accTitle: "accTitle",
axes: "axes",
curves: "curves",
options: "options",
title: "title"
}, bo = {
$type: "Section",
classSelector: "classSelector",
name: "name"
}, sr = {
$type: "Service",
icon: "icon",
iconText: "iconText",
id: "id",
in: "in",
title: "title"
}, ar = {
$type: "Statement"
}, Rr = {
$type: "Treemap",
accDescr: "accDescr",
accTitle: "accTitle",
title: "title",
TreemapRows: "TreemapRows"
};
function NE(t) {
return _t.isInstance(t, Rr.$type);
}
I(NE, "isTreemap");
var Io = {
$type: "TreemapRow",
indent: "indent",
item: "item"
}, Sr, Cp = (Sr = class extends xf {
constructor() {
super(...arguments), this.types = {
Architecture: {
name: Kt.$type,
properties: {
accDescr: {
name: Kt.accDescr
},
accTitle: {
name: Kt.accTitle
},
edges: {
name: Kt.edges,
defaultValue: []
},
groups: {
name: Kt.groups,
defaultValue: []
},
junctions: {
name: Kt.junctions,
defaultValue: []
},
services: {
name: Kt.services,
defaultValue: []
},
title: {
name: Kt.title
}
},
superTypes: []
},
Axis: {
name: Fs.$type,
properties: {
label: {
name: Fs.label
},
name: {
name: Fs.name
}
},
superTypes: []
},
Branch: {
name: ta.$type,
properties: {
name: {
name: ta.name
},
order: {
name: ta.order
}
},
superTypes: [ar.$type]
},
Checkout: {
name: Rf.$type,
properties: {
branch: {
name: Rf.branch
}
},
superTypes: [ar.$type]
},
CherryPicking: {
name: Gs.$type,
properties: {
id: {
name: Gs.id
},
parent: {
name: Gs.parent
},
tags: {
name: Gs.tags,
defaultValue: []
}
},
superTypes: [ar.$type]
},
ClassDefStatement: {
name: Co.$type,
properties: {
className: {
name: Co.className
},
styleText: {
name: Co.styleText
}
},
superTypes: []
},
Commit: {
name: mr.$type,
properties: {
id: {
name: mr.id
},
message: {
name: mr.message
},
tags: {
name: mr.tags,
defaultValue: []
},
type: {
name: mr.type
}
},
superTypes: [ar.$type]
},
Curve: {
name: Us.$type,
properties: {
entries: {
name: Us.entries,
defaultValue: []
},
label: {
name: Us.label
},
name: {
name: Us.name
}
},
superTypes: []
},
Direction: {
name: ir.$type,
properties: {
accDescr: {
name: ir.accDescr
},
accTitle: {
name: ir.accTitle
},
dir: {
name: ir.dir
},
statements: {
name: ir.statements,
defaultValue: []
},
title: {
name: ir.title
}
},
superTypes: [Mn.$type]
},
Edge: {
name: Pt.$type,
properties: {
lhsDir: {
name: Pt.lhsDir
},
lhsGroup: {
name: Pt.lhsGroup,
defaultValue: !1
},
lhsId: {
name: Pt.lhsId
},
lhsInto: {
name: Pt.lhsInto,
defaultValue: !1
},
rhsDir: {
name: Pt.rhsDir
},
rhsGroup: {
name: Pt.rhsGroup,
defaultValue: !1
},
rhsId: {
name: Pt.rhsId
},
rhsInto: {
name: Pt.rhsInto,
defaultValue: !1
},
title: {
name: Pt.title
}
},
superTypes: []
},
Entry: {
name: ko.$type,
properties: {
axis: {
name: ko.axis,
referenceType: Fs.$type
},
value: {
name: ko.value
}
},
superTypes: []
},
GitGraph: {
name: Mn.$type,
properties: {
accDescr: {
name: Mn.accDescr
},
accTitle: {
name: Mn.accTitle
},
statements: {
name: Mn.statements,
defaultValue: []
},
title: {
name: Mn.title
}
},
superTypes: []
},
Group: {
name: Ii.$type,
properties: {
icon: {
name: Ii.icon
},
id: {
name: Ii.id
},
in: {
name: Ii.in
},
title: {
name: Ii.title
}
},
superTypes: []
},
Info: {
name: Ui.$type,
properties: {
accDescr: {
name: Ui.accDescr
},
accTitle: {
name: Ui.accTitle
},
title: {
name: Ui.title
}
},
superTypes: []
},
Item: {
name: _i.$type,
properties: {
classSelector: {
name: _i.classSelector
},
name: {
name: _i.name
}
},
superTypes: []
},
Junction: {
name: No.$type,
properties: {
id: {
name: No.id
},
in: {
name: No.in
}
},
superTypes: []
},
Leaf: {
name: js.$type,
properties: {
classSelector: {
name: js.classSelector
},
name: {
name: js.name
},
value: {
name: js.value
}
},
superTypes: [_i.$type]
},
Merge: {
name: gr.$type,
properties: {
branch: {
name: gr.branch
},
id: {
name: gr.id
},
tags: {
name: gr.tags,
defaultValue: []
},
type: {
name: gr.type
}
},
superTypes: [ar.$type]
},
Option: {
name: wo.$type,
properties: {
name: {
name: wo.name
},
value: {
name: wo.value,
defaultValue: !1
}
},
superTypes: []
},
Packet: {
name: yr.$type,
properties: {
accDescr: {
name: yr.accDescr
},
accTitle: {
name: yr.accTitle
},
blocks: {
name: yr.blocks,
defaultValue: []
},
title: {
name: yr.title
}
},
superTypes: []
},
PacketBlock: {
name: Tr.$type,
properties: {
bits: {
name: Tr.bits
},
end: {
name: Tr.end
},
label: {
name: Tr.label
},
start: {
name: Tr.start
}
},
superTypes: []
},
Pie: {
name: Fn.$type,
properties: {
accDescr: {
name: Fn.accDescr
},
accTitle: {
name: Fn.accTitle
},
sections: {
name: Fn.sections,
defaultValue: []
},
showData: {
name: Fn.showData,
defaultValue: !1
},
title: {
name: Fn.title
}
},
superTypes: []
},
PieSection: {
name: na.$type,
properties: {
label: {
name: na.label
},
value: {
name: na.value
}
},
superTypes: []
},
Radar: {
name: Pn.$type,
properties: {
accDescr: {
name: Pn.accDescr
},
accTitle: {
name: Pn.accTitle
},
axes: {
name: Pn.axes,
defaultValue: []
},
curves: {
name: Pn.curves,
defaultValue: []
},
options: {
name: Pn.options,
defaultValue: []
},
title: {
name: Pn.title
}
},
superTypes: []
},
Section: {
name: bo.$type,
properties: {
classSelector: {
name: bo.classSelector
},
name: {
name: bo.name
}
},
superTypes: [_i.$type]
},
Service: {
name: sr.$type,
properties: {
icon: {
name: sr.icon
},
iconText: {
name: sr.iconText
},
id: {
name: sr.id
},
in: {
name: sr.in
},
title: {
name: sr.title
}
},
superTypes: []
},
Statement: {
name: ar.$type,
properties: {},
superTypes: []
},
Treemap: {
name: Rr.$type,
properties: {
accDescr: {
name: Rr.accDescr
},
accTitle: {
name: Rr.accTitle
},
title: {
name: Rr.title
},
TreemapRows: {
name: Rr.TreemapRows,
defaultValue: []
}
},
superTypes: []
},
TreemapRow: {
name: Io.$type,
properties: {
indent: {
name: Io.indent
},
item: {
name: Io.item
}
},
superTypes: []
}
};
}
}, I(Sr, "MermaidAstReflection"), Sr), _t = new Cp(), vf, wE = /* @__PURE__ */ I(() => vf ?? (vf = Jn(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)), "ArchitectureGrammarGrammar"), Ef, bE = /* @__PURE__ */ I(() => Ef ?? (Ef = Jn(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)), "GitGraphGrammarGrammar"), Af, IE = /* @__PURE__ */ I(() => Af ?? (Af = Jn(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)), "InfoGrammarGrammar"), Sf, _E = /* @__PURE__ */ I(() => Sf ?? (Sf = Jn(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)), "PacketGrammarGrammar"), Cf, $E = /* @__PURE__ */ I(() => Cf ?? (Cf = Jn(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)), "PieGrammarGrammar"), kf, PE = /* @__PURE__ */ I(() => kf ?? (kf = Jn(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)), "RadarGrammarGrammar"), Nf, LE = /* @__PURE__ */ I(() => Nf ?? (Nf = Jn(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)), "TreemapGrammarGrammar"), OE = {
languageId: "architecture",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, xE = {
languageId: "gitGraph",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, DE = {
languageId: "info",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, ME = {
languageId: "packet",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, FE = {
languageId: "pie",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, GE = {
languageId: "radar",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, UE = {
languageId: "treemap",
fileExtensions: [".mmd", ".mermaid"],
caseInsensitive: !1,
mode: "production"
}, Qn = {
AstReflection: /* @__PURE__ */ I(() => new Cp(), "AstReflection")
}, jE = {
Grammar: /* @__PURE__ */ I(() => wE(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => OE, "LanguageMetaData"),
parser: {}
}, zE = {
Grammar: /* @__PURE__ */ I(() => bE(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => xE, "LanguageMetaData"),
parser: {}
}, BE = {
Grammar: /* @__PURE__ */ I(() => IE(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => DE, "LanguageMetaData"),
parser: {}
}, qE = {
Grammar: /* @__PURE__ */ I(() => _E(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => ME, "LanguageMetaData"),
parser: {}
}, WE = {
Grammar: /* @__PURE__ */ I(() => $E(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => FE, "LanguageMetaData"),
parser: {}
}, VE = {
Grammar: /* @__PURE__ */ I(() => PE(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => GE, "LanguageMetaData"),
parser: {}
}, KE = {
Grammar: /* @__PURE__ */ I(() => LE(), "Grammar"),
LanguageMetaData: /* @__PURE__ */ I(() => UE, "LanguageMetaData"),
parser: {}
}, HE = /accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/, YE = /accTitle[\t ]*:([^\n\r]*)/, XE = /title([\t ][^\n\r]*|)/, JE = {
ACC_DESCR: HE,
ACC_TITLE: YE,
TITLE: XE
}, Cr, so = (Cr = class extends ep {
runConverter(e, n, r) {
let i = this.runCommonConverter(e, n, r);
return i === void 0 && (i = this.runCustomConverter(e, n, r)), i === void 0 ? super.runConverter(e, n, r) : i;
}
runCommonConverter(e, n, r) {
const i = JE[e.name];
if (i === void 0)
return;
const s = i.exec(n);
if (s !== null) {
if (s[1] !== void 0)
return s[1].trim().replace(/[\t ]{2,}/gm, " ");
if (s[2] !== void 0)
return s[2].replace(/^\s*/gm, "").replace(/\s+$/gm, "").replace(/[\t ]{2,}/gm, " ").replace(/[\n\r]{2,}/gm, `
`);
}
}
}, I(Cr, "AbstractMermaidValueConverter"), Cr), kr, ao = (kr = class extends so {
runCustomConverter(e, n, r) {
}
}, I(kr, "CommonValueConverter"), kr), Nr, bn = (Nr = class extends Zh {
constructor(e) {
super(), this.keywords = new Set(e);
}
buildKeywordTokens(e, n, r) {
const i = super.buildKeywordTokens(e, n, r);
return i.forEach((s) => {
this.keywords.has(s.name) && s.PATTERN !== void 0 && (s.PATTERN = new RegExp(s.PATTERN.toString() + "(?:(?=%%)|(?!\\S))"));
}), i;
}
}, I(Nr, "AbstractMermaidTokenBuilder"), Nr), wr;
wr = class extends bn {
}, I(wr, "CommonTokenBuilder");
var br, QE = (br = class extends bn {
constructor() {
super(["gitGraph"]);
}
}, I(br, "GitGraphTokenBuilder"), br), ZE = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new QE(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new ao(), "ValueConverter")
}
};
function eA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
zE,
ZE
);
return e.ServiceRegistry.register(n), { shared: e, GitGraph: n };
}
I(eA, "createGitGraphServices");
var Ir, tA = (Ir = class extends bn {
constructor() {
super(["info", "showInfo"]);
}
}, I(Ir, "InfoTokenBuilder"), Ir), nA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new tA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new ao(), "ValueConverter")
}
};
function rA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
BE,
nA
);
return e.ServiceRegistry.register(n), { shared: e, Info: n };
}
I(rA, "createInfoServices");
var _r, iA = (_r = class extends bn {
constructor() {
super(["packet"]);
}
}, I(_r, "PacketTokenBuilder"), _r), sA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new iA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new ao(), "ValueConverter")
}
};
function aA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
qE,
sA
);
return e.ServiceRegistry.register(n), { shared: e, Packet: n };
}
I(aA, "createPacketServices");
var $r, oA = ($r = class extends bn {
constructor() {
super(["pie", "showData"]);
}
}, I($r, "PieTokenBuilder"), $r), Pr, cA = (Pr = class extends so {
runCustomConverter(e, n, r) {
if (e.name === "PIE_SECTION_LABEL")
return n.replace(/"/g, "").trim();
}
}, I(Pr, "PieValueConverter"), Pr), lA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new oA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new cA(), "ValueConverter")
}
};
function uA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
WE,
lA
);
return e.ServiceRegistry.register(n), { shared: e, Pie: n };
}
I(uA, "createPieServices");
var Lr, dA = (Lr = class extends bn {
constructor() {
super(["architecture"]);
}
}, I(Lr, "ArchitectureTokenBuilder"), Lr), Or, fA = (Or = class extends so {
runCustomConverter(e, n, r) {
if (e.name === "ARCH_ICON")
return n.replace(/[()]/g, "").trim();
if (e.name === "ARCH_TEXT_ICON")
return n.replace(/["()]/g, "");
if (e.name === "ARCH_TITLE") {
let i = n.replace(/^\[|]$/g, "").trim();
return (i.startsWith('"') && i.endsWith('"') || i.startsWith("'") && i.endsWith("'")) && (i = i.slice(1, -1), i = i.replace(/\\"/g, '"').replace(/\\'/g, "'")), i.trim();
}
}
}, I(Or, "ArchitectureValueConverter"), Or), hA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new dA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new fA(), "ValueConverter")
}
};
function pA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
jE,
hA
);
return e.ServiceRegistry.register(n), { shared: e, Architecture: n };
}
I(pA, "createArchitectureServices");
var xr, mA = (xr = class extends bn {
constructor() {
super(["radar-beta"]);
}
}, I(xr, "RadarTokenBuilder"), xr), gA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new mA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new ao(), "ValueConverter")
}
};
function yA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
VE,
gA
);
return e.ServiceRegistry.register(n), { shared: e, Radar: n };
}
I(yA, "createRadarServices");
var Dr, TA = (Dr = class extends bn {
constructor() {
super(["treemap"]);
}
}, I(Dr, "TreemapTokenBuilder"), Dr), RA = /classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/, Mr, vA = (Mr = class extends so {
runCustomConverter(e, n, r) {
if (e.name === "NUMBER2")
return parseFloat(n.replace(/,/g, ""));
if (e.name === "SEPARATOR")
return n.substring(1, n.length - 1);
if (e.name === "STRING2")
return n.substring(1, n.length - 1);
if (e.name === "INDENTATION")
return n.length;
if (e.name === "ClassDef") {
if (typeof n != "string")
return n;
const i = RA.exec(n);
if (i)
return {
$type: "ClassDefStatement",
className: i[1],
styleText: i[2] || void 0
};
}
}
}, I(Mr, "TreemapValueConverter"), Mr);
function kp(t) {
const e = t.validation.TreemapValidator, n = t.validation.ValidationRegistry;
if (n) {
const r = {
Treemap: e.checkSingleRoot.bind(e)
// Remove unused validation for TreemapRow
};
n.register(r, e);
}
}
I(kp, "registerValidationChecks");
var Fr, EA = (Fr = class {
/**
* Validates that a treemap has only one root node.
* A root node is defined as a node that has no indentation.
*/
checkSingleRoot(e, n) {
let r;
for (const i of e.TreemapRows)
i.item && (r === void 0 && // Check if this is a root node (no indentation)
i.indent === void 0 ? r = 0 : i.indent === void 0 ? n("error", "Multiple root nodes are not allowed in a treemap.", {
node: i,
property: "item"
}) : r !== void 0 && r >= parseInt(i.indent, 10) && n("error", "Multiple root nodes are not allowed in a treemap.", {
node: i,
property: "item"
}));
}
}, I(Fr, "TreemapValidator"), Fr), AA = {
parser: {
TokenBuilder: /* @__PURE__ */ I(() => new TA(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ I(() => new vA(), "ValueConverter")
},
validation: {
TreemapValidator: /* @__PURE__ */ I(() => new EA(), "TreemapValidator")
}
};
function SA(t = wn) {
const e = Ve(
Nn(t),
Qn
), n = Ve(
kn({ shared: e }),
KE,
AA
);
return e.ServiceRegistry.register(n), kp(n), { shared: e, Treemap: n };
}
I(SA, "createTreemapServices");
var Yt = {}, CA = {
info: /* @__PURE__ */ I(async () => {
const { createInfoServices: t } = await import("./info-3K5VOQVL-ZdFRiyx1.js"), e = t().Info.parser.LangiumParser;
Yt.info = e;
}, "info"),
packet: /* @__PURE__ */ I(async () => {
const { createPacketServices: t } = await import("./packet-RMMSAZCW-CHVZvjQZ.js"), e = t().Packet.parser.LangiumParser;
Yt.packet = e;
}, "packet"),
pie: /* @__PURE__ */ I(async () => {
const { createPieServices: t } = await import("./pie-UPGHQEXC-afav2Klr.js"), e = t().Pie.parser.LangiumParser;
Yt.pie = e;
}, "pie"),
architecture: /* @__PURE__ */ I(async () => {
const { createArchitectureServices: t } = await import("./architecture-PBZL5I3N-CamU3c6Z.js"), e = t().Architecture.parser.LangiumParser;
Yt.architecture = e;
}, "architecture"),
gitGraph: /* @__PURE__ */ I(async () => {
const { createGitGraphServices: t } = await import("./gitGraph-HDMCJU4V-C3N5YqLO.js"), e = t().GitGraph.parser.LangiumParser;
Yt.gitGraph = e;
}, "gitGraph"),
radar: /* @__PURE__ */ I(async () => {
const { createRadarServices: t } = await import("./radar-KQ55EAFF-DnUN2oK_.js"), e = t().Radar.parser.LangiumParser;
Yt.radar = e;
}, "radar"),
treemap: /* @__PURE__ */ I(async () => {
const { createTreemapServices: t } = await import("./treemap-KZPCXAKY-CH5JYuHO.js"), e = t().Treemap.parser.LangiumParser;
Yt.treemap = e;
}, "treemap")
};
async function kA(t, e) {
const n = CA[t];
if (!n)
throw new Error(`Unknown diagram type: ${t}`);
Yt[t] || await n();
const i = Yt[t].parse(e);
if (i.lexerErrors.length > 0 || i.parserErrors.length > 0)
throw new NA(i);
return i.value;
}
I(kA, "parse");
var Gr, NA = (Gr = class extends Error {
constructor(e) {
const n = e.lexerErrors.map((i) => {
const s = i.line !== void 0 && !isNaN(i.line) ? i.line : "?", a = i.column !== void 0 && !isNaN(i.column) ? i.column : "?";
return `Lexer error on line ${s}, column ${a}: ${i.message}`;
}).join(`
`), r = e.parserErrors.map((i) => {
const s = i.token.startLine !== void 0 && !isNaN(i.token.startLine) ? i.token.startLine : "?", a = i.token.startColumn !== void 0 && !isNaN(i.token.startColumn) ? i.token.startColumn : "?";
return `Parse error on line ${s}, column ${a}: ${i.message}`;
}).join(`
`);
super(`Parsing failed: ${n} ${r}`), this.result = e;
}
}, I(Gr, "MermaidParseError"), Gr);
export {
hA as A,
ZE as G,
nA as I,
sA as P,
gA as R,
AA as T,
aA as a,
uA as b,
rA as c,
lA as d,
pA as e,
eA as f,
yA as g,
SA as h,
kA as p
};