From e16923395b5efa158a53852dbe5be77d1daa69d3 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Fri, 6 Mar 2026 20:18:06 -0500 Subject: [PATCH] chore(build): remove obsolete downloaded JS bundles and update Dockerfile Remove minified JavaScript libraries that were previously downloaded during postinstall (htmx.min.js, highlight.min.js, lunr.min.js, lunr-flex.min.js). These are now bundled via esbuild from npm packages. Update Dockerfile to remove the now-unnecessary postinstall npm script execution, streamlining the container build process. --- Dockerfile | 3 +- web/static/highlight.min.js | 8426 ----------------------------------- web/static/htmx.min.js | 3382 -------------- web/static/lunr-flex.min.js | 1 - web/static/lunr.min.js | 1570 ------- 5 files changed, 1 insertion(+), 13381 deletions(-) delete mode 100644 web/static/highlight.min.js delete mode 100644 web/static/htmx.min.js delete mode 100644 web/static/lunr-flex.min.js delete mode 100644 web/static/lunr.min.js diff --git a/Dockerfile b/Dockerfile index 20ad3ec..5f9b034 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,6 @@ RUN cd templates && templ generate # Build frontend assets (only these rebuild on web/ changes) RUN npm run build:css:prod -RUN npm run postinstall RUN npm run build:ts # Build Go binary (cached unless Go files or generated code changes) @@ -90,4 +89,4 @@ COPY --from=builder /app/docs ./docs EXPOSE 8765 # Run the binary -CMD ["./main"] \ No newline at end of file +CMD ["./main"] diff --git a/web/static/highlight.min.js b/web/static/highlight.min.js deleted file mode 100644 index bfdefc7..0000000 --- a/web/static/highlight.min.js +++ /dev/null @@ -1,8426 +0,0 @@ -/*! - Highlight.js v11.9.0 (git: f47103d4f1) - (c) 2006-2023 undefined and other contributors - License: BSD-3-Clause - */ -var hljs = (function () { - "use strict"; - function e(n) { - return ( - n instanceof Map - ? (n.clear = - n.delete = - n.set = - () => { - throw Error("map is read-only"); - }) - : n instanceof Set && - (n.add = - n.clear = - n.delete = - () => { - throw Error("set is read-only"); - }), - Object.freeze(n), - Object.getOwnPropertyNames(n).forEach((t) => { - const a = n[t], - i = typeof a; - ("object" !== i && "function" !== i) || Object.isFrozen(a) || e(a); - }), - n - ); - } - class n { - constructor(e) { - (void 0 === e.data && (e.data = {}), - (this.data = e.data), - (this.isMatchIgnored = !1)); - } - ignoreMatch() { - this.isMatchIgnored = !0; - } - } - function t(e) { - return e - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - function a(e, ...n) { - const t = Object.create(null); - for (const n in e) t[n] = e[n]; - return ( - n.forEach((e) => { - for (const n in e) t[n] = e[n]; - }), - t - ); - } - const i = (e) => !!e.scope; - class r { - constructor(e, n) { - ((this.buffer = ""), (this.classPrefix = n.classPrefix), e.walk(this)); - } - addText(e) { - this.buffer += t(e); - } - openNode(e) { - if (!i(e)) return; - const n = ((e, { prefix: n }) => { - if (e.startsWith("language:")) - return e.replace("language:", "language-"); - if (e.includes(".")) { - const t = e.split("."); - return [ - `${n}${t.shift()}`, - ...t.map((e, n) => `${e}${"_".repeat(n + 1)}`), - ].join(" "); - } - return `${n}${e}`; - })(e.scope, { prefix: this.classPrefix }); - this.span(n); - } - closeNode(e) { - i(e) && (this.buffer += ""); - } - value() { - return this.buffer; - } - span(e) { - this.buffer += ``; - } - } - const s = (e = {}) => { - const n = { children: [] }; - return (Object.assign(n, e), n); - }; - class o { - constructor() { - ((this.rootNode = s()), (this.stack = [this.rootNode])); - } - get top() { - return this.stack[this.stack.length - 1]; - } - get root() { - return this.rootNode; - } - add(e) { - this.top.children.push(e); - } - openNode(e) { - const n = s({ scope: e }); - (this.add(n), this.stack.push(n)); - } - closeNode() { - if (this.stack.length > 1) return this.stack.pop(); - } - closeAllNodes() { - for (; this.closeNode(); ); - } - toJSON() { - return JSON.stringify(this.rootNode, null, 4); - } - walk(e) { - return this.constructor._walk(e, this.rootNode); - } - static _walk(e, n) { - return ( - "string" == typeof n - ? e.addText(n) - : n.children && - (e.openNode(n), - n.children.forEach((n) => this._walk(e, n)), - e.closeNode(n)), - e - ); - } - static _collapse(e) { - "string" != typeof e && - e.children && - (e.children.every((e) => "string" == typeof e) - ? (e.children = [e.children.join("")]) - : e.children.forEach((e) => { - o._collapse(e); - })); - } - } - class l extends o { - constructor(e) { - (super(), (this.options = e)); - } - addText(e) { - "" !== e && this.add(e); - } - startScope(e) { - this.openNode(e); - } - endScope() { - this.closeNode(); - } - __addSublanguage(e, n) { - const t = e.root; - (n && (t.scope = "language:" + n), this.add(t)); - } - toHTML() { - return new r(this, this.options).value(); - } - finalize() { - return (this.closeAllNodes(), !0); - } - } - function c(e) { - return e ? ("string" == typeof e ? e : e.source) : null; - } - function d(e) { - return b("(?=", e, ")"); - } - function g(e) { - return b("(?:", e, ")*"); - } - function u(e) { - return b("(?:", e, ")?"); - } - function b(...e) { - return e.map((e) => c(e)).join(""); - } - function m(...e) { - const n = ((e) => { - const n = e[e.length - 1]; - return "object" == typeof n && n.constructor === Object - ? (e.splice(e.length - 1, 1), n) - : {}; - })(e); - return "(" + (n.capture ? "" : "?:") + e.map((e) => c(e)).join("|") + ")"; - } - function p(e) { - return RegExp(e.toString() + "|").exec("").length - 1; - } - const _ = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; - function h(e, { joinWith: n }) { - let t = 0; - return e - .map((e) => { - t += 1; - const n = t; - let a = c(e), - i = ""; - for (; a.length > 0; ) { - const e = _.exec(a); - if (!e) { - i += a; - break; - } - ((i += a.substring(0, e.index)), - (a = a.substring(e.index + e[0].length)), - "\\" === e[0][0] && e[1] - ? (i += "\\" + (Number(e[1]) + n)) - : ((i += e[0]), "(" === e[0] && t++)); - } - return i; - }) - .map((e) => `(${e})`) - .join(n); - } - const f = "[a-zA-Z]\\w*", - E = "[a-zA-Z_]\\w*", - y = "\\b\\d+(\\.\\d+)?", - N = - "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - w = "\\b(0b[01]+)", - v = { - begin: "\\\\[\\s\\S]", - relevance: 0, - }, - O = { - scope: "string", - begin: "'", - end: "'", - illegal: "\\n", - contains: [v], - }, - k = { - scope: "string", - begin: '"', - end: '"', - illegal: "\\n", - contains: [v], - }, - x = (e, n, t = {}) => { - const i = a({ scope: "comment", begin: e, end: n, contains: [] }, t); - i.contains.push({ - scope: "doctag", - begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", - end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/, - excludeBegin: !0, - relevance: 0, - }); - const r = m( - "I", - "a", - "is", - "so", - "us", - "to", - "at", - "if", - "in", - "it", - "on", - /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, - /[A-Za-z]+[-][a-z]+/, - /[A-Za-z][a-z]{2,}/, - ); - return ( - i.contains.push({ - begin: b(/[ ]+/, "(", r, /[.]?[:]?([.][ ]|[ ])/, "){3}"), - }), - i - ); - }, - M = x("//", "$"), - S = x("/\\*", "\\*/"), - A = x("#", "$"); - var C = Object.freeze({ - __proto__: null, - APOS_STRING_MODE: O, - BACKSLASH_ESCAPE: v, - BINARY_NUMBER_MODE: { - scope: "number", - begin: w, - relevance: 0, - }, - BINARY_NUMBER_RE: w, - COMMENT: x, - C_BLOCK_COMMENT_MODE: S, - C_LINE_COMMENT_MODE: M, - C_NUMBER_MODE: { scope: "number", begin: N, relevance: 0 }, - C_NUMBER_RE: N, - END_SAME_AS_BEGIN: (e) => - Object.assign(e, { - "on:begin": (e, n) => { - n.data._beginMatch = e[1]; - }, - "on:end": (e, n) => { - n.data._beginMatch !== e[1] && n.ignoreMatch(); - }, - }), - HASH_COMMENT_MODE: A, - IDENT_RE: f, - MATCH_NOTHING_RE: /\b\B/, - METHOD_GUARD: { begin: "\\.\\s*" + E, relevance: 0 }, - NUMBER_MODE: { scope: "number", begin: y, relevance: 0 }, - NUMBER_RE: y, - PHRASAL_WORDS_MODE: { - begin: - /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/, - }, - QUOTE_STRING_MODE: k, - REGEXP_MODE: { - scope: "regexp", - begin: /\/(?=[^/\n]*\/)/, - end: /\/[gimuy]*/, - contains: [v, { begin: /\[/, end: /\]/, relevance: 0, contains: [v] }], - }, - RE_STARTERS_RE: - "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", - SHEBANG: (e = {}) => { - const n = /^#![ ]*\//; - return ( - e.binary && (e.begin = b(n, /.*\b/, e.binary, /\b.*/)), - a( - { - scope: "meta", - begin: n, - end: /$/, - relevance: 0, - "on:begin": (e, n) => { - 0 !== e.index && n.ignoreMatch(); - }, - }, - e, - ) - ); - }, - TITLE_MODE: { scope: "title", begin: f, relevance: 0 }, - UNDERSCORE_IDENT_RE: E, - UNDERSCORE_TITLE_MODE: { scope: "title", begin: E, relevance: 0 }, - }); - function T(e, n) { - "." === e.input[e.index - 1] && n.ignoreMatch(); - } - function R(e, n) { - void 0 !== e.className && ((e.scope = e.className), delete e.className); - } - function D(e, n) { - n && - e.beginKeywords && - ((e.begin = - "\\b(" + e.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)"), - (e.__beforeBegin = T), - (e.keywords = e.keywords || e.beginKeywords), - delete e.beginKeywords, - void 0 === e.relevance && (e.relevance = 0)); - } - function I(e, n) { - Array.isArray(e.illegal) && (e.illegal = m(...e.illegal)); - } - function L(e, n) { - if (e.match) { - if (e.begin || e.end) - throw Error("begin & end are not supported with match"); - ((e.begin = e.match), delete e.match); - } - } - function B(e, n) { - void 0 === e.relevance && (e.relevance = 1); - } - const $ = (e, n) => { - if (!e.beforeMatch) return; - if (e.starts) throw Error("beforeMatch cannot be used with starts"); - const t = Object.assign({}, e); - (Object.keys(e).forEach((n) => { - delete e[n]; - }), - (e.keywords = t.keywords), - (e.begin = b(t.beforeMatch, d(t.begin))), - (e.starts = { - relevance: 0, - contains: [Object.assign(t, { endsParent: !0 })], - }), - (e.relevance = 0), - delete t.beforeMatch); - }, - z = [ - "of", - "and", - "for", - "in", - "not", - "or", - "if", - "then", - "parent", - "list", - "value", - ], - F = "keyword"; - function U(e, n, t = F) { - const a = Object.create(null); - return ( - "string" == typeof e - ? i(t, e.split(" ")) - : Array.isArray(e) - ? i(t, e) - : Object.keys(e).forEach((t) => { - Object.assign(a, U(e[t], n, t)); - }), - a - ); - function i(e, t) { - (n && (t = t.map((e) => e.toLowerCase())), - t.forEach((n) => { - const t = n.split("|"); - a[t[0]] = [e, j(t[0], t[1])]; - })); - } - } - function j(e, n) { - return n ? Number(n) : ((e) => z.includes(e.toLowerCase()))(e) ? 0 : 1; - } - const P = {}, - K = (e) => { - console.error(e); - }, - H = (e, ...n) => { - console.log("WARN: " + e, ...n); - }, - q = (e, n) => { - P[`${e}/${n}`] || - (console.log(`Deprecated as of ${e}. ${n}`), (P[`${e}/${n}`] = !0)); - }, - G = Error(); - function Z(e, n, { key: t }) { - let a = 0; - const i = e[t], - r = {}, - s = {}; - for (let e = 1; e <= n.length; e++) - ((s[e + a] = i[e]), (r[e + a] = !0), (a += p(n[e - 1]))); - ((e[t] = s), (e[t]._emit = r), (e[t]._multi = !0)); - } - function W(e) { - (((e) => { - e.scope && - "object" == typeof e.scope && - null !== e.scope && - ((e.beginScope = e.scope), delete e.scope); - })(e), - "string" == typeof e.beginScope && - (e.beginScope = { - _wrap: e.beginScope, - }), - "string" == typeof e.endScope && (e.endScope = { _wrap: e.endScope }), - ((e) => { - if (Array.isArray(e.begin)) { - if (e.skip || e.excludeBegin || e.returnBegin) - throw ( - K( - "skip, excludeBegin, returnBegin not compatible with beginScope: {}", - ), - G - ); - if ("object" != typeof e.beginScope || null === e.beginScope) - throw (K("beginScope must be object"), G); - (Z(e, e.begin, { key: "beginScope" }), - (e.begin = h(e.begin, { joinWith: "" }))); - } - })(e), - ((e) => { - if (Array.isArray(e.end)) { - if (e.skip || e.excludeEnd || e.returnEnd) - throw ( - K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), - G - ); - if ("object" != typeof e.endScope || null === e.endScope) - throw (K("endScope must be object"), G); - (Z(e, e.end, { key: "endScope" }), - (e.end = h(e.end, { joinWith: "" }))); - } - })(e)); - } - function Q(e) { - function n(n, t) { - return RegExp( - c(n), - "m" + - (e.case_insensitive ? "i" : "") + - (e.unicodeRegex ? "u" : "") + - (t ? "g" : ""), - ); - } - class t { - constructor() { - ((this.matchIndexes = {}), - (this.regexes = []), - (this.matchAt = 1), - (this.position = 0)); - } - addRule(e, n) { - ((n.position = this.position++), - (this.matchIndexes[this.matchAt] = n), - this.regexes.push([n, e]), - (this.matchAt += p(e) + 1)); - } - compile() { - 0 === this.regexes.length && (this.exec = () => null); - const e = this.regexes.map((e) => e[1]); - ((this.matcherRe = n(h(e, { joinWith: "|" }), !0)), - (this.lastIndex = 0)); - } - exec(e) { - this.matcherRe.lastIndex = this.lastIndex; - const n = this.matcherRe.exec(e); - if (!n) return null; - const t = n.findIndex((e, n) => n > 0 && void 0 !== e), - a = this.matchIndexes[t]; - return (n.splice(0, t), Object.assign(n, a)); - } - } - class i { - constructor() { - ((this.rules = []), - (this.multiRegexes = []), - (this.count = 0), - (this.lastIndex = 0), - (this.regexIndex = 0)); - } - getMatcher(e) { - if (this.multiRegexes[e]) return this.multiRegexes[e]; - const n = new t(); - return ( - this.rules.slice(e).forEach(([e, t]) => n.addRule(e, t)), - n.compile(), - (this.multiRegexes[e] = n), - n - ); - } - resumingScanAtSamePosition() { - return 0 !== this.regexIndex; - } - considerAll() { - this.regexIndex = 0; - } - addRule(e, n) { - (this.rules.push([e, n]), "begin" === n.type && this.count++); - } - exec(e) { - const n = this.getMatcher(this.regexIndex); - n.lastIndex = this.lastIndex; - let t = n.exec(e); - if (this.resumingScanAtSamePosition()) - if (t && t.index === this.lastIndex); - else { - const n = this.getMatcher(0); - ((n.lastIndex = this.lastIndex + 1), (t = n.exec(e))); - } - return ( - t && - ((this.regexIndex += t.position + 1), - this.regexIndex === this.count && this.considerAll()), - t - ); - } - } - if ( - (e.compilerExtensions || (e.compilerExtensions = []), - e.contains && e.contains.includes("self")) - ) - throw Error( - "ERR: contains `self` is not supported at the top-level of a language. See documentation.", - ); - return ( - (e.classNameAliases = a(e.classNameAliases || {})), - (function t(r, s) { - const o = r; - if (r.isCompiled) return o; - ([R, L, W, $].forEach((e) => e(r, s)), - e.compilerExtensions.forEach((e) => e(r, s)), - (r.__beforeBegin = null), - [D, I, B].forEach((e) => e(r, s)), - (r.isCompiled = !0)); - let l = null; - return ( - "object" == typeof r.keywords && - r.keywords.$pattern && - ((r.keywords = Object.assign({}, r.keywords)), - (l = r.keywords.$pattern), - delete r.keywords.$pattern), - (l = l || /\w+/), - r.keywords && (r.keywords = U(r.keywords, e.case_insensitive)), - (o.keywordPatternRe = n(l, !0)), - s && - (r.begin || (r.begin = /\B|\b/), - (o.beginRe = n(o.begin)), - r.end || r.endsWithParent || (r.end = /\B|\b/), - r.end && (o.endRe = n(o.end)), - (o.terminatorEnd = c(o.end) || ""), - r.endsWithParent && - s.terminatorEnd && - (o.terminatorEnd += (r.end ? "|" : "") + s.terminatorEnd)), - r.illegal && (o.illegalRe = n(r.illegal)), - r.contains || (r.contains = []), - (r.contains = [].concat( - ...r.contains.map((e) => - ((e) => ( - e.variants && - !e.cachedVariants && - (e.cachedVariants = e.variants.map((n) => - a( - e, - { - variants: null, - }, - n, - ), - )), - e.cachedVariants - ? e.cachedVariants - : X(e) - ? a(e, { - starts: e.starts ? a(e.starts) : null, - }) - : Object.isFrozen(e) - ? a(e) - : e - ))("self" === e ? r : e), - ), - )), - r.contains.forEach((e) => { - t(e, o); - }), - r.starts && t(r.starts, s), - (o.matcher = ((e) => { - const n = new i(); - return ( - e.contains.forEach((e) => - n.addRule(e.begin, { rule: e, type: "begin" }), - ), - e.terminatorEnd && n.addRule(e.terminatorEnd, { type: "end" }), - e.illegal && n.addRule(e.illegal, { type: "illegal" }), - n - ); - })(o)), - o - ); - })(e) - ); - } - function X(e) { - return !!e && (e.endsWithParent || X(e.starts)); - } - class V extends Error { - constructor(e, n) { - (super(e), (this.name = "HTMLInjectionError"), (this.html = n)); - } - } - const J = t, - Y = a, - ee = Symbol("nomatch"), - ne = (t) => { - const a = Object.create(null), - i = Object.create(null), - r = []; - let s = !0; - const o = - "Could not find the language '{}', did you forget to load/include a language module?", - c = { - disableAutodetect: !0, - name: "Plain text", - contains: [], - }; - let p = { - ignoreUnescapedHTML: !1, - throwUnescapedHTML: !1, - noHighlightRe: /^(no-?highlight)$/i, - languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, - classPrefix: "hljs-", - cssSelector: "pre code", - languages: null, - __emitter: l, - }; - function _(e) { - return p.noHighlightRe.test(e); - } - function h(e, n, t) { - let a = "", - i = ""; - ("object" == typeof n - ? ((a = e), (t = n.ignoreIllegals), (i = n.language)) - : (q("10.7.0", "highlight(lang, code, ...args) has been deprecated."), - q( - "10.7.0", - "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277", - ), - (i = e), - (a = n)), - void 0 === t && (t = !0)); - const r = { code: a, language: i }; - x("before:highlight", r); - const s = r.result ? r.result : f(r.language, r.code, t); - return ((s.code = r.code), x("after:highlight", s), s); - } - function f(e, t, i, r) { - const l = Object.create(null); - function c() { - if (!x.keywords) return void S.addText(A); - let e = 0; - x.keywordPatternRe.lastIndex = 0; - let n = x.keywordPatternRe.exec(A), - t = ""; - for (; n; ) { - t += A.substring(e, n.index); - const i = w.case_insensitive ? n[0].toLowerCase() : n[0], - r = ((a = i), x.keywords[a]); - if (r) { - const [e, a] = r; - if ( - (S.addText(t), - (t = ""), - (l[i] = (l[i] || 0) + 1), - l[i] <= 7 && (C += a), - e.startsWith("_")) - ) - t += n[0]; - else { - const t = w.classNameAliases[e] || e; - g(n[0], t); - } - } else t += n[0]; - ((e = x.keywordPatternRe.lastIndex), - (n = x.keywordPatternRe.exec(A))); - } - var a; - ((t += A.substring(e)), S.addText(t)); - } - function d() { - (null != x.subLanguage - ? (() => { - if ("" === A) return; - let e = null; - if ("string" == typeof x.subLanguage) { - if (!a[x.subLanguage]) return void S.addText(A); - ((e = f(x.subLanguage, A, !0, M[x.subLanguage])), - (M[x.subLanguage] = e._top)); - } else e = E(A, x.subLanguage.length ? x.subLanguage : null); - (x.relevance > 0 && (C += e.relevance), - S.__addSublanguage(e._emitter, e.language)); - })() - : c(), - (A = "")); - } - function g(e, n) { - "" !== e && (S.startScope(n), S.addText(e), S.endScope()); - } - function u(e, n) { - let t = 1; - const a = n.length - 1; - for (; t <= a; ) { - if (!e._emit[t]) { - t++; - continue; - } - const a = w.classNameAliases[e[t]] || e[t], - i = n[t]; - (a ? g(i, a) : ((A = i), c(), (A = "")), t++); - } - } - function b(e, n) { - return ( - e.scope && - "string" == typeof e.scope && - S.openNode(w.classNameAliases[e.scope] || e.scope), - e.beginScope && - (e.beginScope._wrap - ? (g( - A, - w.classNameAliases[e.beginScope._wrap] || - e.beginScope._wrap, - ), - (A = "")) - : e.beginScope._multi && (u(e.beginScope, n), (A = ""))), - (x = Object.create(e, { - parent: { - value: x, - }, - })), - x - ); - } - function m(e, t, a) { - let i = ((e, n) => { - const t = e && e.exec(n); - return t && 0 === t.index; - })(e.endRe, a); - if (i) { - if (e["on:end"]) { - const a = new n(e); - (e["on:end"](t, a), a.isMatchIgnored && (i = !1)); - } - if (i) { - for (; e.endsParent && e.parent; ) e = e.parent; - return e; - } - } - if (e.endsWithParent) return m(e.parent, t, a); - } - function _(e) { - return 0 === x.matcher.regexIndex ? ((A += e[0]), 1) : ((D = !0), 0); - } - function h(e) { - const n = e[0], - a = t.substring(e.index), - i = m(x, e, a); - if (!i) return ee; - const r = x; - x.endScope && x.endScope._wrap - ? (d(), g(n, x.endScope._wrap)) - : x.endScope && x.endScope._multi - ? (d(), u(x.endScope, e)) - : r.skip - ? (A += n) - : (r.returnEnd || r.excludeEnd || (A += n), - d(), - r.excludeEnd && (A = n)); - do { - (x.scope && S.closeNode(), - x.skip || x.subLanguage || (C += x.relevance), - (x = x.parent)); - } while (x !== i.parent); - return (i.starts && b(i.starts, e), r.returnEnd ? 0 : n.length); - } - let y = {}; - function N(a, r) { - const o = r && r[0]; - if (((A += a), null == o)) return (d(), 0); - if ( - "begin" === y.type && - "end" === r.type && - y.index === r.index && - "" === o - ) { - if (((A += t.slice(r.index, r.index + 1)), !s)) { - const n = Error(`0 width match regex (${e})`); - throw ((n.languageName = e), (n.badRule = y.rule), n); - } - return 1; - } - if (((y = r), "begin" === r.type)) - return ((e) => { - const t = e[0], - a = e.rule, - i = new n(a), - r = [a.__beforeBegin, a["on:begin"]]; - for (const n of r) - if (n && (n(e, i), i.isMatchIgnored)) return _(t); - return ( - a.skip - ? (A += t) - : (a.excludeBegin && (A += t), - d(), - a.returnBegin || a.excludeBegin || (A = t)), - b(a, e), - a.returnBegin ? 0 : t.length - ); - })(r); - if ("illegal" === r.type && !i) { - const e = Error( - 'Illegal lexeme "' + - o + - '" for mode "' + - (x.scope || "") + - '"', - ); - throw ((e.mode = x), e); - } - if ("end" === r.type) { - const e = h(r); - if (e !== ee) return e; - } - if ("illegal" === r.type && "" === o) return 1; - if (R > 1e5 && R > 3 * r.index) - throw Error( - "potential infinite loop, way more iterations than matches", - ); - return ((A += o), o.length); - } - const w = v(e); - if (!w) - throw (K(o.replace("{}", e)), Error('Unknown language: "' + e + '"')); - const O = Q(w); - let k = "", - x = r || O; - const M = {}, - S = new p.__emitter(p); - (() => { - const e = []; - for (let n = x; n !== w; n = n.parent) n.scope && e.unshift(n.scope); - e.forEach((e) => S.openNode(e)); - })(); - let A = "", - C = 0, - T = 0, - R = 0, - D = !1; - try { - if (w.__emitTokens) w.__emitTokens(t, S); - else { - for (x.matcher.considerAll(); ; ) { - (R++, - D ? (D = !1) : x.matcher.considerAll(), - (x.matcher.lastIndex = T)); - const e = x.matcher.exec(t); - if (!e) break; - const n = N(t.substring(T, e.index), e); - T = e.index + n; - } - N(t.substring(T)); - } - return ( - S.finalize(), - (k = S.toHTML()), - { - language: e, - value: k, - relevance: C, - illegal: !1, - _emitter: S, - _top: x, - } - ); - } catch (n) { - if (n.message && n.message.includes("Illegal")) - return { - language: e, - value: J(t), - illegal: !0, - relevance: 0, - _illegalBy: { - message: n.message, - index: T, - context: t.slice(T - 100, T + 100), - mode: n.mode, - resultSoFar: k, - }, - _emitter: S, - }; - if (s) - return { - language: e, - value: J(t), - illegal: !1, - relevance: 0, - errorRaised: n, - _emitter: S, - _top: x, - }; - throw n; - } - } - function E(e, n) { - n = n || p.languages || Object.keys(a); - const t = ((e) => { - const n = { - value: J(e), - illegal: !1, - relevance: 0, - _top: c, - _emitter: new p.__emitter(p), - }; - return (n._emitter.addText(e), n); - })(e), - i = n - .filter(v) - .filter(k) - .map((n) => f(n, e, !1)); - i.unshift(t); - const r = i.sort((e, n) => { - if (e.relevance !== n.relevance) return n.relevance - e.relevance; - if (e.language && n.language) { - if (v(e.language).supersetOf === n.language) return 1; - if (v(n.language).supersetOf === e.language) return -1; - } - return 0; - }), - [s, o] = r, - l = s; - return ((l.secondBest = o), l); - } - function y(e) { - let n = null; - const t = ((e) => { - let n = e.className + " "; - n += e.parentNode ? e.parentNode.className : ""; - const t = p.languageDetectRe.exec(n); - if (t) { - const n = v(t[1]); - return ( - n || - (H(o.replace("{}", t[1])), - H("Falling back to no-highlight mode for this block.", e)), - n ? t[1] : "no-highlight" - ); - } - return n.split(/\s+/).find((e) => _(e) || v(e)); - })(e); - if (_(t)) return; - if ( - (x("before:highlightElement", { el: e, language: t }), - e.dataset.highlighted) - ) - return void console.log( - "Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", - e, - ); - if ( - e.children.length > 0 && - (p.ignoreUnescapedHTML || - (console.warn( - "One of your code blocks includes unescaped HTML. This is a potentially serious security risk.", - ), - console.warn( - "https://github.com/highlightjs/highlight.js/wiki/security", - ), - console.warn("The element with unescaped HTML:"), - console.warn(e)), - p.throwUnescapedHTML) - ) - throw new V( - "One of your code blocks includes unescaped HTML.", - e.innerHTML, - ); - n = e; - const a = n.textContent, - r = t ? h(a, { language: t, ignoreIllegals: !0 }) : E(a); - ((e.innerHTML = r.value), - (e.dataset.highlighted = "yes"), - ((e, n, t) => { - const a = (n && i[n]) || t; - (e.classList.add("hljs"), e.classList.add("language-" + a)); - })(e, t, r.language), - (e.result = { - language: r.language, - re: r.relevance, - relevance: r.relevance, - }), - r.secondBest && - (e.secondBest = { - language: r.secondBest.language, - relevance: r.secondBest.relevance, - }), - x("after:highlightElement", { el: e, result: r, text: a })); - } - let N = !1; - function w() { - "loading" !== document.readyState - ? document.querySelectorAll(p.cssSelector).forEach(y) - : (N = !0); - } - function v(e) { - return ((e = (e || "").toLowerCase()), a[e] || a[i[e]]); - } - function O(e, { languageName: n }) { - ("string" == typeof e && (e = [e]), - e.forEach((e) => { - i[e.toLowerCase()] = n; - })); - } - function k(e) { - const n = v(e); - return n && !n.disableAutodetect; - } - function x(e, n) { - const t = e; - r.forEach((e) => { - e[t] && e[t](n); - }); - } - ("undefined" != typeof window && - window.addEventListener && - window.addEventListener( - "DOMContentLoaded", - () => { - N && w(); - }, - !1, - ), - Object.assign(t, { - highlight: h, - highlightAuto: E, - highlightAll: w, - highlightElement: y, - highlightBlock: (e) => ( - q("10.7.0", "highlightBlock will be removed entirely in v12.0"), - q("10.7.0", "Please use highlightElement now."), - y(e) - ), - configure: (e) => { - p = Y(p, e); - }, - initHighlighting: () => { - (w(), - q( - "10.6.0", - "initHighlighting() deprecated. Use highlightAll() now.", - )); - }, - initHighlightingOnLoad: () => { - (w(), - q( - "10.6.0", - "initHighlightingOnLoad() deprecated. Use highlightAll() now.", - )); - }, - registerLanguage: (e, n) => { - let i = null; - try { - i = n(t); - } catch (n) { - if ( - (K( - "Language definition for '{}' could not be registered.".replace( - "{}", - e, - ), - ), - !s) - ) - throw n; - (K(n), (i = c)); - } - (i.name || (i.name = e), - (a[e] = i), - (i.rawDefinition = n.bind(null, t)), - i.aliases && - O(i.aliases, { - languageName: e, - })); - }, - unregisterLanguage: (e) => { - delete a[e]; - for (const n of Object.keys(i)) i[n] === e && delete i[n]; - }, - listLanguages: () => Object.keys(a), - getLanguage: v, - registerAliases: O, - autoDetection: k, - inherit: Y, - addPlugin: (e) => { - (((e) => { - (e["before:highlightBlock"] && - !e["before:highlightElement"] && - (e["before:highlightElement"] = (n) => { - e["before:highlightBlock"](Object.assign({ block: n.el }, n)); - }), - e["after:highlightBlock"] && - !e["after:highlightElement"] && - (e["after:highlightElement"] = (n) => { - e["after:highlightBlock"]( - Object.assign({ block: n.el }, n), - ); - })); - })(e), - r.push(e)); - }, - removePlugin: (e) => { - const n = r.indexOf(e); - -1 !== n && r.splice(n, 1); - }, - }), - (t.debugMode = () => { - s = !1; - }), - (t.safeMode = () => { - s = !0; - }), - (t.versionString = "11.9.0"), - (t.regex = { - concat: b, - lookahead: d, - either: m, - optional: u, - anyNumberOfTimes: g, - })); - for (const n in C) "object" == typeof C[n] && e(C[n]); - return (Object.assign(t, C), t); - }, - te = ne({}); - te.newInstance = () => ne({}); - var ae = te; - const ie = (e) => ({ - IMPORTANT: { - scope: "meta", - begin: "!important", - }, - BLOCK_COMMENT: e.C_BLOCK_COMMENT_MODE, - HEXCOLOR: { - scope: "number", - begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/, - }, - FUNCTION_DISPATCH: { className: "built_in", begin: /[\w-]+(?=\()/ }, - ATTRIBUTE_SELECTOR_MODE: { - scope: "selector-attr", - begin: /\[/, - end: /\]/, - illegal: "$", - contains: [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE], - }, - CSS_NUMBER_MODE: { - scope: "number", - begin: - e.NUMBER_RE + - "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", - relevance: 0, - }, - CSS_VARIABLE: { className: "attr", begin: /--[A-Za-z_][A-Za-z0-9_-]*/ }, - }), - re = [ - "a", - "abbr", - "address", - "article", - "aside", - "audio", - "b", - "blockquote", - "body", - "button", - "canvas", - "caption", - "cite", - "code", - "dd", - "del", - "details", - "dfn", - "div", - "dl", - "dt", - "em", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "header", - "hgroup", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "label", - "legend", - "li", - "main", - "mark", - "menu", - "nav", - "object", - "ol", - "p", - "q", - "quote", - "samp", - "section", - "span", - "strong", - "summary", - "sup", - "table", - "tbody", - "td", - "textarea", - "tfoot", - "th", - "thead", - "time", - "tr", - "ul", - "var", - "video", - ], - se = [ - "any-hover", - "any-pointer", - "aspect-ratio", - "color", - "color-gamut", - "color-index", - "device-aspect-ratio", - "device-height", - "device-width", - "display-mode", - "forced-colors", - "grid", - "height", - "hover", - "inverted-colors", - "monochrome", - "orientation", - "overflow-block", - "overflow-inline", - "pointer", - "prefers-color-scheme", - "prefers-contrast", - "prefers-reduced-motion", - "prefers-reduced-transparency", - "resolution", - "scan", - "scripting", - "update", - "width", - "min-width", - "max-width", - "min-height", - "max-height", - ], - oe = [ - "active", - "any-link", - "blank", - "checked", - "current", - "default", - "defined", - "dir", - "disabled", - "drop", - "empty", - "enabled", - "first", - "first-child", - "first-of-type", - "fullscreen", - "future", - "focus", - "focus-visible", - "focus-within", - "has", - "host", - "host-context", - "hover", - "indeterminate", - "in-range", - "invalid", - "is", - "lang", - "last-child", - "last-of-type", - "left", - "link", - "local-link", - "not", - "nth-child", - "nth-col", - "nth-last-child", - "nth-last-col", - "nth-last-of-type", - "nth-of-type", - "only-child", - "only-of-type", - "optional", - "out-of-range", - "past", - "placeholder-shown", - "read-only", - "read-write", - "required", - "right", - "root", - "scope", - "target", - "target-within", - "user-invalid", - "valid", - "visited", - "where", - ], - le = [ - "after", - "backdrop", - "before", - "cue", - "cue-region", - "first-letter", - "first-line", - "grammar-error", - "marker", - "part", - "placeholder", - "selection", - "slotted", - "spelling-error", - ], - ce = [ - "align-content", - "align-items", - "align-self", - "all", - "animation", - "animation-delay", - "animation-direction", - "animation-duration", - "animation-fill-mode", - "animation-iteration-count", - "animation-name", - "animation-play-state", - "animation-timing-function", - "backface-visibility", - "background", - "background-attachment", - "background-blend-mode", - "background-clip", - "background-color", - "background-image", - "background-origin", - "background-position", - "background-repeat", - "background-size", - "block-size", - "border", - "border-block", - "border-block-color", - "border-block-end", - "border-block-end-color", - "border-block-end-style", - "border-block-end-width", - "border-block-start", - "border-block-start-color", - "border-block-start-style", - "border-block-start-width", - "border-block-style", - "border-block-width", - "border-bottom", - "border-bottom-color", - "border-bottom-left-radius", - "border-bottom-right-radius", - "border-bottom-style", - "border-bottom-width", - "border-collapse", - "border-color", - "border-image", - "border-image-outset", - "border-image-repeat", - "border-image-slice", - "border-image-source", - "border-image-width", - "border-inline", - "border-inline-color", - "border-inline-end", - "border-inline-end-color", - "border-inline-end-style", - "border-inline-end-width", - "border-inline-start", - "border-inline-start-color", - "border-inline-start-style", - "border-inline-start-width", - "border-inline-style", - "border-inline-width", - "border-left", - "border-left-color", - "border-left-style", - "border-left-width", - "border-radius", - "border-right", - "border-right-color", - "border-right-style", - "border-right-width", - "border-spacing", - "border-style", - "border-top", - "border-top-color", - "border-top-left-radius", - "border-top-right-radius", - "border-top-style", - "border-top-width", - "border-width", - "bottom", - "box-decoration-break", - "box-shadow", - "box-sizing", - "break-after", - "break-before", - "break-inside", - "caption-side", - "caret-color", - "clear", - "clip", - "clip-path", - "clip-rule", - "color", - "column-count", - "column-fill", - "column-gap", - "column-rule", - "column-rule-color", - "column-rule-style", - "column-rule-width", - "column-span", - "column-width", - "columns", - "contain", - "content", - "content-visibility", - "counter-increment", - "counter-reset", - "cue", - "cue-after", - "cue-before", - "cursor", - "direction", - "display", - "empty-cells", - "filter", - "flex", - "flex-basis", - "flex-direction", - "flex-flow", - "flex-grow", - "flex-shrink", - "flex-wrap", - "float", - "flow", - "font", - "font-display", - "font-family", - "font-feature-settings", - "font-kerning", - "font-language-override", - "font-size", - "font-size-adjust", - "font-smoothing", - "font-stretch", - "font-style", - "font-synthesis", - "font-variant", - "font-variant-caps", - "font-variant-east-asian", - "font-variant-ligatures", - "font-variant-numeric", - "font-variant-position", - "font-variation-settings", - "font-weight", - "gap", - "glyph-orientation-vertical", - "grid", - "grid-area", - "grid-auto-columns", - "grid-auto-flow", - "grid-auto-rows", - "grid-column", - "grid-column-end", - "grid-column-start", - "grid-gap", - "grid-row", - "grid-row-end", - "grid-row-start", - "grid-template", - "grid-template-areas", - "grid-template-columns", - "grid-template-rows", - "hanging-punctuation", - "height", - "hyphens", - "icon", - "image-orientation", - "image-rendering", - "image-resolution", - "ime-mode", - "inline-size", - "isolation", - "justify-content", - "left", - "letter-spacing", - "line-break", - "line-height", - "list-style", - "list-style-image", - "list-style-position", - "list-style-type", - "margin", - "margin-block", - "margin-block-end", - "margin-block-start", - "margin-bottom", - "margin-inline", - "margin-inline-end", - "margin-inline-start", - "margin-left", - "margin-right", - "margin-top", - "marks", - "mask", - "mask-border", - "mask-border-mode", - "mask-border-outset", - "mask-border-repeat", - "mask-border-slice", - "mask-border-source", - "mask-border-width", - "mask-clip", - "mask-composite", - "mask-image", - "mask-mode", - "mask-origin", - "mask-position", - "mask-repeat", - "mask-size", - "mask-type", - "max-block-size", - "max-height", - "max-inline-size", - "max-width", - "min-block-size", - "min-height", - "min-inline-size", - "min-width", - "mix-blend-mode", - "nav-down", - "nav-index", - "nav-left", - "nav-right", - "nav-up", - "none", - "normal", - "object-fit", - "object-position", - "opacity", - "order", - "orphans", - "outline", - "outline-color", - "outline-offset", - "outline-style", - "outline-width", - "overflow", - "overflow-wrap", - "overflow-x", - "overflow-y", - "padding", - "padding-block", - "padding-block-end", - "padding-block-start", - "padding-bottom", - "padding-inline", - "padding-inline-end", - "padding-inline-start", - "padding-left", - "padding-right", - "padding-top", - "page-break-after", - "page-break-before", - "page-break-inside", - "pause", - "pause-after", - "pause-before", - "perspective", - "perspective-origin", - "pointer-events", - "position", - "quotes", - "resize", - "rest", - "rest-after", - "rest-before", - "right", - "row-gap", - "scroll-margin", - "scroll-margin-block", - "scroll-margin-block-end", - "scroll-margin-block-start", - "scroll-margin-bottom", - "scroll-margin-inline", - "scroll-margin-inline-end", - "scroll-margin-inline-start", - "scroll-margin-left", - "scroll-margin-right", - "scroll-margin-top", - "scroll-padding", - "scroll-padding-block", - "scroll-padding-block-end", - "scroll-padding-block-start", - "scroll-padding-bottom", - "scroll-padding-inline", - "scroll-padding-inline-end", - "scroll-padding-inline-start", - "scroll-padding-left", - "scroll-padding-right", - "scroll-padding-top", - "scroll-snap-align", - "scroll-snap-stop", - "scroll-snap-type", - "scrollbar-color", - "scrollbar-gutter", - "scrollbar-width", - "shape-image-threshold", - "shape-margin", - "shape-outside", - "speak", - "speak-as", - "src", - "tab-size", - "table-layout", - "text-align", - "text-align-all", - "text-align-last", - "text-combine-upright", - "text-decoration", - "text-decoration-color", - "text-decoration-line", - "text-decoration-style", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-position", - "text-emphasis-style", - "text-indent", - "text-justify", - "text-orientation", - "text-overflow", - "text-rendering", - "text-shadow", - "text-transform", - "text-underline-position", - "top", - "transform", - "transform-box", - "transform-origin", - "transform-style", - "transition", - "transition-delay", - "transition-duration", - "transition-property", - "transition-timing-function", - "unicode-bidi", - "vertical-align", - "visibility", - "voice-balance", - "voice-duration", - "voice-family", - "voice-pitch", - "voice-range", - "voice-rate", - "voice-stress", - "voice-volume", - "white-space", - "widows", - "width", - "will-change", - "word-break", - "word-spacing", - "word-wrap", - "writing-mode", - "z-index", - ].reverse(), - de = oe.concat(le); - var ge = "[0-9](_*[0-9])*", - ue = `\\.(${ge})`, - be = "[0-9a-fA-F](_*[0-9a-fA-F])*", - me = { - className: "number", - variants: [ - { - begin: `(\\b(${ge})((${ue})|\\.)?|(${ue}))[eE][+-]?(${ge})[fFdD]?\\b`, - }, - { - begin: `\\b(${ge})((${ue})[fFdD]?\\b|\\.([fFdD]\\b)?)`, - }, - { - begin: `(${ue})[fFdD]?\\b`, - }, - { begin: `\\b(${ge})[fFdD]\\b` }, - { - begin: `\\b0[xX]((${be})\\.?|(${be})?\\.(${be}))[pP][+-]?(${ge})[fFdD]?\\b`, - }, - { - begin: "\\b(0|[1-9](_*[0-9])*)[lL]?\\b", - }, - { begin: `\\b0[xX](${be})[lL]?\\b` }, - { - begin: "\\b0(_*[0-7])*[lL]?\\b", - }, - { begin: "\\b0[bB][01](_*[01])*[lL]?\\b" }, - ], - relevance: 0, - }; - function pe(e, n, t) { - return -1 === t ? "" : e.replace(n, (a) => pe(e, n, t - 1)); - } - const _e = "[A-Za-z$_][0-9A-Za-z$_]*", - he = [ - "as", - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - ], - fe = ["true", "false", "null", "undefined", "NaN", "Infinity"], - Ee = [ - "Object", - "Function", - "Boolean", - "Symbol", - "Math", - "Date", - "Number", - "BigInt", - "String", - "RegExp", - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - "Set", - "Map", - "WeakSet", - "WeakMap", - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - "Reflect", - "Proxy", - "Intl", - "WebAssembly", - ], - ye = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError", - ], - Ne = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - "require", - "exports", - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape", - ], - we = [ - "arguments", - "this", - "super", - "console", - "window", - "document", - "localStorage", - "sessionStorage", - "module", - "global", - ], - ve = [].concat(Ne, Ee, ye); - function Oe(e) { - const n = e.regex, - t = _e, - a = { - begin: /<[A-Za-z0-9\\._:-]+/, - end: /\/[A-Za-z0-9\\._:-]+>|\/>/, - isTrulyOpeningTag: (e, n) => { - const t = e[0].length + e.index, - a = e.input[t]; - if ("<" === a || "," === a) return void n.ignoreMatch(); - let i; - ">" === a && - (((e, { after: n }) => { - const t = "", - M = { - match: [ - /const|var|let/, - /\s+/, - t, - /\s*/, - /=\s*/, - /(async\s*)?/, - n.lookahead(x), - ], - keywords: "async", - className: { 1: "keyword", 3: "title.function" }, - contains: [f], - }; - return { - name: "JavaScript", - aliases: ["js", "jsx", "mjs", "cjs"], - keywords: i, - exports: { - PARAMS_CONTAINS: h, - CLASS_REFERENCE: y, - }, - illegal: /#(?![$_A-z])/, - contains: [ - e.SHEBANG({ label: "shebang", binary: "node", relevance: 5 }), - { - label: "use_strict", - className: "meta", - relevance: 10, - begin: /^\s*['"]use (strict|asm)['"]/, - }, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - d, - g, - u, - b, - m, - { match: /\$\d+/ }, - l, - y, - { - className: "attr", - begin: t + n.lookahead(":"), - relevance: 0, - }, - M, - { - begin: "(" + e.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*", - keywords: "return throw case", - relevance: 0, - contains: [ - m, - e.REGEXP_MODE, - { - className: "function", - begin: x, - returnBegin: !0, - end: "\\s*=>", - contains: [ - { - className: "params", - variants: [ - { begin: e.UNDERSCORE_IDENT_RE, relevance: 0 }, - { - className: null, - begin: /\(\s*\)/, - skip: !0, - }, - { - begin: /\(/, - end: /\)/, - excludeBegin: !0, - excludeEnd: !0, - keywords: i, - contains: h, - }, - ], - }, - ], - }, - { begin: /,/, relevance: 0 }, - { match: /\s+/, relevance: 0 }, - { - variants: [ - { begin: "<>", end: "" }, - { - match: /<[A-Za-z0-9\\._:-]+\s*\/>/, - }, - { begin: a.begin, "on:begin": a.isTrulyOpeningTag, end: a.end }, - ], - subLanguage: "xml", - contains: [ - { - begin: a.begin, - end: a.end, - skip: !0, - contains: ["self"], - }, - ], - }, - ], - }, - N, - { - beginKeywords: "while if switch catch for", - }, - { - begin: - "\\b(?!function)" + - e.UNDERSCORE_IDENT_RE + - "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", - returnBegin: !0, - label: "func.def", - contains: [ - f, - e.inherit(e.TITLE_MODE, { begin: t, className: "title.function" }), - ], - }, - { match: /\.\.\./, relevance: 0 }, - O, - { match: "\\$" + t, relevance: 0 }, - { - match: [/\bconstructor(?=\s*\()/], - className: { 1: "title.function" }, - contains: [f], - }, - w, - { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant", - }, - E, - k, - { match: /\$[(.]/ }, - ], - }; - } - const ke = (e) => b(/\b/, e, /\w$/.test(e) ? /\b/ : /\B/), - xe = ["Protocol", "Type"].map(ke), - Me = ["init", "self"].map(ke), - Se = ["Any", "Self"], - Ae = [ - "actor", - "any", - "associatedtype", - "async", - "await", - /as\?/, - /as!/, - "as", - "borrowing", - "break", - "case", - "catch", - "class", - "consume", - "consuming", - "continue", - "convenience", - "copy", - "default", - "defer", - "deinit", - "didSet", - "distributed", - "do", - "dynamic", - "each", - "else", - "enum", - "extension", - "fallthrough", - /fileprivate\(set\)/, - "fileprivate", - "final", - "for", - "func", - "get", - "guard", - "if", - "import", - "indirect", - "infix", - /init\?/, - /init!/, - "inout", - /internal\(set\)/, - "internal", - "in", - "is", - "isolated", - "nonisolated", - "lazy", - "let", - "macro", - "mutating", - "nonmutating", - /open\(set\)/, - "open", - "operator", - "optional", - "override", - "postfix", - "precedencegroup", - "prefix", - /private\(set\)/, - "private", - "protocol", - /public\(set\)/, - "public", - "repeat", - "required", - "rethrows", - "return", - "set", - "some", - "static", - "struct", - "subscript", - "super", - "switch", - "throws", - "throw", - /try\?/, - /try!/, - "try", - "typealias", - /unowned\(safe\)/, - /unowned\(unsafe\)/, - "unowned", - "var", - "weak", - "where", - "while", - "willSet", - ], - Ce = ["false", "nil", "true"], - Te = [ - "assignment", - "associativity", - "higherThan", - "left", - "lowerThan", - "none", - "right", - ], - Re = [ - "#colorLiteral", - "#column", - "#dsohandle", - "#else", - "#elseif", - "#endif", - "#error", - "#file", - "#fileID", - "#fileLiteral", - "#filePath", - "#function", - "#if", - "#imageLiteral", - "#keyPath", - "#line", - "#selector", - "#sourceLocation", - "#warning", - ], - De = [ - "abs", - "all", - "any", - "assert", - "assertionFailure", - "debugPrint", - "dump", - "fatalError", - "getVaList", - "isKnownUniquelyReferenced", - "max", - "min", - "numericCast", - "pointwiseMax", - "pointwiseMin", - "precondition", - "preconditionFailure", - "print", - "readLine", - "repeatElement", - "sequence", - "stride", - "swap", - "swift_unboxFromSwiftValueWithType", - "transcode", - "type", - "unsafeBitCast", - "unsafeDowncast", - "withExtendedLifetime", - "withUnsafeMutablePointer", - "withUnsafePointer", - "withVaList", - "withoutActuallyEscaping", - "zip", - ], - Ie = m( - /[/=\-+!*%<>&|^~?]/, - /[\u00A1-\u00A7]/, - /[\u00A9\u00AB]/, - /[\u00AC\u00AE]/, - /[\u00B0\u00B1]/, - /[\u00B6\u00BB\u00BF\u00D7\u00F7]/, - /[\u2016-\u2017]/, - /[\u2020-\u2027]/, - /[\u2030-\u203E]/, - /[\u2041-\u2053]/, - /[\u2055-\u205E]/, - /[\u2190-\u23FF]/, - /[\u2500-\u2775]/, - /[\u2794-\u2BFF]/, - /[\u2E00-\u2E7F]/, - /[\u3001-\u3003]/, - /[\u3008-\u3020]/, - /[\u3030]/, - ), - Le = m( - Ie, - /[\u0300-\u036F]/, - /[\u1DC0-\u1DFF]/, - /[\u20D0-\u20FF]/, - /[\uFE00-\uFE0F]/, - /[\uFE20-\uFE2F]/, - ), - Be = b(Ie, Le, "*"), - $e = m( - /[a-zA-Z_]/, - /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/, - /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, - /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/, - /[\u1E00-\u1FFF]/, - /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/, - /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, - /[\u2C00-\u2DFF\u2E80-\u2FFF]/, - /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, - /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/, - /[\uFE47-\uFEFE\uFF00-\uFFFD]/, - ), - ze = m($e, /\d/, /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/), - Fe = b($e, ze, "*"), - Ue = b(/[A-Z]/, ze, "*"), - je = [ - "attached", - "autoclosure", - b(/convention\(/, m("swift", "block", "c"), /\)/), - "discardableResult", - "dynamicCallable", - "dynamicMemberLookup", - "escaping", - "freestanding", - "frozen", - "GKInspectable", - "IBAction", - "IBDesignable", - "IBInspectable", - "IBOutlet", - "IBSegueAction", - "inlinable", - "main", - "nonobjc", - "NSApplicationMain", - "NSCopying", - "NSManaged", - b(/objc\(/, Fe, /\)/), - "objc", - "objcMembers", - "propertyWrapper", - "requires_stored_property_inits", - "resultBuilder", - "Sendable", - "testable", - "UIApplicationMain", - "unchecked", - "unknown", - "usableFromInline", - "warn_unqualified_access", - ], - Pe = [ - "iOS", - "iOSApplicationExtension", - "macOS", - "macOSApplicationExtension", - "macCatalyst", - "macCatalystApplicationExtension", - "watchOS", - "watchOSApplicationExtension", - "tvOS", - "tvOSApplicationExtension", - "swift", - ]; - var Ke = Object.freeze({ - __proto__: null, - grmr_bash: (e) => { - const n = e.regex, - t = {}, - a = { - begin: /\$\{/, - end: /\}/, - contains: ["self", { begin: /:-/, contains: [t] }], - }; - Object.assign(t, { - className: "variable", - variants: [ - { - begin: n.concat(/\$[\w\d#@][\w\d_]*/, "(?![\\w\\d])(?![$])"), - }, - a, - ], - }); - const i = { - className: "subst", - begin: /\$\(/, - end: /\)/, - contains: [e.BACKSLASH_ESCAPE], - }, - r = { - begin: /<<-?\s*(?=\w+)/, - starts: { - contains: [ - e.END_SAME_AS_BEGIN({ - begin: /(\w+)/, - end: /(\w+)/, - className: "string", - }), - ], - }, - }, - s = { - className: "string", - begin: /"/, - end: /"/, - contains: [e.BACKSLASH_ESCAPE, t, i], - }; - i.contains.push(s); - const o = { - begin: /\$?\(\(/, - end: /\)\)/, - contains: [ - { begin: /\d+#[0-9a-f]+/, className: "number" }, - e.NUMBER_MODE, - t, - ], - }, - l = e.SHEBANG({ - binary: "(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)", - relevance: 10, - }), - c = { - className: "function", - begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/, - returnBegin: !0, - contains: [e.inherit(e.TITLE_MODE, { begin: /\w[\w\d_]*/ })], - relevance: 0, - }; - return { - name: "Bash", - aliases: ["sh"], - keywords: { - $pattern: /\b[a-z][a-z0-9._-]+\b/, - keyword: [ - "if", - "then", - "else", - "elif", - "fi", - "for", - "while", - "until", - "in", - "do", - "done", - "case", - "esac", - "function", - "select", - ], - literal: ["true", "false"], - built_in: [ - "break", - "cd", - "continue", - "eval", - "exec", - "exit", - "export", - "getopts", - "hash", - "pwd", - "readonly", - "return", - "shift", - "test", - "times", - "trap", - "umask", - "unset", - "alias", - "bind", - "builtin", - "caller", - "command", - "declare", - "echo", - "enable", - "help", - "let", - "local", - "logout", - "mapfile", - "printf", - "read", - "readarray", - "source", - "type", - "typeset", - "ulimit", - "unalias", - "set", - "shopt", - "autoload", - "bg", - "bindkey", - "bye", - "cap", - "chdir", - "clone", - "comparguments", - "compcall", - "compctl", - "compdescribe", - "compfiles", - "compgroups", - "compquote", - "comptags", - "comptry", - "compvalues", - "dirs", - "disable", - "disown", - "echotc", - "echoti", - "emulate", - "fc", - "fg", - "float", - "functions", - "getcap", - "getln", - "history", - "integer", - "jobs", - "kill", - "limit", - "log", - "noglob", - "popd", - "print", - "pushd", - "pushln", - "rehash", - "sched", - "setcap", - "setopt", - "stat", - "suspend", - "ttyctl", - "unfunction", - "unhash", - "unlimit", - "unsetopt", - "vared", - "wait", - "whence", - "where", - "which", - "zcompile", - "zformat", - "zftp", - "zle", - "zmodload", - "zparseopts", - "zprof", - "zpty", - "zregexparse", - "zsocket", - "zstyle", - "ztcp", - "chcon", - "chgrp", - "chown", - "chmod", - "cp", - "dd", - "df", - "dir", - "dircolors", - "ln", - "ls", - "mkdir", - "mkfifo", - "mknod", - "mktemp", - "mv", - "realpath", - "rm", - "rmdir", - "shred", - "sync", - "touch", - "truncate", - "vdir", - "b2sum", - "base32", - "base64", - "cat", - "cksum", - "comm", - "csplit", - "cut", - "expand", - "fmt", - "fold", - "head", - "join", - "md5sum", - "nl", - "numfmt", - "od", - "paste", - "ptx", - "pr", - "sha1sum", - "sha224sum", - "sha256sum", - "sha384sum", - "sha512sum", - "shuf", - "sort", - "split", - "sum", - "tac", - "tail", - "tr", - "tsort", - "unexpand", - "uniq", - "wc", - "arch", - "basename", - "chroot", - "date", - "dirname", - "du", - "echo", - "env", - "expr", - "factor", - "groups", - "hostid", - "id", - "link", - "logname", - "nice", - "nohup", - "nproc", - "pathchk", - "pinky", - "printenv", - "printf", - "pwd", - "readlink", - "runcon", - "seq", - "sleep", - "stat", - "stdbuf", - "stty", - "tee", - "test", - "timeout", - "tty", - "uname", - "unlink", - "uptime", - "users", - "who", - "whoami", - "yes", - ], - }, - contains: [ - l, - e.SHEBANG(), - c, - o, - e.HASH_COMMENT_MODE, - r, - { match: /(\/[a-z._-]+)+/ }, - s, - { - match: /\\"/, - }, - { className: "string", begin: /'/, end: /'/ }, - { match: /\\'/ }, - t, - ], - }; - }, - grmr_c: (e) => { - const n = e.regex, - t = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), - a = "decltype\\(auto\\)", - i = "[a-zA-Z_]\\w*::", - r = - "(" + - a + - "|" + - n.optional(i) + - "[a-zA-Z_]\\w*" + - n.optional("<[^<>]+>") + - ")", - s = { - className: "type", - variants: [ - { begin: "\\b[a-z\\d_]*_t\\b" }, - { - match: /\batomic_[a-z]{3,6}\b/, - }, - ], - }, - o = { - className: "string", - variants: [ - { - begin: '(u8?|U|L)?"', - end: '"', - illegal: "\\n", - contains: [e.BACKSLASH_ESCAPE], - }, - { - begin: - "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", - end: "'", - illegal: ".", - }, - e.END_SAME_AS_BEGIN({ - begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, - end: /\)([^()\\ ]{0,16})"/, - }), - ], - }, - l = { - className: "number", - variants: [ - { begin: "\\b(0b[01']+)" }, - { - begin: - "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)", - }, - { - begin: - "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)", - }, - ], - relevance: 0, - }, - c = { - className: "meta", - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: { - keyword: - "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include", - }, - contains: [ - { begin: /\\\n/, relevance: 0 }, - e.inherit(o, { className: "string" }), - { - className: "string", - begin: /<.*?>/, - }, - t, - e.C_BLOCK_COMMENT_MODE, - ], - }, - d = { - className: "title", - begin: n.optional(i) + e.IDENT_RE, - relevance: 0, - }, - g = n.optional(i) + e.IDENT_RE + "\\s*\\(", - u = { - keyword: [ - "asm", - "auto", - "break", - "case", - "continue", - "default", - "do", - "else", - "enum", - "extern", - "for", - "fortran", - "goto", - "if", - "inline", - "register", - "restrict", - "return", - "sizeof", - "struct", - "switch", - "typedef", - "union", - "volatile", - "while", - "_Alignas", - "_Alignof", - "_Atomic", - "_Generic", - "_Noreturn", - "_Static_assert", - "_Thread_local", - "alignas", - "alignof", - "noreturn", - "static_assert", - "thread_local", - "_Pragma", - ], - type: [ - "float", - "double", - "signed", - "unsigned", - "int", - "short", - "long", - "char", - "void", - "_Bool", - "_Complex", - "_Imaginary", - "_Decimal32", - "_Decimal64", - "_Decimal128", - "const", - "static", - "complex", - "bool", - "imaginary", - ], - literal: "true false NULL", - built_in: - "std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr", - }, - b = [c, s, t, e.C_BLOCK_COMMENT_MODE, l, o], - m = { - variants: [ - { begin: /=/, end: /;/ }, - { - begin: /\(/, - end: /\)/, - }, - { beginKeywords: "new throw return else", end: /;/ }, - ], - keywords: u, - contains: b.concat([ - { - begin: /\(/, - end: /\)/, - keywords: u, - contains: b.concat(["self"]), - relevance: 0, - }, - ]), - relevance: 0, - }, - p = { - begin: "(" + r + "[\\*&\\s]+)+" + g, - returnBegin: !0, - end: /[{;=]/, - excludeEnd: !0, - keywords: u, - illegal: /[^\w\s\*&:<>.]/, - contains: [ - { begin: a, keywords: u, relevance: 0 }, - { - begin: g, - returnBegin: !0, - contains: [e.inherit(d, { className: "title.function" })], - relevance: 0, - }, - { relevance: 0, match: /,/ }, - { - className: "params", - begin: /\(/, - end: /\)/, - keywords: u, - relevance: 0, - contains: [ - t, - e.C_BLOCK_COMMENT_MODE, - o, - l, - s, - { - begin: /\(/, - end: /\)/, - keywords: u, - relevance: 0, - contains: ["self", t, e.C_BLOCK_COMMENT_MODE, o, l, s], - }, - ], - }, - s, - t, - e.C_BLOCK_COMMENT_MODE, - c, - ], - }; - return { - name: "C", - aliases: ["h"], - keywords: u, - disableAutodetect: !0, - illegal: "=]/, - contains: [ - { - beginKeywords: "final class struct", - }, - e.TITLE_MODE, - ], - }, - ]), - exports: { preprocessor: c, strings: o, keywords: u }, - }; - }, - grmr_cpp: (e) => { - const n = e.regex, - t = e.COMMENT("//", "$", { - contains: [{ begin: /\\\n/ }], - }), - a = "decltype\\(auto\\)", - i = "[a-zA-Z_]\\w*::", - r = - "(?!struct)(" + - a + - "|" + - n.optional(i) + - "[a-zA-Z_]\\w*" + - n.optional("<[^<>]+>") + - ")", - s = { - className: "type", - begin: "\\b[a-z\\d_]*_t\\b", - }, - o = { - className: "string", - variants: [ - { - begin: '(u8?|U|L)?"', - end: '"', - illegal: "\\n", - contains: [e.BACKSLASH_ESCAPE], - }, - { - begin: - "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", - end: "'", - illegal: ".", - }, - e.END_SAME_AS_BEGIN({ - begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, - end: /\)([^()\\ ]{0,16})"/, - }), - ], - }, - l = { - className: "number", - variants: [ - { begin: "\\b(0b[01']+)" }, - { - begin: - "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)", - }, - { - begin: - "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)", - }, - ], - relevance: 0, - }, - c = { - className: "meta", - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: { - keyword: - "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include", - }, - contains: [ - { begin: /\\\n/, relevance: 0 }, - e.inherit(o, { className: "string" }), - { - className: "string", - begin: /<.*?>/, - }, - t, - e.C_BLOCK_COMMENT_MODE, - ], - }, - d = { - className: "title", - begin: n.optional(i) + e.IDENT_RE, - relevance: 0, - }, - g = n.optional(i) + e.IDENT_RE + "\\s*\\(", - u = { - type: [ - "bool", - "char", - "char16_t", - "char32_t", - "char8_t", - "double", - "float", - "int", - "long", - "short", - "void", - "wchar_t", - "unsigned", - "signed", - "const", - "static", - ], - keyword: [ - "alignas", - "alignof", - "and", - "and_eq", - "asm", - "atomic_cancel", - "atomic_commit", - "atomic_noexcept", - "auto", - "bitand", - "bitor", - "break", - "case", - "catch", - "class", - "co_await", - "co_return", - "co_yield", - "compl", - "concept", - "const_cast|10", - "consteval", - "constexpr", - "constinit", - "continue", - "decltype", - "default", - "delete", - "do", - "dynamic_cast|10", - "else", - "enum", - "explicit", - "export", - "extern", - "false", - "final", - "for", - "friend", - "goto", - "if", - "import", - "inline", - "module", - "mutable", - "namespace", - "new", - "noexcept", - "not", - "not_eq", - "nullptr", - "operator", - "or", - "or_eq", - "override", - "private", - "protected", - "public", - "reflexpr", - "register", - "reinterpret_cast|10", - "requires", - "return", - "sizeof", - "static_assert", - "static_cast|10", - "struct", - "switch", - "synchronized", - "template", - "this", - "thread_local", - "throw", - "transaction_safe", - "transaction_safe_dynamic", - "true", - "try", - "typedef", - "typeid", - "typename", - "union", - "using", - "virtual", - "volatile", - "while", - "xor", - "xor_eq", - ], - literal: ["NULL", "false", "nullopt", "nullptr", "true"], - built_in: ["_Pragma"], - _type_hints: [ - "any", - "auto_ptr", - "barrier", - "binary_semaphore", - "bitset", - "complex", - "condition_variable", - "condition_variable_any", - "counting_semaphore", - "deque", - "false_type", - "future", - "imaginary", - "initializer_list", - "istringstream", - "jthread", - "latch", - "lock_guard", - "multimap", - "multiset", - "mutex", - "optional", - "ostringstream", - "packaged_task", - "pair", - "promise", - "priority_queue", - "queue", - "recursive_mutex", - "recursive_timed_mutex", - "scoped_lock", - "set", - "shared_future", - "shared_lock", - "shared_mutex", - "shared_timed_mutex", - "shared_ptr", - "stack", - "string_view", - "stringstream", - "timed_mutex", - "thread", - "true_type", - "tuple", - "unique_lock", - "unique_ptr", - "unordered_map", - "unordered_multimap", - "unordered_multiset", - "unordered_set", - "variant", - "vector", - "weak_ptr", - "wstring", - "wstring_view", - ], - }, - b = { - className: "function.dispatch", - relevance: 0, - keywords: { - _hint: [ - "abort", - "abs", - "acos", - "apply", - "as_const", - "asin", - "atan", - "atan2", - "calloc", - "ceil", - "cerr", - "cin", - "clog", - "cos", - "cosh", - "cout", - "declval", - "endl", - "exchange", - "exit", - "exp", - "fabs", - "floor", - "fmod", - "forward", - "fprintf", - "fputs", - "free", - "frexp", - "fscanf", - "future", - "invoke", - "isalnum", - "isalpha", - "iscntrl", - "isdigit", - "isgraph", - "islower", - "isprint", - "ispunct", - "isspace", - "isupper", - "isxdigit", - "labs", - "launder", - "ldexp", - "log", - "log10", - "make_pair", - "make_shared", - "make_shared_for_overwrite", - "make_tuple", - "make_unique", - "malloc", - "memchr", - "memcmp", - "memcpy", - "memset", - "modf", - "move", - "pow", - "printf", - "putchar", - "puts", - "realloc", - "scanf", - "sin", - "sinh", - "snprintf", - "sprintf", - "sqrt", - "sscanf", - "std", - "stderr", - "stdin", - "stdout", - "strcat", - "strchr", - "strcmp", - "strcpy", - "strcspn", - "strlen", - "strncat", - "strncmp", - "strncpy", - "strpbrk", - "strrchr", - "strspn", - "strstr", - "swap", - "tan", - "tanh", - "terminate", - "to_underlying", - "tolower", - "toupper", - "vfprintf", - "visit", - "vprintf", - "vsprintf", - ], - }, - begin: n.concat( - /\b/, - /(?!decltype)/, - /(?!if)/, - /(?!for)/, - /(?!switch)/, - /(?!while)/, - e.IDENT_RE, - n.lookahead(/(<[^<>]+>|)\s*\(/), - ), - }, - m = [b, c, s, t, e.C_BLOCK_COMMENT_MODE, l, o], - p = { - variants: [ - { begin: /=/, end: /;/ }, - { - begin: /\(/, - end: /\)/, - }, - { beginKeywords: "new throw return else", end: /;/ }, - ], - keywords: u, - contains: m.concat([ - { - begin: /\(/, - end: /\)/, - keywords: u, - contains: m.concat(["self"]), - relevance: 0, - }, - ]), - relevance: 0, - }, - _ = { - className: "function", - begin: "(" + r + "[\\*&\\s]+)+" + g, - returnBegin: !0, - end: /[{;=]/, - excludeEnd: !0, - keywords: u, - illegal: /[^\w\s\*&:<>.]/, - contains: [ - { begin: a, keywords: u, relevance: 0 }, - { - begin: g, - returnBegin: !0, - contains: [d], - relevance: 0, - }, - { begin: /::/, relevance: 0 }, - { - begin: /:/, - endsWithParent: !0, - contains: [o, l], - }, - { relevance: 0, match: /,/ }, - { - className: "params", - begin: /\(/, - end: /\)/, - keywords: u, - relevance: 0, - contains: [ - t, - e.C_BLOCK_COMMENT_MODE, - o, - l, - s, - { - begin: /\(/, - end: /\)/, - keywords: u, - relevance: 0, - contains: ["self", t, e.C_BLOCK_COMMENT_MODE, o, l, s], - }, - ], - }, - s, - t, - e.C_BLOCK_COMMENT_MODE, - c, - ], - }; - return { - name: "C++", - aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"], - keywords: u, - illegal: "", - keywords: u, - contains: ["self", s], - }, - { begin: e.IDENT_RE + "::", keywords: u }, - { - match: [ - /\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, - /\s+/, - /\w+/, - ], - className: { 1: "keyword", 3: "title.class" }, - }, - ]), - }; - }, - grmr_csharp: (e) => { - const n = { - keyword: [ - "abstract", - "as", - "base", - "break", - "case", - "catch", - "class", - "const", - "continue", - "do", - "else", - "event", - "explicit", - "extern", - "finally", - "fixed", - "for", - "foreach", - "goto", - "if", - "implicit", - "in", - "interface", - "internal", - "is", - "lock", - "namespace", - "new", - "operator", - "out", - "override", - "params", - "private", - "protected", - "public", - "readonly", - "record", - "ref", - "return", - "scoped", - "sealed", - "sizeof", - "stackalloc", - "static", - "struct", - "switch", - "this", - "throw", - "try", - "typeof", - "unchecked", - "unsafe", - "using", - "virtual", - "void", - "volatile", - "while", - ].concat([ - "add", - "alias", - "and", - "ascending", - "async", - "await", - "by", - "descending", - "equals", - "from", - "get", - "global", - "group", - "init", - "into", - "join", - "let", - "nameof", - "not", - "notnull", - "on", - "or", - "orderby", - "partial", - "remove", - "select", - "set", - "unmanaged", - "value|0", - "var", - "when", - "where", - "with", - "yield", - ]), - built_in: [ - "bool", - "byte", - "char", - "decimal", - "delegate", - "double", - "dynamic", - "enum", - "float", - "int", - "long", - "nint", - "nuint", - "object", - "sbyte", - "short", - "string", - "ulong", - "uint", - "ushort", - ], - literal: ["default", "false", "null", "true"], - }, - t = e.inherit(e.TITLE_MODE, { - begin: "[a-zA-Z](\\.?\\w)*", - }), - a = { - className: "number", - variants: [ - { - begin: "\\b(0b[01']+)", - }, - { - begin: - "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)", - }, - { - begin: - "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)", - }, - ], - relevance: 0, - }, - i = { - className: "string", - begin: '@"', - end: '"', - contains: [{ begin: '""' }], - }, - r = e.inherit(i, { illegal: /\n/ }), - s = { className: "subst", begin: /\{/, end: /\}/, keywords: n }, - o = e.inherit(s, { illegal: /\n/ }), - l = { - className: "string", - begin: /\$"/, - end: '"', - illegal: /\n/, - contains: [ - { begin: /\{\{/ }, - { begin: /\}\}/ }, - e.BACKSLASH_ESCAPE, - o, - ], - }, - c = { - className: "string", - begin: /\$@"/, - end: '"', - contains: [ - { - begin: /\{\{/, - }, - { begin: /\}\}/ }, - { begin: '""' }, - s, - ], - }, - d = e.inherit(c, { - illegal: /\n/, - contains: [{ begin: /\{\{/ }, { begin: /\}\}/ }, { begin: '""' }, o], - }); - ((s.contains = [ - c, - l, - i, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - a, - e.C_BLOCK_COMMENT_MODE, - ]), - (o.contains = [ - d, - l, - r, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - a, - e.inherit(e.C_BLOCK_COMMENT_MODE, { - illegal: /\n/, - }), - ])); - const g = { - variants: [c, l, i, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE], - }, - u = { - begin: "<", - end: ">", - contains: [{ beginKeywords: "in out" }, t], - }, - b = - e.IDENT_RE + - "(<" + - e.IDENT_RE + - "(\\s*,\\s*" + - e.IDENT_RE + - ")*>)?(\\[\\])?", - m = { - begin: "@" + e.IDENT_RE, - relevance: 0, - }; - return { - name: "C#", - aliases: ["cs", "c#"], - keywords: n, - illegal: /::/, - contains: [ - e.COMMENT("///", "$", { - returnBegin: !0, - contains: [ - { - className: "doctag", - variants: [ - { begin: "///", relevance: 0 }, - { - begin: "\x3c!--|--\x3e", - }, - { begin: "" }, - ], - }, - ], - }), - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - { - className: "meta", - begin: "#", - end: "$", - keywords: { - keyword: - "if else elif endif define undef warning error line region endregion pragma checksum", - }, - }, - g, - a, - { - beginKeywords: "class interface", - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:,]/, - contains: [ - { beginKeywords: "where class" }, - t, - u, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - ], - }, - { - beginKeywords: "namespace", - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:]/, - contains: [t, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE], - }, - { - beginKeywords: "record", - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:]/, - contains: [t, u, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE], - }, - { - className: "meta", - begin: "^\\s*\\[(?=[\\w])", - excludeBegin: !0, - end: "\\]", - excludeEnd: !0, - contains: [ - { - className: "string", - begin: /"/, - end: /"/, - }, - ], - }, - { - beginKeywords: "new return throw await else", - relevance: 0, - }, - { - className: "function", - begin: "(" + b + "\\s+)+" + e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(", - returnBegin: !0, - end: /\s*[{;=]/, - excludeEnd: !0, - keywords: n, - contains: [ - { - beginKeywords: - "public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", - relevance: 0, - }, - { - begin: e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(", - returnBegin: !0, - contains: [e.TITLE_MODE, u], - relevance: 0, - }, - { match: /\(\)/ }, - { - className: "params", - begin: /\(/, - end: /\)/, - excludeBegin: !0, - excludeEnd: !0, - keywords: n, - relevance: 0, - contains: [g, a, e.C_BLOCK_COMMENT_MODE], - }, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - ], - }, - m, - ], - }; - }, - grmr_css: (e) => { - const n = e.regex, - t = ie(e), - a = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]; - return { - name: "CSS", - case_insensitive: !0, - illegal: /[=|'\$]/, - keywords: { - keyframePosition: "from to", - }, - classNameAliases: { keyframePosition: "selector-tag" }, - contains: [ - t.BLOCK_COMMENT, - { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ }, - t.CSS_NUMBER_MODE, - { className: "selector-id", begin: /#[A-Za-z0-9_-]+/, relevance: 0 }, - { - className: "selector-class", - begin: "\\.[a-zA-Z-][a-zA-Z0-9_-]*", - relevance: 0, - }, - t.ATTRIBUTE_SELECTOR_MODE, - { - className: "selector-pseudo", - variants: [ - { - begin: ":(" + oe.join("|") + ")", - }, - { begin: ":(:)?(" + le.join("|") + ")" }, - ], - }, - t.CSS_VARIABLE, - { className: "attribute", begin: "\\b(" + ce.join("|") + ")\\b" }, - { - begin: /:/, - end: /[;}{]/, - contains: [ - t.BLOCK_COMMENT, - t.HEXCOLOR, - t.IMPORTANT, - t.CSS_NUMBER_MODE, - ...a, - { - begin: /(url|data-uri)\(/, - end: /\)/, - relevance: 0, - keywords: { built_in: "url data-uri" }, - contains: [ - ...a, - { - className: "string", - begin: /[^)]/, - endsWithParent: !0, - excludeEnd: !0, - }, - ], - }, - t.FUNCTION_DISPATCH, - ], - }, - { - begin: n.lookahead(/@/), - end: "[{;]", - relevance: 0, - illegal: /:/, - contains: [ - { className: "keyword", begin: /@-?\w[\w]*(-\w+)*/ }, - { - begin: /\s/, - endsWithParent: !0, - excludeEnd: !0, - relevance: 0, - keywords: { - $pattern: /[a-z-]+/, - keyword: "and or not only", - attribute: se.join(" "), - }, - contains: [ - { - begin: /[a-z-]+(?=:)/, - className: "attribute", - }, - ...a, - t.CSS_NUMBER_MODE, - ], - }, - ], - }, - { - className: "selector-tag", - begin: "\\b(" + re.join("|") + ")\\b", - }, - ], - }; - }, - grmr_diff: (e) => { - const n = e.regex; - return { - name: "Diff", - aliases: ["patch"], - contains: [ - { - className: "meta", - relevance: 10, - match: n.either( - /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, - /^\*\*\* +\d+,\d+ +\*\*\*\*$/, - /^--- +\d+,\d+ +----$/, - ), - }, - { - className: "comment", - variants: [ - { - begin: n.either( - /Index: /, - /^index/, - /={3,}/, - /^-{3}/, - /^\*{3} /, - /^\+{3}/, - /^diff --git/, - ), - end: /$/, - }, - { match: /^\*{15}$/ }, - ], - }, - { className: "addition", begin: /^\+/, end: /$/ }, - { - className: "deletion", - begin: /^-/, - end: /$/, - }, - { className: "addition", begin: /^!/, end: /$/ }, - ], - }; - }, - grmr_go: (e) => { - const n = { - keyword: [ - "break", - "case", - "chan", - "const", - "continue", - "default", - "defer", - "else", - "fallthrough", - "for", - "func", - "go", - "goto", - "if", - "import", - "interface", - "map", - "package", - "range", - "return", - "select", - "struct", - "switch", - "type", - "var", - ], - type: [ - "bool", - "byte", - "complex64", - "complex128", - "error", - "float32", - "float64", - "int8", - "int16", - "int32", - "int64", - "string", - "uint8", - "uint16", - "uint32", - "uint64", - "int", - "uint", - "uintptr", - "rune", - ], - literal: ["true", "false", "iota", "nil"], - built_in: [ - "append", - "cap", - "close", - "complex", - "copy", - "imag", - "len", - "make", - "new", - "panic", - "print", - "println", - "real", - "recover", - "delete", - ], - }; - return { - name: "Go", - aliases: ["golang"], - keywords: n, - illegal: " { - const n = e.regex; - return { - name: "GraphQL", - aliases: ["gql"], - case_insensitive: !0, - disableAutodetect: !1, - keywords: { - keyword: [ - "query", - "mutation", - "subscription", - "type", - "input", - "schema", - "directive", - "interface", - "union", - "scalar", - "fragment", - "enum", - "on", - ], - literal: ["true", "false", "null"], - }, - contains: [ - e.HASH_COMMENT_MODE, - e.QUOTE_STRING_MODE, - e.NUMBER_MODE, - { - scope: "punctuation", - match: /[.]{3}/, - relevance: 0, - }, - { - scope: "punctuation", - begin: /[\!\(\)\:\=\[\]\{\|\}]{1}/, - relevance: 0, - }, - { - scope: "variable", - begin: /\$/, - end: /\W/, - excludeEnd: !0, - relevance: 0, - }, - { scope: "meta", match: /@\w+/, excludeEnd: !0 }, - { - scope: "symbol", - begin: n.concat(/[_A-Za-z][_0-9A-Za-z]*/, n.lookahead(/\s*:/)), - relevance: 0, - }, - ], - illegal: [/[;<']/, /BEGIN/], - }; - }, - grmr_ini: (e) => { - const n = e.regex, - t = { - className: "number", - relevance: 0, - variants: [ - { begin: /([+-]+)?[\d]+_[\d_]+/ }, - { - begin: e.NUMBER_RE, - }, - ], - }, - a = e.COMMENT(); - a.variants = [ - { begin: /;/, end: /$/ }, - { begin: /#/, end: /$/ }, - ]; - const i = { - className: "variable", - variants: [ - { begin: /\$[\w\d"][\w\d_]*/ }, - { - begin: /\$\{(.*?)\}/, - }, - ], - }, - r = { className: "literal", begin: /\bon|off|true|false|yes|no\b/ }, - s = { - className: "string", - contains: [e.BACKSLASH_ESCAPE], - variants: [ - { begin: "'''", end: "'''", relevance: 10 }, - { - begin: '"""', - end: '"""', - relevance: 10, - }, - { begin: '"', end: '"' }, - { begin: "'", end: "'" }, - ], - }, - o = { - begin: /\[/, - end: /\]/, - contains: [a, r, i, s, t, "self"], - relevance: 0, - }, - l = n.either(/[A-Za-z0-9_-]+/, /"(\\"|[^"])*"/, /'[^']*'/); - return { - name: "TOML, also INI", - aliases: ["toml"], - case_insensitive: !0, - illegal: /\S/, - contains: [ - a, - { className: "section", begin: /\[+/, end: /\]+/ }, - { - begin: n.concat( - l, - "(\\s*\\.\\s*", - l, - ")*", - n.lookahead(/\s*=\s*[^#\s]/), - ), - className: "attr", - starts: { end: /$/, contains: [a, o, r, i, s, t] }, - }, - ], - }; - }, - grmr_java: (e) => { - const n = e.regex, - t = "[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", - a = t + pe("(?:<" + t + "~~~(?:\\s*,\\s*" + t + "~~~)*>)?", /~~~/g, 2), - i = { - keyword: [ - "synchronized", - "abstract", - "private", - "var", - "static", - "if", - "const ", - "for", - "while", - "strictfp", - "finally", - "protected", - "import", - "native", - "final", - "void", - "enum", - "else", - "break", - "transient", - "catch", - "instanceof", - "volatile", - "case", - "assert", - "package", - "default", - "public", - "try", - "switch", - "continue", - "throws", - "protected", - "public", - "private", - "module", - "requires", - "exports", - "do", - "sealed", - "yield", - "permits", - ], - literal: ["false", "true", "null"], - type: [ - "char", - "boolean", - "long", - "float", - "int", - "byte", - "short", - "double", - ], - built_in: ["super", "this"], - }, - r = { - className: "meta", - begin: "@" + t, - contains: [ - { - begin: /\(/, - end: /\)/, - contains: ["self"], - }, - ], - }, - s = { - className: "params", - begin: /\(/, - end: /\)/, - keywords: i, - relevance: 0, - contains: [e.C_BLOCK_COMMENT_MODE], - endsParent: !0, - }; - return { - name: "Java", - aliases: ["jsp"], - keywords: i, - illegal: /<\/|#/, - contains: [ - e.COMMENT("/\\*\\*", "\\*/", { - relevance: 0, - contains: [ - { begin: /\w+@/, relevance: 0 }, - { className: "doctag", begin: "@[A-Za-z]+" }, - ], - }), - { - begin: /import java\.[a-z]+\./, - keywords: "import", - relevance: 2, - }, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - { - begin: /"""/, - end: /"""/, - className: "string", - contains: [e.BACKSLASH_ESCAPE], - }, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - { - match: [ - /\b(?:class|interface|enum|extends|implements|new)/, - /\s+/, - t, - ], - className: { - 1: "keyword", - 3: "title.class", - }, - }, - { match: /non-sealed/, scope: "keyword" }, - { - begin: [n.concat(/(?!else)/, t), /\s+/, t, /\s+/, /=(?!=)/], - className: { 1: "type", 3: "variable", 5: "operator" }, - }, - { - begin: [/record/, /\s+/, t], - className: { 1: "keyword", 3: "title.class" }, - contains: [s, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE], - }, - { - beginKeywords: "new throw return else", - relevance: 0, - }, - { - begin: ["(?:" + a + "\\s+)", e.UNDERSCORE_IDENT_RE, /\s*(?=\()/], - className: { - 2: "title.function", - }, - keywords: i, - contains: [ - { - className: "params", - begin: /\(/, - end: /\)/, - keywords: i, - relevance: 0, - contains: [ - r, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - me, - e.C_BLOCK_COMMENT_MODE, - ], - }, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - ], - }, - me, - r, - ], - }; - }, - grmr_javascript: Oe, - grmr_json: (e) => { - const n = ["true", "false", "null"], - t = { scope: "literal", beginKeywords: n.join(" ") }; - return { - name: "JSON", - keywords: { literal: n }, - contains: [ - { - className: "attr", - begin: /"(\\.|[^\\"\r\n])*"(?=\s*:)/, - relevance: 1.01, - }, - { - match: /[{}[\],:]/, - className: "punctuation", - relevance: 0, - }, - e.QUOTE_STRING_MODE, - t, - e.C_NUMBER_MODE, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - ], - illegal: "\\S", - }; - }, - grmr_kotlin: (e) => { - const n = { - keyword: - "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", - built_in: - "Byte Short Char Int Long Boolean Float Double Void Unit Nothing", - literal: "true false null", - }, - t = { className: "symbol", begin: e.UNDERSCORE_IDENT_RE + "@" }, - a = { - className: "subst", - begin: /\$\{/, - end: /\}/, - contains: [e.C_NUMBER_MODE], - }, - i = { - className: "variable", - begin: "\\$" + e.UNDERSCORE_IDENT_RE, - }, - r = { - className: "string", - variants: [ - { begin: '"""', end: '"""(?=[^"])', contains: [i, a] }, - { - begin: "'", - end: "'", - illegal: /\n/, - contains: [e.BACKSLASH_ESCAPE], - }, - { - begin: '"', - end: '"', - illegal: /\n/, - contains: [e.BACKSLASH_ESCAPE, i, a], - }, - ], - }; - a.contains.push(r); - const s = { - className: "meta", - begin: - "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*" + - e.UNDERSCORE_IDENT_RE + - ")?", - }, - o = { - className: "meta", - begin: "@" + e.UNDERSCORE_IDENT_RE, - contains: [ - { - begin: /\(/, - end: /\)/, - contains: [e.inherit(r, { className: "string" }), "self"], - }, - ], - }, - l = me, - c = e.COMMENT("/\\*", "\\*/", { contains: [e.C_BLOCK_COMMENT_MODE] }), - d = { - variants: [ - { className: "type", begin: e.UNDERSCORE_IDENT_RE }, - { begin: /\(/, end: /\)/, contains: [] }, - ], - }, - g = d; - return ( - (g.variants[1].contains = [d]), - (d.variants[1].contains = [g]), - { - name: "Kotlin", - aliases: ["kt", "kts"], - keywords: n, - contains: [ - e.COMMENT("/\\*\\*", "\\*/", { - relevance: 0, - contains: [{ className: "doctag", begin: "@[A-Za-z]+" }], - }), - e.C_LINE_COMMENT_MODE, - c, - { - className: "keyword", - begin: /\b(break|continue|return|this)\b/, - starts: { contains: [{ className: "symbol", begin: /@\w+/ }] }, - }, - t, - s, - o, - { - className: "function", - beginKeywords: "fun", - end: "[(]|$", - returnBegin: !0, - excludeEnd: !0, - keywords: n, - relevance: 5, - contains: [ - { - begin: e.UNDERSCORE_IDENT_RE + "\\s*\\(", - returnBegin: !0, - relevance: 0, - contains: [e.UNDERSCORE_TITLE_MODE], - }, - { - className: "type", - begin: //, - keywords: "reified", - relevance: 0, - }, - { - className: "params", - begin: /\(/, - end: /\)/, - endsParent: !0, - keywords: n, - relevance: 0, - contains: [ - { - begin: /:/, - end: /[=,\/]/, - endsWithParent: !0, - contains: [d, e.C_LINE_COMMENT_MODE, c], - relevance: 0, - }, - e.C_LINE_COMMENT_MODE, - c, - s, - o, - r, - e.C_NUMBER_MODE, - ], - }, - c, - ], - }, - { - begin: [/class|interface|trait/, /\s+/, e.UNDERSCORE_IDENT_RE], - beginScope: { - 3: "title.class", - }, - keywords: "class interface trait", - end: /[:\{(]|$/, - excludeEnd: !0, - illegal: "extends implements", - contains: [ - { - beginKeywords: - "public protected internal private constructor", - }, - e.UNDERSCORE_TITLE_MODE, - { - className: "type", - begin: //, - excludeBegin: !0, - excludeEnd: !0, - relevance: 0, - }, - { - className: "type", - begin: /[,:]\s*/, - end: /[<\(,){\s]|$/, - excludeBegin: !0, - returnEnd: !0, - }, - s, - o, - ], - }, - r, - { - className: "meta", - begin: "^#!/usr/bin/env", - end: "$", - illegal: "\n", - }, - l, - ], - } - ); - }, - grmr_less: (e) => { - const n = ie(e), - t = de, - a = "[\\w-]+", - i = "(" + a + "|@\\{" + a + "\\})", - r = [], - s = [], - o = (e) => ({ - className: "string", - begin: "~?" + e + ".*?" + e, - }), - l = (e, n, t) => ({ className: e, begin: n, relevance: t }), - c = { - $pattern: /[a-z-]+/, - keyword: "and or not only", - attribute: se.join(" "), - }, - d = { - begin: "\\(", - end: "\\)", - contains: s, - keywords: c, - relevance: 0, - }; - s.push( - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - o("'"), - o('"'), - n.CSS_NUMBER_MODE, - { - begin: "(url|data-uri)\\(", - starts: { className: "string", end: "[\\)\\n]", excludeEnd: !0 }, - }, - n.HEXCOLOR, - d, - l("variable", "@@?" + a, 10), - l("variable", "@\\{" + a + "\\}"), - l("built_in", "~?`[^`]*?`"), - { - className: "attribute", - begin: a + "\\s*:", - end: ":", - returnBegin: !0, - excludeEnd: !0, - }, - n.IMPORTANT, - { beginKeywords: "and not" }, - n.FUNCTION_DISPATCH, - ); - const g = s.concat({ - begin: /\{/, - end: /\}/, - contains: r, - }), - u = { - beginKeywords: "when", - endsWithParent: !0, - contains: [{ beginKeywords: "and not" }].concat(s), - }, - b = { - begin: i + "\\s*:", - returnBegin: !0, - end: /[;}]/, - relevance: 0, - contains: [ - { begin: /-(webkit|moz|ms|o)-/ }, - n.CSS_VARIABLE, - { - className: "attribute", - begin: "\\b(" + ce.join("|") + ")\\b", - end: /(?=:)/, - starts: { - endsWithParent: !0, - illegal: "[<=$]", - relevance: 0, - contains: s, - }, - }, - ], - }, - m = { - className: "keyword", - begin: - "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", - starts: { - end: "[;{}]", - keywords: c, - returnEnd: !0, - contains: s, - relevance: 0, - }, - }, - p = { - className: "variable", - variants: [ - { begin: "@" + a + "\\s*:", relevance: 15 }, - { begin: "@" + a }, - ], - starts: { end: "[;}]", returnEnd: !0, contains: g }, - }, - _ = { - variants: [ - { - begin: "[\\.#:&\\[>]", - end: "[;{}]", - }, - { begin: i, end: /\{/ }, - ], - returnBegin: !0, - returnEnd: !0, - illegal: "[<='$\"]", - relevance: 0, - contains: [ - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - u, - l("keyword", "all\\b"), - l("variable", "@\\{" + a + "\\}"), - { - begin: "\\b(" + re.join("|") + ")\\b", - className: "selector-tag", - }, - n.CSS_NUMBER_MODE, - l("selector-tag", i, 0), - l("selector-id", "#" + i), - l("selector-class", "\\." + i, 0), - l("selector-tag", "&", 0), - n.ATTRIBUTE_SELECTOR_MODE, - { - className: "selector-pseudo", - begin: ":(" + oe.join("|") + ")", - }, - { - className: "selector-pseudo", - begin: ":(:)?(" + le.join("|") + ")", - }, - { begin: /\(/, end: /\)/, relevance: 0, contains: g }, - { begin: "!important" }, - n.FUNCTION_DISPATCH, - ], - }, - h = { - begin: a + ":(:)?" + `(${t.join("|")})`, - returnBegin: !0, - contains: [_], - }; - return ( - r.push( - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - m, - p, - h, - b, - _, - u, - n.FUNCTION_DISPATCH, - ), - { - name: "Less", - case_insensitive: !0, - illegal: "[=>'/<($\"]", - contains: r, - } - ); - }, - grmr_lua: (e) => { - const n = "\\[=*\\[", - t = "\\]=*\\]", - a = { begin: n, end: t, contains: ["self"] }, - i = [ - e.COMMENT("--(?!" + n + ")", "$"), - e.COMMENT("--" + n, t, { contains: [a], relevance: 10 }), - ]; - return { - name: "Lua", - keywords: { - $pattern: e.UNDERSCORE_IDENT_RE, - literal: "true false nil", - keyword: - "and break do else elseif end for goto if in local not or repeat return then until while", - built_in: - "_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove", - }, - contains: i.concat([ - { - className: "function", - beginKeywords: "function", - end: "\\)", - contains: [ - e.inherit(e.TITLE_MODE, { - begin: "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*", - }), - { - className: "params", - begin: "\\(", - endsWithParent: !0, - contains: i, - }, - ].concat(i), - }, - e.C_NUMBER_MODE, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - { - className: "string", - begin: n, - end: t, - contains: [a], - relevance: 5, - }, - ]), - }; - }, - grmr_makefile: (e) => { - const n = { - className: "variable", - variants: [ - { - begin: "\\$\\(" + e.UNDERSCORE_IDENT_RE + "\\)", - contains: [e.BACKSLASH_ESCAPE], - }, - { begin: /\$[@% { - const n = { - begin: /<\/?[A-Za-z_]/, - end: ">", - subLanguage: "xml", - relevance: 0, - }, - t = { - variants: [ - { begin: /\[.+?\]\[.*?\]/, relevance: 0 }, - { - begin: - /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, - relevance: 2, - }, - { - begin: e.regex.concat( - /\[.+?\]\(/, - /[A-Za-z][A-Za-z0-9+.-]*/, - /:\/\/.*?\)/, - ), - relevance: 2, - }, - { begin: /\[.+?\]\([./?&#].*?\)/, relevance: 1 }, - { - begin: /\[.*?\]\(.*?\)/, - relevance: 0, - }, - ], - returnBegin: !0, - contains: [ - { match: /\[(?=\])/ }, - { - className: "string", - relevance: 0, - begin: "\\[", - end: "\\]", - excludeBegin: !0, - returnEnd: !0, - }, - { - className: "link", - relevance: 0, - begin: "\\]\\(", - end: "\\)", - excludeBegin: !0, - excludeEnd: !0, - }, - { - className: "symbol", - relevance: 0, - begin: "\\]\\[", - end: "\\]", - excludeBegin: !0, - excludeEnd: !0, - }, - ], - }, - a = { - className: "strong", - contains: [], - variants: [ - { begin: /_{2}(?!\s)/, end: /_{2}/ }, - { begin: /\*{2}(?!\s)/, end: /\*{2}/ }, - ], - }, - i = { - className: "emphasis", - contains: [], - variants: [ - { begin: /\*(?![*\s])/, end: /\*/ }, - { - begin: /_(?![_\s])/, - end: /_/, - relevance: 0, - }, - ], - }, - r = e.inherit(a, { contains: [] }), - s = e.inherit(i, { contains: [] }); - (a.contains.push(s), i.contains.push(r)); - let o = [n, t]; - return ( - [a, i, r, s].forEach((e) => { - e.contains = e.contains.concat(o); - }), - (o = o.concat(a, i)), - { - name: "Markdown", - aliases: ["md", "mkdown", "mkd"], - contains: [ - { - className: "section", - variants: [ - { begin: "^#{1,6}", end: "$", contains: o }, - { - begin: "(?=^.+?\\n[=-]{2,}$)", - contains: [ - { begin: "^[=-]*$" }, - { begin: "^", end: "\\n", contains: o }, - ], - }, - ], - }, - n, - { - className: "bullet", - begin: "^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", - end: "\\s+", - excludeEnd: !0, - }, - a, - i, - { className: "quote", begin: "^>\\s+", contains: o, end: "$" }, - { - className: "code", - variants: [ - { begin: "(`{3,})[^`](.|\\n)*?\\1`*[ ]*" }, - { - begin: "(~{3,})[^~](.|\\n)*?\\1~*[ ]*", - }, - { begin: "```", end: "```+[ ]*$" }, - { - begin: "~~~", - end: "~~~+[ ]*$", - }, - { begin: "`.+?`" }, - { - begin: "(?=^( {4}|\\t))", - contains: [{ begin: "^( {4}|\\t)", end: "(\\n)$" }], - relevance: 0, - }, - ], - }, - { - begin: "^[-\\*]{3,}", - end: "$", - }, - t, - { - begin: /^\[[^\n]+\]:/, - returnBegin: !0, - contains: [ - { - className: "symbol", - begin: /\[/, - end: /\]/, - excludeBegin: !0, - excludeEnd: !0, - }, - { - className: "link", - begin: /:\s*/, - end: /$/, - excludeBegin: !0, - }, - ], - }, - ], - } - ); - }, - grmr_objectivec: (e) => { - const n = /[a-zA-Z@][a-zA-Z0-9_]*/, - t = { - $pattern: n, - keyword: ["@interface", "@class", "@protocol", "@implementation"], - }; - return { - name: "Objective-C", - aliases: ["mm", "objc", "obj-c", "obj-c++", "objective-c++"], - keywords: { - "variable.language": ["this", "super"], - $pattern: n, - keyword: [ - "while", - "export", - "sizeof", - "typedef", - "const", - "struct", - "for", - "union", - "volatile", - "static", - "mutable", - "if", - "do", - "return", - "goto", - "enum", - "else", - "break", - "extern", - "asm", - "case", - "default", - "register", - "explicit", - "typename", - "switch", - "continue", - "inline", - "readonly", - "assign", - "readwrite", - "self", - "@synchronized", - "id", - "typeof", - "nonatomic", - "IBOutlet", - "IBAction", - "strong", - "weak", - "copy", - "in", - "out", - "inout", - "bycopy", - "byref", - "oneway", - "__strong", - "__weak", - "__block", - "__autoreleasing", - "@private", - "@protected", - "@public", - "@try", - "@property", - "@end", - "@throw", - "@catch", - "@finally", - "@autoreleasepool", - "@synthesize", - "@dynamic", - "@selector", - "@optional", - "@required", - "@encode", - "@package", - "@import", - "@defs", - "@compatibility_alias", - "__bridge", - "__bridge_transfer", - "__bridge_retained", - "__bridge_retain", - "__covariant", - "__contravariant", - "__kindof", - "_Nonnull", - "_Nullable", - "_Null_unspecified", - "__FUNCTION__", - "__PRETTY_FUNCTION__", - "__attribute__", - "getter", - "setter", - "retain", - "unsafe_unretained", - "nonnull", - "nullable", - "null_unspecified", - "null_resettable", - "class", - "instancetype", - "NS_DESIGNATED_INITIALIZER", - "NS_UNAVAILABLE", - "NS_REQUIRES_SUPER", - "NS_RETURNS_INNER_POINTER", - "NS_INLINE", - "NS_AVAILABLE", - "NS_DEPRECATED", - "NS_ENUM", - "NS_OPTIONS", - "NS_SWIFT_UNAVAILABLE", - "NS_ASSUME_NONNULL_BEGIN", - "NS_ASSUME_NONNULL_END", - "NS_REFINED_FOR_SWIFT", - "NS_SWIFT_NAME", - "NS_SWIFT_NOTHROW", - "NS_DURING", - "NS_HANDLER", - "NS_ENDHANDLER", - "NS_VALUERETURN", - "NS_VOIDRETURN", - ], - literal: [ - "false", - "true", - "FALSE", - "TRUE", - "nil", - "YES", - "NO", - "NULL", - ], - built_in: [ - "dispatch_once_t", - "dispatch_queue_t", - "dispatch_sync", - "dispatch_async", - "dispatch_once", - ], - type: [ - "int", - "float", - "char", - "unsigned", - "signed", - "short", - "long", - "double", - "wchar_t", - "unichar", - "void", - "bool", - "BOOL", - "id|0", - "_Bool", - ], - }, - illegal: "/, end: /$/, illegal: "\\n" }, - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - ], - }, - { - className: "class", - begin: "(" + t.keyword.join("|") + ")\\b", - end: /(\{|$)/, - excludeEnd: !0, - keywords: t, - contains: [e.UNDERSCORE_TITLE_MODE], - }, - { begin: "\\." + e.UNDERSCORE_IDENT_RE, relevance: 0 }, - ], - }; - }, - grmr_perl: (e) => { - const n = e.regex, - t = /[dualxmsipngr]{0,12}/, - a = { - $pattern: /[\w.]+/, - keyword: - "abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0", - }, - i = { className: "subst", begin: "[$@]\\{", end: "\\}", keywords: a }, - r = { begin: /->\{/, end: /\}/ }, - s = { - variants: [ - { begin: /\$\d/ }, - { - begin: n.concat( - /[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/, - "(?![A-Za-z])(?![@$%])", - ), - }, - { begin: /[$%@][^\s\w{]/, relevance: 0 }, - ], - }, - o = [e.BACKSLASH_ESCAPE, i, s], - l = [/!/, /\//, /\|/, /\?/, /'/, /"/, /#/], - c = (e, a, i = "\\1") => { - const r = "\\1" === i ? i : n.concat(i, a); - return n.concat( - n.concat("(?:", e, ")"), - a, - /(?:\\.|[^\\\/])*?/, - r, - /(?:\\.|[^\\\/])*?/, - i, - t, - ); - }, - d = (e, a, i) => - n.concat(n.concat("(?:", e, ")"), a, /(?:\\.|[^\\\/])*?/, i, t), - g = [ - s, - e.HASH_COMMENT_MODE, - e.COMMENT(/^=\w/, /=cut/, { - endsWithParent: !0, - }), - r, - { - className: "string", - contains: o, - variants: [ - { - begin: "q[qwxr]?\\s*\\(", - end: "\\)", - relevance: 5, - }, - { begin: "q[qwxr]?\\s*\\[", end: "\\]", relevance: 5 }, - { begin: "q[qwxr]?\\s*\\{", end: "\\}", relevance: 5 }, - { - begin: "q[qwxr]?\\s*\\|", - end: "\\|", - relevance: 5, - }, - { begin: "q[qwxr]?\\s*<", end: ">", relevance: 5 }, - { begin: "qw\\s+q", end: "q", relevance: 5 }, - { begin: "'", end: "'", contains: [e.BACKSLASH_ESCAPE] }, - { begin: '"', end: '"' }, - { begin: "`", end: "`", contains: [e.BACKSLASH_ESCAPE] }, - { begin: /\{\w+\}/, relevance: 0 }, - { - begin: "-?\\w+\\s*=>", - relevance: 0, - }, - ], - }, - { - className: "number", - begin: - "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", - relevance: 0, - }, - { - begin: - "(\\/\\/|" + - e.RE_STARTERS_RE + - "|\\b(split|return|print|reverse|grep)\\b)\\s*", - keywords: "split return print reverse grep", - relevance: 0, - contains: [ - e.HASH_COMMENT_MODE, - { - className: "regexp", - variants: [ - { - begin: c("s|tr|y", n.either(...l, { capture: !0 })), - }, - { begin: c("s|tr|y", "\\(", "\\)") }, - { - begin: c("s|tr|y", "\\[", "\\]"), - }, - { begin: c("s|tr|y", "\\{", "\\}") }, - ], - relevance: 2, - }, - { - className: "regexp", - variants: [ - { begin: /(m|qr)\/\//, relevance: 0 }, - { - begin: d("(?:m|qr)?", /\//, /\//), - }, - { begin: d("m|qr", n.either(...l, { capture: !0 }), /\1/) }, - { begin: d("m|qr", /\(/, /\)/) }, - { begin: d("m|qr", /\[/, /\]/) }, - { - begin: d("m|qr", /\{/, /\}/), - }, - ], - }, - ], - }, - { - className: "function", - beginKeywords: "sub", - end: "(\\s*\\(.*?\\))?[;{]", - excludeEnd: !0, - relevance: 5, - contains: [e.TITLE_MODE], - }, - { - begin: "-\\w\\b", - relevance: 0, - }, - { - begin: "^__DATA__$", - end: "^__END__$", - subLanguage: "mojolicious", - contains: [{ begin: "^@@.*", end: "$", className: "comment" }], - }, - ]; - return ( - (i.contains = g), - (r.contains = g), - { name: "Perl", aliases: ["pl", "pm"], keywords: a, contains: g } - ); - }, - grmr_php: (e) => { - const n = e.regex, - t = /(?![A-Za-z0-9])(?![$])/, - a = n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/, t), - i = n.concat( - /(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/, - t, - ), - r = { - scope: "variable", - match: "\\$+" + a, - }, - s = { - scope: "subst", - variants: [ - { begin: /\$\w+/ }, - { - begin: /\{\$/, - end: /\}/, - }, - ], - }, - o = e.inherit(e.APOS_STRING_MODE, { illegal: null }), - l = "[ \t\n]", - c = { - scope: "string", - variants: [ - e.inherit(e.QUOTE_STRING_MODE, { - illegal: null, - contains: e.QUOTE_STRING_MODE.contains.concat(s), - }), - o, - { - begin: /<<<[ \t]*(?:(\w+)|"(\w+)")\n/, - end: /[ \t]*(\w+)\b/, - contains: e.QUOTE_STRING_MODE.contains.concat(s), - "on:begin": (e, n) => { - n.data._beginMatch = e[1] || e[2]; - }, - "on:end": (e, n) => { - n.data._beginMatch !== e[1] && n.ignoreMatch(); - }, - }, - e.END_SAME_AS_BEGIN({ - begin: /<<<[ \t]*'(\w+)'\n/, - end: /[ \t]*(\w+)\b/, - }), - ], - }, - d = { - scope: "number", - variants: [ - { - begin: "\\b0[bB][01]+(?:_[01]+)*\\b", - }, - { begin: "\\b0[oO][0-7]+(?:_[0-7]+)*\\b" }, - { - begin: "\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b", - }, - { - begin: - "(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?", - }, - ], - relevance: 0, - }, - g = ["false", "null", "true"], - u = [ - "__CLASS__", - "__DIR__", - "__FILE__", - "__FUNCTION__", - "__COMPILER_HALT_OFFSET__", - "__LINE__", - "__METHOD__", - "__NAMESPACE__", - "__TRAIT__", - "die", - "echo", - "exit", - "include", - "include_once", - "print", - "require", - "require_once", - "array", - "abstract", - "and", - "as", - "binary", - "bool", - "boolean", - "break", - "callable", - "case", - "catch", - "class", - "clone", - "const", - "continue", - "declare", - "default", - "do", - "double", - "else", - "elseif", - "empty", - "enddeclare", - "endfor", - "endforeach", - "endif", - "endswitch", - "endwhile", - "enum", - "eval", - "extends", - "final", - "finally", - "float", - "for", - "foreach", - "from", - "global", - "goto", - "if", - "implements", - "instanceof", - "insteadof", - "int", - "integer", - "interface", - "isset", - "iterable", - "list", - "match|0", - "mixed", - "new", - "never", - "object", - "or", - "private", - "protected", - "public", - "readonly", - "real", - "return", - "string", - "switch", - "throw", - "trait", - "try", - "unset", - "use", - "var", - "void", - "while", - "xor", - "yield", - ], - b = [ - "Error|0", - "AppendIterator", - "ArgumentCountError", - "ArithmeticError", - "ArrayIterator", - "ArrayObject", - "AssertionError", - "BadFunctionCallException", - "BadMethodCallException", - "CachingIterator", - "CallbackFilterIterator", - "CompileError", - "Countable", - "DirectoryIterator", - "DivisionByZeroError", - "DomainException", - "EmptyIterator", - "ErrorException", - "Exception", - "FilesystemIterator", - "FilterIterator", - "GlobIterator", - "InfiniteIterator", - "InvalidArgumentException", - "IteratorIterator", - "LengthException", - "LimitIterator", - "LogicException", - "MultipleIterator", - "NoRewindIterator", - "OutOfBoundsException", - "OutOfRangeException", - "OuterIterator", - "OverflowException", - "ParentIterator", - "ParseError", - "RangeException", - "RecursiveArrayIterator", - "RecursiveCachingIterator", - "RecursiveCallbackFilterIterator", - "RecursiveDirectoryIterator", - "RecursiveFilterIterator", - "RecursiveIterator", - "RecursiveIteratorIterator", - "RecursiveRegexIterator", - "RecursiveTreeIterator", - "RegexIterator", - "RuntimeException", - "SeekableIterator", - "SplDoublyLinkedList", - "SplFileInfo", - "SplFileObject", - "SplFixedArray", - "SplHeap", - "SplMaxHeap", - "SplMinHeap", - "SplObjectStorage", - "SplObserver", - "SplPriorityQueue", - "SplQueue", - "SplStack", - "SplSubject", - "SplTempFileObject", - "TypeError", - "UnderflowException", - "UnexpectedValueException", - "UnhandledMatchError", - "ArrayAccess", - "BackedEnum", - "Closure", - "Fiber", - "Generator", - "Iterator", - "IteratorAggregate", - "Serializable", - "Stringable", - "Throwable", - "Traversable", - "UnitEnum", - "WeakReference", - "WeakMap", - "Directory", - "__PHP_Incomplete_Class", - "parent", - "php_user_filter", - "self", - "static", - "stdClass", - ], - m = { - keyword: u, - literal: ((e) => { - const n = []; - return ( - e.forEach((e) => { - (n.push(e), - e.toLowerCase() === e - ? n.push(e.toUpperCase()) - : n.push(e.toLowerCase())); - }), - n - ); - })(g), - built_in: b, - }, - p = (e) => e.map((e) => e.replace(/\|\d+$/, "")), - _ = { - variants: [ - { - match: [ - /new/, - n.concat(l, "+"), - n.concat("(?!", p(b).join("\\b|"), "\\b)"), - i, - ], - scope: { - 1: "keyword", - 4: "title.class", - }, - }, - ], - }, - h = n.concat(a, "\\b(?!\\()"), - f = { - variants: [ - { - match: [n.concat(/::/, n.lookahead(/(?!class\b)/)), h], - scope: { 2: "variable.constant" }, - }, - { match: [/::/, /class/], scope: { 2: "variable.language" } }, - { - match: [i, n.concat(/::/, n.lookahead(/(?!class\b)/)), h], - scope: { 1: "title.class", 3: "variable.constant" }, - }, - { - match: [i, n.concat("::", n.lookahead(/(?!class\b)/))], - scope: { 1: "title.class" }, - }, - { - match: [i, /::/, /class/], - scope: { 1: "title.class", 3: "variable.language" }, - }, - ], - }, - E = { - scope: "attr", - match: n.concat(a, n.lookahead(":"), n.lookahead(/(?!::)/)), - }, - y = { - relevance: 0, - begin: /\(/, - end: /\)/, - keywords: m, - contains: [E, r, f, e.C_BLOCK_COMMENT_MODE, c, d, _], - }, - N = { - relevance: 0, - match: [ - /\b/, - n.concat( - "(?!fn\\b|function\\b|", - p(u).join("\\b|"), - "|", - p(b).join("\\b|"), - "\\b)", - ), - a, - n.concat(l, "*"), - n.lookahead(/(?=\()/), - ], - scope: { 3: "title.function.invoke" }, - contains: [y], - }; - y.contains.push(N); - const w = [E, f, e.C_BLOCK_COMMENT_MODE, c, d, _]; - return { - case_insensitive: !1, - keywords: m, - contains: [ - { - begin: n.concat(/#\[\s*/, i), - beginScope: "meta", - end: /]/, - endScope: "meta", - keywords: { literal: g, keyword: ["new", "array"] }, - contains: [ - { - begin: /\[/, - end: /]/, - keywords: { literal: g, keyword: ["new", "array"] }, - contains: ["self", ...w], - }, - ...w, - { scope: "meta", match: i }, - ], - }, - e.HASH_COMMENT_MODE, - e.COMMENT("//", "$"), - e.COMMENT("/\\*", "\\*/", { - contains: [ - { - scope: "doctag", - match: "@[A-Za-z]+", - }, - ], - }), - { - match: /__halt_compiler\(\);/, - keywords: "__halt_compiler", - starts: { - scope: "comment", - end: e.MATCH_NOTHING_RE, - contains: [{ match: /\?>/, scope: "meta", endsParent: !0 }], - }, - }, - { - scope: "meta", - variants: [ - { - begin: /<\?php/, - relevance: 10, - }, - { begin: /<\?=/ }, - { begin: /<\?/, relevance: 0.1 }, - { - begin: /\?>/, - }, - ], - }, - { scope: "variable.language", match: /\$this\b/ }, - r, - N, - f, - { - match: [/const/, /\s/, a], - scope: { 1: "keyword", 3: "variable.constant" }, - }, - _, - { - scope: "function", - relevance: 0, - beginKeywords: "fn function", - end: /[;{]/, - excludeEnd: !0, - illegal: "[$%\\[]", - contains: [ - { beginKeywords: "use" }, - e.UNDERSCORE_TITLE_MODE, - { begin: "=>", endsParent: !0 }, - { - scope: "params", - begin: "\\(", - end: "\\)", - excludeBegin: !0, - excludeEnd: !0, - keywords: m, - contains: ["self", r, f, e.C_BLOCK_COMMENT_MODE, c, d], - }, - ], - }, - { - scope: "class", - variants: [ - { - beginKeywords: "enum", - illegal: /[($"]/, - }, - { beginKeywords: "class interface trait", illegal: /[:($"]/ }, - ], - relevance: 0, - end: /\{/, - excludeEnd: !0, - contains: [ - { - beginKeywords: "extends implements", - }, - e.UNDERSCORE_TITLE_MODE, - ], - }, - { - beginKeywords: "namespace", - relevance: 0, - end: ";", - illegal: /[.']/, - contains: [ - e.inherit(e.UNDERSCORE_TITLE_MODE, { scope: "title.class" }), - ], - }, - { - beginKeywords: "use", - relevance: 0, - end: ";", - contains: [ - { - match: /\b(as|const|function)\b/, - scope: "keyword", - }, - e.UNDERSCORE_TITLE_MODE, - ], - }, - c, - d, - ], - }; - }, - grmr_php_template: (e) => ({ - name: "PHP template", - subLanguage: "xml", - contains: [ - { - begin: /<\?(php|=)?/, - end: /\?>/, - subLanguage: "php", - contains: [ - { begin: "/\\*", end: "\\*/", skip: !0 }, - { begin: 'b"', end: '"', skip: !0 }, - { begin: "b'", end: "'", skip: !0 }, - e.inherit(e.APOS_STRING_MODE, { - illegal: null, - className: null, - contains: null, - skip: !0, - }), - e.inherit(e.QUOTE_STRING_MODE, { - illegal: null, - className: null, - contains: null, - skip: !0, - }), - ], - }, - ], - }), - grmr_plaintext: (e) => ({ - name: "Plain text", - aliases: ["text", "txt"], - disableAutodetect: !0, - }), - grmr_python: (e) => { - const n = e.regex, - t = /[\p{XID_Start}_]\p{XID_Continue}*/u, - a = [ - "and", - "as", - "assert", - "async", - "await", - "break", - "case", - "class", - "continue", - "def", - "del", - "elif", - "else", - "except", - "finally", - "for", - "from", - "global", - "if", - "import", - "in", - "is", - "lambda", - "match", - "nonlocal|10", - "not", - "or", - "pass", - "raise", - "return", - "try", - "while", - "with", - "yield", - ], - i = { - $pattern: /[A-Za-z]\w+|__\w+__/, - keyword: a, - built_in: [ - "__import__", - "abs", - "all", - "any", - "ascii", - "bin", - "bool", - "breakpoint", - "bytearray", - "bytes", - "callable", - "chr", - "classmethod", - "compile", - "complex", - "delattr", - "dict", - "dir", - "divmod", - "enumerate", - "eval", - "exec", - "filter", - "float", - "format", - "frozenset", - "getattr", - "globals", - "hasattr", - "hash", - "help", - "hex", - "id", - "input", - "int", - "isinstance", - "issubclass", - "iter", - "len", - "list", - "locals", - "map", - "max", - "memoryview", - "min", - "next", - "object", - "oct", - "open", - "ord", - "pow", - "print", - "property", - "range", - "repr", - "reversed", - "round", - "set", - "setattr", - "slice", - "sorted", - "staticmethod", - "str", - "sum", - "super", - "tuple", - "type", - "vars", - "zip", - ], - literal: [ - "__debug__", - "Ellipsis", - "False", - "None", - "NotImplemented", - "True", - ], - type: [ - "Any", - "Callable", - "Coroutine", - "Dict", - "List", - "Literal", - "Generic", - "Optional", - "Sequence", - "Set", - "Tuple", - "Type", - "Union", - ], - }, - r = { className: "meta", begin: /^(>>>|\.\.\.) / }, - s = { - className: "subst", - begin: /\{/, - end: /\}/, - keywords: i, - illegal: /#/, - }, - o = { begin: /\{\{/, relevance: 0 }, - l = { - className: "string", - contains: [e.BACKSLASH_ESCAPE], - variants: [ - { - begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/, - end: /'''/, - contains: [e.BACKSLASH_ESCAPE, r], - relevance: 10, - }, - { - begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/, - end: /"""/, - contains: [e.BACKSLASH_ESCAPE, r], - relevance: 10, - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])'''/, - end: /'''/, - contains: [e.BACKSLASH_ESCAPE, r, o, s], - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])"""/, - end: /"""/, - contains: [e.BACKSLASH_ESCAPE, r, o, s], - }, - { begin: /([uU]|[rR])'/, end: /'/, relevance: 10 }, - { begin: /([uU]|[rR])"/, end: /"/, relevance: 10 }, - { - begin: /([bB]|[bB][rR]|[rR][bB])'/, - end: /'/, - }, - { begin: /([bB]|[bB][rR]|[rR][bB])"/, end: /"/ }, - { - begin: /([fF][rR]|[rR][fF]|[fF])'/, - end: /'/, - contains: [e.BACKSLASH_ESCAPE, o, s], - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])"/, - end: /"/, - contains: [e.BACKSLASH_ESCAPE, o, s], - }, - e.APOS_STRING_MODE, - e.QUOTE_STRING_MODE, - ], - }, - c = "[0-9](_?[0-9])*", - d = `(\\b(${c}))?\\.(${c})|\\b(${c})\\.`, - g = "\\b|" + a.join("|"), - u = { - className: "number", - relevance: 0, - variants: [ - { - begin: `(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${g})`, - }, - { begin: `(${d})[jJ]?` }, - { - begin: `\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`, - }, - { - begin: `\\b0[bB](_?[01])+[lL]?(?=${g})`, - }, - { begin: `\\b0[oO](_?[0-7])+[lL]?(?=${g})` }, - { begin: `\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})` }, - { begin: `\\b(${c})[jJ](?=${g})` }, - ], - }, - b = { - className: "comment", - begin: n.lookahead(/# type:/), - end: /$/, - keywords: i, - contains: [ - { begin: /# type:/ }, - { begin: /#/, end: /\b\B/, endsWithParent: !0 }, - ], - }, - m = { - className: "params", - variants: [ - { className: "", begin: /\(\s*\)/, skip: !0 }, - { - begin: /\(/, - end: /\)/, - excludeBegin: !0, - excludeEnd: !0, - keywords: i, - contains: ["self", r, u, l, e.HASH_COMMENT_MODE], - }, - ], - }; - return ( - (s.contains = [l, u, r]), - { - name: "Python", - aliases: ["py", "gyp", "ipython"], - unicodeRegex: !0, - keywords: i, - illegal: /(<\/|\?)|=>/, - contains: [ - r, - u, - { begin: /\bself\b/ }, - { beginKeywords: "if", relevance: 0 }, - l, - b, - e.HASH_COMMENT_MODE, - { - match: [/\bdef/, /\s+/, t], - scope: { - 1: "keyword", - 3: "title.function", - }, - contains: [m], - }, - { - variants: [ - { - match: [/\bclass/, /\s+/, t, /\s*/, /\(\s*/, t, /\s*\)/], - }, - { match: [/\bclass/, /\s+/, t] }, - ], - scope: { - 1: "keyword", - 3: "title.class", - 6: "title.class.inherited", - }, - }, - { - className: "meta", - begin: /^[\t ]*@/, - end: /(?=#)|$/, - contains: [u, m, l], - }, - ], - } - ); - }, - grmr_python_repl: (e) => ({ - aliases: ["pycon"], - contains: [ - { - className: "meta.prompt", - starts: { end: / |$/, starts: { end: "$", subLanguage: "python" } }, - variants: [ - { - begin: /^>>>(?=[ ]|$)/, - }, - { begin: /^\.\.\.(?=[ ]|$)/ }, - ], - }, - ], - }), - grmr_r: (e) => { - const n = e.regex, - t = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/, - a = n.either( - /0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/, - /0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/, - /(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/, - ), - i = /[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/, - r = n.either(/[()]/, /[{}]/, /\[\[/, /[[\]]/, /\\/, /,/); - return { - name: "R", - keywords: { - $pattern: t, - keyword: "function if in break next repeat else for while", - literal: - "NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", - built_in: - "LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm", - }, - contains: [ - e.COMMENT(/#'/, /$/, { - contains: [ - { - scope: "doctag", - match: /@examples/, - starts: { - end: n.lookahead( - n.either(/\n^#'\s*(?=@[a-zA-Z]+)/, /\n^(?!#')/), - ), - endsParent: !0, - }, - }, - { - scope: "doctag", - begin: "@param", - end: /$/, - contains: [ - { - scope: "variable", - variants: [{ match: t }, { match: /`(?:\\.|[^`\\])+`/ }], - endsParent: !0, - }, - ], - }, - { scope: "doctag", match: /@[a-zA-Z]+/ }, - { scope: "keyword", match: /\\[a-zA-Z]+/ }, - ], - }), - e.HASH_COMMENT_MODE, - { - scope: "string", - contains: [e.BACKSLASH_ESCAPE], - variants: [ - e.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\(/, end: /\)(-*)"/ }), - e.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\{/, end: /\}(-*)"/ }), - e.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\[/, end: /\](-*)"/ }), - e.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\(/, end: /\)(-*)'/ }), - e.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\{/, end: /\}(-*)'/ }), - e.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\[/, end: /\](-*)'/ }), - { begin: '"', end: '"', relevance: 0 }, - { begin: "'", end: "'", relevance: 0 }, - ], - }, - { - relevance: 0, - variants: [ - { - scope: { - 1: "operator", - 2: "number", - }, - match: [i, a], - }, - { scope: { 1: "operator", 2: "number" }, match: [/%[^%]*%/, a] }, - { scope: { 1: "punctuation", 2: "number" }, match: [r, a] }, - { - scope: { - 2: "number", - }, - match: [/[^a-zA-Z0-9._]|^/, a], - }, - ], - }, - { scope: { 3: "operator" }, match: [t, /\s+/, /<-/, /\s+/] }, - { - scope: "operator", - relevance: 0, - variants: [ - { match: i }, - { - match: /%[^%]*%/, - }, - ], - }, - { scope: "punctuation", relevance: 0, match: r }, - { begin: "`", end: "`", contains: [{ begin: /\\./ }] }, - ], - }; - }, - grmr_ruby: (e) => { - const n = e.regex, - t = - "([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)", - a = n.either(/\b([A-Z]+[a-z0-9]+)+/, /\b([A-Z]+[a-z0-9]+)+[A-Z]+/), - i = n.concat(a, /(::\w+)*/), - r = { - "variable.constant": ["__FILE__", "__LINE__", "__ENCODING__"], - "variable.language": ["self", "super"], - keyword: [ - "alias", - "and", - "begin", - "BEGIN", - "break", - "case", - "class", - "defined", - "do", - "else", - "elsif", - "end", - "END", - "ensure", - "for", - "if", - "in", - "module", - "next", - "not", - "or", - "redo", - "require", - "rescue", - "retry", - "return", - "then", - "undef", - "unless", - "until", - "when", - "while", - "yield", - "include", - "extend", - "prepend", - "public", - "private", - "protected", - "raise", - "throw", - ], - built_in: [ - "proc", - "lambda", - "attr_accessor", - "attr_reader", - "attr_writer", - "define_method", - "private_constant", - "module_function", - ], - literal: ["true", "false", "nil"], - }, - s = { className: "doctag", begin: "@[A-Za-z]+" }, - o = { - begin: "#<", - end: ">", - }, - l = [ - e.COMMENT("#", "$", { contains: [s] }), - e.COMMENT("^=begin", "^=end", { contains: [s], relevance: 10 }), - e.COMMENT("^__END__", e.MATCH_NOTHING_RE), - ], - c = { className: "subst", begin: /#\{/, end: /\}/, keywords: r }, - d = { - className: "string", - contains: [e.BACKSLASH_ESCAPE, c], - variants: [ - { begin: /'/, end: /'/ }, - { begin: /"/, end: /"/ }, - { begin: /`/, end: /`/ }, - { - begin: /%[qQwWx]?\(/, - end: /\)/, - }, - { begin: /%[qQwWx]?\[/, end: /\]/ }, - { - begin: /%[qQwWx]?\{/, - end: /\}/, - }, - { begin: /%[qQwWx]?/ }, - { begin: /%[qQwWx]?\//, end: /\// }, - { begin: /%[qQwWx]?%/, end: /%/ }, - { begin: /%[qQwWx]?-/, end: /-/ }, - { - begin: /%[qQwWx]?\|/, - end: /\|/, - }, - { begin: /\B\?(\\\d{1,3})/ }, - { - begin: /\B\?(\\x[A-Fa-f0-9]{1,2})/, - }, - { begin: /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/ }, - { - begin: /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/, - }, - { - begin: /\B\?\\(c|C-)[\x20-\x7e]/, - }, - { begin: /\B\?\\?\S/ }, - { - begin: n.concat( - /<<[-~]?'?/, - n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/), - ), - contains: [ - e.END_SAME_AS_BEGIN({ - begin: /(\w+)/, - end: /(\w+)/, - contains: [e.BACKSLASH_ESCAPE, c], - }), - ], - }, - ], - }, - g = "[0-9](_?[0-9])*", - u = { - className: "number", - relevance: 0, - variants: [ - { - begin: `\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`, - }, - { - begin: "\\b0[dD][0-9](_?[0-9])*r?i?\\b", - }, - { begin: "\\b0[bB][0-1](_?[0-1])*r?i?\\b" }, - { begin: "\\b0[oO][0-7](_?[0-7])*r?i?\\b" }, - { - begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b", - }, - { - begin: "\\b0(_?[0-7])+r?i?\\b", - }, - ], - }, - b = { - variants: [ - { match: /\(\)/ }, - { - className: "params", - begin: /\(/, - end: /(?=\))/, - excludeBegin: !0, - endsParent: !0, - keywords: r, - }, - ], - }, - m = [ - d, - { - variants: [ - { match: [/class\s+/, i, /\s+<\s+/, i] }, - { - match: [/\b(class|module)\s+/, i], - }, - ], - scope: { 2: "title.class", 4: "title.class.inherited" }, - keywords: r, - }, - { - match: [/(include|extend)\s+/, i], - scope: { - 2: "title.class", - }, - keywords: r, - }, - { - relevance: 0, - match: [i, /\.new[. (]/], - scope: { - 1: "title.class", - }, - }, - { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant", - }, - { relevance: 0, match: a, scope: "title.class" }, - { - match: [/def/, /\s+/, t], - scope: { 1: "keyword", 3: "title.function" }, - contains: [b], - }, - { - begin: e.IDENT_RE + "::", - }, - { - className: "symbol", - begin: e.UNDERSCORE_IDENT_RE + "(!|\\?)?:", - relevance: 0, - }, - { - className: "symbol", - begin: ":(?!\\s)", - contains: [d, { begin: t }], - relevance: 0, - }, - u, - { - className: "variable", - begin: "(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])", - }, - { - className: "params", - begin: /\|/, - end: /\|/, - excludeBegin: !0, - excludeEnd: !0, - relevance: 0, - keywords: r, - }, - { - begin: "(" + e.RE_STARTERS_RE + "|unless)\\s*", - keywords: "unless", - contains: [ - { - className: "regexp", - contains: [e.BACKSLASH_ESCAPE, c], - illegal: /\n/, - variants: [ - { begin: "/", end: "/[a-z]*" }, - { begin: /%r\{/, end: /\}[a-z]*/ }, - { - begin: "%r\\(", - end: "\\)[a-z]*", - }, - { begin: "%r!", end: "![a-z]*" }, - { begin: "%r\\[", end: "\\][a-z]*" }, - ], - }, - ].concat(o, l), - relevance: 0, - }, - ].concat(o, l); - ((c.contains = m), (b.contains = m)); - const p = [ - { begin: /^\s*=>/, starts: { end: "$", contains: m } }, - { - className: "meta.prompt", - begin: - "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", - starts: { end: "$", keywords: r, contains: m }, - }, - ]; - return ( - l.unshift(o), - { - name: "Ruby", - aliases: ["rb", "gemspec", "podspec", "thor", "irb"], - keywords: r, - illegal: /\/\*/, - contains: [e.SHEBANG({ binary: "ruby" })] - .concat(p) - .concat(l) - .concat(m), - } - ); - }, - grmr_rust: (e) => { - const n = e.regex, - t = { - className: "title.function.invoke", - relevance: 0, - begin: n.concat( - /\b/, - /(?!let|for|while|if|else|match\b)/, - e.IDENT_RE, - n.lookahead(/\s*\(/), - ), - }, - a = "([ui](8|16|32|64|128|size)|f(32|64))?", - i = [ - "drop ", - "Copy", - "Send", - "Sized", - "Sync", - "Drop", - "Fn", - "FnMut", - "FnOnce", - "ToOwned", - "Clone", - "Debug", - "PartialEq", - "PartialOrd", - "Eq", - "Ord", - "AsRef", - "AsMut", - "Into", - "From", - "Default", - "Iterator", - "Extend", - "IntoIterator", - "DoubleEndedIterator", - "ExactSizeIterator", - "SliceConcatExt", - "ToString", - "assert!", - "assert_eq!", - "bitflags!", - "bytes!", - "cfg!", - "col!", - "concat!", - "concat_idents!", - "debug_assert!", - "debug_assert_eq!", - "env!", - "eprintln!", - "panic!", - "file!", - "format!", - "format_args!", - "include_bytes!", - "include_str!", - "line!", - "local_data_key!", - "module_path!", - "option_env!", - "print!", - "println!", - "select!", - "stringify!", - "try!", - "unimplemented!", - "unreachable!", - "vec!", - "write!", - "writeln!", - "macro_rules!", - "assert_ne!", - "debug_assert_ne!", - ], - r = [ - "i8", - "i16", - "i32", - "i64", - "i128", - "isize", - "u8", - "u16", - "u32", - "u64", - "u128", - "usize", - "f32", - "f64", - "str", - "char", - "bool", - "Box", - "Option", - "Result", - "String", - "Vec", - ]; - return { - name: "Rust", - aliases: ["rs"], - keywords: { - $pattern: e.IDENT_RE + "!?", - type: r, - keyword: [ - "abstract", - "as", - "async", - "await", - "become", - "box", - "break", - "const", - "continue", - "crate", - "do", - "dyn", - "else", - "enum", - "extern", - "false", - "final", - "fn", - "for", - "if", - "impl", - "in", - "let", - "loop", - "macro", - "match", - "mod", - "move", - "mut", - "override", - "priv", - "pub", - "ref", - "return", - "self", - "Self", - "static", - "struct", - "super", - "trait", - "true", - "try", - "type", - "typeof", - "unsafe", - "unsized", - "use", - "virtual", - "where", - "while", - "yield", - ], - literal: ["true", "false", "Some", "None", "Ok", "Err"], - built_in: i, - }, - illegal: "" }, - t, - ], - }; - }, - grmr_scss: (e) => { - const n = ie(e), - t = le, - a = oe, - i = "@[a-z-]+", - r = { - className: "variable", - begin: "(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b", - relevance: 0, - }; - return { - name: "SCSS", - case_insensitive: !0, - illegal: "[=/|']", - contains: [ - e.C_LINE_COMMENT_MODE, - e.C_BLOCK_COMMENT_MODE, - n.CSS_NUMBER_MODE, - { - className: "selector-id", - begin: "#[A-Za-z0-9_-]+", - relevance: 0, - }, - { - className: "selector-class", - begin: "\\.[A-Za-z0-9_-]+", - relevance: 0, - }, - n.ATTRIBUTE_SELECTOR_MODE, - { - className: "selector-tag", - begin: "\\b(" + re.join("|") + ")\\b", - relevance: 0, - }, - { className: "selector-pseudo", begin: ":(" + a.join("|") + ")" }, - { className: "selector-pseudo", begin: ":(:)?(" + t.join("|") + ")" }, - r, - { begin: /\(/, end: /\)/, contains: [n.CSS_NUMBER_MODE] }, - n.CSS_VARIABLE, - { className: "attribute", begin: "\\b(" + ce.join("|") + ")\\b" }, - { - begin: - "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b", - }, - { - begin: /:/, - end: /[;}{]/, - relevance: 0, - contains: [ - n.BLOCK_COMMENT, - r, - n.HEXCOLOR, - n.CSS_NUMBER_MODE, - e.QUOTE_STRING_MODE, - e.APOS_STRING_MODE, - n.IMPORTANT, - n.FUNCTION_DISPATCH, - ], - }, - { - begin: "@(page|font-face)", - keywords: { $pattern: i, keyword: "@page @font-face" }, - }, - { - begin: "@", - end: "[{;]", - returnBegin: !0, - keywords: { - $pattern: /[a-z-]+/, - keyword: "and or not only", - attribute: se.join(" "), - }, - contains: [ - { begin: i, className: "keyword" }, - { begin: /[a-z-]+(?=:)/, className: "attribute" }, - r, - e.QUOTE_STRING_MODE, - e.APOS_STRING_MODE, - n.HEXCOLOR, - n.CSS_NUMBER_MODE, - ], - }, - n.FUNCTION_DISPATCH, - ], - }; - }, - grmr_shell: (e) => ({ - name: "Shell Session", - aliases: ["console", "shellsession"], - contains: [ - { - className: "meta.prompt", - begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/, - starts: { end: /[^\\](?=\s*$)/, subLanguage: "bash" }, - }, - ], - }), - grmr_sql: (e) => { - const n = e.regex, - t = e.COMMENT("--", "$"), - a = ["true", "false", "unknown"], - i = [ - "bigint", - "binary", - "blob", - "boolean", - "char", - "character", - "clob", - "date", - "dec", - "decfloat", - "decimal", - "float", - "int", - "integer", - "interval", - "nchar", - "nclob", - "national", - "numeric", - "real", - "row", - "smallint", - "time", - "timestamp", - "varchar", - "varying", - "varbinary", - ], - r = [ - "abs", - "acos", - "array_agg", - "asin", - "atan", - "avg", - "cast", - "ceil", - "ceiling", - "coalesce", - "corr", - "cos", - "cosh", - "count", - "covar_pop", - "covar_samp", - "cume_dist", - "dense_rank", - "deref", - "element", - "exp", - "extract", - "first_value", - "floor", - "json_array", - "json_arrayagg", - "json_exists", - "json_object", - "json_objectagg", - "json_query", - "json_table", - "json_table_primitive", - "json_value", - "lag", - "last_value", - "lead", - "listagg", - "ln", - "log", - "log10", - "lower", - "max", - "min", - "mod", - "nth_value", - "ntile", - "nullif", - "percent_rank", - "percentile_cont", - "percentile_disc", - "position", - "position_regex", - "power", - "rank", - "regr_avgx", - "regr_avgy", - "regr_count", - "regr_intercept", - "regr_r2", - "regr_slope", - "regr_sxx", - "regr_sxy", - "regr_syy", - "row_number", - "sin", - "sinh", - "sqrt", - "stddev_pop", - "stddev_samp", - "substring", - "substring_regex", - "sum", - "tan", - "tanh", - "translate", - "translate_regex", - "treat", - "trim", - "trim_array", - "unnest", - "upper", - "value_of", - "var_pop", - "var_samp", - "width_bucket", - ], - s = [ - "create table", - "insert into", - "primary key", - "foreign key", - "not null", - "alter table", - "add constraint", - "grouping sets", - "on overflow", - "character set", - "respect nulls", - "ignore nulls", - "nulls first", - "nulls last", - "depth first", - "breadth first", - ], - o = r, - l = [ - "abs", - "acos", - "all", - "allocate", - "alter", - "and", - "any", - "are", - "array", - "array_agg", - "array_max_cardinality", - "as", - "asensitive", - "asin", - "asymmetric", - "at", - "atan", - "atomic", - "authorization", - "avg", - "begin", - "begin_frame", - "begin_partition", - "between", - "bigint", - "binary", - "blob", - "boolean", - "both", - "by", - "call", - "called", - "cardinality", - "cascaded", - "case", - "cast", - "ceil", - "ceiling", - "char", - "char_length", - "character", - "character_length", - "check", - "classifier", - "clob", - "close", - "coalesce", - "collate", - "collect", - "column", - "commit", - "condition", - "connect", - "constraint", - "contains", - "convert", - "copy", - "corr", - "corresponding", - "cos", - "cosh", - "count", - "covar_pop", - "covar_samp", - "create", - "cross", - "cube", - "cume_dist", - "current", - "current_catalog", - "current_date", - "current_default_transform_group", - "current_path", - "current_role", - "current_row", - "current_schema", - "current_time", - "current_timestamp", - "current_path", - "current_role", - "current_transform_group_for_type", - "current_user", - "cursor", - "cycle", - "date", - "day", - "deallocate", - "dec", - "decimal", - "decfloat", - "declare", - "default", - "define", - "delete", - "dense_rank", - "deref", - "describe", - "deterministic", - "disconnect", - "distinct", - "double", - "drop", - "dynamic", - "each", - "element", - "else", - "empty", - "end", - "end_frame", - "end_partition", - "end-exec", - "equals", - "escape", - "every", - "except", - "exec", - "execute", - "exists", - "exp", - "external", - "extract", - "false", - "fetch", - "filter", - "first_value", - "float", - "floor", - "for", - "foreign", - "frame_row", - "free", - "from", - "full", - "function", - "fusion", - "get", - "global", - "grant", - "group", - "grouping", - "groups", - "having", - "hold", - "hour", - "identity", - "in", - "indicator", - "initial", - "inner", - "inout", - "insensitive", - "insert", - "int", - "integer", - "intersect", - "intersection", - "interval", - "into", - "is", - "join", - "json_array", - "json_arrayagg", - "json_exists", - "json_object", - "json_objectagg", - "json_query", - "json_table", - "json_table_primitive", - "json_value", - "lag", - "language", - "large", - "last_value", - "lateral", - "lead", - "leading", - "left", - "like", - "like_regex", - "listagg", - "ln", - "local", - "localtime", - "localtimestamp", - "log", - "log10", - "lower", - "match", - "match_number", - "match_recognize", - "matches", - "max", - "member", - "merge", - "method", - "min", - "minute", - "mod", - "modifies", - "module", - "month", - "multiset", - "national", - "natural", - "nchar", - "nclob", - "new", - "no", - "none", - "normalize", - "not", - "nth_value", - "ntile", - "null", - "nullif", - "numeric", - "octet_length", - "occurrences_regex", - "of", - "offset", - "old", - "omit", - "on", - "one", - "only", - "open", - "or", - "order", - "out", - "outer", - "over", - "overlaps", - "overlay", - "parameter", - "partition", - "pattern", - "per", - "percent", - "percent_rank", - "percentile_cont", - "percentile_disc", - "period", - "portion", - "position", - "position_regex", - "power", - "precedes", - "precision", - "prepare", - "primary", - "procedure", - "ptf", - "range", - "rank", - "reads", - "real", - "recursive", - "ref", - "references", - "referencing", - "regr_avgx", - "regr_avgy", - "regr_count", - "regr_intercept", - "regr_r2", - "regr_slope", - "regr_sxx", - "regr_sxy", - "regr_syy", - "release", - "result", - "return", - "returns", - "revoke", - "right", - "rollback", - "rollup", - "row", - "row_number", - "rows", - "running", - "savepoint", - "scope", - "scroll", - "search", - "second", - "seek", - "select", - "sensitive", - "session_user", - "set", - "show", - "similar", - "sin", - "sinh", - "skip", - "smallint", - "some", - "specific", - "specifictype", - "sql", - "sqlexception", - "sqlstate", - "sqlwarning", - "sqrt", - "start", - "static", - "stddev_pop", - "stddev_samp", - "submultiset", - "subset", - "substring", - "substring_regex", - "succeeds", - "sum", - "symmetric", - "system", - "system_time", - "system_user", - "table", - "tablesample", - "tan", - "tanh", - "then", - "time", - "timestamp", - "timezone_hour", - "timezone_minute", - "to", - "trailing", - "translate", - "translate_regex", - "translation", - "treat", - "trigger", - "trim", - "trim_array", - "true", - "truncate", - "uescape", - "union", - "unique", - "unknown", - "unnest", - "update", - "upper", - "user", - "using", - "value", - "values", - "value_of", - "var_pop", - "var_samp", - "varbinary", - "varchar", - "varying", - "versioning", - "when", - "whenever", - "where", - "width_bucket", - "window", - "with", - "within", - "without", - "year", - "add", - "asc", - "collation", - "desc", - "final", - "first", - "last", - "view", - ].filter((e) => !r.includes(e)), - c = { - begin: n.concat(/\b/, n.either(...o), /\s*\(/), - relevance: 0, - keywords: { built_in: o }, - }; - return { - name: "SQL", - case_insensitive: !0, - illegal: /[{}]|<\//, - keywords: { - $pattern: /\b[\w\.]+/, - keyword: ((e, { exceptions: n, when: t } = {}) => { - const a = t; - return ( - (n = n || []), - e.map((e) => - e.match(/\|\d+$/) || n.includes(e) ? e : a(e) ? e + "|0" : e, - ) - ); - })(l, { when: (e) => e.length < 3 }), - literal: a, - type: i, - built_in: [ - "current_catalog", - "current_date", - "current_default_transform_group", - "current_path", - "current_role", - "current_schema", - "current_transform_group_for_type", - "current_user", - "session_user", - "system_time", - "system_user", - "current_time", - "localtime", - "current_timestamp", - "localtimestamp", - ], - }, - contains: [ - { - begin: n.either(...s), - relevance: 0, - keywords: { - $pattern: /[\w\.]+/, - keyword: l.concat(s), - literal: a, - type: i, - }, - }, - { - className: "type", - begin: n.either( - "double precision", - "large object", - "with timezone", - "without timezone", - ), - }, - c, - { className: "variable", begin: /@[a-z0-9][a-z0-9_]*/ }, - { - className: "string", - variants: [{ begin: /'/, end: /'/, contains: [{ begin: /''/ }] }], - }, - { begin: /"/, end: /"/, contains: [{ begin: /""/ }] }, - e.C_NUMBER_MODE, - e.C_BLOCK_COMMENT_MODE, - t, - { - className: "operator", - begin: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/, - relevance: 0, - }, - ], - }; - }, - grmr_swift: (e) => { - const n = { match: /\s+/, relevance: 0 }, - t = e.COMMENT("/\\*", "\\*/", { contains: ["self"] }), - a = [e.C_LINE_COMMENT_MODE, t], - i = { - match: [/\./, m(...xe, ...Me)], - className: { 2: "keyword" }, - }, - r = { match: b(/\./, m(...Ae)), relevance: 0 }, - s = Ae.filter((e) => "string" == typeof e).concat(["_|0"]), - o = { - variants: [ - { - className: "keyword", - match: m( - ...Ae.filter((e) => "string" != typeof e) - .concat(Se) - .map(ke), - ...Me, - ), - }, - ], - }, - l = { - $pattern: m(/\b\w+/, /#\w+/), - keyword: s.concat(Re), - literal: Ce, - }, - c = [i, r, o], - g = [ - { - match: b(/\./, m(...De)), - relevance: 0, - }, - { className: "built_in", match: b(/\b/, m(...De), /(?=\()/) }, - ], - u = { match: /->/, relevance: 0 }, - p = [ - u, - { - className: "operator", - relevance: 0, - variants: [{ match: Be }, { match: `\\.(\\.|${Le})+` }], - }, - ], - _ = "([0-9]_*)+", - h = "([0-9a-fA-F]_*)+", - f = { - className: "number", - relevance: 0, - variants: [ - { match: `\\b(${_})(\\.(${_}))?([eE][+-]?(${_}))?\\b` }, - { - match: `\\b0x(${h})(\\.(${h}))?([pP][+-]?(${_}))?\\b`, - }, - { match: /\b0o([0-7]_*)+\b/ }, - { match: /\b0b([01]_*)+\b/ }, - ], - }, - E = (e = "") => ({ - className: "subst", - variants: [ - { - match: b(/\\/, e, /[0\\tnr"']/), - }, - { match: b(/\\/, e, /u\{[0-9a-fA-F]{1,8}\}/) }, - ], - }), - y = (e = "") => ({ - className: "subst", - match: b(/\\/, e, /[\t ]*(?:[\r\n]|\r\n)/), - }), - N = (e = "") => ({ - className: "subst", - label: "interpol", - begin: b(/\\/, e, /\(/), - end: /\)/, - }), - w = (e = "") => ({ - begin: b(e, /"""/), - end: b(/"""/, e), - contains: [E(e), y(e), N(e)], - }), - v = (e = "") => ({ - begin: b(e, /"/), - end: b(/"/, e), - contains: [E(e), N(e)], - }), - O = { - className: "string", - variants: [ - w(), - w("#"), - w("##"), - w("###"), - v(), - v("#"), - v("##"), - v("###"), - ], - }, - k = [ - e.BACKSLASH_ESCAPE, - { - begin: /\[/, - end: /\]/, - relevance: 0, - contains: [e.BACKSLASH_ESCAPE], - }, - ], - x = { begin: /\/[^\s](?=[^/\n]*\/)/, end: /\//, contains: k }, - M = (e) => { - const n = b(e, /\//), - t = b(/\//, e); - return { - begin: n, - end: t, - contains: [ - ...k, - { scope: "comment", begin: `#(?!.*${t})`, end: /$/ }, - ], - }; - }, - S = { - scope: "regexp", - variants: [M("###"), M("##"), M("#"), x], - }, - A = { match: b(/`/, Fe, /`/) }, - C = [ - A, - { className: "variable", match: /\$\d+/ }, - { className: "variable", match: `\\$${ze}+` }, - ], - T = [ - { - match: /(@|#(un)?)available/, - scope: "keyword", - starts: { - contains: [ - { - begin: /\(/, - end: /\)/, - keywords: Pe, - contains: [...p, f, O], - }, - ], - }, - }, - { - scope: "keyword", - match: b(/@/, m(...je)), - }, - { scope: "meta", match: b(/@/, Fe) }, - ], - R = { - match: d(/\b[A-Z]/), - relevance: 0, - contains: [ - { - className: "type", - match: b( - /(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, - ze, - "+", - ), - }, - { className: "type", match: Ue, relevance: 0 }, - { match: /[?!]+/, relevance: 0 }, - { - match: /\.\.\./, - relevance: 0, - }, - { match: b(/\s+&\s+/, d(Ue)), relevance: 0 }, - ], - }, - D = { - begin: //, - keywords: l, - contains: [...a, ...c, ...T, u, R], - }; - R.contains.push(D); - const I = { - begin: /\(/, - end: /\)/, - relevance: 0, - keywords: l, - contains: [ - "self", - { - match: b(Fe, /\s*:/), - keywords: "_|0", - relevance: 0, - }, - ...a, - S, - ...c, - ...g, - ...p, - f, - O, - ...C, - ...T, - R, - ], - }, - L = { - begin: //, - keywords: "repeat each", - contains: [...a, R], - }, - B = { - begin: /\(/, - end: /\)/, - keywords: l, - contains: [ - { - begin: m(d(b(Fe, /\s*:/)), d(b(Fe, /\s+/, Fe, /\s*:/))), - end: /:/, - relevance: 0, - contains: [ - { className: "keyword", match: /\b_\b/ }, - { className: "params", match: Fe }, - ], - }, - ...a, - ...c, - ...p, - f, - O, - ...T, - R, - I, - ], - endsParent: !0, - illegal: /["']/, - }, - $ = { - match: [/(func|macro)/, /\s+/, m(A.match, Fe, Be)], - className: { 1: "keyword", 3: "title.function" }, - contains: [L, B, n], - illegal: [/\[/, /%/], - }, - z = { - match: [/\b(?:subscript|init[?!]?)/, /\s*(?=[<(])/], - className: { 1: "keyword" }, - contains: [L, B, n], - illegal: /\[|%/, - }, - F = { - match: [/operator/, /\s+/, Be], - className: { - 1: "keyword", - 3: "title", - }, - }, - U = { - begin: [/precedencegroup/, /\s+/, Ue], - className: { - 1: "keyword", - 3: "title", - }, - contains: [R], - keywords: [...Te, ...Ce], - end: /}/, - }; - for (const e of O.variants) { - const n = e.contains.find((e) => "interpol" === e.label); - n.keywords = l; - const t = [...c, ...g, ...p, f, O, ...C]; - n.contains = [ - ...t, - { begin: /\(/, end: /\)/, contains: ["self", ...t] }, - ]; - } - return { - name: "Swift", - keywords: l, - contains: [ - ...a, - $, - z, - { - beginKeywords: "struct protocol class extension enum actor", - end: "\\{", - excludeEnd: !0, - keywords: l, - contains: [ - e.inherit(e.TITLE_MODE, { - className: "title.class", - begin: /[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/, - }), - ...c, - ], - }, - F, - U, - { beginKeywords: "import", end: /$/, contains: [...a], relevance: 0 }, - S, - ...c, - ...g, - ...p, - f, - O, - ...C, - ...T, - R, - I, - ], - }; - }, - grmr_typescript: (e) => { - const n = Oe(e), - t = _e, - a = [ - "any", - "void", - "number", - "boolean", - "string", - "object", - "never", - "symbol", - "bigint", - "unknown", - ], - i = { - beginKeywords: "namespace", - end: /\{/, - excludeEnd: !0, - contains: [n.exports.CLASS_REFERENCE], - }, - r = { - beginKeywords: "interface", - end: /\{/, - excludeEnd: !0, - keywords: { keyword: "interface extends", built_in: a }, - contains: [n.exports.CLASS_REFERENCE], - }, - s = { - $pattern: _e, - keyword: he.concat([ - "type", - "namespace", - "interface", - "public", - "private", - "protected", - "implements", - "declare", - "abstract", - "readonly", - "enum", - "override", - ]), - literal: fe, - built_in: ve.concat(a), - "variable.language": we, - }, - o = { className: "meta", begin: "@" + t }, - l = (e, n, t) => { - const a = e.contains.findIndex((e) => e.label === n); - if (-1 === a) throw Error("can not find mode to replace"); - e.contains.splice(a, 1, t); - }; - return ( - Object.assign(n.keywords, s), - n.exports.PARAMS_CONTAINS.push(o), - (n.contains = n.contains.concat([o, i, r])), - l(n, "shebang", e.SHEBANG()), - l(n, "use_strict", { - className: "meta", - relevance: 10, - begin: /^\s*['"]use strict['"]/, - }), - (n.contains.find((e) => "func.def" === e.label).relevance = 0), - Object.assign(n, { - name: "TypeScript", - aliases: ["ts", "tsx", "mts", "cts"], - }), - n - ); - }, - grmr_vbnet: (e) => { - const n = e.regex, - t = /\d{1,2}\/\d{1,2}\/\d{4}/, - a = /\d{4}-\d{1,2}-\d{1,2}/, - i = /(\d|1[012])(:\d+){0,2} *(AM|PM)/, - r = /\d{1,2}(:\d{1,2}){1,2}/, - s = { - className: "literal", - variants: [ - { begin: n.concat(/# */, n.either(a, t), / *#/) }, - { - begin: n.concat(/# */, r, / *#/), - }, - { begin: n.concat(/# */, i, / *#/) }, - { - begin: n.concat( - /# */, - n.either(a, t), - / +/, - n.either(i, r), - / *#/, - ), - }, - ], - }, - o = e.COMMENT(/'''/, /$/, { - contains: [{ className: "doctag", begin: /<\/?/, end: />/ }], - }), - l = e.COMMENT(null, /$/, { - variants: [{ begin: /'/ }, { begin: /([\t ]|^)REM(?=\s)/ }], - }); - return { - name: "Visual Basic .NET", - aliases: ["vb"], - case_insensitive: !0, - classNameAliases: { label: "symbol" }, - keywords: { - keyword: - "addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", - built_in: - "addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", - type: "boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", - literal: "true false nothing", - }, - illegal: "//|\\{|\\}|endif|gosub|variant|wend|^\\$ ", - contains: [ - { - className: "string", - begin: /"(""|[^/n])"C\b/, - }, - { - className: "string", - begin: /"/, - end: /"/, - illegal: /\n/, - contains: [{ begin: /""/ }], - }, - s, - { - className: "number", - relevance: 0, - variants: [ - { - begin: - /\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/, - }, - { begin: /\b\d[\d_]*((U?[SIL])|[%&])?/ }, - { begin: /&H[\dA-F_]+((U?[SIL])|[%&])?/ }, - { - begin: /&O[0-7_]+((U?[SIL])|[%&])?/, - }, - { begin: /&B[01_]+((U?[SIL])|[%&])?/ }, - ], - }, - { - className: "label", - begin: /^\w+:/, - }, - o, - l, - { - className: "meta", - begin: - /[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, - end: /$/, - keywords: { - keyword: - "const disable else elseif enable end externalsource if region then", - }, - contains: [l], - }, - ], - }; - }, - grmr_wasm: (e) => { - e.regex; - const n = e.COMMENT(/\(;/, /;\)/); - return ( - n.contains.push("self"), - { - name: "WebAssembly", - keywords: { - $pattern: /[\w.]+/, - keyword: [ - "anyfunc", - "block", - "br", - "br_if", - "br_table", - "call", - "call_indirect", - "data", - "drop", - "elem", - "else", - "end", - "export", - "func", - "global.get", - "global.set", - "local.get", - "local.set", - "local.tee", - "get_global", - "get_local", - "global", - "if", - "import", - "local", - "loop", - "memory", - "memory.grow", - "memory.size", - "module", - "mut", - "nop", - "offset", - "param", - "result", - "return", - "select", - "set_global", - "set_local", - "start", - "table", - "tee_local", - "then", - "type", - "unreachable", - ], - }, - contains: [ - e.COMMENT(/;;/, /$/), - n, - { - match: [/(?:offset|align)/, /\s*/, /=/], - className: { 1: "keyword", 3: "operator" }, - }, - { className: "variable", begin: /\$[\w_]+/ }, - { - match: /(\((?!;)|\))+/, - className: "punctuation", - relevance: 0, - }, - { - begin: [/(?:func|call|call_indirect)/, /\s+/, /\$[^\s)]+/], - className: { 1: "keyword", 3: "title.function" }, - }, - e.QUOTE_STRING_MODE, - { match: /(i32|i64|f32|f64)(?!\.)/, className: "type" }, - { - className: "keyword", - match: - /\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/, - }, - { - className: "number", - relevance: 0, - match: - /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/, - }, - ], - } - ); - }, - grmr_xml: (e) => { - const n = e.regex, - t = n.concat( - /[\p{L}_]/u, - n.optional(/[\p{L}0-9_.-]*:/u), - /[\p{L}0-9_.-]*/u, - ), - a = { - className: "symbol", - begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/, - }, - i = { - begin: /\s/, - contains: [ - { - className: "keyword", - begin: /#?[a-z_][a-z1-9_-]+/, - illegal: /\n/, - }, - ], - }, - r = e.inherit(i, { begin: /\(/, end: /\)/ }), - s = e.inherit(e.APOS_STRING_MODE, { - className: "string", - }), - o = e.inherit(e.QUOTE_STRING_MODE, { className: "string" }), - l = { - endsWithParent: !0, - illegal: /`]+/ }, - ], - }, - ], - }, - ], - }; - return { - name: "HTML, XML", - aliases: [ - "html", - "xhtml", - "rss", - "atom", - "xjb", - "xsd", - "xsl", - "plist", - "wsf", - "svg", - ], - case_insensitive: !0, - unicodeRegex: !0, - contains: [ - { - className: "meta", - begin: //, - relevance: 10, - contains: [ - i, - o, - s, - r, - { - begin: /\[/, - end: /\]/, - contains: [ - { - className: "meta", - begin: //, - contains: [i, r, o, s], - }, - ], - }, - ], - }, - e.COMMENT(//, { relevance: 10 }), - { begin: //, relevance: 10 }, - a, - { - className: "meta", - end: /\?>/, - variants: [ - { begin: /<\?xml/, relevance: 10, contains: [o] }, - { begin: /<\?[a-z][a-z0-9]+/ }, - ], - }, - { - className: "tag", - begin: /)/, - end: />/, - keywords: { name: "style" }, - contains: [l], - starts: { - end: /<\/style>/, - returnEnd: !0, - subLanguage: ["css", "xml"], - }, - }, - { - className: "tag", - begin: /)/, - end: />/, - keywords: { name: "script" }, - contains: [l], - starts: { - end: /<\/script>/, - returnEnd: !0, - subLanguage: ["javascript", "handlebars", "xml"], - }, - }, - { - className: "tag", - begin: /<>|<\/>/, - }, - { - className: "tag", - begin: n.concat( - //, />/, /\s/))), - ), - end: /\/?>/, - contains: [ - { className: "name", begin: t, relevance: 0, starts: l }, - ], - }, - { - className: "tag", - begin: n.concat(/<\//, n.lookahead(n.concat(t, />/))), - contains: [ - { - className: "name", - begin: t, - relevance: 0, - }, - { begin: />/, relevance: 0, endsParent: !0 }, - ], - }, - ], - }; - }, - grmr_yaml: (e) => { - const n = "true false yes no null", - t = "[\\w#;/?:@&=+$,.~*'()[\\]]+", - a = { - className: "string", - relevance: 0, - variants: [ - { begin: /'/, end: /'/ }, - { begin: /"/, end: /"/ }, - { begin: /\S+/ }, - ], - contains: [ - e.BACKSLASH_ESCAPE, - { - className: "template-variable", - variants: [ - { begin: /\{\{/, end: /\}\}/ }, - { begin: /%\{/, end: /\}/ }, - ], - }, - ], - }, - i = e.inherit(a, { - variants: [ - { begin: /'/, end: /'/ }, - { begin: /"/, end: /"/ }, - { begin: /[^\s,{}[\]]+/ }, - ], - }), - r = { - end: ",", - endsWithParent: !0, - excludeEnd: !0, - keywords: n, - relevance: 0, - }, - s = { - begin: /\{/, - end: /\}/, - contains: [r], - illegal: "\\n", - relevance: 0, - }, - o = { - begin: "\\[", - end: "\\]", - contains: [r], - illegal: "\\n", - relevance: 0, - }, - l = [ - { - className: "attr", - variants: [ - { - begin: "\\w[\\w :\\/.-]*:(?=[ \t]|$)", - }, - { begin: '"\\w[\\w :\\/.-]*":(?=[ \t]|$)' }, - { - begin: "'\\w[\\w :\\/.-]*':(?=[ \t]|$)", - }, - ], - }, - { className: "meta", begin: "^---\\s*$", relevance: 10 }, - { - className: "string", - begin: - "[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*", - }, - { - begin: "<%[%=-]?", - end: "[%-]?%>", - subLanguage: "ruby", - excludeBegin: !0, - excludeEnd: !0, - relevance: 0, - }, - { className: "type", begin: "!\\w+!" + t }, - { className: "type", begin: "!<" + t + ">" }, - { className: "type", begin: "!" + t }, - { className: "type", begin: "!!" + t }, - { className: "meta", begin: "&" + e.UNDERSCORE_IDENT_RE + "$" }, - { className: "meta", begin: "\\*" + e.UNDERSCORE_IDENT_RE + "$" }, - { className: "bullet", begin: "-(?=[ ]|$)", relevance: 0 }, - e.HASH_COMMENT_MODE, - { beginKeywords: n, keywords: { literal: n } }, - { - className: "number", - begin: - "\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b", - }, - { className: "number", begin: e.C_NUMBER_RE + "\\b", relevance: 0 }, - s, - o, - a, - ], - c = [...l]; - return ( - c.pop(), - c.push(i), - (r.contains = c), - { name: "YAML", case_insensitive: !0, aliases: ["yml"], contains: l } - ); - }, - }); - const He = ae; - for (const e of Object.keys(Ke)) { - const n = e.replace("grmr_", "").replace("_", "-"); - He.registerLanguage(n, Ke[e]); - } - return He; -})(); -"object" == typeof exports && - "undefined" != typeof module && - (module.exports = hljs); diff --git a/web/static/htmx.min.js b/web/static/htmx.min.js deleted file mode 100644 index 52c16cd..0000000 --- a/web/static/htmx.min.js +++ /dev/null @@ -1,3382 +0,0 @@ -(function (e, t) { - if (typeof define === "function" && define.amd) { - define([], t); - } else if (typeof module === "object" && module.exports) { - module.exports = t(); - } else { - e.htmx = e.htmx || t(); - } -})(typeof self !== "undefined" ? self : this, function () { - return (function () { - "use strict"; - var Q = { - onLoad: F, - process: zt, - on: de, - off: ge, - trigger: ce, - ajax: Nr, - find: C, - findAll: f, - closest: v, - values: function (e, t) { - var r = dr(e, t || "post"); - return r.values; - }, - remove: _, - addClass: z, - removeClass: n, - toggleClass: $, - takeClass: W, - defineExtension: Ur, - removeExtension: Br, - logAll: V, - logNone: j, - logger: null, - config: { - historyEnabled: true, - historyCacheSize: 10, - refreshOnHistoryMiss: false, - defaultSwapStyle: "innerHTML", - defaultSwapDelay: 0, - defaultSettleDelay: 20, - includeIndicatorStyles: true, - indicatorClass: "htmx-indicator", - requestClass: "htmx-request", - addedClass: "htmx-added", - settlingClass: "htmx-settling", - swappingClass: "htmx-swapping", - allowEval: true, - allowScriptTags: true, - inlineScriptNonce: "", - attributesToSettle: ["class", "style", "width", "height"], - withCredentials: false, - timeout: 0, - wsReconnectDelay: "full-jitter", - wsBinaryType: "blob", - disableSelector: "[hx-disable], [data-hx-disable]", - useTemplateFragments: false, - scrollBehavior: "smooth", - defaultFocusScroll: false, - getCacheBusterParam: false, - globalViewTransitions: false, - methodsThatUseUrlParams: ["get"], - selfRequestsOnly: false, - ignoreTitle: false, - scrollIntoViewOnBoost: true, - triggerSpecsCache: null, - }, - parseInterval: d, - _: t, - createEventSource: function (e) { - return new EventSource(e, { withCredentials: true }); - }, - createWebSocket: function (e) { - var t = new WebSocket(e, []); - t.binaryType = Q.config.wsBinaryType; - return t; - }, - version: "1.9.10", - }; - var r = { - addTriggerHandler: Lt, - bodyContains: se, - canAccessLocalStorage: U, - findThisElement: xe, - filterValues: yr, - hasAttribute: o, - getAttributeValue: te, - getClosestAttributeValue: ne, - getClosestMatch: c, - getExpressionVars: Hr, - getHeaders: xr, - getInputValues: dr, - getInternalData: ae, - getSwapSpecification: wr, - getTriggerSpecs: it, - getTarget: ye, - makeFragment: l, - mergeObjects: le, - makeSettleInfo: T, - oobSwap: Ee, - querySelectorExt: ue, - selectAndSwap: je, - settleImmediately: nr, - shouldCancel: ut, - triggerEvent: ce, - triggerErrorEvent: fe, - withExtensions: R, - }; - var w = ["get", "post", "put", "delete", "patch"]; - var i = w - .map(function (e) { - return "[hx-" + e + "], [data-hx-" + e + "]"; - }) - .join(", "); - var S = e("head"), - q = e("title"), - H = e("svg", true); - function e(e, t = false) { - return new RegExp( - `<${e}(\\s[^>]*>|>)([\\s\\S]*?)<\\/${e}>`, - t ? "gim" : "im", - ); - } - function d(e) { - if (e == undefined) { - return undefined; - } - let t = NaN; - if (e.slice(-2) == "ms") { - t = parseFloat(e.slice(0, -2)); - } else if (e.slice(-1) == "s") { - t = parseFloat(e.slice(0, -1)) * 1e3; - } else if (e.slice(-1) == "m") { - t = parseFloat(e.slice(0, -1)) * 1e3 * 60; - } else { - t = parseFloat(e); - } - return isNaN(t) ? undefined : t; - } - function ee(e, t) { - return e.getAttribute && e.getAttribute(t); - } - function o(e, t) { - return ( - e.hasAttribute && (e.hasAttribute(t) || e.hasAttribute("data-" + t)) - ); - } - function te(e, t) { - return ee(e, t) || ee(e, "data-" + t); - } - function u(e) { - return e.parentElement; - } - function re() { - return document; - } - function c(e, t) { - while (e && !t(e)) { - e = u(e); - } - return e ? e : null; - } - function L(e, t, r) { - var n = te(t, r); - var i = te(t, "hx-disinherit"); - if (e !== t && i && (i === "*" || i.split(" ").indexOf(r) >= 0)) { - return "unset"; - } else { - return n; - } - } - function ne(t, r) { - var n = null; - c(t, function (e) { - return (n = L(t, e, r)); - }); - if (n !== "unset") { - return n; - } - } - function h(e, t) { - var r = - e.matches || - e.matchesSelector || - e.msMatchesSelector || - e.mozMatchesSelector || - e.webkitMatchesSelector || - e.oMatchesSelector; - return r && r.call(e, t); - } - function A(e) { - var t = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; - var r = t.exec(e); - if (r) { - return r[1].toLowerCase(); - } else { - return ""; - } - } - function a(e, t) { - var r = new DOMParser(); - var n = r.parseFromString(e, "text/html"); - var i = n.body; - while (t > 0) { - t--; - i = i.firstChild; - } - if (i == null) { - i = re().createDocumentFragment(); - } - return i; - } - function N(e) { - return /", 0); - return i.querySelector("template").content; - } - switch (r) { - case "thead": - case "tbody": - case "tfoot": - case "colgroup": - case "caption": - return a("" + n + "
", 1); - case "col": - return a("" + n + "
", 2); - case "tr": - return a("" + n + "
", 2); - case "td": - case "th": - return a("" + n + "
", 3); - case "script": - case "style": - return a("
" + n + "
", 1); - default: - return a(n, 0); - } - } - function ie(e) { - if (e) { - e(); - } - } - function I(e, t) { - return Object.prototype.toString.call(e) === "[object " + t + "]"; - } - function k(e) { - return I(e, "Function"); - } - function P(e) { - return I(e, "Object"); - } - function ae(e) { - var t = "htmx-internal-data"; - var r = e[t]; - if (!r) { - r = e[t] = {}; - } - return r; - } - function M(e) { - var t = []; - if (e) { - for (var r = 0; r < e.length; r++) { - t.push(e[r]); - } - } - return t; - } - function oe(e, t) { - if (e) { - for (var r = 0; r < e.length; r++) { - t(e[r]); - } - } - } - function X(e) { - var t = e.getBoundingClientRect(); - var r = t.top; - var n = t.bottom; - return r < window.innerHeight && n >= 0; - } - function se(e) { - if (e.getRootNode && e.getRootNode() instanceof window.ShadowRoot) { - return re().body.contains(e.getRootNode().host); - } else { - return re().body.contains(e); - } - } - function D(e) { - return e.trim().split(/\s+/); - } - function le(e, t) { - for (var r in t) { - if (t.hasOwnProperty(r)) { - e[r] = t[r]; - } - } - return e; - } - function E(e) { - try { - return JSON.parse(e); - } catch (e) { - b(e); - return null; - } - } - function U() { - var e = "htmx:localStorageTest"; - try { - localStorage.setItem(e, e); - localStorage.removeItem(e); - return true; - } catch (e) { - return false; - } - } - function B(t) { - try { - var e = new URL(t); - if (e) { - t = e.pathname + e.search; - } - if (!/^\/$/.test(t)) { - t = t.replace(/\/+$/, ""); - } - return t; - } catch (e) { - return t; - } - } - function t(e) { - return Tr(re().body, function () { - return eval(e); - }); - } - function F(t) { - var e = Q.on("htmx:load", function (e) { - t(e.detail.elt); - }); - return e; - } - function V() { - Q.logger = function (e, t, r) { - if (console) { - console.log(t, e, r); - } - }; - } - function j() { - Q.logger = null; - } - function C(e, t) { - if (t) { - return e.querySelector(t); - } else { - return C(re(), e); - } - } - function f(e, t) { - if (t) { - return e.querySelectorAll(t); - } else { - return f(re(), e); - } - } - function _(e, t) { - e = g(e); - if (t) { - setTimeout(function () { - _(e); - e = null; - }, t); - } else { - e.parentElement.removeChild(e); - } - } - function z(e, t, r) { - e = g(e); - if (r) { - setTimeout(function () { - z(e, t); - e = null; - }, r); - } else { - e.classList && e.classList.add(t); - } - } - function n(e, t, r) { - e = g(e); - if (r) { - setTimeout(function () { - n(e, t); - e = null; - }, r); - } else { - if (e.classList) { - e.classList.remove(t); - if (e.classList.length === 0) { - e.removeAttribute("class"); - } - } - } - } - function $(e, t) { - e = g(e); - e.classList.toggle(t); - } - function W(e, t) { - e = g(e); - oe(e.parentElement.children, function (e) { - n(e, t); - }); - z(e, t); - } - function v(e, t) { - e = g(e); - if (e.closest) { - return e.closest(t); - } else { - do { - if (e == null || h(e, t)) { - return e; - } - } while ((e = e && u(e))); - return null; - } - } - function s(e, t) { - return e.substring(0, t.length) === t; - } - function G(e, t) { - return e.substring(e.length - t.length) === t; - } - function J(e) { - var t = e.trim(); - if (s(t, "<") && G(t, "/>")) { - return t.substring(1, t.length - 2); - } else { - return t; - } - } - function Z(e, t) { - if (t.indexOf("closest ") === 0) { - return [v(e, J(t.substr(8)))]; - } else if (t.indexOf("find ") === 0) { - return [C(e, J(t.substr(5)))]; - } else if (t === "next") { - return [e.nextElementSibling]; - } else if (t.indexOf("next ") === 0) { - return [K(e, J(t.substr(5)))]; - } else if (t === "previous") { - return [e.previousElementSibling]; - } else if (t.indexOf("previous ") === 0) { - return [Y(e, J(t.substr(9)))]; - } else if (t === "document") { - return [document]; - } else if (t === "window") { - return [window]; - } else if (t === "body") { - return [document.body]; - } else { - return re().querySelectorAll(J(t)); - } - } - var K = function (e, t) { - var r = re().querySelectorAll(t); - for (var n = 0; n < r.length; n++) { - var i = r[n]; - if (i.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_PRECEDING) { - return i; - } - } - }; - var Y = function (e, t) { - var r = re().querySelectorAll(t); - for (var n = r.length - 1; n >= 0; n--) { - var i = r[n]; - if (i.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_FOLLOWING) { - return i; - } - } - }; - function ue(e, t) { - if (t) { - return Z(e, t)[0]; - } else { - return Z(re().body, e)[0]; - } - } - function g(e) { - if (I(e, "String")) { - return C(e); - } else { - return e; - } - } - function ve(e, t, r) { - if (k(t)) { - return { target: re().body, event: e, listener: t }; - } else { - return { target: g(e), event: t, listener: r }; - } - } - function de(t, r, n) { - jr(function () { - var e = ve(t, r, n); - e.target.addEventListener(e.event, e.listener); - }); - var e = k(r); - return e ? r : n; - } - function ge(t, r, n) { - jr(function () { - var e = ve(t, r, n); - e.target.removeEventListener(e.event, e.listener); - }); - return k(r) ? r : n; - } - var me = re().createElement("output"); - function pe(e, t) { - var r = ne(e, t); - if (r) { - if (r === "this") { - return [xe(e, t)]; - } else { - var n = Z(e, r); - if (n.length === 0) { - b('The selector "' + r + '" on ' + t + " returned no matches!"); - return [me]; - } else { - return n; - } - } - } - } - function xe(e, t) { - return c(e, function (e) { - return te(e, t) != null; - }); - } - function ye(e) { - var t = ne(e, "hx-target"); - if (t) { - if (t === "this") { - return xe(e, "hx-target"); - } else { - return ue(e, t); - } - } else { - var r = ae(e); - if (r.boosted) { - return re().body; - } else { - return e; - } - } - } - function be(e) { - var t = Q.config.attributesToSettle; - for (var r = 0; r < t.length; r++) { - if (e === t[r]) { - return true; - } - } - return false; - } - function we(t, r) { - oe(t.attributes, function (e) { - if (!r.hasAttribute(e.name) && be(e.name)) { - t.removeAttribute(e.name); - } - }); - oe(r.attributes, function (e) { - if (be(e.name)) { - t.setAttribute(e.name, e.value); - } - }); - } - function Se(e, t) { - var r = Fr(t); - for (var n = 0; n < r.length; n++) { - var i = r[n]; - try { - if (i.isInlineSwap(e)) { - return true; - } - } catch (e) { - b(e); - } - } - return e === "outerHTML"; - } - function Ee(e, i, a) { - var t = "#" + ee(i, "id"); - var o = "outerHTML"; - if (e === "true") { - } else if (e.indexOf(":") > 0) { - o = e.substr(0, e.indexOf(":")); - t = e.substr(e.indexOf(":") + 1, e.length); - } else { - o = e; - } - var r = re().querySelectorAll(t); - if (r) { - oe(r, function (e) { - var t; - var r = i.cloneNode(true); - t = re().createDocumentFragment(); - t.appendChild(r); - if (!Se(o, e)) { - t = r; - } - var n = { shouldSwap: true, target: e, fragment: t }; - if (!ce(e, "htmx:oobBeforeSwap", n)) return; - e = n.target; - if (n["shouldSwap"]) { - Fe(o, e, e, t, a); - } - oe(a.elts, function (e) { - ce(e, "htmx:oobAfterSwap", n); - }); - }); - i.parentNode.removeChild(i); - } else { - i.parentNode.removeChild(i); - fe(re().body, "htmx:oobErrorNoTarget", { content: i }); - } - return e; - } - function Ce(e, t, r) { - var n = ne(e, "hx-select-oob"); - if (n) { - var i = n.split(","); - for (var a = 0; a < i.length; a++) { - var o = i[a].split(":", 2); - var s = o[0].trim(); - if (s.indexOf("#") === 0) { - s = s.substring(1); - } - var l = o[1] || "true"; - var u = t.querySelector("#" + s); - if (u) { - Ee(l, u, r); - } - } - } - oe(f(t, "[hx-swap-oob], [data-hx-swap-oob]"), function (e) { - var t = te(e, "hx-swap-oob"); - if (t != null) { - Ee(t, e, r); - } - }); - } - function Re(e) { - oe(f(e, "[hx-preserve], [data-hx-preserve]"), function (e) { - var t = te(e, "id"); - var r = re().getElementById(t); - if (r != null) { - e.parentNode.replaceChild(r, e); - } - }); - } - function Te(o, e, s) { - oe(e.querySelectorAll("[id]"), function (e) { - var t = ee(e, "id"); - if (t && t.length > 0) { - var r = t.replace("'", "\\'"); - var n = e.tagName.replace(":", "\\:"); - var i = o.querySelector(n + "[id='" + r + "']"); - if (i && i !== o) { - var a = e.cloneNode(); - we(e, i); - s.tasks.push(function () { - we(e, a); - }); - } - } - }); - } - function Oe(e) { - return function () { - n(e, Q.config.addedClass); - zt(e); - Nt(e); - qe(e); - ce(e, "htmx:load"); - }; - } - function qe(e) { - var t = "[autofocus]"; - var r = h(e, t) ? e : e.querySelector(t); - if (r != null) { - r.focus(); - } - } - function m(e, t, r, n) { - Te(e, r, n); - while (r.childNodes.length > 0) { - var i = r.firstChild; - z(i, Q.config.addedClass); - e.insertBefore(i, t); - if (i.nodeType !== Node.TEXT_NODE && i.nodeType !== Node.COMMENT_NODE) { - n.tasks.push(Oe(i)); - } - } - } - function He(e, t) { - var r = 0; - while (r < e.length) { - t = ((t << 5) - t + e.charCodeAt(r++)) | 0; - } - return t; - } - function Le(e) { - var t = 0; - if (e.attributes) { - for (var r = 0; r < e.attributes.length; r++) { - var n = e.attributes[r]; - if (n.value) { - t = He(n.name, t); - t = He(n.value, t); - } - } - } - return t; - } - function Ae(e) { - var t = ae(e); - if (t.onHandlers) { - for (var r = 0; r < t.onHandlers.length; r++) { - const n = t.onHandlers[r]; - e.removeEventListener(n.event, n.listener); - } - delete t.onHandlers; - } - } - function Ne(e) { - var t = ae(e); - if (t.timeout) { - clearTimeout(t.timeout); - } - if (t.webSocket) { - t.webSocket.close(); - } - if (t.sseEventSource) { - t.sseEventSource.close(); - } - if (t.listenerInfos) { - oe(t.listenerInfos, function (e) { - if (e.on) { - e.on.removeEventListener(e.trigger, e.listener); - } - }); - } - Ae(e); - oe(Object.keys(t), function (e) { - delete t[e]; - }); - } - function p(e) { - ce(e, "htmx:beforeCleanupElement"); - Ne(e); - if (e.children) { - oe(e.children, function (e) { - p(e); - }); - } - } - function Ie(t, e, r) { - if (t.tagName === "BODY") { - return Ue(t, e, r); - } else { - var n; - var i = t.previousSibling; - m(u(t), t, e, r); - if (i == null) { - n = u(t).firstChild; - } else { - n = i.nextSibling; - } - r.elts = r.elts.filter(function (e) { - return e != t; - }); - while (n && n !== t) { - if (n.nodeType === Node.ELEMENT_NODE) { - r.elts.push(n); - } - n = n.nextElementSibling; - } - p(t); - u(t).removeChild(t); - } - } - function ke(e, t, r) { - return m(e, e.firstChild, t, r); - } - function Pe(e, t, r) { - return m(u(e), e, t, r); - } - function Me(e, t, r) { - return m(e, null, t, r); - } - function Xe(e, t, r) { - return m(u(e), e.nextSibling, t, r); - } - function De(e, t, r) { - p(e); - return u(e).removeChild(e); - } - function Ue(e, t, r) { - var n = e.firstChild; - m(e, n, t, r); - if (n) { - while (n.nextSibling) { - p(n.nextSibling); - e.removeChild(n.nextSibling); - } - p(n); - e.removeChild(n); - } - } - function Be(e, t, r) { - var n = r || ne(e, "hx-select"); - if (n) { - var i = re().createDocumentFragment(); - oe(t.querySelectorAll(n), function (e) { - i.appendChild(e); - }); - t = i; - } - return t; - } - function Fe(e, t, r, n, i) { - switch (e) { - case "none": - return; - case "outerHTML": - Ie(r, n, i); - return; - case "afterbegin": - ke(r, n, i); - return; - case "beforebegin": - Pe(r, n, i); - return; - case "beforeend": - Me(r, n, i); - return; - case "afterend": - Xe(r, n, i); - return; - case "delete": - De(r, n, i); - return; - default: - var a = Fr(t); - for (var o = 0; o < a.length; o++) { - var s = a[o]; - try { - var l = s.handleSwap(e, r, n, i); - if (l) { - if (typeof l.length !== "undefined") { - for (var u = 0; u < l.length; u++) { - var f = l[u]; - if ( - f.nodeType !== Node.TEXT_NODE && - f.nodeType !== Node.COMMENT_NODE - ) { - i.tasks.push(Oe(f)); - } - } - } - return; - } - } catch (e) { - b(e); - } - } - if (e === "innerHTML") { - Ue(r, n, i); - } else { - Fe(Q.config.defaultSwapStyle, t, r, n, i); - } - } - } - function Ve(e) { - if (e.indexOf(" -1) { - var t = e.replace(H, ""); - var r = t.match(q); - if (r) { - return r[2]; - } - } - } - function je(e, t, r, n, i, a) { - i.title = Ve(n); - var o = l(n); - if (o) { - Ce(r, o, i); - o = Be(r, o, a); - Re(o); - return Fe(e, r, t, o, i); - } - } - function _e(e, t, r) { - var n = e.getResponseHeader(t); - if (n.indexOf("{") === 0) { - var i = E(n); - for (var a in i) { - if (i.hasOwnProperty(a)) { - var o = i[a]; - if (!P(o)) { - o = { value: o }; - } - ce(r, a, o); - } - } - } else { - var s = n.split(","); - for (var l = 0; l < s.length; l++) { - ce(r, s[l].trim(), []); - } - } - } - var ze = /\s/; - var x = /[\s,]/; - var $e = /[_$a-zA-Z]/; - var We = /[_$a-zA-Z0-9]/; - var Ge = ['"', "'", "/"]; - var Je = /[^\s]/; - var Ze = /[{(]/; - var Ke = /[})]/; - function Ye(e) { - var t = []; - var r = 0; - while (r < e.length) { - if ($e.exec(e.charAt(r))) { - var n = r; - while (We.exec(e.charAt(r + 1))) { - r++; - } - t.push(e.substr(n, r - n + 1)); - } else if (Ge.indexOf(e.charAt(r)) !== -1) { - var i = e.charAt(r); - var n = r; - r++; - while (r < e.length && e.charAt(r) !== i) { - if (e.charAt(r) === "\\") { - r++; - } - r++; - } - t.push(e.substr(n, r - n + 1)); - } else { - var a = e.charAt(r); - t.push(a); - } - r++; - } - return t; - } - function Qe(e, t, r) { - return ( - $e.exec(e.charAt(0)) && - e !== "true" && - e !== "false" && - e !== "this" && - e !== r && - t !== "." - ); - } - function et(e, t, r) { - if (t[0] === "[") { - t.shift(); - var n = 1; - var i = " return (function(" + r + "){ return ("; - var a = null; - while (t.length > 0) { - var o = t[0]; - if (o === "]") { - n--; - if (n === 0) { - if (a === null) { - i = i + "true"; - } - t.shift(); - i += ")})"; - try { - var s = Tr( - e, - function () { - return Function(i)(); - }, - function () { - return true; - }, - ); - s.source = i; - return s; - } catch (e) { - fe(re().body, "htmx:syntax:error", { error: e, source: i }); - return null; - } - } - } else if (o === "[") { - n++; - } - if (Qe(o, a, r)) { - i += - "((" + - r + - "." + - o + - ") ? (" + - r + - "." + - o + - ") : (window." + - o + - "))"; - } else { - i = i + o; - } - a = t.shift(); - } - } - } - function y(e, t) { - var r = ""; - while (e.length > 0 && !t.test(e[0])) { - r += e.shift(); - } - return r; - } - function tt(e) { - var t; - if (e.length > 0 && Ze.test(e[0])) { - e.shift(); - t = y(e, Ke).trim(); - e.shift(); - } else { - t = y(e, x); - } - return t; - } - var rt = "input, textarea, select"; - function nt(e, t, r) { - var n = []; - var i = Ye(t); - do { - y(i, Je); - var a = i.length; - var o = y(i, /[,\[\s]/); - if (o !== "") { - if (o === "every") { - var s = { trigger: "every" }; - y(i, Je); - s.pollInterval = d(y(i, /[,\[\s]/)); - y(i, Je); - var l = et(e, i, "event"); - if (l) { - s.eventFilter = l; - } - n.push(s); - } else if (o.indexOf("sse:") === 0) { - n.push({ trigger: "sse", sseEvent: o.substr(4) }); - } else { - var u = { trigger: o }; - var l = et(e, i, "event"); - if (l) { - u.eventFilter = l; - } - while (i.length > 0 && i[0] !== ",") { - y(i, Je); - var f = i.shift(); - if (f === "changed") { - u.changed = true; - } else if (f === "once") { - u.once = true; - } else if (f === "consume") { - u.consume = true; - } else if (f === "delay" && i[0] === ":") { - i.shift(); - u.delay = d(y(i, x)); - } else if (f === "from" && i[0] === ":") { - i.shift(); - if (Ze.test(i[0])) { - var c = tt(i); - } else { - var c = y(i, x); - if ( - c === "closest" || - c === "find" || - c === "next" || - c === "previous" - ) { - i.shift(); - var h = tt(i); - if (h.length > 0) { - c += " " + h; - } - } - } - u.from = c; - } else if (f === "target" && i[0] === ":") { - i.shift(); - u.target = tt(i); - } else if (f === "throttle" && i[0] === ":") { - i.shift(); - u.throttle = d(y(i, x)); - } else if (f === "queue" && i[0] === ":") { - i.shift(); - u.queue = y(i, x); - } else if (f === "root" && i[0] === ":") { - i.shift(); - u[f] = tt(i); - } else if (f === "threshold" && i[0] === ":") { - i.shift(); - u[f] = y(i, x); - } else { - fe(e, "htmx:syntax:error", { token: i.shift() }); - } - } - n.push(u); - } - } - if (i.length === a) { - fe(e, "htmx:syntax:error", { token: i.shift() }); - } - y(i, Je); - } while (i[0] === "," && i.shift()); - if (r) { - r[t] = n; - } - return n; - } - function it(e) { - var t = te(e, "hx-trigger"); - var r = []; - if (t) { - var n = Q.config.triggerSpecsCache; - r = (n && n[t]) || nt(e, t, n); - } - if (r.length > 0) { - return r; - } else if (h(e, "form")) { - return [{ trigger: "submit" }]; - } else if (h(e, 'input[type="button"], input[type="submit"]')) { - return [{ trigger: "click" }]; - } else if (h(e, rt)) { - return [{ trigger: "change" }]; - } else { - return [{ trigger: "click" }]; - } - } - function at(e) { - ae(e).cancelled = true; - } - function ot(e, t, r) { - var n = ae(e); - n.timeout = setTimeout(function () { - if (se(e) && n.cancelled !== true) { - if (!ct(r, e, Wt("hx:poll:trigger", { triggerSpec: r, target: e }))) { - t(e); - } - ot(e, t, r); - } - }, r.pollInterval); - } - function st(e) { - return ( - location.hostname === e.hostname && - ee(e, "href") && - ee(e, "href").indexOf("#") !== 0 - ); - } - function lt(t, r, e) { - if ( - (t.tagName === "A" && - st(t) && - (t.target === "" || t.target === "_self")) || - t.tagName === "FORM" - ) { - r.boosted = true; - var n, i; - if (t.tagName === "A") { - n = "get"; - i = ee(t, "href"); - } else { - var a = ee(t, "method"); - n = a ? a.toLowerCase() : "get"; - if (n === "get") { - } - i = ee(t, "action"); - } - e.forEach(function (e) { - ht( - t, - function (e, t) { - if (v(e, Q.config.disableSelector)) { - p(e); - return; - } - he(n, i, e, t); - }, - r, - e, - true, - ); - }); - } - } - function ut(e, t) { - if (e.type === "submit" || e.type === "click") { - if (t.tagName === "FORM") { - return true; - } - if (h(t, 'input[type="submit"], button') && v(t, "form") !== null) { - return true; - } - if ( - t.tagName === "A" && - t.href && - (t.getAttribute("href") === "#" || - t.getAttribute("href").indexOf("#") !== 0) - ) { - return true; - } - } - return false; - } - function ft(e, t) { - return ( - ae(e).boosted && - e.tagName === "A" && - t.type === "click" && - (t.ctrlKey || t.metaKey) - ); - } - function ct(e, t, r) { - var n = e.eventFilter; - if (n) { - try { - return n.call(t, r) !== true; - } catch (e) { - fe(re().body, "htmx:eventFilter:error", { - error: e, - source: n.source, - }); - return true; - } - } - return false; - } - function ht(a, o, e, s, l) { - var u = ae(a); - var t; - if (s.from) { - t = Z(a, s.from); - } else { - t = [a]; - } - if (s.changed) { - t.forEach(function (e) { - var t = ae(e); - t.lastValue = e.value; - }); - } - oe(t, function (n) { - var i = function (e) { - if (!se(a)) { - n.removeEventListener(s.trigger, i); - return; - } - if (ft(a, e)) { - return; - } - if (l || ut(e, a)) { - e.preventDefault(); - } - if (ct(s, a, e)) { - return; - } - var t = ae(e); - t.triggerSpec = s; - if (t.handledFor == null) { - t.handledFor = []; - } - if (t.handledFor.indexOf(a) < 0) { - t.handledFor.push(a); - if (s.consume) { - e.stopPropagation(); - } - if (s.target && e.target) { - if (!h(e.target, s.target)) { - return; - } - } - if (s.once) { - if (u.triggeredOnce) { - return; - } else { - u.triggeredOnce = true; - } - } - if (s.changed) { - var r = ae(n); - if (r.lastValue === n.value) { - return; - } - r.lastValue = n.value; - } - if (u.delayed) { - clearTimeout(u.delayed); - } - if (u.throttle) { - return; - } - if (s.throttle > 0) { - if (!u.throttle) { - o(a, e); - u.throttle = setTimeout(function () { - u.throttle = null; - }, s.throttle); - } - } else if (s.delay > 0) { - u.delayed = setTimeout(function () { - o(a, e); - }, s.delay); - } else { - ce(a, "htmx:trigger"); - o(a, e); - } - } - }; - if (e.listenerInfos == null) { - e.listenerInfos = []; - } - e.listenerInfos.push({ trigger: s.trigger, listener: i, on: n }); - n.addEventListener(s.trigger, i); - }); - } - var vt = false; - var dt = null; - function gt() { - if (!dt) { - dt = function () { - vt = true; - }; - window.addEventListener("scroll", dt); - setInterval(function () { - if (vt) { - vt = false; - oe( - re().querySelectorAll( - "[hx-trigger='revealed'],[data-hx-trigger='revealed']", - ), - function (e) { - mt(e); - }, - ); - } - }, 200); - } - } - function mt(t) { - if (!o(t, "data-hx-revealed") && X(t)) { - t.setAttribute("data-hx-revealed", "true"); - var e = ae(t); - if (e.initHash) { - ce(t, "revealed"); - } else { - t.addEventListener( - "htmx:afterProcessNode", - function (e) { - ce(t, "revealed"); - }, - { once: true }, - ); - } - } - } - function pt(e, t, r) { - var n = D(r); - for (var i = 0; i < n.length; i++) { - var a = n[i].split(/:(.+)/); - if (a[0] === "connect") { - xt(e, a[1], 0); - } - if (a[0] === "send") { - bt(e); - } - } - } - function xt(s, r, n) { - if (!se(s)) { - return; - } - if (r.indexOf("/") == 0) { - var e = location.hostname + (location.port ? ":" + location.port : ""); - if (location.protocol == "https:") { - r = "wss://" + e + r; - } else if (location.protocol == "http:") { - r = "ws://" + e + r; - } - } - var t = Q.createWebSocket(r); - t.onerror = function (e) { - fe(s, "htmx:wsError", { error: e, socket: t }); - yt(s); - }; - t.onclose = function (e) { - if ([1006, 1012, 1013].indexOf(e.code) >= 0) { - var t = wt(n); - setTimeout(function () { - xt(s, r, n + 1); - }, t); - } - }; - t.onopen = function (e) { - n = 0; - }; - ae(s).webSocket = t; - t.addEventListener("message", function (e) { - if (yt(s)) { - return; - } - var t = e.data; - R(s, function (e) { - t = e.transformResponse(t, null, s); - }); - var r = T(s); - var n = l(t); - var i = M(n.children); - for (var a = 0; a < i.length; a++) { - var o = i[a]; - Ee(te(o, "hx-swap-oob") || "true", o, r); - } - nr(r.tasks); - }); - } - function yt(e) { - if (!se(e)) { - ae(e).webSocket.close(); - return true; - } - } - function bt(u) { - var f = c(u, function (e) { - return ae(e).webSocket != null; - }); - if (f) { - u.addEventListener(it(u)[0].trigger, function (e) { - var t = ae(f).webSocket; - var r = xr(u, f); - var n = dr(u, "post"); - var i = n.errors; - var a = n.values; - var o = Hr(u); - var s = le(a, o); - var l = yr(s, u); - l["HEADERS"] = r; - if (i && i.length > 0) { - ce(u, "htmx:validation:halted", i); - return; - } - t.send(JSON.stringify(l)); - if (ut(e, u)) { - e.preventDefault(); - } - }); - } else { - fe(u, "htmx:noWebSocketSourceError"); - } - } - function wt(e) { - var t = Q.config.wsReconnectDelay; - if (typeof t === "function") { - return t(e); - } - if (t === "full-jitter") { - var r = Math.min(e, 6); - var n = 1e3 * Math.pow(2, r); - return n * Math.random(); - } - b( - 'htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"', - ); - } - function St(e, t, r) { - var n = D(r); - for (var i = 0; i < n.length; i++) { - var a = n[i].split(/:(.+)/); - if (a[0] === "connect") { - Et(e, a[1]); - } - if (a[0] === "swap") { - Ct(e, a[1]); - } - } - } - function Et(t, e) { - var r = Q.createEventSource(e); - r.onerror = function (e) { - fe(t, "htmx:sseError", { error: e, source: r }); - Tt(t); - }; - ae(t).sseEventSource = r; - } - function Ct(a, o) { - var s = c(a, Ot); - if (s) { - var l = ae(s).sseEventSource; - var u = function (e) { - if (Tt(s)) { - return; - } - if (!se(a)) { - l.removeEventListener(o, u); - return; - } - var t = e.data; - R(a, function (e) { - t = e.transformResponse(t, null, a); - }); - var r = wr(a); - var n = ye(a); - var i = T(a); - je(r.swapStyle, n, a, t, i); - nr(i.tasks); - ce(a, "htmx:sseMessage", e); - }; - ae(a).sseListener = u; - l.addEventListener(o, u); - } else { - fe(a, "htmx:noSSESourceError"); - } - } - function Rt(e, t, r) { - var n = c(e, Ot); - if (n) { - var i = ae(n).sseEventSource; - var a = function () { - if (!Tt(n)) { - if (se(e)) { - t(e); - } else { - i.removeEventListener(r, a); - } - } - }; - ae(e).sseListener = a; - i.addEventListener(r, a); - } else { - fe(e, "htmx:noSSESourceError"); - } - } - function Tt(e) { - if (!se(e)) { - ae(e).sseEventSource.close(); - return true; - } - } - function Ot(e) { - return ae(e).sseEventSource != null; - } - function qt(e, t, r, n) { - var i = function () { - if (!r.loaded) { - r.loaded = true; - t(e); - } - }; - if (n > 0) { - setTimeout(i, n); - } else { - i(); - } - } - function Ht(t, i, e) { - var a = false; - oe(w, function (r) { - if (o(t, "hx-" + r)) { - var n = te(t, "hx-" + r); - a = true; - i.path = n; - i.verb = r; - e.forEach(function (e) { - Lt(t, e, i, function (e, t) { - if (v(e, Q.config.disableSelector)) { - p(e); - return; - } - he(r, n, e, t); - }); - }); - } - }); - return a; - } - function Lt(n, e, t, r) { - if (e.sseEvent) { - Rt(n, r, e.sseEvent); - } else if (e.trigger === "revealed") { - gt(); - ht(n, r, t, e); - mt(n); - } else if (e.trigger === "intersect") { - var i = {}; - if (e.root) { - i.root = ue(n, e.root); - } - if (e.threshold) { - i.threshold = parseFloat(e.threshold); - } - var a = new IntersectionObserver(function (e) { - for (var t = 0; t < e.length; t++) { - var r = e[t]; - if (r.isIntersecting) { - ce(n, "intersect"); - break; - } - } - }, i); - a.observe(n); - ht(n, r, t, e); - } else if (e.trigger === "load") { - if (!ct(e, n, Wt("load", { elt: n }))) { - qt(n, r, t, e.delay); - } - } else if (e.pollInterval > 0) { - t.polling = true; - ot(n, r, e); - } else { - ht(n, r, t, e); - } - } - function At(e) { - if ( - Q.config.allowScriptTags && - (e.type === "text/javascript" || e.type === "module" || e.type === "") - ) { - var t = re().createElement("script"); - oe(e.attributes, function (e) { - t.setAttribute(e.name, e.value); - }); - t.textContent = e.textContent; - t.async = false; - if (Q.config.inlineScriptNonce) { - t.nonce = Q.config.inlineScriptNonce; - } - var r = e.parentElement; - try { - r.insertBefore(t, e); - } catch (e) { - b(e); - } finally { - if (e.parentElement) { - e.parentElement.removeChild(e); - } - } - } - } - function Nt(e) { - if (h(e, "script")) { - At(e); - } - oe(f(e, "script"), function (e) { - At(e); - }); - } - function It(e) { - var t = e.attributes; - for (var r = 0; r < t.length; r++) { - var n = t[r].name; - if ( - s(n, "hx-on:") || - s(n, "data-hx-on:") || - s(n, "hx-on-") || - s(n, "data-hx-on-") - ) { - return true; - } - } - return false; - } - function kt(e) { - var t = null; - var r = []; - if (It(e)) { - r.push(e); - } - if (document.evaluate) { - var n = document.evaluate( - './/*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or' + - ' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]', - e, - ); - while ((t = n.iterateNext())) r.push(t); - } else { - var i = e.getElementsByTagName("*"); - for (var a = 0; a < i.length; a++) { - if (It(i[a])) { - r.push(i[a]); - } - } - } - return r; - } - function Pt(e) { - if (e.querySelectorAll) { - var t = - ", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]"; - var r = e.querySelectorAll( - i + - t + - ", form, [type='submit'], [hx-sse], [data-hx-sse], [hx-ws]," + - " [data-hx-ws], [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger], [hx-on], [data-hx-on]", - ); - return r; - } else { - return []; - } - } - function Mt(e) { - var t = v(e.target, "button, input[type='submit']"); - var r = Dt(e); - if (r) { - r.lastButtonClicked = t; - } - } - function Xt(e) { - var t = Dt(e); - if (t) { - t.lastButtonClicked = null; - } - } - function Dt(e) { - var t = v(e.target, "button, input[type='submit']"); - if (!t) { - return; - } - var r = g("#" + ee(t, "form")) || v(t, "form"); - if (!r) { - return; - } - return ae(r); - } - function Ut(e) { - e.addEventListener("click", Mt); - e.addEventListener("focusin", Mt); - e.addEventListener("focusout", Xt); - } - function Bt(e) { - var t = Ye(e); - var r = 0; - for (var n = 0; n < t.length; n++) { - const i = t[n]; - if (i === "{") { - r++; - } else if (i === "}") { - r--; - } - } - return r; - } - function Ft(t, e, r) { - var n = ae(t); - if (!Array.isArray(n.onHandlers)) { - n.onHandlers = []; - } - var i; - var a = function (e) { - return Tr(t, function () { - if (!i) { - i = new Function("event", r); - } - i.call(t, e); - }); - }; - t.addEventListener(e, a); - n.onHandlers.push({ event: e, listener: a }); - } - function Vt(e) { - var t = te(e, "hx-on"); - if (t) { - var r = {}; - var n = t.split("\n"); - var i = null; - var a = 0; - while (n.length > 0) { - var o = n.shift(); - var s = o.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/); - if (a === 0 && s) { - o.split(":"); - i = s[1].slice(0, -1); - r[i] = s[2]; - } else { - r[i] += o; - } - a += Bt(o); - } - for (var l in r) { - Ft(e, l, r[l]); - } - } - } - function jt(e) { - Ae(e); - for (var t = 0; t < e.attributes.length; t++) { - var r = e.attributes[t].name; - var n = e.attributes[t].value; - if (s(r, "hx-on") || s(r, "data-hx-on")) { - var i = r.indexOf("-on") + 3; - var a = r.slice(i, i + 1); - if (a === "-" || a === ":") { - var o = r.slice(i + 1); - if (s(o, ":")) { - o = "htmx" + o; - } else if (s(o, "-")) { - o = "htmx:" + o.slice(1); - } else if (s(o, "htmx-")) { - o = "htmx:" + o.slice(5); - } - Ft(e, o, n); - } - } - } - } - function _t(t) { - if (v(t, Q.config.disableSelector)) { - p(t); - return; - } - var r = ae(t); - if (r.initHash !== Le(t)) { - Ne(t); - r.initHash = Le(t); - Vt(t); - ce(t, "htmx:beforeProcessNode"); - if (t.value) { - r.lastValue = t.value; - } - var e = it(t); - var n = Ht(t, r, e); - if (!n) { - if (ne(t, "hx-boost") === "true") { - lt(t, r, e); - } else if (o(t, "hx-trigger")) { - e.forEach(function (e) { - Lt(t, e, r, function () {}); - }); - } - } - if ( - t.tagName === "FORM" || - (ee(t, "type") === "submit" && o(t, "form")) - ) { - Ut(t); - } - var i = te(t, "hx-sse"); - if (i) { - St(t, r, i); - } - var a = te(t, "hx-ws"); - if (a) { - pt(t, r, a); - } - ce(t, "htmx:afterProcessNode"); - } - } - function zt(e) { - e = g(e); - if (v(e, Q.config.disableSelector)) { - p(e); - return; - } - _t(e); - oe(Pt(e), function (e) { - _t(e); - }); - oe(kt(e), jt); - } - function $t(e) { - return e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); - } - function Wt(e, t) { - var r; - if (window.CustomEvent && typeof window.CustomEvent === "function") { - r = new CustomEvent(e, { bubbles: true, cancelable: true, detail: t }); - } else { - r = re().createEvent("CustomEvent"); - r.initCustomEvent(e, true, true, t); - } - return r; - } - function fe(e, t, r) { - ce(e, t, le({ error: t }, r)); - } - function Gt(e) { - return e === "htmx:afterProcessNode"; - } - function R(e, t) { - oe(Fr(e), function (e) { - try { - t(e); - } catch (e) { - b(e); - } - }); - } - function b(e) { - if (console.error) { - console.error(e); - } else if (console.log) { - console.log("ERROR: ", e); - } - } - function ce(e, t, r) { - e = g(e); - if (r == null) { - r = {}; - } - r["elt"] = e; - var n = Wt(t, r); - if (Q.logger && !Gt(t)) { - Q.logger(e, t, r); - } - if (r.error) { - b(r.error); - ce(e, "htmx:error", { errorInfo: r }); - } - var i = e.dispatchEvent(n); - var a = $t(t); - if (i && a !== t) { - var o = Wt(a, n.detail); - i = i && e.dispatchEvent(o); - } - R(e, function (e) { - i = i && e.onEvent(t, n) !== false && !n.defaultPrevented; - }); - return i; - } - var Jt = location.pathname + location.search; - function Zt() { - var e = re().querySelector("[hx-history-elt],[data-hx-history-elt]"); - return e || re().body; - } - function Kt(e, t, r, n) { - if (!U()) { - return; - } - if (Q.config.historyCacheSize <= 0) { - localStorage.removeItem("htmx-history-cache"); - return; - } - e = B(e); - var i = E(localStorage.getItem("htmx-history-cache")) || []; - for (var a = 0; a < i.length; a++) { - if (i[a].url === e) { - i.splice(a, 1); - break; - } - } - var o = { url: e, content: t, title: r, scroll: n }; - ce(re().body, "htmx:historyItemCreated", { item: o, cache: i }); - i.push(o); - while (i.length > Q.config.historyCacheSize) { - i.shift(); - } - while (i.length > 0) { - try { - localStorage.setItem("htmx-history-cache", JSON.stringify(i)); - break; - } catch (e) { - fe(re().body, "htmx:historyCacheError", { cause: e, cache: i }); - i.shift(); - } - } - } - function Yt(e) { - if (!U()) { - return null; - } - e = B(e); - var t = E(localStorage.getItem("htmx-history-cache")) || []; - for (var r = 0; r < t.length; r++) { - if (t[r].url === e) { - return t[r]; - } - } - return null; - } - function Qt(e) { - var t = Q.config.requestClass; - var r = e.cloneNode(true); - oe(f(r, "." + t), function (e) { - n(e, t); - }); - return r.innerHTML; - } - function er() { - var e = Zt(); - var t = Jt || location.pathname + location.search; - var r; - try { - r = re().querySelector( - '[hx-history="false" i],[data-hx-history="false" i]', - ); - } catch (e) { - r = re().querySelector( - '[hx-history="false"],[data-hx-history="false"]', - ); - } - if (!r) { - ce(re().body, "htmx:beforeHistorySave", { path: t, historyElt: e }); - Kt(t, Qt(e), re().title, window.scrollY); - } - if (Q.config.historyEnabled) - history.replaceState({ htmx: true }, re().title, window.location.href); - } - function tr(e) { - if (Q.config.getCacheBusterParam) { - e = e.replace(/org\.htmx\.cache-buster=[^&]*&?/, ""); - if (G(e, "&") || G(e, "?")) { - e = e.slice(0, -1); - } - } - if (Q.config.historyEnabled) { - history.pushState({ htmx: true }, "", e); - } - Jt = e; - } - function rr(e) { - if (Q.config.historyEnabled) history.replaceState({ htmx: true }, "", e); - Jt = e; - } - function nr(e) { - oe(e, function (e) { - e.call(); - }); - } - function ir(a) { - var e = new XMLHttpRequest(); - var o = { path: a, xhr: e }; - ce(re().body, "htmx:historyCacheMiss", o); - e.open("GET", a, true); - e.setRequestHeader("HX-Request", "true"); - e.setRequestHeader("HX-History-Restore-Request", "true"); - e.setRequestHeader("HX-Current-URL", re().location.href); - e.onload = function () { - if (this.status >= 200 && this.status < 400) { - ce(re().body, "htmx:historyCacheMissLoad", o); - var e = l(this.response); - e = e.querySelector("[hx-history-elt],[data-hx-history-elt]") || e; - var t = Zt(); - var r = T(t); - var n = Ve(this.response); - if (n) { - var i = C("title"); - if (i) { - i.innerHTML = n; - } else { - window.document.title = n; - } - } - Ue(t, e, r); - nr(r.tasks); - Jt = a; - ce(re().body, "htmx:historyRestore", { - path: a, - cacheMiss: true, - serverResponse: this.response, - }); - } else { - fe(re().body, "htmx:historyCacheMissLoadError", o); - } - }; - e.send(); - } - function ar(e) { - er(); - e = e || location.pathname + location.search; - var t = Yt(e); - if (t) { - var r = l(t.content); - var n = Zt(); - var i = T(n); - Ue(n, r, i); - nr(i.tasks); - document.title = t.title; - setTimeout(function () { - window.scrollTo(0, t.scroll); - }, 0); - Jt = e; - ce(re().body, "htmx:historyRestore", { path: e, item: t }); - } else { - if (Q.config.refreshOnHistoryMiss) { - window.location.reload(true); - } else { - ir(e); - } - } - } - function or(e) { - var t = pe(e, "hx-indicator"); - if (t == null) { - t = [e]; - } - oe(t, function (e) { - var t = ae(e); - t.requestCount = (t.requestCount || 0) + 1; - e.classList["add"].call(e.classList, Q.config.requestClass); - }); - return t; - } - function sr(e) { - var t = pe(e, "hx-disabled-elt"); - if (t == null) { - t = []; - } - oe(t, function (e) { - var t = ae(e); - t.requestCount = (t.requestCount || 0) + 1; - e.setAttribute("disabled", ""); - }); - return t; - } - function lr(e, t) { - oe(e, function (e) { - var t = ae(e); - t.requestCount = (t.requestCount || 0) - 1; - if (t.requestCount === 0) { - e.classList["remove"].call(e.classList, Q.config.requestClass); - } - }); - oe(t, function (e) { - var t = ae(e); - t.requestCount = (t.requestCount || 0) - 1; - if (t.requestCount === 0) { - e.removeAttribute("disabled"); - } - }); - } - function ur(e, t) { - for (var r = 0; r < e.length; r++) { - var n = e[r]; - if (n.isSameNode(t)) { - return true; - } - } - return false; - } - function fr(e) { - if ( - e.name === "" || - e.name == null || - e.disabled || - v(e, "fieldset[disabled]") - ) { - return false; - } - if ( - e.type === "button" || - e.type === "submit" || - e.tagName === "image" || - e.tagName === "reset" || - e.tagName === "file" - ) { - return false; - } - if (e.type === "checkbox" || e.type === "radio") { - return e.checked; - } - return true; - } - function cr(e, t, r) { - if (e != null && t != null) { - var n = r[e]; - if (n === undefined) { - r[e] = t; - } else if (Array.isArray(n)) { - if (Array.isArray(t)) { - r[e] = n.concat(t); - } else { - n.push(t); - } - } else { - if (Array.isArray(t)) { - r[e] = [n].concat(t); - } else { - r[e] = [n, t]; - } - } - } - } - function hr(t, r, n, e, i) { - if (e == null || ur(t, e)) { - return; - } else { - t.push(e); - } - if (fr(e)) { - var a = ee(e, "name"); - var o = e.value; - if (e.multiple && e.tagName === "SELECT") { - o = M(e.querySelectorAll("option:checked")).map(function (e) { - return e.value; - }); - } - if (e.files) { - o = M(e.files); - } - cr(a, o, r); - if (i) { - vr(e, n); - } - } - if (h(e, "form")) { - var s = e.elements; - oe(s, function (e) { - hr(t, r, n, e, i); - }); - } - } - function vr(e, t) { - if (e.willValidate) { - ce(e, "htmx:validation:validate"); - if (!e.checkValidity()) { - t.push({ - elt: e, - message: e.validationMessage, - validity: e.validity, - }); - ce(e, "htmx:validation:failed", { - message: e.validationMessage, - validity: e.validity, - }); - } - } - } - function dr(e, t) { - var r = []; - var n = {}; - var i = {}; - var a = []; - var o = ae(e); - if (o.lastButtonClicked && !se(o.lastButtonClicked)) { - o.lastButtonClicked = null; - } - var s = - (h(e, "form") && e.noValidate !== true) || - te(e, "hx-validate") === "true"; - if (o.lastButtonClicked) { - s = s && o.lastButtonClicked.formNoValidate !== true; - } - if (t !== "get") { - hr(r, i, a, v(e, "form"), s); - } - hr(r, n, a, e, s); - if ( - o.lastButtonClicked || - e.tagName === "BUTTON" || - (e.tagName === "INPUT" && ee(e, "type") === "submit") - ) { - var l = o.lastButtonClicked || e; - var u = ee(l, "name"); - cr(u, l.value, i); - } - var f = pe(e, "hx-include"); - oe(f, function (e) { - hr(r, n, a, e, s); - if (!h(e, "form")) { - oe(e.querySelectorAll(rt), function (e) { - hr(r, n, a, e, s); - }); - } - }); - n = le(n, i); - return { errors: a, values: n }; - } - function gr(e, t, r) { - if (e !== "") { - e += "&"; - } - if (String(r) === "[object Object]") { - r = JSON.stringify(r); - } - var n = encodeURIComponent(r); - e += encodeURIComponent(t) + "=" + n; - return e; - } - function mr(e) { - var t = ""; - for (var r in e) { - if (e.hasOwnProperty(r)) { - var n = e[r]; - if (Array.isArray(n)) { - oe(n, function (e) { - t = gr(t, r, e); - }); - } else { - t = gr(t, r, n); - } - } - } - return t; - } - function pr(e) { - var t = new FormData(); - for (var r in e) { - if (e.hasOwnProperty(r)) { - var n = e[r]; - if (Array.isArray(n)) { - oe(n, function (e) { - t.append(r, e); - }); - } else { - t.append(r, n); - } - } - } - return t; - } - function xr(e, t, r) { - var n = { - "HX-Request": "true", - "HX-Trigger": ee(e, "id"), - "HX-Trigger-Name": ee(e, "name"), - "HX-Target": te(t, "id"), - "HX-Current-URL": re().location.href, - }; - Rr(e, "hx-headers", false, n); - if (r !== undefined) { - n["HX-Prompt"] = r; - } - if (ae(e).boosted) { - n["HX-Boosted"] = "true"; - } - return n; - } - function yr(t, e) { - var r = ne(e, "hx-params"); - if (r) { - if (r === "none") { - return {}; - } else if (r === "*") { - return t; - } else if (r.indexOf("not ") === 0) { - oe(r.substr(4).split(","), function (e) { - e = e.trim(); - delete t[e]; - }); - return t; - } else { - var n = {}; - oe(r.split(","), function (e) { - e = e.trim(); - n[e] = t[e]; - }); - return n; - } - } else { - return t; - } - } - function br(e) { - return ee(e, "href") && ee(e, "href").indexOf("#") >= 0; - } - function wr(e, t) { - var r = t ? t : ne(e, "hx-swap"); - var n = { - swapStyle: ae(e).boosted ? "innerHTML" : Q.config.defaultSwapStyle, - swapDelay: Q.config.defaultSwapDelay, - settleDelay: Q.config.defaultSettleDelay, - }; - if (Q.config.scrollIntoViewOnBoost && ae(e).boosted && !br(e)) { - n["show"] = "top"; - } - if (r) { - var i = D(r); - if (i.length > 0) { - for (var a = 0; a < i.length; a++) { - var o = i[a]; - if (o.indexOf("swap:") === 0) { - n["swapDelay"] = d(o.substr(5)); - } else if (o.indexOf("settle:") === 0) { - n["settleDelay"] = d(o.substr(7)); - } else if (o.indexOf("transition:") === 0) { - n["transition"] = o.substr(11) === "true"; - } else if (o.indexOf("ignoreTitle:") === 0) { - n["ignoreTitle"] = o.substr(12) === "true"; - } else if (o.indexOf("scroll:") === 0) { - var s = o.substr(7); - var l = s.split(":"); - var u = l.pop(); - var f = l.length > 0 ? l.join(":") : null; - n["scroll"] = u; - n["scrollTarget"] = f; - } else if (o.indexOf("show:") === 0) { - var c = o.substr(5); - var l = c.split(":"); - var h = l.pop(); - var f = l.length > 0 ? l.join(":") : null; - n["show"] = h; - n["showTarget"] = f; - } else if (o.indexOf("focus-scroll:") === 0) { - var v = o.substr("focus-scroll:".length); - n["focusScroll"] = v == "true"; - } else if (a == 0) { - n["swapStyle"] = o; - } else { - b("Unknown modifier in hx-swap: " + o); - } - } - } - } - return n; - } - function Sr(e) { - return ( - ne(e, "hx-encoding") === "multipart/form-data" || - (h(e, "form") && ee(e, "enctype") === "multipart/form-data") - ); - } - function Er(t, r, n) { - var i = null; - R(r, function (e) { - if (i == null) { - i = e.encodeParameters(t, n, r); - } - }); - if (i != null) { - return i; - } else { - if (Sr(r)) { - return pr(n); - } else { - return mr(n); - } - } - } - function T(e) { - return { tasks: [], elts: [e] }; - } - function Cr(e, t) { - var r = e[0]; - var n = e[e.length - 1]; - if (t.scroll) { - var i = null; - if (t.scrollTarget) { - i = ue(r, t.scrollTarget); - } - if (t.scroll === "top" && (r || i)) { - i = i || r; - i.scrollTop = 0; - } - if (t.scroll === "bottom" && (n || i)) { - i = i || n; - i.scrollTop = i.scrollHeight; - } - } - if (t.show) { - var i = null; - if (t.showTarget) { - var a = t.showTarget; - if (t.showTarget === "window") { - a = "body"; - } - i = ue(r, a); - } - if (t.show === "top" && (r || i)) { - i = i || r; - i.scrollIntoView({ - block: "start", - behavior: Q.config.scrollBehavior, - }); - } - if (t.show === "bottom" && (n || i)) { - i = i || n; - i.scrollIntoView({ block: "end", behavior: Q.config.scrollBehavior }); - } - } - } - function Rr(e, t, r, n) { - if (n == null) { - n = {}; - } - if (e == null) { - return n; - } - var i = te(e, t); - if (i) { - var a = i.trim(); - var o = r; - if (a === "unset") { - return null; - } - if (a.indexOf("javascript:") === 0) { - a = a.substr(11); - o = true; - } else if (a.indexOf("js:") === 0) { - a = a.substr(3); - o = true; - } - if (a.indexOf("{") !== 0) { - a = "{" + a + "}"; - } - var s; - if (o) { - s = Tr( - e, - function () { - return Function("return (" + a + ")")(); - }, - {}, - ); - } else { - s = E(a); - } - for (var l in s) { - if (s.hasOwnProperty(l)) { - if (n[l] == null) { - n[l] = s[l]; - } - } - } - } - return Rr(u(e), t, r, n); - } - function Tr(e, t, r) { - if (Q.config.allowEval) { - return t(); - } else { - fe(e, "htmx:evalDisallowedError"); - return r; - } - } - function Or(e, t) { - return Rr(e, "hx-vars", true, t); - } - function qr(e, t) { - return Rr(e, "hx-vals", false, t); - } - function Hr(e) { - return le(Or(e), qr(e)); - } - function Lr(t, r, n) { - if (n !== null) { - try { - t.setRequestHeader(r, n); - } catch (e) { - t.setRequestHeader(r, encodeURIComponent(n)); - t.setRequestHeader(r + "-URI-AutoEncoded", "true"); - } - } - } - function Ar(t) { - if (t.responseURL && typeof URL !== "undefined") { - try { - var e = new URL(t.responseURL); - return e.pathname + e.search; - } catch (e) { - fe(re().body, "htmx:badResponseUrl", { url: t.responseURL }); - } - } - } - function O(e, t) { - return t.test(e.getAllResponseHeaders()); - } - function Nr(e, t, r) { - e = e.toLowerCase(); - if (r) { - if (r instanceof Element || I(r, "String")) { - return he(e, t, null, null, { - targetOverride: g(r), - returnPromise: true, - }); - } else { - return he(e, t, g(r.source), r.event, { - handler: r.handler, - headers: r.headers, - values: r.values, - targetOverride: g(r.target), - swapOverride: r.swap, - select: r.select, - returnPromise: true, - }); - } - } else { - return he(e, t, null, null, { returnPromise: true }); - } - } - function Ir(e) { - var t = []; - while (e) { - t.push(e); - e = e.parentElement; - } - return t; - } - function kr(e, t, r) { - var n; - var i; - if (typeof URL === "function") { - i = new URL(t, document.location.href); - var a = document.location.origin; - n = a === i.origin; - } else { - i = t; - n = s(t, document.location.origin); - } - if (Q.config.selfRequestsOnly) { - if (!n) { - return false; - } - } - return ce(e, "htmx:validateUrl", le({ url: i, sameHost: n }, r)); - } - function he(t, r, n, i, a, e) { - var o = null; - var s = null; - a = a != null ? a : {}; - if (a.returnPromise && typeof Promise !== "undefined") { - var l = new Promise(function (e, t) { - o = e; - s = t; - }); - } - if (n == null) { - n = re().body; - } - var M = a.handler || Mr; - var X = a.select || null; - if (!se(n)) { - ie(o); - return l; - } - var u = a.targetOverride || ye(n); - if (u == null || u == me) { - fe(n, "htmx:targetError", { target: te(n, "hx-target") }); - ie(s); - return l; - } - var f = ae(n); - var c = f.lastButtonClicked; - if (c) { - var h = ee(c, "formaction"); - if (h != null) { - r = h; - } - var v = ee(c, "formmethod"); - if (v != null) { - if (v.toLowerCase() !== "dialog") { - t = v; - } - } - } - var d = ne(n, "hx-confirm"); - if (e === undefined) { - var D = function (e) { - return he(t, r, n, i, a, !!e); - }; - var U = { - target: u, - elt: n, - path: r, - verb: t, - triggeringEvent: i, - etc: a, - issueRequest: D, - question: d, - }; - if (ce(n, "htmx:confirm", U) === false) { - ie(o); - return l; - } - } - var g = n; - var m = ne(n, "hx-sync"); - var p = null; - var x = false; - if (m) { - var B = m.split(":"); - var F = B[0].trim(); - if (F === "this") { - g = xe(n, "hx-sync"); - } else { - g = ue(n, F); - } - m = (B[1] || "drop").trim(); - f = ae(g); - if (m === "drop" && f.xhr && f.abortable !== true) { - ie(o); - return l; - } else if (m === "abort") { - if (f.xhr) { - ie(o); - return l; - } else { - x = true; - } - } else if (m === "replace") { - ce(g, "htmx:abort"); - } else if (m.indexOf("queue") === 0) { - var V = m.split(" "); - p = (V[1] || "last").trim(); - } - } - if (f.xhr) { - if (f.abortable) { - ce(g, "htmx:abort"); - } else { - if (p == null) { - if (i) { - var y = ae(i); - if (y && y.triggerSpec && y.triggerSpec.queue) { - p = y.triggerSpec.queue; - } - } - if (p == null) { - p = "last"; - } - } - if (f.queuedRequests == null) { - f.queuedRequests = []; - } - if (p === "first" && f.queuedRequests.length === 0) { - f.queuedRequests.push(function () { - he(t, r, n, i, a); - }); - } else if (p === "all") { - f.queuedRequests.push(function () { - he(t, r, n, i, a); - }); - } else if (p === "last") { - f.queuedRequests = []; - f.queuedRequests.push(function () { - he(t, r, n, i, a); - }); - } - ie(o); - return l; - } - } - var b = new XMLHttpRequest(); - f.xhr = b; - f.abortable = x; - var w = function () { - f.xhr = null; - f.abortable = false; - if (f.queuedRequests != null && f.queuedRequests.length > 0) { - var e = f.queuedRequests.shift(); - e(); - } - }; - var j = ne(n, "hx-prompt"); - if (j) { - var S = prompt(j); - if (S === null || !ce(n, "htmx:prompt", { prompt: S, target: u })) { - ie(o); - w(); - return l; - } - } - if (d && !e) { - if (!confirm(d)) { - ie(o); - w(); - return l; - } - } - var E = xr(n, u, S); - if (t !== "get" && !Sr(n)) { - E["Content-Type"] = "application/x-www-form-urlencoded"; - } - if (a.headers) { - E = le(E, a.headers); - } - var _ = dr(n, t); - var C = _.errors; - var R = _.values; - if (a.values) { - R = le(R, a.values); - } - var z = Hr(n); - var $ = le(R, z); - var T = yr($, n); - if (Q.config.getCacheBusterParam && t === "get") { - T["org.htmx.cache-buster"] = ee(u, "id") || "true"; - } - if (r == null || r === "") { - r = re().location.href; - } - var O = Rr(n, "hx-request"); - var W = ae(n).boosted; - var q = Q.config.methodsThatUseUrlParams.indexOf(t) >= 0; - var H = { - boosted: W, - useUrlParams: q, - parameters: T, - unfilteredParameters: $, - headers: E, - target: u, - verb: t, - errors: C, - withCredentials: - a.credentials || O.credentials || Q.config.withCredentials, - timeout: a.timeout || O.timeout || Q.config.timeout, - path: r, - triggeringEvent: i, - }; - if (!ce(n, "htmx:configRequest", H)) { - ie(o); - w(); - return l; - } - r = H.path; - t = H.verb; - E = H.headers; - T = H.parameters; - C = H.errors; - q = H.useUrlParams; - if (C && C.length > 0) { - ce(n, "htmx:validation:halted", H); - ie(o); - w(); - return l; - } - var G = r.split("#"); - var J = G[0]; - var L = G[1]; - var A = r; - if (q) { - A = J; - var Z = Object.keys(T).length !== 0; - if (Z) { - if (A.indexOf("?") < 0) { - A += "?"; - } else { - A += "&"; - } - A += mr(T); - if (L) { - A += "#" + L; - } - } - } - if (!kr(n, A, H)) { - fe(n, "htmx:invalidPath", H); - ie(s); - return l; - } - b.open(t.toUpperCase(), A, true); - b.overrideMimeType("text/html"); - b.withCredentials = H.withCredentials; - b.timeout = H.timeout; - if (O.noHeaders) { - } else { - for (var N in E) { - if (E.hasOwnProperty(N)) { - var K = E[N]; - Lr(b, N, K); - } - } - } - var I = { - xhr: b, - target: u, - requestConfig: H, - etc: a, - boosted: W, - select: X, - pathInfo: { requestPath: r, finalRequestPath: A, anchor: L }, - }; - b.onload = function () { - try { - var e = Ir(n); - I.pathInfo.responsePath = Ar(b); - M(n, I); - lr(k, P); - ce(n, "htmx:afterRequest", I); - ce(n, "htmx:afterOnLoad", I); - if (!se(n)) { - var t = null; - while (e.length > 0 && t == null) { - var r = e.shift(); - if (se(r)) { - t = r; - } - } - if (t) { - ce(t, "htmx:afterRequest", I); - ce(t, "htmx:afterOnLoad", I); - } - } - ie(o); - w(); - } catch (e) { - fe(n, "htmx:onLoadError", le({ error: e }, I)); - throw e; - } - }; - b.onerror = function () { - lr(k, P); - fe(n, "htmx:afterRequest", I); - fe(n, "htmx:sendError", I); - ie(s); - w(); - }; - b.onabort = function () { - lr(k, P); - fe(n, "htmx:afterRequest", I); - fe(n, "htmx:sendAbort", I); - ie(s); - w(); - }; - b.ontimeout = function () { - lr(k, P); - fe(n, "htmx:afterRequest", I); - fe(n, "htmx:timeout", I); - ie(s); - w(); - }; - if (!ce(n, "htmx:beforeRequest", I)) { - ie(o); - w(); - return l; - } - var k = or(n); - var P = sr(n); - oe(["loadstart", "loadend", "progress", "abort"], function (t) { - oe([b, b.upload], function (e) { - e.addEventListener(t, function (e) { - ce(n, "htmx:xhr:" + t, { - lengthComputable: e.lengthComputable, - loaded: e.loaded, - total: e.total, - }); - }); - }); - }); - ce(n, "htmx:beforeSend", I); - var Y = q ? null : Er(b, n, T); - b.send(Y); - return l; - } - function Pr(e, t) { - var r = t.xhr; - var n = null; - var i = null; - if (O(r, /HX-Push:/i)) { - n = r.getResponseHeader("HX-Push"); - i = "push"; - } else if (O(r, /HX-Push-Url:/i)) { - n = r.getResponseHeader("HX-Push-Url"); - i = "push"; - } else if (O(r, /HX-Replace-Url:/i)) { - n = r.getResponseHeader("HX-Replace-Url"); - i = "replace"; - } - if (n) { - if (n === "false") { - return {}; - } else { - return { type: i, path: n }; - } - } - var a = t.pathInfo.finalRequestPath; - var o = t.pathInfo.responsePath; - var s = ne(e, "hx-push-url"); - var l = ne(e, "hx-replace-url"); - var u = ae(e).boosted; - var f = null; - var c = null; - if (s) { - f = "push"; - c = s; - } else if (l) { - f = "replace"; - c = l; - } else if (u) { - f = "push"; - c = o || a; - } - if (c) { - if (c === "false") { - return {}; - } - if (c === "true") { - c = o || a; - } - if (t.pathInfo.anchor && c.indexOf("#") === -1) { - c = c + "#" + t.pathInfo.anchor; - } - return { type: f, path: c }; - } else { - return {}; - } - } - function Mr(l, u) { - var f = u.xhr; - var c = u.target; - var e = u.etc; - var t = u.requestConfig; - var h = u.select; - if (!ce(l, "htmx:beforeOnLoad", u)) return; - if (O(f, /HX-Trigger:/i)) { - _e(f, "HX-Trigger", l); - } - if (O(f, /HX-Location:/i)) { - er(); - var r = f.getResponseHeader("HX-Location"); - var v; - if (r.indexOf("{") === 0) { - v = E(r); - r = v["path"]; - delete v["path"]; - } - Nr("GET", r, v).then(function () { - tr(r); - }); - return; - } - var n = - O(f, /HX-Refresh:/i) && "true" === f.getResponseHeader("HX-Refresh"); - if (O(f, /HX-Redirect:/i)) { - location.href = f.getResponseHeader("HX-Redirect"); - n && location.reload(); - return; - } - if (n) { - location.reload(); - return; - } - if (O(f, /HX-Retarget:/i)) { - if (f.getResponseHeader("HX-Retarget") === "this") { - u.target = l; - } else { - u.target = ue(l, f.getResponseHeader("HX-Retarget")); - } - } - var d = Pr(l, u); - var i = f.status >= 200 && f.status < 400 && f.status !== 204; - var g = f.response; - var a = f.status >= 400; - var m = Q.config.ignoreTitle; - var o = le( - { shouldSwap: i, serverResponse: g, isError: a, ignoreTitle: m }, - u, - ); - if (!ce(c, "htmx:beforeSwap", o)) return; - c = o.target; - g = o.serverResponse; - a = o.isError; - m = o.ignoreTitle; - u.target = c; - u.failed = a; - u.successful = !a; - if (o.shouldSwap) { - if (f.status === 286) { - at(l); - } - R(l, function (e) { - g = e.transformResponse(g, f, l); - }); - if (d.type) { - er(); - } - var s = e.swapOverride; - if (O(f, /HX-Reswap:/i)) { - s = f.getResponseHeader("HX-Reswap"); - } - var v = wr(l, s); - if (v.hasOwnProperty("ignoreTitle")) { - m = v.ignoreTitle; - } - c.classList.add(Q.config.swappingClass); - var p = null; - var x = null; - var y = function () { - try { - var e = document.activeElement; - var t = {}; - try { - t = { - elt: e, - start: e ? e.selectionStart : null, - end: e ? e.selectionEnd : null, - }; - } catch (e) {} - var r; - if (h) { - r = h; - } - if (O(f, /HX-Reselect:/i)) { - r = f.getResponseHeader("HX-Reselect"); - } - if (d.type) { - ce(re().body, "htmx:beforeHistoryUpdate", le({ history: d }, u)); - if (d.type === "push") { - tr(d.path); - ce(re().body, "htmx:pushedIntoHistory", { path: d.path }); - } else { - rr(d.path); - ce(re().body, "htmx:replacedInHistory", { path: d.path }); - } - } - var n = T(c); - je(v.swapStyle, c, l, g, n, r); - if (t.elt && !se(t.elt) && ee(t.elt, "id")) { - var i = document.getElementById(ee(t.elt, "id")); - var a = { - preventScroll: - v.focusScroll !== undefined - ? !v.focusScroll - : !Q.config.defaultFocusScroll, - }; - if (i) { - if (t.start && i.setSelectionRange) { - try { - i.setSelectionRange(t.start, t.end); - } catch (e) {} - } - i.focus(a); - } - } - c.classList.remove(Q.config.swappingClass); - oe(n.elts, function (e) { - if (e.classList) { - e.classList.add(Q.config.settlingClass); - } - ce(e, "htmx:afterSwap", u); - }); - if (O(f, /HX-Trigger-After-Swap:/i)) { - var o = l; - if (!se(l)) { - o = re().body; - } - _e(f, "HX-Trigger-After-Swap", o); - } - var s = function () { - oe(n.tasks, function (e) { - e.call(); - }); - oe(n.elts, function (e) { - if (e.classList) { - e.classList.remove(Q.config.settlingClass); - } - ce(e, "htmx:afterSettle", u); - }); - if (u.pathInfo.anchor) { - var e = re().getElementById(u.pathInfo.anchor); - if (e) { - e.scrollIntoView({ block: "start", behavior: "auto" }); - } - } - if (n.title && !m) { - var t = C("title"); - if (t) { - t.innerHTML = n.title; - } else { - window.document.title = n.title; - } - } - Cr(n.elts, v); - if (O(f, /HX-Trigger-After-Settle:/i)) { - var r = l; - if (!se(l)) { - r = re().body; - } - _e(f, "HX-Trigger-After-Settle", r); - } - ie(p); - }; - if (v.settleDelay > 0) { - setTimeout(s, v.settleDelay); - } else { - s(); - } - } catch (e) { - fe(l, "htmx:swapError", u); - ie(x); - throw e; - } - }; - var b = Q.config.globalViewTransitions; - if (v.hasOwnProperty("transition")) { - b = v.transition; - } - if ( - b && - ce(l, "htmx:beforeTransition", u) && - typeof Promise !== "undefined" && - document.startViewTransition - ) { - var w = new Promise(function (e, t) { - p = e; - x = t; - }); - var S = y; - y = function () { - document.startViewTransition(function () { - S(); - return w; - }); - }; - } - if (v.swapDelay > 0) { - setTimeout(y, v.swapDelay); - } else { - y(); - } - } - if (a) { - fe( - l, - "htmx:responseError", - le( - { - error: - "Response Status Error Code " + - f.status + - " from " + - u.pathInfo.requestPath, - }, - u, - ), - ); - } - } - var Xr = {}; - function Dr() { - return { - init: function (e) { - return null; - }, - onEvent: function (e, t) { - return true; - }, - transformResponse: function (e, t, r) { - return e; - }, - isInlineSwap: function (e) { - return false; - }, - handleSwap: function (e, t, r, n) { - return false; - }, - encodeParameters: function (e, t, r) { - return null; - }, - }; - } - function Ur(e, t) { - if (t.init) { - t.init(r); - } - Xr[e] = le(Dr(), t); - } - function Br(e) { - delete Xr[e]; - } - function Fr(e, r, n) { - if (e == undefined) { - return r; - } - if (r == undefined) { - r = []; - } - if (n == undefined) { - n = []; - } - var t = te(e, "hx-ext"); - if (t) { - oe(t.split(","), function (e) { - e = e.replace(/ /g, ""); - if (e.slice(0, 7) == "ignore:") { - n.push(e.slice(7)); - return; - } - if (n.indexOf(e) < 0) { - var t = Xr[e]; - if (t && r.indexOf(t) < 0) { - r.push(t); - } - } - }); - } - return Fr(u(e), r, n); - } - var Vr = false; - re().addEventListener("DOMContentLoaded", function () { - Vr = true; - }); - function jr(e) { - if (Vr || re().readyState === "complete") { - e(); - } else { - re().addEventListener("DOMContentLoaded", e); - } - } - function _r() { - if (Q.config.includeIndicatorStyles !== false) { - re().head.insertAdjacentHTML( - "beforeend", - "", - ); - } - } - function zr() { - var e = re().querySelector('meta[name="htmx-config"]'); - if (e) { - return E(e.content); - } else { - return null; - } - } - function $r() { - var e = zr(); - if (e) { - Q.config = le(Q.config, e); - } - } - jr(function () { - $r(); - _r(); - var e = re().body; - zt(e); - var t = re().querySelectorAll( - "[hx-trigger='restored'],[data-hx-trigger='restored']", - ); - e.addEventListener("htmx:abort", function (e) { - var t = e.target; - var r = ae(t); - if (r && r.xhr) { - r.xhr.abort(); - } - }); - const r = window.onpopstate ? window.onpopstate.bind(window) : null; - window.onpopstate = function (e) { - if (e.state && e.state.htmx) { - ar(); - oe(t, function (e) { - ce(e, "htmx:restored", { document: re(), triggerEvent: ce }); - }); - } else { - if (r) { - r(e); - } - } - }; - setTimeout(function () { - ce(e, "htmx:load", {}); - e = null; - }, 0); - }); - return Q; - })(); -}); diff --git a/web/static/lunr-flex.min.js b/web/static/lunr-flex.min.js deleted file mode 100644 index 8192d94..0000000 --- a/web/static/lunr-flex.min.js +++ /dev/null @@ -1 +0,0 @@ -Failed to fetch version info for lunr-flex. \ No newline at end of file diff --git a/web/static/lunr.min.js b/web/static/lunr.min.js deleted file mode 100644 index d283d00..0000000 --- a/web/static/lunr.min.js +++ /dev/null @@ -1,1570 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ -!(function () { - var e = function (t) { - var r = new e.Builder(); - return ( - r.pipeline.add(e.trimmer, e.stopWordFilter, e.stemmer), - r.searchPipeline.add(e.stemmer), - t.call(r, r), - r.build() - ); - }; - ((e.version = "2.3.9"), - (e.utils = {}), - (e.utils.warn = (function (e) { - return function (t) { - e.console && console.warn && console.warn(t); - }; - })(this)), - (e.utils.asString = function (e) { - return void 0 === e || null === e ? "" : e.toString(); - }), - (e.utils.clone = function (e) { - if (null === e || void 0 === e) return e; - for ( - var t = Object.create(null), r = Object.keys(e), i = 0; - i < r.length; - i++ - ) { - var n = r[i], - s = e[n]; - if (Array.isArray(s)) t[n] = s.slice(); - else { - if ( - "string" != typeof s && - "number" != typeof s && - "boolean" != typeof s - ) - throw new TypeError( - "clone is not deep and does not support nested objects", - ); - t[n] = s; - } - } - return t; - }), - (e.FieldRef = function (e, t, r) { - ((this.docRef = e), (this.fieldName = t), (this._stringValue = r)); - }), - (e.FieldRef.joiner = "/"), - (e.FieldRef.fromString = function (t) { - var r = t.indexOf(e.FieldRef.joiner); - if (r === -1) throw "malformed field ref string"; - var i = t.slice(0, r), - n = t.slice(r + 1); - return new e.FieldRef(n, i, t); - }), - (e.FieldRef.prototype.toString = function () { - return ( - void 0 == this._stringValue && - (this._stringValue = - this.fieldName + e.FieldRef.joiner + this.docRef), - this._stringValue - ); - }), - (e.Set = function (e) { - if (((this.elements = Object.create(null)), e)) { - this.length = e.length; - for (var t = 0; t < this.length; t++) this.elements[e[t]] = !0; - } else this.length = 0; - }), - (e.Set.complete = { - intersect: function (e) { - return e; - }, - union: function () { - return this; - }, - contains: function () { - return !0; - }, - }), - (e.Set.empty = { - intersect: function () { - return this; - }, - union: function (e) { - return e; - }, - contains: function () { - return !1; - }, - }), - (e.Set.prototype.contains = function (e) { - return !!this.elements[e]; - }), - (e.Set.prototype.intersect = function (t) { - var r, - i, - n, - s = []; - if (t === e.Set.complete) return this; - if (t === e.Set.empty) return t; - (this.length < t.length ? ((r = this), (i = t)) : ((r = t), (i = this)), - (n = Object.keys(r.elements))); - for (var o = 0; o < n.length; o++) { - var a = n[o]; - a in i.elements && s.push(a); - } - return new e.Set(s); - }), - (e.Set.prototype.union = function (t) { - return t === e.Set.complete - ? e.Set.complete - : t === e.Set.empty - ? this - : new e.Set( - Object.keys(this.elements).concat(Object.keys(t.elements)), - ); - }), - (e.idf = function (e, t) { - var r = 0; - for (var i in e) "_index" != i && (r += Object.keys(e[i]).length); - var n = (t - r + 0.5) / (r + 0.5); - return Math.log(1 + Math.abs(n)); - }), - (e.Token = function (e, t) { - ((this.str = e || ""), (this.metadata = t || {})); - }), - (e.Token.prototype.toString = function () { - return this.str; - }), - (e.Token.prototype.update = function (e) { - return ((this.str = e(this.str, this.metadata)), this); - }), - (e.Token.prototype.clone = function (t) { - return ( - (t = - t || - function (e) { - return e; - }), - new e.Token(t(this.str, this.metadata), this.metadata) - ); - }), - (e.tokenizer = function (t, r) { - if (null == t || void 0 == t) return []; - if (Array.isArray(t)) - return t.map(function (t) { - return new e.Token( - e.utils.asString(t).toLowerCase(), - e.utils.clone(r), - ); - }); - for ( - var i = t.toString().toLowerCase(), n = i.length, s = [], o = 0, a = 0; - o <= n; - o++ - ) { - var u = i.charAt(o), - l = o - a; - if (u.match(e.tokenizer.separator) || o == n) { - if (l > 0) { - var c = e.utils.clone(r) || {}; - ((c.position = [a, l]), - (c.index = s.length), - s.push(new e.Token(i.slice(a, o), c))); - } - a = o + 1; - } - } - return s; - }), - (e.tokenizer.separator = /[\s\-]+/), - (e.Pipeline = function () { - this._stack = []; - }), - (e.Pipeline.registeredFunctions = Object.create(null)), - (e.Pipeline.registerFunction = function (t, r) { - (r in this.registeredFunctions && - e.utils.warn("Overwriting existing registered function: " + r), - (t.label = r), - (e.Pipeline.registeredFunctions[t.label] = t)); - }), - (e.Pipeline.warnIfFunctionNotRegistered = function (t) { - var r = t.label && t.label in this.registeredFunctions; - r || - e.utils.warn( - "Function is not registered with pipeline. This may cause problems when serialising the index.\n", - t, - ); - }), - (e.Pipeline.load = function (t) { - var r = new e.Pipeline(); - return ( - t.forEach(function (t) { - var i = e.Pipeline.registeredFunctions[t]; - if (!i) throw new Error("Cannot load unregistered function: " + t); - r.add(i); - }), - r - ); - }), - (e.Pipeline.prototype.add = function () { - var t = Array.prototype.slice.call(arguments); - t.forEach(function (t) { - (e.Pipeline.warnIfFunctionNotRegistered(t), this._stack.push(t)); - }, this); - }), - (e.Pipeline.prototype.after = function (t, r) { - e.Pipeline.warnIfFunctionNotRegistered(r); - var i = this._stack.indexOf(t); - if (i == -1) throw new Error("Cannot find existingFn"); - ((i += 1), this._stack.splice(i, 0, r)); - }), - (e.Pipeline.prototype.before = function (t, r) { - e.Pipeline.warnIfFunctionNotRegistered(r); - var i = this._stack.indexOf(t); - if (i == -1) throw new Error("Cannot find existingFn"); - this._stack.splice(i, 0, r); - }), - (e.Pipeline.prototype.remove = function (e) { - var t = this._stack.indexOf(e); - t != -1 && this._stack.splice(t, 1); - }), - (e.Pipeline.prototype.run = function (e) { - for (var t = this._stack.length, r = 0; r < t; r++) { - for (var i = this._stack[r], n = [], s = 0; s < e.length; s++) { - var o = i(e[s], s, e); - if (null !== o && void 0 !== o && "" !== o) - if (Array.isArray(o)) - for (var a = 0; a < o.length; a++) n.push(o[a]); - else n.push(o); - } - e = n; - } - return e; - }), - (e.Pipeline.prototype.runString = function (t, r) { - var i = new e.Token(t, r); - return this.run([i]).map(function (e) { - return e.toString(); - }); - }), - (e.Pipeline.prototype.reset = function () { - this._stack = []; - }), - (e.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (t) { - return (e.Pipeline.warnIfFunctionNotRegistered(t), t.label); - }); - }), - (e.Vector = function (e) { - ((this._magnitude = 0), (this.elements = e || [])); - }), - (e.Vector.prototype.positionForIndex = function (e) { - if (0 == this.elements.length) return 0; - for ( - var t = 0, - r = this.elements.length / 2, - i = r - t, - n = Math.floor(i / 2), - s = this.elements[2 * n]; - i > 1 && (s < e && (t = n), s > e && (r = n), s != e); - ) - ((i = r - t), (n = t + Math.floor(i / 2)), (s = this.elements[2 * n])); - return s == e ? 2 * n : s > e ? 2 * n : s < e ? 2 * (n + 1) : void 0; - }), - (e.Vector.prototype.insert = function (e, t) { - this.upsert(e, t, function () { - throw "duplicate index"; - }); - }), - (e.Vector.prototype.upsert = function (e, t, r) { - this._magnitude = 0; - var i = this.positionForIndex(e); - this.elements[i] == e - ? (this.elements[i + 1] = r(this.elements[i + 1], t)) - : this.elements.splice(i, 0, e, t); - }), - (e.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude; - for (var e = 0, t = this.elements.length, r = 1; r < t; r += 2) { - var i = this.elements[r]; - e += i * i; - } - return (this._magnitude = Math.sqrt(e)); - }), - (e.Vector.prototype.dot = function (e) { - for ( - var t = 0, - r = this.elements, - i = e.elements, - n = r.length, - s = i.length, - o = 0, - a = 0, - u = 0, - l = 0; - u < n && l < s; - ) - ((o = r[u]), - (a = i[l]), - o < a - ? (u += 2) - : o > a - ? (l += 2) - : o == a && ((t += r[u + 1] * i[l + 1]), (u += 2), (l += 2))); - return t; - }), - (e.Vector.prototype.similarity = function (e) { - return this.dot(e) / this.magnitude() || 0; - }), - (e.Vector.prototype.toArray = function () { - for ( - var e = new Array(this.elements.length / 2), t = 1, r = 0; - t < this.elements.length; - t += 2, r++ - ) - e[r] = this.elements[t]; - return e; - }), - (e.Vector.prototype.toJSON = function () { - return this.elements; - }), - (e.stemmer = (function () { - var e = { - ational: "ate", - tional: "tion", - enci: "ence", - anci: "ance", - izer: "ize", - bli: "ble", - alli: "al", - entli: "ent", - eli: "e", - ousli: "ous", - ization: "ize", - ation: "ate", - ator: "ate", - alism: "al", - iveness: "ive", - fulness: "ful", - ousness: "ous", - aliti: "al", - iviti: "ive", - biliti: "ble", - logi: "log", - }, - t = { - icate: "ic", - ative: "", - alize: "al", - iciti: "ic", - ical: "ic", - ful: "", - ness: "", - }, - r = "[^aeiou]", - i = "[aeiouy]", - n = r + "[^aeiouy]*", - s = i + "[aeiou]*", - o = "^(" + n + ")?" + s + n, - a = "^(" + n + ")?" + s + n + "(" + s + ")?$", - u = "^(" + n + ")?" + s + n + s + n, - l = "^(" + n + ")?" + i, - c = new RegExp(o), - h = new RegExp(u), - d = new RegExp(a), - f = new RegExp(l), - p = /^(.+?)(ss|i)es$/, - y = /^(.+?)([^s])s$/, - m = /^(.+?)eed$/, - v = /^(.+?)(ed|ing)$/, - g = /.$/, - x = /(at|bl|iz)$/, - w = new RegExp("([^aeiouylsz])\\1$"), - Q = new RegExp("^" + n + i + "[^aeiouwxy]$"), - k = /^(.+?[^aeiou])y$/, - S = - /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, - E = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, - L = - /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, - b = /^(.+?)(s|t)(ion)$/, - P = /^(.+?)e$/, - T = /ll$/, - O = new RegExp("^" + n + i + "[^aeiouwxy]$"), - I = function (r) { - var i, n, s, o, a, u, l; - if (r.length < 3) return r; - if ( - ((s = r.substr(0, 1)), - "y" == s && (r = s.toUpperCase() + r.substr(1)), - (o = p), - (a = y), - o.test(r) - ? (r = r.replace(o, "$1$2")) - : a.test(r) && (r = r.replace(a, "$1$2")), - (o = m), - (a = v), - o.test(r)) - ) { - var I = o.exec(r); - ((o = c), o.test(I[1]) && ((o = g), (r = r.replace(o, "")))); - } else if (a.test(r)) { - var I = a.exec(r); - ((i = I[1]), - (a = f), - a.test(i) && - ((r = i), - (a = x), - (u = w), - (l = Q), - a.test(r) - ? (r += "e") - : u.test(r) - ? ((o = g), (r = r.replace(o, ""))) - : l.test(r) && (r += "e"))); - } - if (((o = k), o.test(r))) { - var I = o.exec(r); - ((i = I[1]), (r = i + "i")); - } - if (((o = S), o.test(r))) { - var I = o.exec(r); - ((i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + e[n])); - } - if (((o = E), o.test(r))) { - var I = o.exec(r); - ((i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + t[n])); - } - if (((o = L), (a = b), o.test(r))) { - var I = o.exec(r); - ((i = I[1]), (o = h), o.test(i) && (r = i)); - } else if (a.test(r)) { - var I = a.exec(r); - ((i = I[1] + I[2]), (a = h), a.test(i) && (r = i)); - } - if (((o = P), o.test(r))) { - var I = o.exec(r); - ((i = I[1]), - (o = h), - (a = d), - (u = O), - (o.test(i) || (a.test(i) && !u.test(i))) && (r = i)); - } - return ( - (o = T), - (a = h), - o.test(r) && a.test(r) && ((o = g), (r = r.replace(o, ""))), - "y" == s && (r = s.toLowerCase() + r.substr(1)), - r - ); - }; - return function (e) { - return e.update(I); - }; - })()), - e.Pipeline.registerFunction(e.stemmer, "stemmer"), - (e.generateStopWordFilter = function (e) { - var t = e.reduce(function (e, t) { - return ((e[t] = t), e); - }, {}); - return function (e) { - if (e && t[e.toString()] !== e.toString()) return e; - }; - }), - (e.stopWordFilter = e.generateStopWordFilter([ - "a", - "able", - "about", - "across", - "after", - "all", - "almost", - "also", - "am", - "among", - "an", - "and", - "any", - "are", - "as", - "at", - "be", - "because", - "been", - "but", - "by", - "can", - "cannot", - "could", - "dear", - "did", - "do", - "does", - "either", - "else", - "ever", - "every", - "for", - "from", - "get", - "got", - "had", - "has", - "have", - "he", - "her", - "hers", - "him", - "his", - "how", - "however", - "i", - "if", - "in", - "into", - "is", - "it", - "its", - "just", - "least", - "let", - "like", - "likely", - "may", - "me", - "might", - "most", - "must", - "my", - "neither", - "no", - "nor", - "not", - "of", - "off", - "often", - "on", - "only", - "or", - "other", - "our", - "own", - "rather", - "said", - "say", - "says", - "she", - "should", - "since", - "so", - "some", - "than", - "that", - "the", - "their", - "them", - "then", - "there", - "these", - "they", - "this", - "tis", - "to", - "too", - "twas", - "us", - "wants", - "was", - "we", - "were", - "what", - "when", - "where", - "which", - "while", - "who", - "whom", - "why", - "will", - "with", - "would", - "yet", - "you", - "your", - ])), - e.Pipeline.registerFunction(e.stopWordFilter, "stopWordFilter"), - (e.trimmer = function (e) { - return e.update(function (e) { - return e.replace(/^\W+/, "").replace(/\W+$/, ""); - }); - }), - e.Pipeline.registerFunction(e.trimmer, "trimmer"), - (e.TokenSet = function () { - ((this["final"] = !1), - (this.edges = {}), - (this.id = e.TokenSet._nextId), - (e.TokenSet._nextId += 1)); - }), - (e.TokenSet._nextId = 1), - (e.TokenSet.fromArray = function (t) { - for (var r = new e.TokenSet.Builder(), i = 0, n = t.length; i < n; i++) - r.insert(t[i]); - return (r.finish(), r.root); - }), - (e.TokenSet.fromClause = function (t) { - return "editDistance" in t - ? e.TokenSet.fromFuzzyString(t.term, t.editDistance) - : e.TokenSet.fromString(t.term); - }), - (e.TokenSet.fromFuzzyString = function (t, r) { - for ( - var i = new e.TokenSet(), n = [{ node: i, editsRemaining: r, str: t }]; - n.length; - ) { - var s = n.pop(); - if (s.str.length > 0) { - var o, - a = s.str.charAt(0); - (a in s.node.edges - ? (o = s.node.edges[a]) - : ((o = new e.TokenSet()), (s.node.edges[a] = o)), - 1 == s.str.length && (o["final"] = !0), - n.push({ - node: o, - editsRemaining: s.editsRemaining, - str: s.str.slice(1), - })); - } - if (0 != s.editsRemaining) { - if ("*" in s.node.edges) var u = s.node.edges["*"]; - else { - var u = new e.TokenSet(); - s.node.edges["*"] = u; - } - if ( - (0 == s.str.length && (u["final"] = !0), - n.push({ - node: u, - editsRemaining: s.editsRemaining - 1, - str: s.str, - }), - s.str.length > 1 && - n.push({ - node: s.node, - editsRemaining: s.editsRemaining - 1, - str: s.str.slice(1), - }), - 1 == s.str.length && (s.node["final"] = !0), - s.str.length >= 1) - ) { - if ("*" in s.node.edges) var l = s.node.edges["*"]; - else { - var l = new e.TokenSet(); - s.node.edges["*"] = l; - } - (1 == s.str.length && (l["final"] = !0), - n.push({ - node: l, - editsRemaining: s.editsRemaining - 1, - str: s.str.slice(1), - })); - } - if (s.str.length > 1) { - var c, - h = s.str.charAt(0), - d = s.str.charAt(1); - (d in s.node.edges - ? (c = s.node.edges[d]) - : ((c = new e.TokenSet()), (s.node.edges[d] = c)), - 1 == s.str.length && (c["final"] = !0), - n.push({ - node: c, - editsRemaining: s.editsRemaining - 1, - str: h + s.str.slice(2), - })); - } - } - } - return i; - }), - (e.TokenSet.fromString = function (t) { - for (var r = new e.TokenSet(), i = r, n = 0, s = t.length; n < s; n++) { - var o = t[n], - a = n == s - 1; - if ("*" == o) ((r.edges[o] = r), (r["final"] = a)); - else { - var u = new e.TokenSet(); - ((u["final"] = a), (r.edges[o] = u), (r = u)); - } - } - return i; - }), - (e.TokenSet.prototype.toArray = function () { - for (var e = [], t = [{ prefix: "", node: this }]; t.length; ) { - var r = t.pop(), - i = Object.keys(r.node.edges), - n = i.length; - r.node["final"] && (r.prefix.charAt(0), e.push(r.prefix)); - for (var s = 0; s < n; s++) { - var o = i[s]; - t.push({ prefix: r.prefix.concat(o), node: r.node.edges[o] }); - } - } - return e; - }), - (e.TokenSet.prototype.toString = function () { - if (this._str) return this._str; - for ( - var e = this["final"] ? "1" : "0", - t = Object.keys(this.edges).sort(), - r = t.length, - i = 0; - i < r; - i++ - ) { - var n = t[i], - s = this.edges[n]; - e = e + n + s.id; - } - return e; - }), - (e.TokenSet.prototype.intersect = function (t) { - for ( - var r = new e.TokenSet(), - i = void 0, - n = [{ qNode: t, output: r, node: this }]; - n.length; - ) { - i = n.pop(); - for ( - var s = Object.keys(i.qNode.edges), - o = s.length, - a = Object.keys(i.node.edges), - u = a.length, - l = 0; - l < o; - l++ - ) - for (var c = s[l], h = 0; h < u; h++) { - var d = a[h]; - if (d == c || "*" == c) { - var f = i.node.edges[d], - p = i.qNode.edges[c], - y = f["final"] && p["final"], - m = void 0; - (d in i.output.edges - ? ((m = i.output.edges[d]), (m["final"] = m["final"] || y)) - : ((m = new e.TokenSet()), - (m["final"] = y), - (i.output.edges[d] = m)), - n.push({ qNode: p, output: m, node: f })); - } - } - } - return r; - }), - (e.TokenSet.Builder = function () { - ((this.previousWord = ""), - (this.root = new e.TokenSet()), - (this.uncheckedNodes = []), - (this.minimizedNodes = {})); - }), - (e.TokenSet.Builder.prototype.insert = function (t) { - var r, - i = 0; - if (t < this.previousWord) throw new Error("Out of order word insertion"); - for ( - var n = 0; - n < t.length && - n < this.previousWord.length && - t[n] == this.previousWord[n]; - n++ - ) - i++; - (this.minimize(i), - (r = - 0 == this.uncheckedNodes.length - ? this.root - : this.uncheckedNodes[this.uncheckedNodes.length - 1].child)); - for (var n = i; n < t.length; n++) { - var s = new e.TokenSet(), - o = t[n]; - ((r.edges[o] = s), - this.uncheckedNodes.push({ parent: r, char: o, child: s }), - (r = s)); - } - ((r["final"] = !0), (this.previousWord = t)); - }), - (e.TokenSet.Builder.prototype.finish = function () { - this.minimize(0); - }), - (e.TokenSet.Builder.prototype.minimize = function (e) { - for (var t = this.uncheckedNodes.length - 1; t >= e; t--) { - var r = this.uncheckedNodes[t], - i = r.child.toString(); - (i in this.minimizedNodes - ? (r.parent.edges[r["char"]] = this.minimizedNodes[i]) - : ((r.child._str = i), (this.minimizedNodes[i] = r.child)), - this.uncheckedNodes.pop()); - } - }), - (e.Index = function (e) { - ((this.invertedIndex = e.invertedIndex), - (this.fieldVectors = e.fieldVectors), - (this.tokenSet = e.tokenSet), - (this.fields = e.fields), - (this.pipeline = e.pipeline)); - }), - (e.Index.prototype.search = function (t) { - return this.query(function (r) { - var i = new e.QueryParser(t, r); - i.parse(); - }); - }), - (e.Index.prototype.query = function (t) { - for ( - var r = new e.Query(this.fields), - i = Object.create(null), - n = Object.create(null), - s = Object.create(null), - o = Object.create(null), - a = Object.create(null), - u = 0; - u < this.fields.length; - u++ - ) - n[this.fields[u]] = new e.Vector(); - t.call(r, r); - for (var u = 0; u < r.clauses.length; u++) { - var l = r.clauses[u], - c = null, - h = e.Set.empty; - c = l.usePipeline - ? this.pipeline.runString(l.term, { fields: l.fields }) - : [l.term]; - for (var d = 0; d < c.length; d++) { - var f = c[d]; - l.term = f; - var p = e.TokenSet.fromClause(l), - y = this.tokenSet.intersect(p).toArray(); - if (0 === y.length && l.presence === e.Query.presence.REQUIRED) { - for (var m = 0; m < l.fields.length; m++) { - var v = l.fields[m]; - o[v] = e.Set.empty; - } - break; - } - for (var g = 0; g < y.length; g++) - for ( - var x = y[g], w = this.invertedIndex[x], Q = w._index, m = 0; - m < l.fields.length; - m++ - ) { - var v = l.fields[m], - k = w[v], - S = Object.keys(k), - E = x + "/" + v, - L = new e.Set(S); - if ( - (l.presence == e.Query.presence.REQUIRED && - ((h = h.union(L)), - void 0 === o[v] && (o[v] = e.Set.complete)), - l.presence != e.Query.presence.PROHIBITED) - ) { - if ( - (n[v].upsert(Q, l.boost, function (e, t) { - return e + t; - }), - !s[E]) - ) { - for (var b = 0; b < S.length; b++) { - var P, - T = S[b], - O = new e.FieldRef(T, v), - I = k[T]; - void 0 === (P = i[O]) - ? (i[O] = new e.MatchData(x, v, I)) - : P.add(x, v, I); - } - s[E] = !0; - } - } else - (void 0 === a[v] && (a[v] = e.Set.empty), - (a[v] = a[v].union(L))); - } - } - if (l.presence === e.Query.presence.REQUIRED) - for (var m = 0; m < l.fields.length; m++) { - var v = l.fields[m]; - o[v] = o[v].intersect(h); - } - } - for ( - var R = e.Set.complete, F = e.Set.empty, u = 0; - u < this.fields.length; - u++ - ) { - var v = this.fields[u]; - (o[v] && (R = R.intersect(o[v])), a[v] && (F = F.union(a[v]))); - } - var C = Object.keys(i), - N = [], - _ = Object.create(null); - if (r.isNegated()) { - C = Object.keys(this.fieldVectors); - for (var u = 0; u < C.length; u++) { - var O = C[u], - j = e.FieldRef.fromString(O); - i[O] = new e.MatchData(); - } - } - for (var u = 0; u < C.length; u++) { - var j = e.FieldRef.fromString(C[u]), - D = j.docRef; - if (R.contains(D) && !F.contains(D)) { - var A, - B = this.fieldVectors[j], - V = n[j.fieldName].similarity(B); - if (void 0 !== (A = _[D])) - ((A.score += V), A.matchData.combine(i[j])); - else { - var z = { ref: D, score: V, matchData: i[j] }; - ((_[D] = z), N.push(z)); - } - } - } - return N.sort(function (e, t) { - return t.score - e.score; - }); - }), - (e.Index.prototype.toJSON = function () { - var t = Object.keys(this.invertedIndex) - .sort() - .map(function (e) { - return [e, this.invertedIndex[e]]; - }, this), - r = Object.keys(this.fieldVectors).map(function (e) { - return [e, this.fieldVectors[e].toJSON()]; - }, this); - return { - version: e.version, - fields: this.fields, - fieldVectors: r, - invertedIndex: t, - pipeline: this.pipeline.toJSON(), - }; - }), - (e.Index.load = function (t) { - var r = {}, - i = {}, - n = t.fieldVectors, - s = Object.create(null), - o = t.invertedIndex, - a = new e.TokenSet.Builder(), - u = e.Pipeline.load(t.pipeline); - t.version != e.version && - e.utils.warn( - "Version mismatch when loading serialised index. Current version of lunr '" + - e.version + - "' does not match serialized index '" + - t.version + - "'", - ); - for (var l = 0; l < n.length; l++) { - var c = n[l], - h = c[0], - d = c[1]; - i[h] = new e.Vector(d); - } - for (var l = 0; l < o.length; l++) { - var c = o[l], - f = c[0], - p = c[1]; - (a.insert(f), (s[f] = p)); - } - return ( - a.finish(), - (r.fields = t.fields), - (r.fieldVectors = i), - (r.invertedIndex = s), - (r.tokenSet = a.root), - (r.pipeline = u), - new e.Index(r) - ); - }), - (e.Builder = function () { - ((this._ref = "id"), - (this._fields = Object.create(null)), - (this._documents = Object.create(null)), - (this.invertedIndex = Object.create(null)), - (this.fieldTermFrequencies = {}), - (this.fieldLengths = {}), - (this.tokenizer = e.tokenizer), - (this.pipeline = new e.Pipeline()), - (this.searchPipeline = new e.Pipeline()), - (this.documentCount = 0), - (this._b = 0.75), - (this._k1 = 1.2), - (this.termIndex = 0), - (this.metadataWhitelist = [])); - }), - (e.Builder.prototype.ref = function (e) { - this._ref = e; - }), - (e.Builder.prototype.field = function (e, t) { - if (/\//.test(e)) - throw new RangeError( - "Field '" + e + "' contains illegal character '/'", - ); - this._fields[e] = t || {}; - }), - (e.Builder.prototype.b = function (e) { - e < 0 ? (this._b = 0) : e > 1 ? (this._b = 1) : (this._b = e); - }), - (e.Builder.prototype.k1 = function (e) { - this._k1 = e; - }), - (e.Builder.prototype.add = function (t, r) { - var i = t[this._ref], - n = Object.keys(this._fields); - ((this._documents[i] = r || {}), (this.documentCount += 1)); - for (var s = 0; s < n.length; s++) { - var o = n[s], - a = this._fields[o].extractor, - u = a ? a(t) : t[o], - l = this.tokenizer(u, { fields: [o] }), - c = this.pipeline.run(l), - h = new e.FieldRef(i, o), - d = Object.create(null); - ((this.fieldTermFrequencies[h] = d), - (this.fieldLengths[h] = 0), - (this.fieldLengths[h] += c.length)); - for (var f = 0; f < c.length; f++) { - var p = c[f]; - if ( - (void 0 == d[p] && (d[p] = 0), - (d[p] += 1), - void 0 == this.invertedIndex[p]) - ) { - var y = Object.create(null); - ((y._index = this.termIndex), (this.termIndex += 1)); - for (var m = 0; m < n.length; m++) y[n[m]] = Object.create(null); - this.invertedIndex[p] = y; - } - void 0 == this.invertedIndex[p][o][i] && - (this.invertedIndex[p][o][i] = Object.create(null)); - for (var v = 0; v < this.metadataWhitelist.length; v++) { - var g = this.metadataWhitelist[v], - x = p.metadata[g]; - (void 0 == this.invertedIndex[p][o][i][g] && - (this.invertedIndex[p][o][i][g] = []), - this.invertedIndex[p][o][i][g].push(x)); - } - } - } - }), - (e.Builder.prototype.calculateAverageFieldLengths = function () { - for ( - var t = Object.keys(this.fieldLengths), - r = t.length, - i = {}, - n = {}, - s = 0; - s < r; - s++ - ) { - var o = e.FieldRef.fromString(t[s]), - a = o.fieldName; - (n[a] || (n[a] = 0), - (n[a] += 1), - i[a] || (i[a] = 0), - (i[a] += this.fieldLengths[o])); - } - for (var u = Object.keys(this._fields), s = 0; s < u.length; s++) { - var l = u[s]; - i[l] = i[l] / n[l]; - } - this.averageFieldLength = i; - }), - (e.Builder.prototype.createFieldVectors = function () { - for ( - var t = {}, - r = Object.keys(this.fieldTermFrequencies), - i = r.length, - n = Object.create(null), - s = 0; - s < i; - s++ - ) { - for ( - var o = e.FieldRef.fromString(r[s]), - a = o.fieldName, - u = this.fieldLengths[o], - l = new e.Vector(), - c = this.fieldTermFrequencies[o], - h = Object.keys(c), - d = h.length, - f = this._fields[a].boost || 1, - p = this._documents[o.docRef].boost || 1, - y = 0; - y < d; - y++ - ) { - var m, - v, - g, - x = h[y], - w = c[x], - Q = this.invertedIndex[x]._index; - (void 0 === n[x] - ? ((m = e.idf(this.invertedIndex[x], this.documentCount)), - (n[x] = m)) - : (m = n[x]), - (v = - (m * ((this._k1 + 1) * w)) / - (this._k1 * - (1 - this._b + this._b * (u / this.averageFieldLength[a])) + - w)), - (v *= f), - (v *= p), - (g = Math.round(1e3 * v) / 1e3), - l.insert(Q, g)); - } - t[o] = l; - } - this.fieldVectors = t; - }), - (e.Builder.prototype.createTokenSet = function () { - this.tokenSet = e.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort(), - ); - }), - (e.Builder.prototype.build = function () { - return ( - this.calculateAverageFieldLengths(), - this.createFieldVectors(), - this.createTokenSet(), - new e.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline, - }) - ); - }), - (e.Builder.prototype.use = function (e) { - var t = Array.prototype.slice.call(arguments, 1); - (t.unshift(this), e.apply(this, t)); - }), - (e.MatchData = function (e, t, r) { - for ( - var i = Object.create(null), n = Object.keys(r || {}), s = 0; - s < n.length; - s++ - ) { - var o = n[s]; - i[o] = r[o].slice(); - } - ((this.metadata = Object.create(null)), - void 0 !== e && - ((this.metadata[e] = Object.create(null)), - (this.metadata[e][t] = i))); - }), - (e.MatchData.prototype.combine = function (e) { - for (var t = Object.keys(e.metadata), r = 0; r < t.length; r++) { - var i = t[r], - n = Object.keys(e.metadata[i]); - void 0 == this.metadata[i] && (this.metadata[i] = Object.create(null)); - for (var s = 0; s < n.length; s++) { - var o = n[s], - a = Object.keys(e.metadata[i][o]); - void 0 == this.metadata[i][o] && - (this.metadata[i][o] = Object.create(null)); - for (var u = 0; u < a.length; u++) { - var l = a[u]; - void 0 == this.metadata[i][o][l] - ? (this.metadata[i][o][l] = e.metadata[i][o][l]) - : (this.metadata[i][o][l] = this.metadata[i][o][l].concat( - e.metadata[i][o][l], - )); - } - } - } - }), - (e.MatchData.prototype.add = function (e, t, r) { - if (!(e in this.metadata)) - return ( - (this.metadata[e] = Object.create(null)), - void (this.metadata[e][t] = r) - ); - if (!(t in this.metadata[e])) return void (this.metadata[e][t] = r); - for (var i = Object.keys(r), n = 0; n < i.length; n++) { - var s = i[n]; - s in this.metadata[e][t] - ? (this.metadata[e][t][s] = this.metadata[e][t][s].concat(r[s])) - : (this.metadata[e][t][s] = r[s]); - } - }), - (e.Query = function (e) { - ((this.clauses = []), (this.allFields = e)); - }), - (e.Query.wildcard = new String("*")), - (e.Query.wildcard.NONE = 0), - (e.Query.wildcard.LEADING = 1), - (e.Query.wildcard.TRAILING = 2), - (e.Query.presence = { OPTIONAL: 1, REQUIRED: 2, PROHIBITED: 3 }), - (e.Query.prototype.clause = function (t) { - return ( - "fields" in t || (t.fields = this.allFields), - "boost" in t || (t.boost = 1), - "usePipeline" in t || (t.usePipeline = !0), - "wildcard" in t || (t.wildcard = e.Query.wildcard.NONE), - t.wildcard & e.Query.wildcard.LEADING && - t.term.charAt(0) != e.Query.wildcard && - (t.term = "*" + t.term), - t.wildcard & e.Query.wildcard.TRAILING && - t.term.slice(-1) != e.Query.wildcard && - (t.term = "" + t.term + "*"), - "presence" in t || (t.presence = e.Query.presence.OPTIONAL), - this.clauses.push(t), - this - ); - }), - (e.Query.prototype.isNegated = function () { - for (var t = 0; t < this.clauses.length; t++) - if (this.clauses[t].presence != e.Query.presence.PROHIBITED) return !1; - return !0; - }), - (e.Query.prototype.term = function (t, r) { - if (Array.isArray(t)) - return ( - t.forEach(function (t) { - this.term(t, e.utils.clone(r)); - }, this), - this - ); - var i = r || {}; - return ((i.term = t.toString()), this.clause(i), this); - }), - (e.QueryParseError = function (e, t, r) { - ((this.name = "QueryParseError"), - (this.message = e), - (this.start = t), - (this.end = r)); - }), - (e.QueryParseError.prototype = new Error()), - (e.QueryLexer = function (e) { - ((this.lexemes = []), - (this.str = e), - (this.length = e.length), - (this.pos = 0), - (this.start = 0), - (this.escapeCharPositions = [])); - }), - (e.QueryLexer.prototype.run = function () { - for (var t = e.QueryLexer.lexText; t; ) t = t(this); - }), - (e.QueryLexer.prototype.sliceString = function () { - for ( - var e = [], t = this.start, r = this.pos, i = 0; - i < this.escapeCharPositions.length; - i++ - ) - ((r = this.escapeCharPositions[i]), - e.push(this.str.slice(t, r)), - (t = r + 1)); - return ( - e.push(this.str.slice(t, this.pos)), - (this.escapeCharPositions.length = 0), - e.join("") - ); - }), - (e.QueryLexer.prototype.emit = function (e) { - (this.lexemes.push({ - type: e, - str: this.sliceString(), - start: this.start, - end: this.pos, - }), - (this.start = this.pos)); - }), - (e.QueryLexer.prototype.escapeCharacter = function () { - (this.escapeCharPositions.push(this.pos - 1), (this.pos += 1)); - }), - (e.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) return e.QueryLexer.EOS; - var t = this.str.charAt(this.pos); - return ((this.pos += 1), t); - }), - (e.QueryLexer.prototype.width = function () { - return this.pos - this.start; - }), - (e.QueryLexer.prototype.ignore = function () { - (this.start == this.pos && (this.pos += 1), (this.start = this.pos)); - }), - (e.QueryLexer.prototype.backup = function () { - this.pos -= 1; - }), - (e.QueryLexer.prototype.acceptDigitRun = function () { - var t, r; - do ((t = this.next()), (r = t.charCodeAt(0))); - while (r > 47 && r < 58); - t != e.QueryLexer.EOS && this.backup(); - }), - (e.QueryLexer.prototype.more = function () { - return this.pos < this.length; - }), - (e.QueryLexer.EOS = "EOS"), - (e.QueryLexer.FIELD = "FIELD"), - (e.QueryLexer.TERM = "TERM"), - (e.QueryLexer.EDIT_DISTANCE = "EDIT_DISTANCE"), - (e.QueryLexer.BOOST = "BOOST"), - (e.QueryLexer.PRESENCE = "PRESENCE"), - (e.QueryLexer.lexField = function (t) { - return ( - t.backup(), - t.emit(e.QueryLexer.FIELD), - t.ignore(), - e.QueryLexer.lexText - ); - }), - (e.QueryLexer.lexTerm = function (t) { - if ( - (t.width() > 1 && (t.backup(), t.emit(e.QueryLexer.TERM)), - t.ignore(), - t.more()) - ) - return e.QueryLexer.lexText; - }), - (e.QueryLexer.lexEditDistance = function (t) { - return ( - t.ignore(), - t.acceptDigitRun(), - t.emit(e.QueryLexer.EDIT_DISTANCE), - e.QueryLexer.lexText - ); - }), - (e.QueryLexer.lexBoost = function (t) { - return ( - t.ignore(), - t.acceptDigitRun(), - t.emit(e.QueryLexer.BOOST), - e.QueryLexer.lexText - ); - }), - (e.QueryLexer.lexEOS = function (t) { - t.width() > 0 && t.emit(e.QueryLexer.TERM); - }), - (e.QueryLexer.termSeparator = e.tokenizer.separator), - (e.QueryLexer.lexText = function (t) { - for (;;) { - var r = t.next(); - if (r == e.QueryLexer.EOS) return e.QueryLexer.lexEOS; - if (92 != r.charCodeAt(0)) { - if (":" == r) return e.QueryLexer.lexField; - if ("~" == r) - return ( - t.backup(), - t.width() > 0 && t.emit(e.QueryLexer.TERM), - e.QueryLexer.lexEditDistance - ); - if ("^" == r) - return ( - t.backup(), - t.width() > 0 && t.emit(e.QueryLexer.TERM), - e.QueryLexer.lexBoost - ); - if ("+" == r && 1 === t.width()) - return (t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText); - if ("-" == r && 1 === t.width()) - return (t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText); - if (r.match(e.QueryLexer.termSeparator)) return e.QueryLexer.lexTerm; - } else t.escapeCharacter(); - } - }), - (e.QueryParser = function (t, r) { - ((this.lexer = new e.QueryLexer(t)), - (this.query = r), - (this.currentClause = {}), - (this.lexemeIdx = 0)); - }), - (e.QueryParser.prototype.parse = function () { - (this.lexer.run(), (this.lexemes = this.lexer.lexemes)); - for (var t = e.QueryParser.parseClause; t; ) t = t(this); - return this.query; - }), - (e.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx]; - }), - (e.QueryParser.prototype.consumeLexeme = function () { - var e = this.peekLexeme(); - return ((this.lexemeIdx += 1), e); - }), - (e.QueryParser.prototype.nextClause = function () { - var e = this.currentClause; - (this.query.clause(e), (this.currentClause = {})); - }), - (e.QueryParser.parseClause = function (t) { - var r = t.peekLexeme(); - if (void 0 != r) - switch (r.type) { - case e.QueryLexer.PRESENCE: - return e.QueryParser.parsePresence; - case e.QueryLexer.FIELD: - return e.QueryParser.parseField; - case e.QueryLexer.TERM: - return e.QueryParser.parseTerm; - default: - var i = "expected either a field or a term, found " + r.type; - throw ( - r.str.length >= 1 && (i += " with value '" + r.str + "'"), - new e.QueryParseError(i, r.start, r.end) - ); - } - }), - (e.QueryParser.parsePresence = function (t) { - var r = t.consumeLexeme(); - if (void 0 != r) { - switch (r.str) { - case "-": - t.currentClause.presence = e.Query.presence.PROHIBITED; - break; - case "+": - t.currentClause.presence = e.Query.presence.REQUIRED; - break; - default: - var i = "unrecognised presence operator'" + r.str + "'"; - throw new e.QueryParseError(i, r.start, r.end); - } - var n = t.peekLexeme(); - if (void 0 == n) { - var i = "expecting term or field, found nothing"; - throw new e.QueryParseError(i, r.start, r.end); - } - switch (n.type) { - case e.QueryLexer.FIELD: - return e.QueryParser.parseField; - case e.QueryLexer.TERM: - return e.QueryParser.parseTerm; - default: - var i = "expecting term or field, found '" + n.type + "'"; - throw new e.QueryParseError(i, n.start, n.end); - } - } - }), - (e.QueryParser.parseField = function (t) { - var r = t.consumeLexeme(); - if (void 0 != r) { - if (t.query.allFields.indexOf(r.str) == -1) { - var i = t.query.allFields - .map(function (e) { - return "'" + e + "'"; - }) - .join(", "), - n = "unrecognised field '" + r.str + "', possible fields: " + i; - throw new e.QueryParseError(n, r.start, r.end); - } - t.currentClause.fields = [r.str]; - var s = t.peekLexeme(); - if (void 0 == s) { - var n = "expecting term, found nothing"; - throw new e.QueryParseError(n, r.start, r.end); - } - switch (s.type) { - case e.QueryLexer.TERM: - return e.QueryParser.parseTerm; - default: - var n = "expecting term, found '" + s.type + "'"; - throw new e.QueryParseError(n, s.start, s.end); - } - } - }), - (e.QueryParser.parseTerm = function (t) { - var r = t.consumeLexeme(); - if (void 0 != r) { - ((t.currentClause.term = r.str.toLowerCase()), - r.str.indexOf("*") != -1 && (t.currentClause.usePipeline = !1)); - var i = t.peekLexeme(); - if (void 0 == i) return void t.nextClause(); - switch (i.type) { - case e.QueryLexer.TERM: - return (t.nextClause(), e.QueryParser.parseTerm); - case e.QueryLexer.FIELD: - return (t.nextClause(), e.QueryParser.parseField); - case e.QueryLexer.EDIT_DISTANCE: - return e.QueryParser.parseEditDistance; - case e.QueryLexer.BOOST: - return e.QueryParser.parseBoost; - case e.QueryLexer.PRESENCE: - return (t.nextClause(), e.QueryParser.parsePresence); - default: - var n = "Unexpected lexeme type '" + i.type + "'"; - throw new e.QueryParseError(n, i.start, i.end); - } - } - }), - (e.QueryParser.parseEditDistance = function (t) { - var r = t.consumeLexeme(); - if (void 0 != r) { - var i = parseInt(r.str, 10); - if (isNaN(i)) { - var n = "edit distance must be numeric"; - throw new e.QueryParseError(n, r.start, r.end); - } - t.currentClause.editDistance = i; - var s = t.peekLexeme(); - if (void 0 == s) return void t.nextClause(); - switch (s.type) { - case e.QueryLexer.TERM: - return (t.nextClause(), e.QueryParser.parseTerm); - case e.QueryLexer.FIELD: - return (t.nextClause(), e.QueryParser.parseField); - case e.QueryLexer.EDIT_DISTANCE: - return e.QueryParser.parseEditDistance; - case e.QueryLexer.BOOST: - return e.QueryParser.parseBoost; - case e.QueryLexer.PRESENCE: - return (t.nextClause(), e.QueryParser.parsePresence); - default: - var n = "Unexpected lexeme type '" + s.type + "'"; - throw new e.QueryParseError(n, s.start, s.end); - } - } - }), - (e.QueryParser.parseBoost = function (t) { - var r = t.consumeLexeme(); - if (void 0 != r) { - var i = parseInt(r.str, 10); - if (isNaN(i)) { - var n = "boost must be numeric"; - throw new e.QueryParseError(n, r.start, r.end); - } - t.currentClause.boost = i; - var s = t.peekLexeme(); - if (void 0 == s) return void t.nextClause(); - switch (s.type) { - case e.QueryLexer.TERM: - return (t.nextClause(), e.QueryParser.parseTerm); - case e.QueryLexer.FIELD: - return (t.nextClause(), e.QueryParser.parseField); - case e.QueryLexer.EDIT_DISTANCE: - return e.QueryParser.parseEditDistance; - case e.QueryLexer.BOOST: - return e.QueryParser.parseBoost; - case e.QueryLexer.PRESENCE: - return (t.nextClause(), e.QueryParser.parsePresence); - default: - var n = "Unexpected lexeme type '" + s.type + "'"; - throw new e.QueryParseError(n, s.start, s.end); - } - } - }), - (function (e, t) { - "function" == typeof define && define.amd - ? define(t) - : "object" == typeof exports - ? (module.exports = t()) - : (e.lunr = t()); - })(this, function () { - return e; - })); -})();