chamba 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/LICENSE +53 -14
  2. package/README.md +34 -8
  3. package/dist/commands/advanced.js +7 -278
  4. package/dist/commands/dev.js +11 -612
  5. package/dist/commands/doctor.js +1 -29
  6. package/dist/commands/menu.js +1 -80
  7. package/dist/commands/onboard.js +6 -230
  8. package/dist/commands/settings.js +15 -349
  9. package/dist/lib/agent-commands.js +2 -0
  10. package/dist/lib/agent-context.js +6 -210
  11. package/dist/lib/browser.js +1 -40
  12. package/dist/lib/chamba-yaml.js +10 -191
  13. package/dist/lib/constants.js +1 -125
  14. package/dist/lib/dockerfile-builder.js +41 -261
  15. package/dist/lib/env.js +2 -78
  16. package/dist/lib/git-env.js +1 -21
  17. package/dist/lib/global-config.js +4 -66
  18. package/dist/lib/pnpm-store.js +1 -19
  19. package/dist/lib/ports.js +1 -210
  20. package/dist/lib/safe-rm.js +1 -36
  21. package/dist/lib/sessions.js +2 -34
  22. package/dist/lib/shadows.js +1 -176
  23. package/dist/lib/skills.js +2 -0
  24. package/dist/lib/templates.js +1 -0
  25. package/dist/lib/webterm.js +1 -305
  26. package/dist/lib/workspace-identity.js +4 -260
  27. package/package.json +4 -4
  28. package/templates/Dockerfile +15 -22
  29. package/templates/claude-statusline.sh +5 -7
  30. package/templates/context/baseline.md +4 -2
  31. package/templates/context/web-pane-craft.md +1 -1
  32. package/templates/pane-apps/client/assets/api-BBDf_rzz.js +12 -0
  33. package/templates/pane-apps/client/assets/api-DNLbSBpK.css +1 -0
  34. package/templates/pane-apps/client/assets/bee-B7t97l5B.webp +0 -0
  35. package/templates/pane-apps/client/assets/buzz-CUUsbnXH.mp3 +0 -0
  36. package/templates/pane-apps/client/assets/c-BNa-DeUl.json +3552 -0
  37. package/templates/pane-apps/client/assets/cpp-B-T4NRoH.json +20239 -0
  38. package/templates/pane-apps/client/assets/csharp-BbxHChhA.json +6010 -0
  39. package/templates/pane-apps/client/assets/css-CWCxuwmz.json +1860 -0
  40. package/templates/pane-apps/client/assets/diff-B-2N89g8.json +154 -0
  41. package/templates/pane-apps/client/assets/docker-DWTvYW26.json +103 -0
  42. package/templates/pane-apps/client/assets/files-BkmyervY.js +1 -0
  43. package/templates/pane-apps/client/assets/go-B2hyYeNg.json +3156 -0
  44. package/templates/pane-apps/client/assets/graphql-Z6Id2aNO.json +1292 -0
  45. package/templates/pane-apps/client/assets/home-3SeGzySM.css +1 -0
  46. package/templates/pane-apps/client/assets/home-Cu9xOd2i.js +1 -0
  47. package/templates/pane-apps/client/assets/html-BtzvlIfu.json +2627 -0
  48. package/templates/pane-apps/client/assets/ini-Bn3Twap1.json +108 -0
  49. package/templates/pane-apps/client/assets/java-C7t2dwLO.json +1885 -0
  50. package/templates/pane-apps/client/assets/javascript-DuC2v0C0.json +5996 -0
  51. package/templates/pane-apps/client/assets/json-CwdkWeV5.json +206 -0
  52. package/templates/pane-apps/client/assets/jsonc-MYWDbTU3.json +206 -0
  53. package/templates/pane-apps/client/assets/jsx-Cn8EZuIC.json +5996 -0
  54. package/templates/pane-apps/client/assets/kotlin-CFNOz1gw.json +580 -0
  55. package/templates/pane-apps/client/assets/make-BVnlFCcl.json +629 -0
  56. package/templates/pane-apps/client/assets/markdown-B4Xk2WM_.json +3263 -0
  57. package/templates/pane-apps/client/assets/php-CAQzQmmI.json +4188 -0
  58. package/templates/pane-apps/client/assets/pop-D5ZANBC3.mp3 +0 -0
  59. package/templates/pane-apps/client/assets/python-CYQee8m4.json +4174 -0
  60. package/templates/pane-apps/client/assets/reviews-DMrGB-kG.js +153 -0
  61. package/templates/pane-apps/client/assets/reviews-nK_yRav9.css +1 -0
  62. package/templates/pane-apps/client/assets/ruby-D7R58tus.json +3114 -0
  63. package/templates/pane-apps/client/assets/rust-BFBbFiei.json +1103 -0
  64. package/templates/pane-apps/client/assets/scss-TQRhBkPG.json +1874 -0
  65. package/templates/pane-apps/client/assets/shellscript-DieAkC4W.json +2375 -0
  66. package/templates/pane-apps/client/assets/specs-Cabb15F0.js +13 -0
  67. package/templates/pane-apps/client/assets/sql-Bxd030LV.json +634 -0
  68. package/templates/pane-apps/client/assets/toml-ChrKGzsV.json +430 -0
  69. package/templates/pane-apps/client/assets/tsx-D2e90MFw.json +5996 -0
  70. package/templates/pane-apps/client/assets/typescript-DonXQ_n1.json +5747 -0
  71. package/templates/pane-apps/client/assets/useNow-BHFKFraS.js +1 -0
  72. package/templates/pane-apps/client/assets/xml-B17r2RXF.json +382 -0
  73. package/templates/pane-apps/client/assets/yaml-CKn4h1zy.json +627 -0
  74. package/templates/pane-apps/client/home/index.html +16 -0
  75. package/templates/pane-apps/client/reviews/index.html +17 -0
  76. package/templates/pane-apps/client/specs/index.html +4 -2
  77. package/templates/pane-apps/server/home.mjs +12 -0
  78. package/templates/pane-apps/server/reviews.mjs +21 -0
  79. package/templates/pane-apps/server/specs.mjs +5 -1588
  80. package/templates/skills/chamba-statusline/SKILL.md +7 -19
  81. package/templates/skills/dx-review/SKILL.md +136 -0
  82. package/templates/skills/dx-review/references/acts.md +233 -0
  83. package/templates/skills/dx-spec/SKILL.md +230 -30
  84. package/templates/skills/dx-spec/references/principles-template.md +2 -0
  85. package/templates/skills/dx-spec/references/review-guide.md +6 -52
  86. package/templates/skills/dx-spec/references/spec-guide.md +25 -5
  87. package/templates/skills/dx-spec/references/stages.md +149 -60
  88. package/templates/skills/dx-spec-execute/SKILL.md +217 -38
  89. package/templates/startup.mjs +22 -16
  90. package/templates/tool-helper.sh +168 -0
  91. package/templates/webterm/README.md +82 -27
  92. package/templates/webterm/color.js +61 -0
  93. package/templates/webterm/config.js +55 -4
  94. package/templates/webterm/context/claude.md +0 -1
  95. package/templates/webterm/public/app/alerts.js +95 -14
  96. package/templates/webterm/public/app/anchored.js +81 -0
  97. package/templates/webterm/public/app/composer.js +37 -3
  98. package/templates/webterm/public/app/connection.js +23 -0
  99. package/templates/webterm/public/app/dom.js +3 -0
  100. package/templates/webterm/public/app/frames.js +52 -18
  101. package/templates/webterm/public/app/home-host.js +16 -0
  102. package/templates/webterm/public/app/main.js +24 -8
  103. package/templates/webterm/public/app/new-session.js +13 -41
  104. package/templates/webterm/public/app/palette.js +58 -0
  105. package/templates/webterm/public/app/pane-shape.js +169 -0
  106. package/templates/webterm/public/app/pane-shell.js +240 -135
  107. package/templates/webterm/public/app/pane.js +39 -24
  108. package/templates/webterm/public/app/reviews-host.js +19 -0
  109. package/templates/webterm/public/app/specs-host.js +12 -218
  110. package/templates/webterm/public/app/state.js +5 -0
  111. package/templates/webterm/public/app/tabs.js +6 -2
  112. package/templates/webterm/public/app/theme.js +75 -27
  113. package/templates/webterm/public/app/tool-host.js +318 -0
  114. package/templates/webterm/public/app/workspace-color.js +192 -0
  115. package/templates/webterm/public/index.html +22 -4
  116. package/templates/webterm/public/styles.css +195 -21
  117. package/templates/webterm/server.js +198 -150
  118. package/templates/webterm/tool-document.js +3 -2
  119. package/templates/webterm/tools/commands.js +61 -0
  120. package/templates/webterm/tools/home.js +58 -0
  121. package/templates/webterm/tools/index.js +26 -0
  122. package/templates/webterm/tools/mount.js +337 -0
  123. package/templates/webterm/tools/paths.js +34 -0
  124. package/templates/webterm/tools/reviews.js +137 -0
  125. package/templates/webterm/tools/specs.js +154 -0
  126. package/templates/webterm/typed-line.js +70 -7
  127. package/templates/context/context-usage.md +0 -1
  128. package/templates/context-usage.sh +0 -266
  129. package/templates/pane-apps/client/assets/specs-B1970L17.css +0 -1
  130. package/templates/pane-apps/client/assets/specs-cEee_SPn.js +0 -23
  131. package/templates/skills/dx-spec-config/SKILL.md +0 -313
  132. package/templates/skills/dx-spec-config/references/principles-template.md +0 -12
  133. package/templates/specs.sh +0 -106
  134. package/templates/webterm/specs.js +0 -358
