UNPKG

@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.

534 lines (533 loc) • 11.2 kB
/*!----------------------------------------------------------------------------- * 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: ["=begin", "=end"] }, brackets: [ ["(", ")"], ["{", "}"], ["[", "]"] ], autoClosingPairs: [ { open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: "\"", close: "\"" }, { open: "'", close: "'" } ], surroundingPairs: [ { open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: "\"", close: "\"" }, { open: "'", close: "'" } ], indentationRules: { increaseIndentPattern: /* @__PURE__ */ RegExp("^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|(\"|'|/).*\\4)*(#.*)?$"), decreaseIndentPattern: /* @__PURE__ */ RegExp("^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)") } }, language = { tokenPostfix: ".ruby", keywords: /* @__PURE__ */ "__LINE__.__ENCODING__.__FILE__.BEGIN.END.alias.and.begin.break.case.class.def.defined?.do.else.elsif.end.ensure.for.false.if.in.module.next.nil.not.or.redo.rescue.retry.return.self.super.then.true.undef.unless.until.when.while.yield".split("."), keywordops: [ "::", "..", "...", "?", ":", "=>" ], builtins: [ "require", "public", "private", "include", "extend", "attr_reader", "protected", "private_class_method", "protected_class_method", "new" ], declarations: [ "module", "class", "def", "case", "do", "begin", "for", "if", "while", "until", "unless" ], linedecls: [ "def", "case", "do", "begin", "for", "if", "while", "until", "unless" ], operators: /* @__PURE__ */ "^.&.|.<=>.==.===.!~.=~.>.>=.<.<=.<<.>>.+.-.*./.%.**.~.+@.-@.[].[]=.`.+=.-=.*=.**=./=.^=.%=.<<=.>>=.&=.&&=.||=.|=".split("."), brackets: [ { open: "(", close: ")", token: "delimiter.parenthesis" }, { open: "{", close: "}", token: "delimiter.curly" }, { open: "[", close: "]", token: "delimiter.square" } ], symbols: /[=><!~?:&|+\-*\/\^%\.]+/, escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/, escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/, decpart: /\d(_?\d)*/, decimal: /0|@decpart/, delim: /[^a-zA-Z0-9\s\n\r]/, heredelim: /(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/, regexpctl: /[(){}\[\]\$\^|\-*+?\.]/, regexpesc: /\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/, tokenizer: { root: [ [/^(\s*)([a-z_]\w*[!?=]?)/, ["white", { cases: { "for|until|while": { token: "keyword.$2", next: "@dodecl.$2" }, "@declarations": { token: "keyword.$2", next: "@root.$2" }, end: { token: "keyword.$S2", next: "@pop" }, "@keywords": "keyword", "@builtins": "predefined", "@default": "identifier" } }]], [/[a-z_]\w*[!?=]?/, { cases: { "if|unless|while|until": { token: "keyword.$0x", next: "@modifier.$0x" }, for: { token: "keyword.$2", next: "@dodecl.$2" }, "@linedecls": { token: "keyword.$0", next: "@root.$0" }, end: { token: "keyword.$S2", next: "@pop" }, "@keywords": "keyword", "@builtins": "predefined", "@default": "identifier" } }], [/[A-Z][\w]*[!?=]?/, "constructor.identifier"], [/\$[\w]*/, "global.constant"], [/@[\w]*/, "namespace.instance.identifier"], [/@@@[\w]*/, "namespace.class.identifier"], [/<<[-~](@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }], [/[ \t\r\n]+<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }], [/^<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }], { include: "@whitespace" }, [/"/, { token: "string.d.delim", next: "@dstring.d.\"" }], [/'/, { token: "string.sq.delim", next: "@sstring.sq" }], [/%([rsqxwW]|Q?)/, { token: "@rematch", next: "pstring" }], [/`/, { token: "string.x.delim", next: "@dstring.x.`" }], [/:(\w|[$@])\w*[!?=]?/, "string.s"], [/:"/, { token: "string.s.delim", next: "@dstring.s.\"" }], [/:'/, { token: "string.s.delim", next: "@sstring.s" }], [/\/(?=(\\\/|[^\/\n])+\/)/, { token: "regexp.delim", next: "@regexp" }], [/[{}()\[\]]/, "@brackets"], [/@symbols/, { cases: { "@keywordops": "keyword", "@operators": "operator", "@default": "" } }], [/[;,]/, "delimiter"], [/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, "number.hex"], [/0[_oO][0-7](_?[0-7])*/, "number.octal"], [/0[bB][01](_?[01])*/, "number.binary"], [/0[dD]@decpart/, "number"], [/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/, { cases: { $1: "number.float", "@default": "number" } }] ], dodecl: [ [/^/, { token: "", switchTo: "@root.$S2" }], [/[a-z_]\w*[!?=]?/, { cases: { end: { token: "keyword.$S2", next: "@pop" }, do: { token: "keyword", switchTo: "@root.$S2" }, "@linedecls": { token: "@rematch", switchTo: "@root.$S2" }, "@keywords": "keyword", "@builtins": "predefined", "@default": "identifier" } }], { include: "@root" } ], modifier: [ [ /^/, "", "@pop" ], [/[a-z_]\w*[!?=]?/, { cases: { end: { token: "keyword.$S2", next: "@pop" }, "then|else|elsif|do": { token: "keyword", switchTo: "@root.$S2" }, "@linedecls": { token: "@rematch", switchTo: "@root.$S2" }, "@keywords": "keyword", "@builtins": "predefined", "@default": "identifier" } }], { include: "@root" } ], sstring: [ [/[^\\']+/, "string.$S2"], [/\\\\|\\'|\\$/, "string.$S2.escape"], [/\\./, "string.$S2.invalid"], [/'/, { token: "string.$S2.delim", next: "@pop" }] ], dstring: [ [/[^\\`"#]+/, "string.$S2"], [ /#/, "string.$S2.escape", "@interpolated" ], [/\\$/, "string.$S2.escape"], [/@escapes/, "string.$S2.escape"], [/\\./, "string.$S2.escape.invalid"], [/[`"]/, { cases: { "$#==$S3": { token: "string.$S2.delim", next: "@pop" }, "@default": "string.$S2" } }] ], heredoc: [[/^(\s*)(@heredelim)$/, { cases: { "$2==$S2": ["string.heredoc", { token: "string.heredoc.delimiter", next: "@pop" }], "@default": ["string.heredoc", "string.heredoc"] } }], [/.*/, "string.heredoc"]], interpolated: [ [ /\$\w*/, "global.constant", "@pop" ], [ /@\w*/, "namespace.class.identifier", "@pop" ], [ /@@@\w*/, "namespace.instance.identifier", "@pop" ], [/[{]/, { token: "string.escape.curly", switchTo: "@interpolated_compound" }], [ "", "", "@pop" ] ], interpolated_compound: [[/[}]/, { token: "string.escape.curly", next: "@pop" }], { include: "@root" }], pregexp: [ { include: "@whitespace" }, [/[^\(\{\[\\]/, { cases: { "$#==$S3": { token: "regexp.delim", next: "@pop" }, "$#==$S2": { token: "regexp.delim", next: "@push" }, "~[)}\\]]": "@brackets.regexp.escape.control", "~@regexpctl": "regexp.escape.control", "@default": "regexp" } }], { include: "@regexcontrol" } ], regexp: [ { include: "@regexcontrol" }, [/[^\\\/]/, "regexp"], [ "/[ixmp]*", { token: "regexp.delim" }, "@pop" ] ], regexcontrol: [ [/(\{)(\d+(?:,\d*)?)(\})/, [ "@brackets.regexp.escape.control", "regexp.escape.control", "@brackets.regexp.escape.control" ]], [/(\[)(\^?)/, ["@brackets.regexp.escape.control", { token: "regexp.escape.control", next: "@regexrange" }]], [/(\()(\?[:=!])/, ["@brackets.regexp.escape.control", "regexp.escape.control"]], [/\(\?#/, { token: "regexp.escape.control", next: "@regexpcomment" }], [/[()]/, "@brackets.regexp.escape.control"], [/@regexpctl/, "regexp.escape.control"], [/\\$/, "regexp.escape"], [/@regexpesc/, "regexp.escape"], [/\\\./, "regexp.invalid"], [ /#/, "regexp.escape", "@interpolated" ] ], regexrange: [ [/-/, "regexp.escape.control"], [/\^/, "regexp.invalid"], [/\\$/, "regexp.escape"], [/@regexpesc/, "regexp.escape"], [/[^\]]/, "regexp"], [ /\]/, "@brackets.regexp.escape.control", "@pop" ] ], regexpcomment: [[/[^)]+/, "comment"], [/\)/, { token: "regexp.escape.control", next: "@pop" }]], pstring: [ [/%([qws])\(/, { token: "string.$1.delim", switchTo: "@qstring.$1.(.)" }], [/%([qws])\[/, { token: "string.$1.delim", switchTo: "@qstring.$1.[.]" }], [/%([qws])\{/, { token: "string.$1.delim", switchTo: "@qstring.$1.{.}" }], [/%([qws])</, { token: "string.$1.delim", switchTo: "@qstring.$1.<.>" }], [/%([qws])(@delim)/, { token: "string.$1.delim", switchTo: "@qstring.$1.$2.$2" }], [/%r\(/, { token: "regexp.delim", switchTo: "@pregexp.(.)" }], [/%r\[/, { token: "regexp.delim", switchTo: "@pregexp.[.]" }], [/%r\{/, { token: "regexp.delim", switchTo: "@pregexp.{.}" }], [/%r</, { token: "regexp.delim", switchTo: "@pregexp.<.>" }], [/%r(@delim)/, { token: "regexp.delim", switchTo: "@pregexp.$1.$1" }], [/%(x|W|Q?)\(/, { token: "string.$1.delim", switchTo: "@qqstring.$1.(.)" }], [/%(x|W|Q?)\[/, { token: "string.$1.delim", switchTo: "@qqstring.$1.[.]" }], [/%(x|W|Q?)\{/, { token: "string.$1.delim", switchTo: "@qqstring.$1.{.}" }], [/%(x|W|Q?)</, { token: "string.$1.delim", switchTo: "@qqstring.$1.<.>" }], [/%(x|W|Q?)(@delim)/, { token: "string.$1.delim", switchTo: "@qqstring.$1.$2.$2" }], [/%([rqwsxW]|Q?)./, { token: "invalid", next: "@pop" }], [/./, { token: "invalid", next: "@pop" }] ], qstring: [ [/\\$/, "string.$S2.escape"], [/\\./, "string.$S2.escape"], [/./, { cases: { "$#==$S4": { token: "string.$S2.delim", next: "@pop" }, "$#==$S3": { token: "string.$S2.delim", next: "@push" }, "@default": "string.$S2" } }] ], qqstring: [[ /#/, "string.$S2.escape", "@interpolated" ], { include: "@qstring" }], whitespace: [ [/[ \t\r\n]+/, ""], [ /^\s*=begin\b/, "comment", "@comment" ], [/#.*$/, "comment"] ], comment: [ [/[^=]+/, "comment"], [/^\s*=begin\b/, "comment.invalid"], [ /^\s*=end\b.*/, "comment", "@pop" ], [/[=]/, "comment"] ] } }; export { conf, language };