1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
(Prism.languages.graphql = {
comment: /#.*/,
description: {
pattern: /(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,
greedy: !0,
alias: 'string',
inside: {
'language-markdown': {
pattern: /(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,
lookbehind: !0,
inside: Prism.languages.markdown,
},
},
},
string: {
pattern: /"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,
greedy: !0,
},
number: /(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,
boolean: /\b(?:false|true)\b/,
variable: /\$[a-z_]\w*/i,
directive: { pattern: /@[a-z_]\w*/i, alias: 'function' },
'attr-name': {
pattern: /\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,
greedy: !0,
},
'atom-input': { pattern: /\b[A-Z]\w*Input\b/, alias: 'class-name' },
scalar: /\b(?:Boolean|Float|ID|Int|String)\b/,
constant: /\b[A-Z][A-Z_\d]*\b/,
'class-name': {
pattern:
/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,
lookbehind: !0,
},
fragment: {
pattern: /(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,
lookbehind: !0,
alias: 'function',
},
'definition-mutation': {
pattern: /(\bmutation\s+)[a-zA-Z_]\w*/,
lookbehind: !0,
alias: 'function',
},
'definition-query': {
pattern: /(\bquery\s+)[a-zA-Z_]\w*/,
lookbehind: !0,
alias: 'function',
},
keyword:
/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,
operator: /[!=|&]|\.{3}/,
'property-query': /\w+(?=\s*\()/,
object: /\w+(?=\s*\{)/,
punctuation: /[!(){}\[\]:=,]/,
property: /\w+/,
}),
Prism.hooks.add('after-tokenize', function (n) {
if ('graphql' === n.language)
for (
var o = n.tokens.filter(function (n) {
return (
'string' != typeof n &&
'comment' !== n.type &&
'scalar' !== n.type
);
}),
s = 0;
s < o.length;
) {
var t = o[s++];
if ('keyword' === t.type && 'mutation' === t.content) {
var e = [];
if (
c(['definition-mutation', 'punctuation']) &&
'(' === l(1).content
) {
s += 2;
var a = f(/^\($/, /^\)$/);
if (-1 === a) continue;
for (; s < a; s++) {
var r = l(0);
'variable' === r.type &&
(b(r, 'variable-input'), e.push(r.content));
}
s = a + 1;
}
if (
c(['punctuation', 'property-query']) &&
'{' === l(0).content &&
(s++, b(l(0), 'property-mutation'), 0 < e.length)
) {
var i = f(/^\{$/, /^\}$/);
if (-1 === i) continue;
for (var u = s; u < i; u++) {
var p = o[u];
'variable' === p.type &&
0 <= e.indexOf(p.content) &&
b(p, 'variable-input');
}
}
}
}
function l(n) {
return o[s + n];
}
function c(n, t) {
t = t || 0;
for (var e = 0; e < n.length; e++) {
var a = l(e + t);
if (!a || a.type !== n[e]) return !1;
}
return !0;
}
function f(n, t) {
for (var e = 1, a = s; a < o.length; a++) {
var r = o[a],
i = r.content;
if ('punctuation' === r.type && 'string' == typeof i)
if (n.test(i)) e++;
else if (t.test(i) && 0 === --e) return a;
}
return -1;
}
function b(n, t) {
var e = n.alias;
e ? Array.isArray(e) || (n.alias = e = [e]) : (n.alias = e = []),
e.push(t);
}
});
|