123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- 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: /\$[(.]/
- }]
- };
- };
- }
- });
|