@graphql-hive/laboratory
Version:
[Hive](https://the-guild.dev/graphql/hive) is a fully open-source schema registry, analytics, metrics and gateway for [GraphQL federation](https://the-guild.dev/graphql/hive/federation) and other GraphQL APIs.
558 lines (557 loc) • 10.1 kB
JavaScript
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var conf = {
wordPattern: /(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,
comments: {
lineComment: "//",
blockComment: ["/*", "*/"]
},
brackets: [
["{", "}"],
["[", "]"],
["(", ")"]
],
autoClosingPairs: [
{
open: "{",
close: "}"
},
{
open: "[",
close: "]"
},
{
open: "(",
close: ")"
},
{
open: "\"",
close: "\""
},
{
open: "'",
close: "'"
}
],
surroundingPairs: [
{
open: "{",
close: "}"
},
{
open: "[",
close: "]"
},
{
open: "(",
close: ")"
},
{
open: "\"",
close: "\""
},
{
open: "'",
close: "'"
}
],
folding: { markers: {
start: /* @__PURE__ */ RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),
end: /* @__PURE__ */ RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")
} }
}, language = {
tokenPostfix: ".scala",
keywords: /* @__PURE__ */ "asInstanceOf.catch.class.classOf.def.do.else.extends.finally.for.foreach.forSome.if.import.isInstanceOf.macro.match.new.object.package.return.throw.trait.try.type.until.val.var.while.with.yield.given.enum.then".split("."),
softKeywords: [
"as",
"export",
"extension",
"end",
"derives",
"on"
],
constants: [
"true",
"false",
"null",
"this",
"super"
],
modifiers: [
"abstract",
"final",
"implicit",
"lazy",
"override",
"private",
"protected",
"sealed"
],
softModifiers: [
"inline",
"opaque",
"open",
"transparent",
"using"
],
name: /(?:[a-z_$][\w$]*|`[^`]+`)/,
type: /(?:[A-Z][\w$]*)/,
symbols: /[=><!~?:&|+\-*\/^\\%@#]+/,
digits: /\d+(_+\d+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
escapes: /\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
fstring_conv: /[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,
tokenizer: {
root: [
[/\braw"""/, {
token: "string.quote",
bracket: "@open",
next: "@rawstringt"
}],
[/\braw"/, {
token: "string.quote",
bracket: "@open",
next: "@rawstring"
}],
[/\bs"""/, {
token: "string.quote",
bracket: "@open",
next: "@sstringt"
}],
[/\bs"/, {
token: "string.quote",
bracket: "@open",
next: "@sstring"
}],
[/\bf""""/, {
token: "string.quote",
bracket: "@open",
next: "@fstringt"
}],
[/\bf"/, {
token: "string.quote",
bracket: "@open",
next: "@fstring"
}],
[/"""/, {
token: "string.quote",
bracket: "@open",
next: "@stringt"
}],
[/"/, {
token: "string.quote",
bracket: "@open",
next: "@string"
}],
[
/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,
"number.float",
"@allowMethod"
],
[
/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,
"number.float",
"@allowMethod"
],
[
/0[xX](@hexdigits)[Ll]?/,
"number.hex",
"@allowMethod"
],
[
/(@digits)[fFdD]/,
"number.float",
"@allowMethod"
],
[
/(@digits)[lL]?/,
"number",
"@allowMethod"
],
[/\b_\*/, "key"],
[
/\b(_)\b/,
"keyword",
"@allowMethod"
],
[
/\bimport\b/,
"keyword",
"@import"
],
[/\b(case)([ \t]+)(class)\b/, [
"keyword.modifier",
"white",
"keyword"
]],
[
/\bcase\b/,
"keyword",
"@case"
],
[
/\bva[lr]\b/,
"keyword",
"@vardef"
],
[/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/, [
"keyword",
"white",
"identifier"
]],
[/@name(?=[ \t]*:(?!:))/, "variable"],
[/(\.)(@name|@symbols)/, ["operator", {
token: "@rematch",
next: "@allowMethod"
}]],
[/([{(])(\s*)(@name(?=\s*=>))/, [
"@brackets",
"white",
"variable"
]],
[/@name/, { cases: {
"@keywords": "keyword",
"@softKeywords": "keyword",
"@modifiers": "keyword.modifier",
"@softModifiers": "keyword.modifier",
"@constants": {
token: "constant",
next: "@allowMethod"
},
"@default": {
token: "identifier",
next: "@allowMethod"
}
} }],
[
/@type/,
"type",
"@allowMethod"
],
{ include: "@whitespace" },
[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/, "annotation"],
[/[{(]/, "@brackets"],
[
/[})]/,
"@brackets",
"@allowMethod"
],
[/\[/, "operator.square"],
[
/](?!\s*(?:va[rl]|def|type)\b)/,
"operator.square",
"@allowMethod"
],
[/]/, "operator.square"],
[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/, "keyword"],
[/@symbols/, "operator"],
[/[;,\.]/, "delimiter"],
[/'[a-zA-Z$][\w$]*(?!')/, "attribute.name"],
[
/'[^\\']'/,
"string",
"@allowMethod"
],
[/(')(@escapes)(')/, [
"string",
"string.escape",
{
token: "string",
next: "@allowMethod"
}
]],
[/'/, "string.invalid"]
],
import: [
[
/;/,
"delimiter",
"@pop"
],
[
/^|$/,
"",
"@pop"
],
[/[ \t]+/, "white"],
[
/[\n\r]+/,
"white",
"@pop"
],
[
/\/\*/,
"comment",
"@comment"
],
[/@name|@type/, "type"],
[/[(){}]/, "@brackets"],
[/[[\]]/, "operator.square"],
[/[\.,]/, "delimiter"]
],
allowMethod: [
[
/^|$/,
"",
"@pop"
],
[/[ \t]+/, "white"],
[
/[\n\r]+/,
"white",
"@pop"
],
[
/\/\*/,
"comment",
"@comment"
],
[
/(?==>[\s\w([{])/,
"keyword",
"@pop"
],
[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/, { cases: {
"@keywords": {
token: "keyword",
next: "@pop"
},
"->|<-|>:|<:|<%": {
token: "keyword",
next: "@pop"
},
"@default": {
token: "@rematch",
next: "@pop"
}
} }],
[
"",
"",
"@pop"
]
],
comment: [
[/[^\/*]+/, "comment"],
[
/\/\*/,
"comment",
"@push"
],
[
/\*\//,
"comment",
"@pop"
],
[/[\/*]/, "comment"]
],
case: [
[/\b_\*/, "key"],
[
/\b(_|true|false|null|this|super)\b/,
"keyword",
"@allowMethod"
],
[
/\bif\b|=>/,
"keyword",
"@pop"
],
[
/`[^`]+`/,
"identifier",
"@allowMethod"
],
[
/@name/,
"variable",
"@allowMethod"
],
[/:::?|\||@(?![a-z_$])/, "keyword"],
{ include: "@root" }
],
vardef: [
[/\b_\*/, "key"],
[/\b(_|true|false|null|this|super)\b/, "keyword"],
[/@name/, "variable"],
[/:::?|\||@(?![a-z_$])/, "keyword"],
[
/=|:(?!:)/,
"operator",
"@pop"
],
[
/$/,
"white",
"@pop"
],
{ include: "@root" }
],
string: [
[/[^\\"\n\r]+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[/"/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}]
],
stringt: [
[/[^\\"\n\r]+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[/"(?=""")/, "string"],
[/"""/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/"/, "string"]
],
fstring: [
[/@escapes/, "string.escape"],
[/"/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/\$\$/, "string"],
[/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
[
/\$\{/,
"operator",
"@interp"
],
[/%%/, "string"],
[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, [
"metatag",
"keyword.modifier",
"number",
"metatag"
]],
[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, [
"metatag",
"number",
"metatag"
]],
[/(%)([\-#+ 0,(])(@fstring_conv)/, [
"metatag",
"keyword.modifier",
"metatag"
]],
[/(%)(@fstring_conv)/, ["metatag", "metatag"]],
[/./, "string"]
],
fstringt: [
[/@escapes/, "string.escape"],
[/"(?=""")/, "string"],
[/"""/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/\$\$/, "string"],
[/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
[
/\$\{/,
"operator",
"@interp"
],
[/%%/, "string"],
[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, [
"metatag",
"keyword.modifier",
"number",
"metatag"
]],
[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, [
"metatag",
"number",
"metatag"
]],
[/(%)([\-#+ 0,(])(@fstring_conv)/, [
"metatag",
"keyword.modifier",
"metatag"
]],
[/(%)(@fstring_conv)/, ["metatag", "metatag"]],
[/./, "string"]
],
sstring: [
[/@escapes/, "string.escape"],
[/"/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/\$\$/, "string"],
[/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
[
/\$\{/,
"operator",
"@interp"
],
[/./, "string"]
],
sstringt: [
[/@escapes/, "string.escape"],
[/"(?=""")/, "string"],
[/"""/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/\$\$/, "string"],
[/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
[
/\$\{/,
"operator",
"@interp"
],
[/./, "string"]
],
interp: [
[
/{/,
"operator",
"@push"
],
[
/}/,
"operator",
"@pop"
],
{ include: "@root" }
],
rawstring: [[/[^"]/, "string"], [/"/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}]],
rawstringt: [
[/[^"]/, "string"],
[/"(?=""")/, "string"],
[/"""/, {
token: "string.quote",
bracket: "@close",
switchTo: "@allowMethod"
}],
[/"/, "string"]
],
whitespace: [
[/[ \t\r\n]+/, "white"],
[
/\/\*/,
"comment",
"@comment"
],
[/\/\/.*$/, "comment"]
]
}
};
export { conf, language };