@@ -0,0 +1,1292 @@
1
+ {
2
+ "displayName": "GraphQL",
3
+ "fileTypes": [
4
+ "graphql",
5
+ "graphqls",
6
+ "gql",
7
+ "graphcool"
8
+ ],
9
+ "name": "graphql",
10
+ "patterns": [
11
+ {
12
+ "include": "#graphql"
13
+ }
14
+ ],
15
+ "repository": {
16
+ "graphql": {
17
+ "patterns": [
18
+ {
19
+ "include": "#graphql-comment"
20
+ },
21
+ {
22
+ "include": "#graphql-description-docstring"
23
+ },
24
+ {
25
+ "include": "#graphql-description-singleline"
26
+ },
27
+ {
28
+ "include": "#graphql-fragment-definition"
29
+ },
30
+ {
31
+ "include": "#graphql-directive-definition"
32
+ },
33
+ {
34
+ "include": "#graphql-type-interface"
35
+ },
36
+ {
37
+ "include": "#graphql-enum"
38
+ },
39
+ {
40
+ "include": "#graphql-scalar"
41
+ },
42
+ {
43
+ "include": "#graphql-union"
44
+ },
45
+ {
46
+ "include": "#graphql-schema"
47
+ },
48
+ {
49
+ "include": "#graphql-operation-def"
50
+ },
51
+ {
52
+ "include": "#literal-quasi-embedded"
53
+ }
54
+ ]
55
+ },
56
+ "graphql-ampersand": {
57
+ "captures": {
58
+ "1": {
59
+ "name": "keyword.operator.logical.graphql"
60
+ }
61
+ },
62
+ "match": "\\s*(&)"
63
+ },
64
+ "graphql-arguments": {
65
+ "begin": "\\s*(\\()",
66
+ "beginCaptures": {
67
+ "1": {
68
+ "name": "meta.brace.round.directive.graphql"
69
+ }
70
+ },
71
+ "end": "\\s*(\\))",
72
+ "endCaptures": {
73
+ "1": {
74
+ "name": "meta.brace.round.directive.graphql"
75
+ }
76
+ },
77
+ "name": "meta.arguments.graphql",
78
+ "patterns": [
79
+ {
80
+ "include": "#graphql-comment"
81
+ },
82
+ {
83
+ "include": "#graphql-description-docstring"
84
+ },
85
+ {
86
+ "include": "#graphql-description-singleline"
87
+ },
88
+ {
89
+ "begin": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)\\s*(:)",
90
+ "beginCaptures": {
91
+ "1": {
92
+ "name": "variable.parameter.graphql"
93
+ },
94
+ "2": {
95
+ "name": "punctuation.colon.graphql"
96
+ }
97
+ },
98
+ "end": "(?=\\s*(?:([A-Z_a-z][0-9A-Z_a-z]*)\\s*(:)|\\)))|\\s*(,)",
99
+ "endCaptures": {
100
+ "3": {
101
+ "name": "punctuation.comma.graphql"
102
+ }
103
+ },
104
+ "patterns": [
105
+ {
106
+ "include": "#graphql-comment"
107
+ },
108
+ {
109
+ "include": "#graphql-description-docstring"
110
+ },
111
+ {
112
+ "include": "#graphql-description-singleline"
113
+ },
114
+ {
115
+ "include": "#graphql-directive"
116
+ },
117
+ {
118
+ "include": "#graphql-value"
119
+ },
120
+ {
121
+ "include": "#graphql-skip-newlines"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "include": "#literal-quasi-embedded"
127
+ }
128
+ ]
129
+ },
130
+ "graphql-boolean-value": {
131
+ "captures": {
132
+ "1": {
133
+ "name": "constant.language.boolean.graphql"
134
+ }
135
+ },
136
+ "match": "\\s*\\b(true|false)\\b"
137
+ },
138
+ "graphql-colon": {
139
+ "captures": {
140
+ "1": {
141
+ "name": "punctuation.colon.graphql"
142
+ }
143
+ },
144
+ "match": "\\s*(:)"
145
+ },
146
+ "graphql-comma": {
147
+ "captures": {
148
+ "1": {
149
+ "name": "punctuation.comma.graphql"
150
+ }
151
+ },
152
+ "match": "\\s*(,)"
153
+ },
154
+ "graphql-comment": {
155
+ "patterns": [
156
+ {
157
+ "captures": {
158
+ "1": {
159
+ "name": "punctuation.whitespace.comment.leading.graphql"
160
+ }
161
+ },
162
+ "match": "(\\s*)(#).*",
163
+ "name": "comment.line.graphql.js"
164
+ },
165
+ {
166
+ "begin": "(\"\"\")",
167
+ "beginCaptures": {
168
+ "1": {
169
+ "name": "punctuation.whitespace.comment.leading.graphql"
170
+ }
171
+ },
172
+ "end": "(\"\"\")",
173
+ "name": "comment.line.graphql.js"
174
+ },
175
+ {
176
+ "begin": "(\")",
177
+ "beginCaptures": {
178
+ "1": {
179
+ "name": "punctuation.whitespace.comment.leading.graphql"
180
+ }
181
+ },
182
+ "end": "(\")",
183
+ "name": "comment.line.graphql.js"
184
+ }
185
+ ]
186
+ },
187
+ "graphql-description-docstring": {
188
+ "begin": "\"\"\"",
189
+ "end": "\"\"\"",
190
+ "name": "comment.block.graphql"
191
+ },
192
+ "graphql-description-singleline": {
193
+ "match": "#(?=([^\"]*\"[^\"]*\")*[^\"]*$).*$",
194
+ "name": "comment.line.number-sign.graphql"
195
+ },
196
+ "graphql-directive": {
197
+ "applyEndPatternLast": 1,
198
+ "begin": "\\s*((@)\\s*([A-Z_a-z][0-9A-Z_a-z]*))",
199
+ "beginCaptures": {
200
+ "1": {
201
+ "name": "entity.name.function.directive.graphql"
202
+ }
203
+ },
204
+ "end": "(?=.)",
205
+ "patterns": [
206
+ {
207
+ "include": "#graphql-comment"
208
+ },
209
+ {
210
+ "include": "#graphql-description-docstring"
211
+ },
212
+ {
213
+ "include": "#graphql-description-singleline"
214
+ },
215
+ {
216
+ "include": "#graphql-arguments"
217
+ },
218
+ {
219
+ "include": "#literal-quasi-embedded"
220
+ },
221
+ {
222
+ "include": "#graphql-skip-newlines"
223
+ }
224
+ ]
225
+ },
226
+ "graphql-directive-definition": {
227
+ "applyEndPatternLast": 1,
228
+ "begin": "\\s*\\b(directive)\\b\\s*(@[A-Z_a-z][0-9A-Z_a-z]*)",
229
+ "beginCaptures": {
230
+ "1": {
231
+ "name": "keyword.directive.graphql"
232
+ },
233
+ "2": {
234
+ "name": "entity.name.function.directive.graphql"
235
+ },
236
+ "3": {
237
+ "name": "keyword.on.graphql"
238
+ },
239
+ "4": {
240
+ "name": "support.type.graphql"
241
+ }
242
+ },
243
+ "end": "(?=.)",
244
+ "patterns": [
245
+ {
246
+ "include": "#graphql-variable-definitions"
247
+ },
248
+ {
249
+ "applyEndPatternLast": 1,
250
+ "begin": "\\s*\\b(on)\\b\\s*([A-Z_a-z]*)",
251
+ "beginCaptures": {
252
+ "1": {
253
+ "name": "keyword.on.graphql"
254
+ },
255
+ "2": {
256
+ "name": "support.type.location.graphql"
257
+ }
258
+ },
259
+ "end": "(?=.)",
260
+ "patterns": [
261
+ {
262
+ "include": "#graphql-skip-newlines"
263
+ },
264
+ {
265
+ "include": "#graphql-comment"
266
+ },
267
+ {
268
+ "include": "#literal-quasi-embedded"
269
+ },
270
+ {
271
+ "captures": {
272
+ "2": {
273
+ "name": "support.type.location.graphql"
274
+ }
275
+ },
276
+ "match": "\\s*(\\|)\\s*([A-Z_a-z]*)"
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ "include": "#graphql-skip-newlines"
282
+ },
283
+ {
284
+ "include": "#graphql-comment"
285
+ },
286
+ {
287
+ "include": "#literal-quasi-embedded"
288
+ }
289
+ ]
290
+ },
291
+ "graphql-enum": {
292
+ "begin": "\\s*+\\b(enum)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)",
293
+ "beginCaptures": {
294
+ "1": {
295
+ "name": "keyword.enum.graphql"
296
+ },
297
+ "2": {
298
+ "name": "support.type.enum.graphql"
299
+ }
300
+ },
301
+ "end": "(?<=})",
302
+ "name": "meta.enum.graphql",
303
+ "patterns": [
304
+ {
305
+ "begin": "\\s*(\\{)",
306
+ "beginCaptures": {
307
+ "1": {
308
+ "name": "punctuation.operation.graphql"
309
+ }
310
+ },
311
+ "end": "\\s*(})",
312
+ "endCaptures": {
313
+ "1": {
314
+ "name": "punctuation.operation.graphql"
315
+ }
316
+ },
317
+ "name": "meta.type.object.graphql",
318
+ "patterns": [
319
+ {
320
+ "include": "#graphql-object-type"
321
+ },
322
+ {
323
+ "include": "#graphql-comment"
324
+ },
325
+ {
326
+ "include": "#graphql-description-docstring"
327
+ },
328
+ {
329
+ "include": "#graphql-description-singleline"
330
+ },
331
+ {
332
+ "include": "#graphql-directive"
333
+ },
334
+ {
335
+ "include": "#graphql-enum-value"
336
+ },
337
+ {
338
+ "include": "#literal-quasi-embedded"
339
+ }
340
+ ]
341
+ },
342
+ {
343
+ "include": "#graphql-comment"
344
+ },
345
+ {
346
+ "include": "#graphql-description-docstring"
347
+ },
348
+ {
349
+ "include": "#graphql-description-singleline"
350
+ },
351
+ {
352
+ "include": "#graphql-directive"
353
+ }
354
+ ]
355
+ },
356
+ "graphql-enum-value": {
357
+ "match": "\\s*(?!=\\b(true|false|null)\\b)([A-Z_a-z][0-9A-Z_a-z]*)",
358
+ "name": "constant.character.enum.graphql"
359
+ },
360
+ "graphql-field": {
361
+ "patterns": [
362
+ {
363
+ "captures": {
364
+ "1": {
365
+ "name": "string.unquoted.alias.graphql"
366
+ },
367
+ "2": {
368
+ "name": "punctuation.colon.graphql"
369
+ }
370
+ },
371
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)\\s*(:)"
372
+ },
373
+ {
374
+ "captures": {
375
+ "1": {
376
+ "name": "variable.graphql"
377
+ }
378
+ },
379
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
380
+ },
381
+ {
382
+ "include": "#graphql-arguments"
383
+ },
384
+ {
385
+ "include": "#graphql-directive"
386
+ },
387
+ {
388
+ "include": "#graphql-selection-set"
389
+ },
390
+ {
391
+ "include": "#literal-quasi-embedded"
392
+ },
393
+ {
394
+ "include": "#graphql-skip-newlines"
395
+ }
396
+ ]
397
+ },
398
+ "graphql-float-value": {
399
+ "captures": {
400
+ "1": {
401
+ "name": "constant.numeric.float.graphql"
402
+ }
403
+ },
404
+ "match": "\\s*(-?(0|[1-9][0-9]*)(\\.[0-9]+)?(([Ee])([-+])?[0-9]+)?)"
405
+ },
406
+ "graphql-fragment-definition": {
407
+ "begin": "\\s*\\b(fragment)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)?\\s*\\b(on)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)",
408
+ "captures": {
409
+ "1": {
410
+ "name": "keyword.fragment.graphql"
411
+ },
412
+ "2": {
413
+ "name": "entity.name.fragment.graphql"
414
+ },
415
+ "3": {
416
+ "name": "keyword.on.graphql"
417
+ },
418
+ "4": {
419
+ "name": "support.type.graphql"
420
+ }
421
+ },
422
+ "end": "(?<=})",
423
+ "name": "meta.fragment.graphql",
424
+ "patterns": [
425
+ {
426
+ "include": "#graphql-comment"
427
+ },
428
+ {
429
+ "include": "#graphql-description-docstring"
430
+ },
431
+ {
432
+ "include": "#graphql-description-singleline"
433
+ },
434
+ {
435
+ "include": "#graphql-selection-set"
436
+ },
437
+ {
438
+ "include": "#graphql-directive"
439
+ },
440
+ {
441
+ "include": "#graphql-skip-newlines"
442
+ },
443
+ {
444
+ "include": "#literal-quasi-embedded"
445
+ }
446
+ ]
447
+ },
448
+ "graphql-fragment-spread": {
449
+ "applyEndPatternLast": 1,
450
+ "begin": "\\s*(\\.\\.\\.)\\s*(?!\\bon\\b)([A-Z_a-z][0-9A-Z_a-z]*)",
451
+ "captures": {
452
+ "1": {
453
+ "name": "keyword.operator.spread.graphql"
454
+ },
455
+ "2": {
456
+ "name": "variable.fragment.graphql"
457
+ }
458
+ },
459
+ "end": "(?=.)",
460
+ "patterns": [
461
+ {
462
+ "include": "#graphql-comment"
463
+ },
464
+ {
465
+ "include": "#graphql-description-docstring"
466
+ },
467
+ {
468
+ "include": "#graphql-description-singleline"
469
+ },
470
+ {
471
+ "include": "#graphql-selection-set"
472
+ },
473
+ {
474
+ "include": "#graphql-directive"
475
+ },
476
+ {
477
+ "include": "#literal-quasi-embedded"
478
+ },
479
+ {
480
+ "include": "#graphql-skip-newlines"
481
+ }
482
+ ]
483
+ },
484
+ "graphql-ignore-spaces": {
485
+ "match": "\\s*"
486
+ },
487
+ "graphql-inline-fragment": {
488
+ "applyEndPatternLast": 1,
489
+ "begin": "\\s*(\\.\\.\\.)\\s*(?:\\b(on)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*))?",
490
+ "captures": {
491
+ "1": {
492
+ "name": "keyword.operator.spread.graphql"
493
+ },
494
+ "2": {
495
+ "name": "keyword.on.graphql"
496
+ },
497
+ "3": {
498
+ "name": "support.type.graphql"
499
+ }
500
+ },
501
+ "end": "(?=.)",
502
+ "patterns": [
503
+ {
504
+ "include": "#graphql-comment"
505
+ },
506
+ {
507
+ "include": "#graphql-description-docstring"
508
+ },
509
+ {
510
+ "include": "#graphql-description-singleline"
511
+ },
512
+ {
513
+ "include": "#graphql-selection-set"
514
+ },
515
+ {
516
+ "include": "#graphql-directive"
517
+ },
518
+ {
519
+ "include": "#graphql-skip-newlines"
520
+ },
521
+ {
522
+ "include": "#literal-quasi-embedded"
523
+ }
524
+ ]
525
+ },
526
+ "graphql-input-types": {
527
+ "patterns": [
528
+ {
529
+ "include": "#graphql-scalar-type"
530
+ },
531
+ {
532
+ "captures": {
533
+ "1": {
534
+ "name": "support.type.graphql"
535
+ },
536
+ "2": {
537
+ "name": "keyword.operator.nulltype.graphql"
538
+ }
539
+ },
540
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)(?:\\s*(!))?"
541
+ },
542
+ {
543
+ "begin": "\\s*(\\[)",
544
+ "captures": {
545
+ "1": {
546
+ "name": "meta.brace.square.graphql"
547
+ },
548
+ "2": {
549
+ "name": "keyword.operator.nulltype.graphql"
550
+ }
551
+ },
552
+ "end": "\\s*(])(?:\\s*(!))?",
553
+ "name": "meta.type.list.graphql",
554
+ "patterns": [
555
+ {
556
+ "include": "#graphql-comment"
557
+ },
558
+ {
559
+ "include": "#graphql-description-docstring"
560
+ },
561
+ {
562
+ "include": "#graphql-description-singleline"
563
+ },
564
+ {
565
+ "include": "#graphql-input-types"
566
+ },
567
+ {
568
+ "include": "#graphql-comma"
569
+ },
570
+ {
571
+ "include": "#literal-quasi-embedded"
572
+ }
573
+ ]
574
+ }
575
+ ]
576
+ },
577
+ "graphql-list-value": {
578
+ "patterns": [
579
+ {
580
+ "begin": "\\s*+(\\[)",
581
+ "beginCaptures": {
582
+ "1": {
583
+ "name": "meta.brace.square.graphql"
584
+ }
585
+ },
586
+ "end": "\\s*(])",
587
+ "endCaptures": {
588
+ "1": {
589
+ "name": "meta.brace.square.graphql"
590
+ }
591
+ },
592
+ "name": "meta.listvalues.graphql",
593
+ "patterns": [
594
+ {
595
+ "include": "#graphql-value"
596
+ }
597
+ ]
598
+ }
599
+ ]
600
+ },
601
+ "graphql-name": {
602
+ "captures": {
603
+ "1": {
604
+ "name": "entity.name.function.graphql"
605
+ }
606
+ },
607
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
608
+ },
609
+ "graphql-null-value": {
610
+ "captures": {
611
+ "1": {
612
+ "name": "constant.language.null.graphql"
613
+ }
614
+ },
615
+ "match": "\\s*\\b(null)\\b"
616
+ },
617
+ "graphql-object-field": {
618
+ "captures": {
619
+ "1": {
620
+ "name": "constant.object.key.graphql"
621
+ },
622
+ "2": {
623
+ "name": "string.unquoted.graphql"
624
+ },
625
+ "3": {
626
+ "name": "punctuation.graphql"
627
+ }
628
+ },
629
+ "match": "\\s*(([A-Z_a-z][0-9A-Z_a-z]*))\\s*(:)"
630
+ },
631
+ "graphql-object-value": {
632
+ "patterns": [
633
+ {
634
+ "begin": "\\s*+(\\{)",
635
+ "beginCaptures": {
636
+ "1": {
637
+ "name": "meta.brace.curly.graphql"
638
+ }
639
+ },
640
+ "end": "\\s*(})",
641
+ "endCaptures": {
642
+ "1": {
643
+ "name": "meta.brace.curly.graphql"
644
+ }
645
+ },
646
+ "name": "meta.objectvalues.graphql",
647
+ "patterns": [
648
+ {
649
+ "include": "#graphql-object-field"
650
+ },
651
+ {
652
+ "include": "#graphql-value"
653
+ }
654
+ ]
655
+ }
656
+ ]
657
+ },
658
+ "graphql-operation-def": {
659
+ "patterns": [
660
+ {
661
+ "include": "#graphql-query-mutation"
662
+ },
663
+ {
664
+ "include": "#graphql-name"
665
+ },
666
+ {
667
+ "include": "#graphql-variable-definitions"
668
+ },
669
+ {
670
+ "include": "#graphql-directive"
671
+ },
672
+ {
673
+ "include": "#graphql-selection-set"
674
+ }
675
+ ]
676
+ },
677
+ "graphql-query-mutation": {
678
+ "captures": {
679
+ "1": {
680
+ "name": "keyword.operation.graphql"
681
+ }
682
+ },
683
+ "match": "\\s*\\b(query|mutation)\\b"
684
+ },
685
+ "graphql-scalar": {
686
+ "captures": {
687
+ "1": {
688
+ "name": "keyword.scalar.graphql"
689
+ },
690
+ "2": {
691
+ "name": "entity.scalar.graphql"
692
+ }
693
+ },
694
+ "match": "\\s*\\b(scalar)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
695
+ },
696
+ "graphql-scalar-type": {
697
+ "captures": {
698
+ "1": {
699
+ "name": "support.type.builtin.graphql"
700
+ },
701
+ "2": {
702
+ "name": "keyword.operator.nulltype.graphql"
703
+ }
704
+ },
705
+ "match": "\\s*\\b(Int|Float|String|Boolean|ID)\\b(?:\\s*(!))?"
706
+ },
707
+ "graphql-schema": {
708
+ "begin": "\\s*\\b(schema)\\b",
709
+ "beginCaptures": {
710
+ "1": {
711
+ "name": "keyword.schema.graphql"
712
+ }
713
+ },
714
+ "end": "(?<=})",
715
+ "patterns": [
716
+ {
717
+ "begin": "\\s*(\\{)",
718
+ "beginCaptures": {
719
+ "1": {
720
+ "name": "punctuation.operation.graphql"
721
+ }
722
+ },
723
+ "end": "\\s*(})",
724
+ "endCaptures": {
725
+ "1": {
726
+ "name": "punctuation.operation.graphql"
727
+ }
728
+ },
729
+ "patterns": [
730
+ {
731
+ "begin": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)(?=\\s*\\(|:)",
732
+ "beginCaptures": {
733
+ "1": {
734
+ "name": "variable.arguments.graphql"
735
+ }
736
+ },
737
+ "end": "(?=\\s*(([A-Z_a-z][0-9A-Z_a-z]*)\\s*([(:])|(})))|\\s*(,)",
738
+ "endCaptures": {
739
+ "5": {
740
+ "name": "punctuation.comma.graphql"
741
+ }
742
+ },
743
+ "patterns": [
744
+ {
745
+ "captures": {
746
+ "1": {
747
+ "name": "support.type.graphql"
748
+ }
749
+ },
750
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
751
+ },
752
+ {
753
+ "include": "#graphql-comment"
754
+ },
755
+ {
756
+ "include": "#graphql-description-docstring"
757
+ },
758
+ {
759
+ "include": "#graphql-description-singleline"
760
+ },
761
+ {
762
+ "include": "#graphql-colon"
763
+ },
764
+ {
765
+ "include": "#graphql-skip-newlines"
766
+ }
767
+ ]
768
+ },
769
+ {
770
+ "include": "#graphql-comment"
771
+ },
772
+ {
773
+ "include": "#graphql-description-docstring"
774
+ },
775
+ {
776
+ "include": "#graphql-description-singleline"
777
+ },
778
+ {
779
+ "include": "#graphql-skip-newlines"
780
+ }
781
+ ]
782
+ },
783
+ {
784
+ "include": "#graphql-comment"
785
+ },
786
+ {
787
+ "include": "#graphql-description-docstring"
788
+ },
789
+ {
790
+ "include": "#graphql-description-singleline"
791
+ },
792
+ {
793
+ "include": "#graphql-directive"
794
+ },
795
+ {
796
+ "include": "#graphql-skip-newlines"
797
+ }
798
+ ]
799
+ },
800
+ "graphql-selection-set": {
801
+ "begin": "\\s*(\\{)",
802
+ "beginCaptures": {
803
+ "1": {
804
+ "name": "punctuation.operation.graphql"
805
+ }
806
+ },
807
+ "end": "\\s*(})",
808
+ "endCaptures": {
809
+ "1": {
810
+ "name": "punctuation.operation.graphql"
811
+ }
812
+ },
813
+ "name": "meta.selectionset.graphql",
814
+ "patterns": [
815
+ {
816
+ "include": "#graphql-comment"
817
+ },
818
+ {
819
+ "include": "#graphql-description-docstring"
820
+ },
821
+ {
822
+ "include": "#graphql-description-singleline"
823
+ },
824
+ {
825
+ "include": "#graphql-field"
826
+ },
827
+ {
828
+ "include": "#graphql-fragment-spread"
829
+ },
830
+ {
831
+ "include": "#graphql-inline-fragment"
832
+ },
833
+ {
834
+ "include": "#graphql-comma"
835
+ },
836
+ {
837
+ "include": "#native-interpolation"
838
+ },
839
+ {
840
+ "include": "#literal-quasi-embedded"
841
+ }
842
+ ]
843
+ },
844
+ "graphql-skip-newlines": {
845
+ "match": "\\s*\\n"
846
+ },
847
+ "graphql-string-content": {
848
+ "patterns": [
849
+ {
850
+ "match": "\\\\[\"'/\\\\bfnrt]",
851
+ "name": "constant.character.escape.graphql"
852
+ },
853
+ {
854
+ "match": "\\\\u(\\h{4})",
855
+ "name": "constant.character.escape.graphql"
856
+ }
857
+ ]
858
+ },
859
+ "graphql-string-value": {
860
+ "begin": "\\s*+((\"))",
861
+ "beginCaptures": {
862
+ "1": {
863
+ "name": "string.quoted.double.graphql"
864
+ },
865
+ "2": {
866
+ "name": "punctuation.definition.string.begin.graphql"
867
+ }
868
+ },
869
+ "contentName": "string.quoted.double.graphql",
870
+ "end": "\\s*+(?:((\"))|(\\n))",
871
+ "endCaptures": {
872
+ "1": {
873
+ "name": "string.quoted.double.graphql"
874
+ },
875
+ "2": {
876
+ "name": "punctuation.definition.string.end.graphql"
877
+ },
878
+ "3": {
879
+ "name": "invalid.illegal.newline.graphql"
880
+ }
881
+ },
882
+ "patterns": [
883
+ {
884
+ "include": "#graphql-string-content"
885
+ },
886
+ {
887
+ "include": "#literal-quasi-embedded"
888
+ }
889
+ ]
890
+ },
891
+ "graphql-type-definition": {
892
+ "begin": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)(?=\\s*\\(|:)",
893
+ "beginCaptures": {
894
+ "1": {
895
+ "name": "variable.graphql"
896
+ }
897
+ },
898
+ "end": "(?=\\s*(([A-Z_a-z][0-9A-Z_a-z]*)\\s*([(:])|(})))|\\s*(,)",
899
+ "endCaptures": {
900
+ "5": {
901
+ "name": "punctuation.comma.graphql"
902
+ }
903
+ },
904
+ "patterns": [
905
+ {
906
+ "include": "#graphql-comment"
907
+ },
908
+ {
909
+ "include": "#graphql-description-docstring"
910
+ },
911
+ {
912
+ "include": "#graphql-description-singleline"
913
+ },
914
+ {
915
+ "include": "#graphql-directive"
916
+ },
917
+ {
918
+ "include": "#graphql-variable-definitions"
919
+ },
920
+ {
921
+ "include": "#graphql-type-object"
922
+ },
923
+ {
924
+ "include": "#graphql-colon"
925
+ },
926
+ {
927
+ "include": "#graphql-input-types"
928
+ },
929
+ {
930
+ "include": "#literal-quasi-embedded"
931
+ }
932
+ ]
933
+ },
934
+ "graphql-type-interface": {
935
+ "applyEndPatternLast": 1,
936
+ "begin": "\\s*\\b(?:(extends?)?\\b\\s*\\b(type)|(interface)|(input))\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)?",
937
+ "captures": {
938
+ "1": {
939
+ "name": "keyword.type.graphql"
940
+ },
941
+ "2": {
942
+ "name": "keyword.type.graphql"
943
+ },
944
+ "3": {
945
+ "name": "keyword.interface.graphql"
946
+ },
947
+ "4": {
948
+ "name": "keyword.input.graphql"
949
+ },
950
+ "5": {
951
+ "name": "support.type.graphql"
952
+ }
953
+ },
954
+ "end": "(?=.)",
955
+ "name": "meta.type.interface.graphql",
956
+ "patterns": [
957
+ {
958
+ "begin": "\\s*\\b(implements)\\b\\s*",
959
+ "beginCaptures": {
960
+ "1": {
961
+ "name": "keyword.implements.graphql"
962
+ }
963
+ },
964
+ "end": "\\s*(?=\\{)",
965
+ "patterns": [
966
+ {
967
+ "captures": {
968
+ "1": {
969
+ "name": "support.type.graphql"
970
+ }
971
+ },
972
+ "match": "\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
973
+ },
974
+ {
975
+ "include": "#graphql-comment"
976
+ },
977
+ {
978
+ "include": "#graphql-description-docstring"
979
+ },
980
+ {
981
+ "include": "#graphql-description-singleline"
982
+ },
983
+ {
984
+ "include": "#graphql-directive"
985
+ },
986
+ {
987
+ "include": "#graphql-ampersand"
988
+ },
989
+ {
990
+ "include": "#graphql-comma"
991
+ }
992
+ ]
993
+ },
994
+ {
995
+ "include": "#graphql-comment"
996
+ },
997
+ {
998
+ "include": "#graphql-description-docstring"
999
+ },
1000
+ {
1001
+ "include": "#graphql-description-singleline"
1002
+ },
1003
+ {
1004
+ "include": "#graphql-directive"
1005
+ },
1006
+ {
1007
+ "include": "#graphql-type-object"
1008
+ },
1009
+ {
1010
+ "include": "#literal-quasi-embedded"
1011
+ },
1012
+ {
1013
+ "include": "#graphql-ignore-spaces"
1014
+ }
1015
+ ]
1016
+ },
1017
+ "graphql-type-object": {
1018
+ "begin": "\\s*(\\{)",
1019
+ "beginCaptures": {
1020
+ "1": {
1021
+ "name": "punctuation.operation.graphql"
1022
+ }
1023
+ },
1024
+ "end": "\\s*(})",
1025
+ "endCaptures": {
1026
+ "1": {
1027
+ "name": "punctuation.operation.graphql"
1028
+ }
1029
+ },
1030
+ "name": "meta.type.object.graphql",
1031
+ "patterns": [
1032
+ {
1033
+ "include": "#graphql-comment"
1034
+ },
1035
+ {
1036
+ "include": "#graphql-description-docstring"
1037
+ },
1038
+ {
1039
+ "include": "#graphql-description-singleline"
1040
+ },
1041
+ {
1042
+ "include": "#graphql-object-type"
1043
+ },
1044
+ {
1045
+ "include": "#graphql-type-definition"
1046
+ },
1047
+ {
1048
+ "include": "#literal-quasi-embedded"
1049
+ }
1050
+ ]
1051
+ },
1052
+ "graphql-union": {
1053
+ "applyEndPatternLast": 1,
1054
+ "begin": "\\s*\\b(union)\\b\\s*([A-Z_a-z][0-9A-Z_a-z]*)",
1055
+ "captures": {
1056
+ "1": {
1057
+ "name": "keyword.union.graphql"
1058
+ },
1059
+ "2": {
1060
+ "name": "support.type.graphql"
1061
+ }
1062
+ },
1063
+ "end": "(?=.)",
1064
+ "patterns": [
1065
+ {
1066
+ "applyEndPatternLast": 1,
1067
+ "begin": "\\s*(=)\\s*([A-Z_a-z][0-9A-Z_a-z]*)",
1068
+ "captures": {
1069
+ "1": {
1070
+ "name": "punctuation.assignment.graphql"
1071
+ },
1072
+ "2": {
1073
+ "name": "support.type.graphql"
1074
+ }
1075
+ },
1076
+ "end": "(?=.)",
1077
+ "patterns": [
1078
+ {
1079
+ "include": "#graphql-comment"
1080
+ },
1081
+ {
1082
+ "include": "#graphql-description-docstring"
1083
+ },
1084
+ {
1085
+ "include": "#graphql-description-singleline"
1086
+ },
1087
+ {
1088
+ "include": "#graphql-skip-newlines"
1089
+ },
1090
+ {
1091
+ "include": "#literal-quasi-embedded"
1092
+ },
1093
+ {
1094
+ "captures": {
1095
+ "1": {
1096
+ "name": "punctuation.or.graphql"
1097
+ },
1098
+ "2": {
1099
+ "name": "support.type.graphql"
1100
+ }
1101
+ },
1102
+ "match": "\\s*(\\|)\\s*([A-Z_a-z][0-9A-Z_a-z]*)"
1103
+ }
1104
+ ]
1105
+ },
1106
+ {
1107
+ "include": "#graphql-comment"
1108
+ },
1109
+ {
1110
+ "include": "#graphql-description-docstring"
1111
+ },
1112
+ {
1113
+ "include": "#graphql-description-singleline"
1114
+ },
1115
+ {
1116
+ "include": "#graphql-skip-newlines"
1117
+ },
1118
+ {
1119
+ "include": "#literal-quasi-embedded"
1120
+ }
1121
+ ]
1122
+ },
1123
+ "graphql-union-mark": {
1124
+ "captures": {
1125
+ "1": {
1126
+ "name": "punctuation.union.graphql"
1127
+ }
1128
+ },
1129
+ "match": "\\s*(\\|)"
1130
+ },
1131
+ "graphql-value": {
1132
+ "patterns": [
1133
+ {
1134
+ "include": "#graphql-comment"
1135
+ },
1136
+ {
1137
+ "include": "#graphql-description-docstring"
1138
+ },
1139
+ {
1140
+ "include": "#graphql-variable-name"
1141
+ },
1142
+ {
1143
+ "include": "#graphql-float-value"
1144
+ },
1145
+ {
1146
+ "include": "#graphql-string-value"
1147
+ },
1148
+ {
1149
+ "include": "#graphql-boolean-value"
1150
+ },
1151
+ {
1152
+ "include": "#graphql-null-value"
1153
+ },
1154
+ {
1155
+ "include": "#graphql-enum-value"
1156
+ },
1157
+ {
1158
+ "include": "#graphql-list-value"
1159
+ },
1160
+ {
1161
+ "include": "#graphql-object-value"
1162
+ },
1163
+ {
1164
+ "include": "#literal-quasi-embedded"
1165
+ }
1166
+ ]
1167
+ },
1168
+ "graphql-variable-assignment": {
1169
+ "applyEndPatternLast": 1,
1170
+ "begin": "\\s(=)",
1171
+ "beginCaptures": {
1172
+ "1": {
1173
+ "name": "punctuation.assignment.graphql"
1174
+ }
1175
+ },
1176
+ "end": "(?=[\\n),])",
1177
+ "patterns": [
1178
+ {
1179
+ "include": "#graphql-value"
1180
+ }
1181
+ ]
1182
+ },
1183
+ "graphql-variable-definition": {
1184
+ "begin": "\\s*(\\$?[A-Z_a-z][0-9A-Z_a-z]*)(?=\\s*\\(|:)",
1185
+ "beginCaptures": {
1186
+ "1": {
1187
+ "name": "variable.parameter.graphql"
1188
+ }
1189
+ },
1190
+ "end": "(?=\\s*((\\$?[A-Z_a-z][0-9A-Z_a-z]*)\\s*([(:])|([)}])))|\\s*(,)",
1191
+ "endCaptures": {
1192
+ "5": {
1193
+ "name": "punctuation.comma.graphql"
1194
+ }
1195
+ },
1196
+ "name": "meta.variables.graphql",
1197
+ "patterns": [
1198
+ {
1199
+ "include": "#graphql-comment"
1200
+ },
1201
+ {
1202
+ "include": "#graphql-description-docstring"
1203
+ },
1204
+ {
1205
+ "include": "#graphql-description-singleline"
1206
+ },
1207
+ {
1208
+ "include": "#graphql-directive"
1209
+ },
1210
+ {
1211
+ "include": "#graphql-colon"
1212
+ },
1213
+ {
1214
+ "include": "#graphql-input-types"
1215
+ },
1216
+ {
1217
+ "include": "#graphql-variable-assignment"
1218
+ },
1219
+ {
1220
+ "include": "#literal-quasi-embedded"
1221
+ },
1222
+ {
1223
+ "include": "#graphql-skip-newlines"
1224
+ }
1225
+ ]
1226
+ },
1227
+ "graphql-variable-definitions": {
1228
+ "begin": "\\s*(\\()",
1229
+ "captures": {
1230
+ "1": {
1231
+ "name": "meta.brace.round.graphql"
1232
+ }
1233
+ },
1234
+ "end": "\\s*(\\))",
1235
+ "patterns": [
1236
+ {
1237
+ "include": "#graphql-comment"
1238
+ },
1239
+ {
1240
+ "include": "#graphql-description-docstring"
1241
+ },
1242
+ {
1243
+ "include": "#graphql-description-singleline"
1244
+ },
1245
+ {
1246
+ "include": "#graphql-variable-definition"
1247
+ },
1248
+ {
1249
+ "include": "#literal-quasi-embedded"
1250
+ }
1251
+ ]
1252
+ },
1253
+ "graphql-variable-name": {
1254
+ "captures": {
1255
+ "1": {
1256
+ "name": "variable.graphql"
1257
+ }
1258
+ },
1259
+ "match": "\\s*(\\$[A-Z_a-z][0-9A-Z_a-z]*)"
1260
+ },
1261
+ "native-interpolation": {
1262
+ "begin": "\\s*(\\$\\{)",
1263
+ "beginCaptures": {
1264
+ "1": {
1265
+ "name": "keyword.other.substitution.begin"
1266
+ }
1267
+ },
1268
+ "end": "(})",
1269
+ "endCaptures": {
1270
+ "1": {
1271
+ "name": "keyword.other.substitution.end"
1272
+ }
1273
+ },
1274
+ "name": "native.interpolation",
1275
+ "patterns": [
1276
+ {
1277
+ "include": "source.js"
1278
+ },
1279
+ {
1280
+ "include": "source.ts"
1281
+ },
1282
+ {
1283
+ "include": "source.js.jsx"
1284
+ },
1285
+ {
1286
+ "include": "source.tsx"
1287
+ }
1288
+ ]
1289
+ }
1290
+ },
1291
+ "scopeName": "source.graphql"
1292
+ }