@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.
511 lines (510 loc) • 10.2 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 = {
comments: {
lineComment: "//",
blockComment: ["(*", "*)"]
},
brackets: [
["{", "}"],
["[", "]"],
["(", ")"],
["<", ">"]
],
autoClosingPairs: [
{
open: "\"",
close: "\"",
notIn: ["string", "comment"]
},
{
open: "{",
close: "}",
notIn: ["string", "comment"]
},
{
open: "[",
close: "]",
notIn: ["string", "comment"]
},
{
open: "(",
close: ")",
notIn: ["string", "comment"]
}
]
}, language = {
tokenPostfix: ".pats",
defaultToken: "invalid",
keywords: /* @__PURE__ */ "abstype.abst0ype.absprop.absview.absvtype.absviewtype.absvt0ype.absviewt0ype.as.and.assume.begin.classdec.datasort.datatype.dataprop.dataview.datavtype.dataviewtype.do.end.extern.extype.extvar.exception.fn.fnx.fun.prfn.prfun.praxi.castfn.if.then.else.ifcase.in.infix.infixl.infixr.prefix.postfix.implmnt.implement.primplmnt.primplement.import.let.local.macdef.macrodef.nonfix.symelim.symintr.overload.of.op.rec.sif.scase.sortdef.sta.stacst.stadef.static.staload.dynload.try.tkindef.typedef.propdef.viewdef.vtypedef.viewtypedef.prval.var.prvar.when.where.with.withtype.withprop.withview.withvtype.withviewtype".split("."),
keywords_dlr: /* @__PURE__ */ "$delay.$ldelay.$arrpsz.$arrptrsize.$d2ctype.$effmask.$effmask_ntm.$effmask_exn.$effmask_ref.$effmask_wrt.$effmask_all.$extern.$extkind.$extype.$extype_struct.$extval.$extfcall.$extmcall.$literal.$myfilename.$mylocation.$myfunction.$lst.$lst_t.$lst_vt.$list.$list_t.$list_vt.$rec.$rec_t.$rec_vt.$record.$record_t.$record_vt.$tup.$tup_t.$tup_vt.$tuple.$tuple_t.$tuple_vt.$break.$continue.$raise.$showtype.$vcopyenv_v.$vcopyenv_vt.$tempenver.$solver_assert.$solver_verify".split("."),
keywords_srp: [
"#if",
"#ifdef",
"#ifndef",
"#then",
"#elif",
"#elifdef",
"#elifndef",
"#else",
"#endif",
"#error",
"#prerr",
"#print",
"#assert",
"#undef",
"#define",
"#include",
"#require",
"#pragma",
"#codegen2",
"#codegen3"
],
irregular_keyword_list: /* @__PURE__ */ "val+.val-.val.case+.case-.case.addr@.addr.fold@.free@.fix@.fix.lam@.lam.llam@.llam.viewt@ype+.viewt@ype-.viewt@ype.viewtype+.viewtype-.viewtype.view+.view-.view@.view.type+.type-.type.vtype+.vtype-.vtype.vt@ype+.vt@ype-.vt@ype.viewt@ype+.viewt@ype-.viewt@ype.viewtype+.viewtype-.viewtype.prop+.prop-.prop.type+.type-.type.t@ype.t@ype+.t@ype-.abst@ype.abstype.absviewt@ype.absvt@ype.for*.for.while*.while".split("."),
keywords_types: [
"bool",
"double",
"byte",
"int",
"short",
"char",
"void",
"unit",
"long",
"float",
"string",
"strptr"
],
keywords_effects: [
"0",
"fun",
"clo",
"prf",
"funclo",
"cloptr",
"cloref",
"ref",
"ntm",
"1"
],
operators: [
"@",
"!",
"|",
"`",
":",
"$",
".",
"=",
"#",
"~",
"..",
"...",
"=>",
"=<>",
"=/=>",
"=>>",
"=/=>>",
"<",
">",
"><",
".<",
">.",
".<>.",
"->",
"-<>"
],
brackets: [
{
open: ",(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "`(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "%(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "'(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "'{",
close: "}",
token: "delimiter.parenthesis"
},
{
open: "@(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "@{",
close: "}",
token: "delimiter.brace"
},
{
open: "@[",
close: "]",
token: "delimiter.square"
},
{
open: "#[",
close: "]",
token: "delimiter.square"
},
{
open: "{",
close: "}",
token: "delimiter.curly"
},
{
open: "[",
close: "]",
token: "delimiter.square"
},
{
open: "(",
close: ")",
token: "delimiter.parenthesis"
},
{
open: "<",
close: ">",
token: "delimiter.angle"
}
],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
IDENTFST: /[a-zA-Z_]/,
IDENTRST: /[a-zA-Z0-9_'$]/,
symbolic: /[%&+-./:=@~`^|*!$#?<>]/,
digit: /[0-9]/,
digitseq0: /@digit*/,
xdigit: /[0-9A-Za-z]/,
xdigitseq0: /@xdigit*/,
INTSP: /[lLuU]/,
FLOATSP: /[fFlL]/,
fexponent: /[eE][+-]?[0-9]+/,
fexponent_bin: /[pP][+-]?[0-9]+/,
deciexp: /\.[0-9]*@fexponent?/,
hexiexp: /\.[0-9a-zA-Z]*@fexponent_bin?/,
irregular_keywords: /val[+-]?|case[+-]?|addr\@?|fold\@|free\@|fix\@?|lam\@?|llam\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\*?|while\*?/,
ESCHAR: /[ntvbrfa\\\?'"\(\[\{]/,
start: "root",
tokenizer: {
root: [
{
regex: /[ \t\r\n]+/,
action: { token: "" }
},
{
regex: /\(\*\)/,
action: { token: "invalid" }
},
{
regex: /\(\*/,
action: {
token: "comment",
next: "lexing_COMMENT_block_ml"
}
},
{
regex: /\(/,
action: "@brackets"
},
{
regex: /\)/,
action: "@brackets"
},
{
regex: /\[/,
action: "@brackets"
},
{
regex: /\]/,
action: "@brackets"
},
{
regex: /\{/,
action: "@brackets"
},
{
regex: /\}/,
action: "@brackets"
},
{
regex: /,\(/,
action: "@brackets"
},
{
regex: /,/,
action: { token: "delimiter.comma" }
},
{
regex: /;/,
action: { token: "delimiter.semicolon" }
},
{
regex: /@\(/,
action: "@brackets"
},
{
regex: /@\[/,
action: "@brackets"
},
{
regex: /@\{/,
action: "@brackets"
},
{
regex: /:</,
action: {
token: "keyword",
next: "@lexing_EFFECT_commaseq0"
}
},
{
regex: /\.@symbolic+/,
action: { token: "identifier.sym" }
},
{
regex: /\.@digit*@fexponent@FLOATSP*/,
action: { token: "number.float" }
},
{
regex: /\.@digit+/,
action: { token: "number.float" }
},
{
regex: /\$@IDENTFST@IDENTRST*/,
action: { cases: {
"@keywords_dlr": { token: "keyword.dlr" },
"@default": { token: "namespace" }
} }
},
{
regex: /\#@IDENTFST@IDENTRST*/,
action: { cases: {
"@keywords_srp": { token: "keyword.srp" },
"@default": { token: "identifier" }
} }
},
{
regex: /%\(/,
action: { token: "delimiter.parenthesis" }
},
{
regex: /^%{(#|\^|\$)?/,
action: {
token: "keyword",
next: "@lexing_EXTCODE",
nextEmbedded: "text/javascript"
}
},
{
regex: /^%}/,
action: { token: "keyword" }
},
{
regex: /'\(/,
action: { token: "delimiter.parenthesis" }
},
{
regex: /'\[/,
action: { token: "delimiter.bracket" }
},
{
regex: /'\{/,
action: { token: "delimiter.brace" }
},
[/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/, [
"string",
"string.escape",
"string"
]],
[/'[^\\']'/, "string"],
[
/"/,
"string.quote",
"@lexing_DQUOTE"
],
{
regex: /`\(/,
action: "@brackets"
},
{
regex: /\\/,
action: { token: "punctuation" }
},
{
regex: /@irregular_keywords(?!@IDENTRST)/,
action: { token: "keyword" }
},
{
regex: /@IDENTFST@IDENTRST*[<!\[]?/,
action: { cases: {
"@keywords": { token: "keyword" },
"@keywords_types": { token: "type" },
"@default": { token: "identifier" }
} }
},
{
regex: /\/\/\/\//,
action: {
token: "comment",
next: "@lexing_COMMENT_rest"
}
},
{
regex: /\/\/.*$/,
action: { token: "comment" }
},
{
regex: /\/\*/,
action: {
token: "comment",
next: "@lexing_COMMENT_block_c"
}
},
{
regex: /-<|=</,
action: {
token: "keyword",
next: "@lexing_EFFECT_commaseq0"
}
},
{
regex: /@symbolic+/,
action: { cases: {
"@operators": "keyword",
"@default": "operator"
} }
},
{
regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,
action: { token: "number.float" }
},
{
regex: /0[xX]@xdigit+@INTSP*/,
action: { token: "number.hex" }
},
{
regex: /0[0-7]+(?![0-9])@INTSP*/,
action: { token: "number.octal" }
},
{
regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/,
action: { token: "number.float" }
},
{
regex: /@digit@digitseq0@INTSP*/,
action: { token: "number.decimal" }
},
{
regex: /@digit+@INTSP*/,
action: { token: "number" }
}
],
lexing_COMMENT_block_ml: [
[/[^\(\*]+/, "comment"],
[
/\(\*/,
"comment",
"@push"
],
[/\(\*/, "comment.invalid"],
[
/\*\)/,
"comment",
"@pop"
],
[/\*/, "comment"]
],
lexing_COMMENT_block_c: [
[/[^\/*]+/, "comment"],
[
/\*\//,
"comment",
"@pop"
],
[/[\/*]/, "comment"]
],
lexing_COMMENT_rest: [[
/$/,
"comment",
"@pop"
], [/.*/, "comment"]],
lexing_EFFECT_commaseq0: [
{
regex: /@IDENTFST@IDENTRST+|@digit+/,
action: { cases: {
"@keywords_effects": { token: "type.effect" },
"@default": { token: "identifier" }
} }
},
{
regex: /,/,
action: { token: "punctuation" }
},
{
regex: />/,
action: {
token: "@rematch",
next: "@pop"
}
}
],
lexing_EXTCODE: [{
regex: /^%}/,
action: {
token: "@rematch",
next: "@pop",
nextEmbedded: "@pop"
}
}, {
regex: /[^%]+/,
action: ""
}],
lexing_DQUOTE: [
{
regex: /"/,
action: {
token: "string.quote",
next: "@pop"
}
},
{
regex: /(\{\$)(@IDENTFST@IDENTRST*)(\})/,
action: [
{ token: "string.escape" },
{ token: "identifier" },
{ token: "string.escape" }
]
},
{
regex: /\\$/,
action: { token: "string.escape" }
},
{
regex: /\\(@ESCHAR|[xX]@xdigit+|@digit+)/,
action: { token: "string.escape" }
},
{
regex: /[^\\"]+/,
action: { token: "string" }
}
]
}
};
export { conf, language };