export default (() => { { let I = "[A-Za-z$_][0-9A-Za-z$_]*", x = ["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"], O = ["true", "false", "null", "undefined", "NaN", "Infinity"], C = ["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"], M = ["Error", "EvalError", "InternalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"], T = ["setInterval", "setTimeout", "clearInterval", "clearTimeout", "require", "exports", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape"], B = ["arguments", "this", "super", "console", "window", "document", "localStorage", "sessionStorage", "module", "global"], $ = [].concat(T, C, M); return e => { const n = e.regex, a = I, t = /<[A-Za-z0-9\\._:-]+/, s = /\/[A-Za-z0-9\\._:-]+>|\/>/, r = (e, n) => { var a, t, s = e[0].length + e.index, r = e.input[s]; ("<" === r || "," === r || (">" === r && ([r, a] = [e, { after: s }.after], t = "</" + r[0].slice(1), -1 === r.input.indexOf(t, a)) && n.ignoreMatch(), (r = e.input.substring(s)).match(/^\s*=/)) || (t = r.match(/^\s+extends\s+/)) && 0 === t.index) && n.ignoreMatch(); }, c = { $pattern: I, keyword: x, literal: O, built_in: $, "variable.language": B }, i = "[0-9](_?[0-9])*", o = `\\.(${i})`, l = "0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*", b = { className: "number", variants: [{ begin: `(\\b(${l})((${o})|\\.)?|(${o}))[eE][+-]?(${i})\\b` }, { begin: `\\b(${l})\\b((${o})\\b|\\.)?|(${o})\\b` }, { begin: "\\b(0|[1-9](_?[0-9])*)n\\b" }, { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, { begin: "\\b0[0-7]+n?\\b" }], relevance: 0 }, d = { className: "subst", begin: "\\$\\{", end: "\\}", keywords: c, contains: [] }, g = { begin: "html`", end: "", starts: { end: "`", returnEnd: !1, contains: [e.BACKSLASH_ESCAPE, d], subLanguage: "xml" } }, u = { begin: "css`", end: "", starts: { end: "`", returnEnd: !1, contains: [e.BACKSLASH_ESCAPE, d], subLanguage: "css" } }, m = { begin: "gql`", end: "", starts: { end: "`", returnEnd: !1, contains: [e.BACKSLASH_ESCAPE, d], subLanguage: "graphql" } }, E = { className: "string", begin: "`", end: "`", contains: [e.BACKSLASH_ESCAPE, d] }, A = { className: "comment", variants: [e.COMMENT(/\/\*\*(?!\/)/, "\\*/", { relevance: 0, contains: [{ begin: "(?=@[A-Za-z]+)", relevance: 0, contains: [{ className: "doctag", begin: "@[A-Za-z]+" }, { className: "type", begin: "\\{", end: "\\}", excludeEnd: !0, excludeBegin: !0, relevance: 0 }, { className: "variable", begin: a + "(?=\\s*(-)|$)", endsParent: !0, relevance: 0 }, { begin: /(?=[^\n])\s/, relevance: 0 }] }] }), e.C_BLOCK_COMMENT_MODE, e.C_LINE_COMMENT_MODE] }, y = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, g, u, m, E, { match: /\$\d+/ }, b]; d.contains = y.concat({ begin: /\{/, end: /\}/, keywords: c, contains: ["self"].concat(y) }); var N = [].concat(A, d.contains), N = N.concat([{ begin: /\(/, end: /\)/, keywords: c, contains: ["self"].concat(N) }]), _ = { className: "params", begin: /\(/, end: /\)/, excludeBegin: !0, excludeEnd: !0, keywords: c, contains: N }, h = { variants: [{ match: [/class/, /\s+/, a, /\s+/, /extends/, /\s+/, n.concat(a, "(", n.concat(/\./, a), ")*")], scope: { 1: "keyword", 3: "title.class", 5: "keyword", 7: "title.class.inherited" } }, { match: [/class/, /\s+/, a], scope: { 1: "keyword", 3: "title.class" } }] }, f = { relevance: 0, match: n.either(/\bJSON/, /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/), className: "title.class", keywords: { _: [...C, ...M] } }, S = { variants: [{ match: [/function/, /\s+/, a, /(?=\s*\()/] }, { match: [/function/, /\s*(?=\()/] }], className: { 1: "keyword", 3: "title.function" }, label: "func.def", contains: [_], illegal: /%/ }, v = { match: n.concat(/\b/, (v = [...T, "super", "import"], n.concat("(?!", v.join("|"), ")")), a, n.lookahead(/\(/)), className: "title.function", relevance: 0 }, p = { begin: n.concat(/\./, n.lookahead(n.concat(a, /(?![0-9A-Za-z$_(])/))), end: a, excludeBegin: !0, keywords: "prototype", className: "property", relevance: 0 }, w = { match: [/get|set/, /\s+/, a, /(?=\()/], className: { 1: "keyword", 3: "title.function" }, contains: [{ begin: /\(\)/ }, _] }, R = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + e.UNDERSCORE_IDENT_RE + ")\\s*=>", k = { match: [/const|var|let/, /\s+/, a, /\s*/, /=\s*/, /(async\s*)?/, n.lookahead(R)], keywords: "async", className: { 1: "keyword", 3: "title.function" }, contains: [_] }; return { name: "JavaScript", aliases: ["js", "jsx", "mjs", "cjs"], keywords: c, exports: { PARAMS_CONTAINS: N, CLASS_REFERENCE: f }, 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, g, u, m, E, A, { match: /\$\d+/ }, b, f, { className: "attr", begin: a + n.lookahead(":"), relevance: 0 }, k, { begin: "(" + e.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*", keywords: "return throw case", relevance: 0, contains: [A, e.REGEXP_MODE, { className: "function", begin: R, 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: c, contains: N }] }] }, { begin: /,/, relevance: 0 }, { match: /\s+/, relevance: 0 }, { variants: [{ begin: "<>", end: "</>" }, { match: /<[A-Za-z0-9\\._:-]+\s*\/>/ }, { begin: t, "on:begin": r, end: s }], subLanguage: "xml", contains: [{ begin: t, end: s, skip: !0, contains: ["self"] }] }] }, S, { beginKeywords: "while if switch catch for" }, { begin: "\\b(?!function)" + e.UNDERSCORE_IDENT_RE + "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", returnBegin: !0, label: "func.def", contains: [_, e.inherit(e.TITLE_MODE, { begin: a, className: "title.function" })] }, { match: /\.\.\./, relevance: 0 }, p, { match: "\\$" + a, relevance: 0 }, { match: [/\bconstructor(?=\s*\()/], className: { 1: "title.function" }, contains: [_] }, v, { relevance: 0, match: /\b[A-Z][A-Z_0-9]+\b/, className: "variable.constant" }, h, w, { match: /\$[(.]/ }] }; }; } });