vscode-apollo 2.0.0 → 2.1.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.
- package/.circleci/config.yml +1 -1
- package/.vscode/launch.json +4 -1
- package/CHANGELOG.md +33 -0
- package/package.json +9 -3
- package/renovate.json +2 -1
- package/sampleWorkspace/localSchema/src/test.js +3 -0
- package/sampleWorkspace/rover/apollo.config.js +3 -0
- package/sampleWorkspace/rover/src/test.graphql +14 -0
- package/sampleWorkspace/rover/src/test.js +30 -0
- package/sampleWorkspace/sampleWorkspace.code-workspace +25 -19
- package/src/language-server/__tests__/document.test.ts +161 -3
- package/src/language-server/__tests__/fixtures/TypeScript.tmLanguage.json +5749 -0
- package/src/language-server/__tests__/fixtures/documents/commentWithTemplate.ts +41 -0
- package/src/language-server/__tests__/fixtures/documents/commentWithTemplate.ts.snap +185 -0
- package/src/language-server/__tests__/fixtures/documents/functionCall.ts +93 -0
- package/src/language-server/__tests__/fixtures/documents/functionCall.ts.snap +431 -0
- package/src/language-server/__tests__/fixtures/documents/taggedTemplate.ts +80 -0
- package/src/language-server/__tests__/fixtures/documents/taggedTemplate.ts.snap +353 -0
- package/src/language-server/__tests__/fixtures/documents/templateWithComment.ts +38 -0
- package/src/language-server/__tests__/fixtures/documents/templateWithComment.ts.snap +123 -0
- package/src/language-server/config/__tests__/loadConfig.ts +43 -10
- package/src/language-server/config/config.ts +26 -1
- package/src/language-server/config/loadConfig.ts +7 -1
- package/src/language-server/config/loadTsConfig.ts +70 -0
- package/src/language-server/config/which.d.ts +19 -0
- package/src/language-server/document.ts +86 -53
- package/src/language-server/fileSet.ts +7 -0
- package/src/language-server/project/base.ts +58 -316
- package/src/language-server/project/client.ts +730 -7
- package/src/language-server/project/internal.ts +349 -0
- package/src/language-server/project/rover/DocumentSynchronization.ts +308 -0
- package/src/language-server/project/rover/__tests__/DocumentSynchronization.test.ts +302 -0
- package/src/language-server/project/rover/project.ts +276 -0
- package/src/language-server/server.ts +129 -62
- package/src/language-server/utilities/__tests__/source.test.ts +162 -0
- package/src/language-server/utilities/source.ts +38 -3
- package/src/language-server/workspace.ts +34 -9
- package/syntaxes/graphql.js.json +18 -21
- package/src/language-server/languageProvider.ts +0 -795
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
>// hint for reading the snapshots generated by this file:
|
|
2
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
3
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
4
|
+
>// it is important to check that a rule doesn't only enter `meta.embedded.block.graphql`
|
|
5
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
6
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
7
|
+
>// but also leaves it again
|
|
8
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
9
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
10
|
+
>
|
|
11
|
+
>declare function gql<A = any, B = any>(strings: TemplateStringsArray): void;
|
|
12
|
+
#^^^^^^^ source.ts meta.function.ts storage.modifier.ts
|
|
13
|
+
# ^ source.ts meta.function.ts
|
|
14
|
+
# ^^^^^^^^ source.ts meta.function.ts storage.type.function.ts
|
|
15
|
+
# ^ source.ts meta.function.ts
|
|
16
|
+
# ^^^ source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
|
|
17
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
|
|
18
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts
|
|
19
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
20
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts keyword.operator.assignment.ts
|
|
21
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
22
|
+
# ^^^ source.ts meta.function.ts meta.type.parameters.ts support.type.primitive.ts
|
|
23
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.separator.comma.ts
|
|
24
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
25
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts
|
|
26
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
27
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts keyword.operator.assignment.ts
|
|
28
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
29
|
+
# ^^^ source.ts meta.function.ts meta.type.parameters.ts support.type.primitive.ts
|
|
30
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
|
|
31
|
+
# ^ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
|
|
32
|
+
# ^^^^^^^ source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
|
|
33
|
+
# ^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
|
|
34
|
+
# ^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
|
|
35
|
+
# ^^^^^^^^^^^^^^^^^^^^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
|
|
36
|
+
# ^ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
|
|
37
|
+
# ^ source.ts meta.function.ts meta.return.type.ts keyword.operator.type.annotation.ts
|
|
38
|
+
# ^ source.ts meta.function.ts meta.return.type.ts
|
|
39
|
+
# ^^^^ source.ts meta.function.ts meta.return.type.ts support.type.primitive.ts
|
|
40
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
41
|
+
>declare function foo<A = any, B = any>(strings: TemplateStringsArray): void;
|
|
42
|
+
#^^^^^^^ source.ts meta.function.ts storage.modifier.ts
|
|
43
|
+
# ^ source.ts meta.function.ts
|
|
44
|
+
# ^^^^^^^^ source.ts meta.function.ts storage.type.function.ts
|
|
45
|
+
# ^ source.ts meta.function.ts
|
|
46
|
+
# ^^^ source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
|
|
47
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
|
|
48
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts
|
|
49
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
50
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts keyword.operator.assignment.ts
|
|
51
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
52
|
+
# ^^^ source.ts meta.function.ts meta.type.parameters.ts support.type.primitive.ts
|
|
53
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.separator.comma.ts
|
|
54
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
55
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts entity.name.type.ts
|
|
56
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
57
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts keyword.operator.assignment.ts
|
|
58
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts
|
|
59
|
+
# ^^^ source.ts meta.function.ts meta.type.parameters.ts support.type.primitive.ts
|
|
60
|
+
# ^ source.ts meta.function.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
|
|
61
|
+
# ^ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
|
|
62
|
+
# ^^^^^^^ source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
|
|
63
|
+
# ^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
|
|
64
|
+
# ^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
|
|
65
|
+
# ^^^^^^^^^^^^^^^^^^^^ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
|
|
66
|
+
# ^ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
|
|
67
|
+
# ^ source.ts meta.function.ts meta.return.type.ts keyword.operator.type.annotation.ts
|
|
68
|
+
# ^ source.ts meta.function.ts meta.return.type.ts
|
|
69
|
+
# ^^^^ source.ts meta.function.ts meta.return.type.ts support.type.primitive.ts
|
|
70
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
71
|
+
>declare type SomeResult = any;
|
|
72
|
+
#^^^^^^^ source.ts meta.type.declaration.ts storage.modifier.ts
|
|
73
|
+
# ^ source.ts meta.type.declaration.ts
|
|
74
|
+
# ^^^^ source.ts meta.type.declaration.ts storage.type.type.ts
|
|
75
|
+
# ^ source.ts meta.type.declaration.ts
|
|
76
|
+
# ^^^^^^^^^^ source.ts meta.type.declaration.ts entity.name.type.alias.ts
|
|
77
|
+
# ^ source.ts meta.type.declaration.ts
|
|
78
|
+
# ^ source.ts meta.type.declaration.ts keyword.operator.assignment.ts
|
|
79
|
+
# ^ source.ts meta.type.declaration.ts
|
|
80
|
+
# ^^^ source.ts meta.type.declaration.ts support.type.primitive.ts
|
|
81
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
82
|
+
>declare type SomeVariables = any;
|
|
83
|
+
#^^^^^^^ source.ts meta.type.declaration.ts storage.modifier.ts
|
|
84
|
+
# ^ source.ts meta.type.declaration.ts
|
|
85
|
+
# ^^^^ source.ts meta.type.declaration.ts storage.type.type.ts
|
|
86
|
+
# ^ source.ts meta.type.declaration.ts
|
|
87
|
+
# ^^^^^^^^^^^^^ source.ts meta.type.declaration.ts entity.name.type.alias.ts
|
|
88
|
+
# ^ source.ts meta.type.declaration.ts
|
|
89
|
+
# ^ source.ts meta.type.declaration.ts keyword.operator.assignment.ts
|
|
90
|
+
# ^ source.ts meta.type.declaration.ts
|
|
91
|
+
# ^^^ source.ts meta.type.declaration.ts support.type.primitive.ts
|
|
92
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
93
|
+
>
|
|
94
|
+
>// for comparison - this is what a normal function all is colored
|
|
95
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
96
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
97
|
+
>foo`query Foo { test }`;
|
|
98
|
+
#^^^ source.ts entity.name.function.tagged-template.ts
|
|
99
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
100
|
+
# ^^^^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
101
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
102
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
103
|
+
>foo<SomeResult, SomeVariables>`query Foo { test }`;
|
|
104
|
+
#^^^ source.ts entity.name.function.tagged-template.ts
|
|
105
|
+
# ^ source.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
|
|
106
|
+
# ^^^^^^^^^^ source.ts meta.type.parameters.ts entity.name.type.ts
|
|
107
|
+
# ^ source.ts meta.type.parameters.ts punctuation.separator.comma.ts
|
|
108
|
+
# ^ source.ts meta.type.parameters.ts
|
|
109
|
+
# ^^^^^^^^^^^^^ source.ts meta.type.parameters.ts entity.name.type.ts
|
|
110
|
+
# ^ source.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
|
|
111
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
112
|
+
# ^^^^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
113
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
114
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
115
|
+
>
|
|
116
|
+
>// prettier-ignore
|
|
117
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
118
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
119
|
+
>gql`query Q1 { test }`
|
|
120
|
+
#^^^^ source.ts
|
|
121
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
122
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
123
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
124
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
125
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
126
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
127
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
128
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
129
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
130
|
+
# ^ source.ts
|
|
131
|
+
>
|
|
132
|
+
>// prettier-ignore
|
|
133
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
134
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
135
|
+
>gql<SomeResult, SomeVariables>`query Q2 { test }`
|
|
136
|
+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts
|
|
137
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
138
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
139
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
140
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
141
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
142
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
143
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
144
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
145
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
146
|
+
# ^ source.ts
|
|
147
|
+
>
|
|
148
|
+
>// prettier-ignore
|
|
149
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
150
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
151
|
+
>gql <SomeResult, SomeVariables> `
|
|
152
|
+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts
|
|
153
|
+
>query Q3 { test }`
|
|
154
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
155
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
156
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
157
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
158
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
159
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
160
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
161
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
162
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
163
|
+
# ^ source.ts
|
|
164
|
+
>
|
|
165
|
+
>// prettier-ignore
|
|
166
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
167
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
168
|
+
>gql `query Q4 { test }`
|
|
169
|
+
#^^^^^^^^ source.ts
|
|
170
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
171
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
172
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
173
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
174
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
175
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
176
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
177
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
178
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
179
|
+
# ^ source.ts
|
|
180
|
+
>
|
|
181
|
+
>gql`
|
|
182
|
+
#^^^^ source.ts
|
|
183
|
+
> query Q5 {
|
|
184
|
+
#^^ source.ts meta.embedded.block.graphql
|
|
185
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
186
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
187
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
188
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
189
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
190
|
+
> test
|
|
191
|
+
#^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
192
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
193
|
+
> }
|
|
194
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
195
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
196
|
+
>`;
|
|
197
|
+
#^ source.ts
|
|
198
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
199
|
+
>
|
|
200
|
+
>gql<SomeResult, SomeVariables>`
|
|
201
|
+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts
|
|
202
|
+
> query Q6 {
|
|
203
|
+
#^^ source.ts meta.embedded.block.graphql
|
|
204
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
205
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
206
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
207
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
208
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
209
|
+
> test
|
|
210
|
+
#^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
211
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
212
|
+
> }
|
|
213
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
214
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
215
|
+
>`;
|
|
216
|
+
#^ source.ts
|
|
217
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
218
|
+
>
|
|
219
|
+
>// prettier-ignore
|
|
220
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
221
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
222
|
+
>gql `
|
|
223
|
+
#^^^^^^^ source.ts
|
|
224
|
+
> query Q7 {
|
|
225
|
+
#^^ source.ts meta.embedded.block.graphql
|
|
226
|
+
# ^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
227
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
228
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
229
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
230
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
231
|
+
> test
|
|
232
|
+
#^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
233
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
234
|
+
> }
|
|
235
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
236
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
237
|
+
>`;
|
|
238
|
+
#^ source.ts
|
|
239
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
240
|
+
>
|
|
241
|
+
>// syntax highlighting cannot work in all examples after this - textmate grammars don't work over multiple lines like this
|
|
242
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
243
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
244
|
+
>
|
|
245
|
+
>// prettier-ignore
|
|
246
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
247
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
248
|
+
>gql
|
|
249
|
+
#^^^ source.ts variable.other.readwrite.ts
|
|
250
|
+
>`query Q8 { test }`
|
|
251
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
252
|
+
# ^^^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
253
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
254
|
+
>
|
|
255
|
+
>// prettier-ignore
|
|
256
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
257
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
258
|
+
>gql<{
|
|
259
|
+
#^^^ source.ts meta.function-call.ts entity.name.function.ts
|
|
260
|
+
# ^ source.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
|
|
261
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.definition.block.ts
|
|
262
|
+
> test: string;
|
|
263
|
+
#^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts
|
|
264
|
+
# ^^^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.definition.property.ts variable.object.property.ts
|
|
265
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
|
|
266
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts
|
|
267
|
+
# ^^^^^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts support.type.primitive.ts
|
|
268
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.terminator.statement.ts
|
|
269
|
+
>},{
|
|
270
|
+
#^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.definition.block.ts
|
|
271
|
+
# ^ source.ts meta.type.parameters.ts punctuation.separator.comma.ts
|
|
272
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.definition.block.ts
|
|
273
|
+
> test: string;
|
|
274
|
+
#^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts
|
|
275
|
+
# ^^^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.definition.property.ts variable.object.property.ts
|
|
276
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
|
|
277
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts
|
|
278
|
+
# ^^^^^^ source.ts meta.type.parameters.ts meta.object.type.ts meta.field.declaration.ts meta.type.annotation.ts support.type.primitive.ts
|
|
279
|
+
# ^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.terminator.statement.ts
|
|
280
|
+
>}>`query Q9 { test }`
|
|
281
|
+
#^ source.ts meta.type.parameters.ts meta.object.type.ts punctuation.definition.block.ts
|
|
282
|
+
# ^ source.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
|
|
283
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
284
|
+
# ^^^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
285
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
286
|
+
>
|
|
287
|
+
>gql<
|
|
288
|
+
#^^^ source.ts variable.other.readwrite.ts
|
|
289
|
+
# ^ source.ts keyword.operator.relational.ts
|
|
290
|
+
> {
|
|
291
|
+
#^^ source.ts
|
|
292
|
+
# ^ source.ts meta.block.ts punctuation.definition.block.ts
|
|
293
|
+
> test: string;
|
|
294
|
+
#^^^^ source.ts meta.block.ts
|
|
295
|
+
# ^^^^ source.ts meta.block.ts entity.name.label.ts
|
|
296
|
+
# ^ source.ts meta.block.ts punctuation.separator.label.ts
|
|
297
|
+
# ^ source.ts meta.block.ts
|
|
298
|
+
# ^^^^^^ source.ts meta.block.ts variable.other.readwrite.ts
|
|
299
|
+
# ^ source.ts meta.block.ts punctuation.terminator.statement.ts
|
|
300
|
+
> },
|
|
301
|
+
#^^ source.ts meta.block.ts
|
|
302
|
+
# ^ source.ts meta.block.ts punctuation.definition.block.ts
|
|
303
|
+
# ^ source.ts punctuation.separator.comma.ts
|
|
304
|
+
> {
|
|
305
|
+
#^^ source.ts
|
|
306
|
+
# ^ source.ts meta.block.ts punctuation.definition.block.ts
|
|
307
|
+
> test: string;
|
|
308
|
+
#^^^^ source.ts meta.block.ts
|
|
309
|
+
# ^^^^ source.ts meta.block.ts entity.name.label.ts
|
|
310
|
+
# ^ source.ts meta.block.ts punctuation.separator.label.ts
|
|
311
|
+
# ^ source.ts meta.block.ts
|
|
312
|
+
# ^^^^^^ source.ts meta.block.ts variable.other.readwrite.ts
|
|
313
|
+
# ^ source.ts meta.block.ts punctuation.terminator.statement.ts
|
|
314
|
+
> }
|
|
315
|
+
#^^ source.ts meta.block.ts
|
|
316
|
+
# ^ source.ts meta.block.ts punctuation.definition.block.ts
|
|
317
|
+
>>`
|
|
318
|
+
#^ source.ts keyword.operator.relational.ts
|
|
319
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
320
|
+
> query Q10 {
|
|
321
|
+
#^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
322
|
+
> test
|
|
323
|
+
#^^^^^^^^^ source.ts string.template.ts
|
|
324
|
+
> }
|
|
325
|
+
#^^^^ source.ts string.template.ts
|
|
326
|
+
>`;
|
|
327
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
328
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
329
|
+
>
|
|
330
|
+
>// prettier-ignore
|
|
331
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
332
|
+
# ^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
333
|
+
>gql
|
|
334
|
+
#^^^ source.ts variable.other.readwrite.ts
|
|
335
|
+
>`
|
|
336
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
337
|
+
> query Q11 {
|
|
338
|
+
#^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
339
|
+
> test
|
|
340
|
+
#^^^^^^^^^ source.ts string.template.ts
|
|
341
|
+
> }
|
|
342
|
+
#^^^^ source.ts string.template.ts
|
|
343
|
+
>`;
|
|
344
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
345
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
346
|
+
>
|
|
347
|
+
>export {};
|
|
348
|
+
#^^^^^^ source.ts meta.export.ts keyword.control.export.ts
|
|
349
|
+
# ^ source.ts meta.export.ts
|
|
350
|
+
# ^ source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts
|
|
351
|
+
# ^ source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts
|
|
352
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
353
|
+
>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// hint for reading the snapshots generated by this file:
|
|
2
|
+
// it is important to check that a rule doesn't only enter `meta.embedded.block.graphql`
|
|
3
|
+
// but also leaves it again
|
|
4
|
+
|
|
5
|
+
`#NormalComment
|
|
6
|
+
query Foo {test}`;
|
|
7
|
+
|
|
8
|
+
`#graphql
|
|
9
|
+
query Q1 {test}`;
|
|
10
|
+
|
|
11
|
+
` # graphql
|
|
12
|
+
query Q2 {test}`;
|
|
13
|
+
|
|
14
|
+
`# GraphQL
|
|
15
|
+
query Q3 {
|
|
16
|
+
test
|
|
17
|
+
}`;
|
|
18
|
+
|
|
19
|
+
`#gql
|
|
20
|
+
# normal comment
|
|
21
|
+
query Q4 {
|
|
22
|
+
test
|
|
23
|
+
}`;
|
|
24
|
+
|
|
25
|
+
`#graphql
|
|
26
|
+
query Q5 {
|
|
27
|
+
test
|
|
28
|
+
}`;
|
|
29
|
+
|
|
30
|
+
// syntax highlighting cannot work in all examples after this - textmate grammars don't work over multiple lines like this
|
|
31
|
+
`
|
|
32
|
+
|
|
33
|
+
# graphql
|
|
34
|
+
|
|
35
|
+
query Q6 {
|
|
36
|
+
test
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
>// hint for reading the snapshots generated by this file:
|
|
2
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
3
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
4
|
+
>// it is important to check that a rule doesn't only enter `meta.embedded.block.graphql`
|
|
5
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
6
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
7
|
+
>// but also leaves it again
|
|
8
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
9
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
10
|
+
>
|
|
11
|
+
>`#NormalComment
|
|
12
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
13
|
+
# ^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
14
|
+
>query Foo {test}`;
|
|
15
|
+
#^^^^^^^^^^^^^^^^ source.ts string.template.ts
|
|
16
|
+
# ^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
17
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
18
|
+
>
|
|
19
|
+
>`#graphql
|
|
20
|
+
#^ source.ts
|
|
21
|
+
# ^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
22
|
+
# ^^^^^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js markup.italic
|
|
23
|
+
>query Q1 {test}`;
|
|
24
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
25
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
26
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
27
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
28
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
29
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
30
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
31
|
+
# ^ source.ts
|
|
32
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
33
|
+
>
|
|
34
|
+
>` # graphql
|
|
35
|
+
#^ source.ts
|
|
36
|
+
# ^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
37
|
+
# ^^^^^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js markup.italic
|
|
38
|
+
>query Q2 {test}`;
|
|
39
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
40
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
41
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
42
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
43
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
44
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
45
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
46
|
+
# ^ source.ts
|
|
47
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
48
|
+
>
|
|
49
|
+
>`# GraphQL
|
|
50
|
+
#^ source.ts
|
|
51
|
+
# ^^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
52
|
+
# ^^^^^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js markup.italic
|
|
53
|
+
>query Q3 {
|
|
54
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
55
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
56
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
57
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
58
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
59
|
+
> test
|
|
60
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
61
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
62
|
+
>}`;
|
|
63
|
+
#^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
64
|
+
# ^ source.ts
|
|
65
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
66
|
+
>
|
|
67
|
+
>`#gql
|
|
68
|
+
#^ source.ts
|
|
69
|
+
# ^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
70
|
+
# ^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js markup.italic
|
|
71
|
+
># normal comment
|
|
72
|
+
#^^^^^^^^^^^^^^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
73
|
+
>query Q4 {
|
|
74
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
75
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
76
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
77
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
78
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
79
|
+
> test
|
|
80
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
81
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
82
|
+
>}`;
|
|
83
|
+
#^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
84
|
+
# ^ source.ts
|
|
85
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
86
|
+
>
|
|
87
|
+
>`#graphql
|
|
88
|
+
#^ source.ts
|
|
89
|
+
# ^ source.ts meta.embedded.block.graphql comment.line.graphql.js
|
|
90
|
+
# ^^^^^^^ source.ts meta.embedded.block.graphql comment.line.graphql.js markup.italic
|
|
91
|
+
>query Q5 {
|
|
92
|
+
#^^^^^ source.ts meta.embedded.block.graphql keyword.operation.graphql
|
|
93
|
+
# ^ source.ts meta.embedded.block.graphql
|
|
94
|
+
# ^^ source.ts meta.embedded.block.graphql entity.name.function.graphql
|
|
95
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
96
|
+
# ^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
97
|
+
> test
|
|
98
|
+
#^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql
|
|
99
|
+
# ^^^^ source.ts meta.embedded.block.graphql meta.selectionset.graphql variable.graphql
|
|
100
|
+
>}`;
|
|
101
|
+
#^ source.ts meta.embedded.block.graphql meta.selectionset.graphql punctuation.operation.graphql
|
|
102
|
+
# ^ source.ts
|
|
103
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
104
|
+
>
|
|
105
|
+
>// syntax highlighting cannot work in all examples after this - textmate grammars don't work over multiple lines like this
|
|
106
|
+
#^^ source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
|
|
107
|
+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.ts comment.line.double-slash.ts
|
|
108
|
+
>`
|
|
109
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.begin.ts
|
|
110
|
+
>
|
|
111
|
+
># graphql
|
|
112
|
+
#^^^^^^^^^^ source.ts string.template.ts
|
|
113
|
+
>
|
|
114
|
+
>query Q6 {
|
|
115
|
+
#^^^^^^^^^^^ source.ts string.template.ts
|
|
116
|
+
> test
|
|
117
|
+
#^^^^^^^ source.ts string.template.ts
|
|
118
|
+
>}
|
|
119
|
+
#^^ source.ts string.template.ts
|
|
120
|
+
>`;
|
|
121
|
+
#^ source.ts string.template.ts punctuation.definition.string.template.end.ts
|
|
122
|
+
# ^ source.ts punctuation.terminator.statement.ts
|
|
123
|
+
>
|
|
@@ -122,18 +122,27 @@ Object {
|
|
|
122
122
|
}
|
|
123
123
|
`,
|
|
124
124
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
125
|
+
fs.mkdirSync(`${dir}/bin`);
|
|
126
|
+
fs.writeFileSync(`${dir}/bin/rover`, "", { mode: 0o755 });
|
|
127
|
+
let oldPath = process.env.PATH;
|
|
128
|
+
process.env.PATH = `${dir}/bin:${oldPath}`;
|
|
129
|
+
try {
|
|
130
|
+
const config = await loadConfig({
|
|
131
|
+
configPath: dirPath,
|
|
132
|
+
});
|
|
133
|
+
expect(config?.rawConfig).toMatchInlineSnapshot(`
|
|
130
134
|
Object {
|
|
131
135
|
"engine": Object {
|
|
132
136
|
"endpoint": "https://graphql.api.apollographql.com/api/graphql",
|
|
133
137
|
},
|
|
134
|
-
"rover": Object {
|
|
138
|
+
"rover": Object {
|
|
139
|
+
"bin": "${dir}/bin/rover",
|
|
140
|
+
},
|
|
135
141
|
}
|
|
136
142
|
`);
|
|
143
|
+
} finally {
|
|
144
|
+
process.env.PATH = oldPath;
|
|
145
|
+
}
|
|
137
146
|
}));
|
|
138
147
|
|
|
139
148
|
it("[deprecated] loads config from package.json", async () => {
|
|
@@ -158,6 +167,30 @@ Object {
|
|
|
158
167
|
const config = await loadConfig({ configPath: dirPath });
|
|
159
168
|
expect(config?.client?.service).toEqual("hello");
|
|
160
169
|
});
|
|
170
|
+
|
|
171
|
+
it("loads config from a ts file with CommonJs", async () => {
|
|
172
|
+
writeFilesToDir(dir, {
|
|
173
|
+
"apollo.config.ts": `module.exports = {"client": {"service": "hello"} }`,
|
|
174
|
+
});
|
|
175
|
+
const config = await loadConfig({ configPath: dirPath });
|
|
176
|
+
expect(config?.client?.service).toEqual("hello");
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it("loads config from a cjs file", async () => {
|
|
180
|
+
writeFilesToDir(dir, {
|
|
181
|
+
"apollo.config.cjs": `module.exports = {"client": {"service": "hello"} }`,
|
|
182
|
+
});
|
|
183
|
+
const config = await loadConfig({ configPath: dirPath });
|
|
184
|
+
expect(config?.client?.service).toEqual("hello");
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it("loads config from a mjs file", async () => {
|
|
188
|
+
writeFilesToDir(dir, {
|
|
189
|
+
"apollo.config.mjs": `export default {"client": {"service": "hello"} }`,
|
|
190
|
+
});
|
|
191
|
+
const config = await loadConfig({ configPath: dirPath });
|
|
192
|
+
expect(config?.client?.service).toEqual("hello");
|
|
193
|
+
});
|
|
161
194
|
});
|
|
162
195
|
|
|
163
196
|
describe("errors", () => {
|
|
@@ -243,7 +276,7 @@ Object {
|
|
|
243
276
|
describe("env loading", () => {
|
|
244
277
|
it("finds .env in config path & parses for key", async () => {
|
|
245
278
|
writeFilesToDir(dir, {
|
|
246
|
-
"apollo.config.js": `module.exports = { client: {
|
|
279
|
+
"apollo.config.js": `module.exports = { client: { } }`,
|
|
247
280
|
".env": `APOLLO_KEY=service:harambe:54378950jn`,
|
|
248
281
|
});
|
|
249
282
|
|
|
@@ -256,7 +289,7 @@ Object {
|
|
|
256
289
|
|
|
257
290
|
it("finds .env.local in config path & parses for key", async () => {
|
|
258
291
|
writeFilesToDir(dir, {
|
|
259
|
-
"apollo.config.js": `module.exports = { client: {
|
|
292
|
+
"apollo.config.js": `module.exports = { client: { } }`,
|
|
260
293
|
".env.local": `APOLLO_KEY=service:harambe:54378950jn`,
|
|
261
294
|
});
|
|
262
295
|
|
|
@@ -269,7 +302,7 @@ Object {
|
|
|
269
302
|
|
|
270
303
|
it("finds .env and .env.local in config path & parses for key, preferring .env.local", async () => {
|
|
271
304
|
writeFilesToDir(dir, {
|
|
272
|
-
"apollo.config.js": `module.exports = { client: {
|
|
305
|
+
"apollo.config.js": `module.exports = { client: { } }`,
|
|
273
306
|
".env": `APOLLO_KEY=service:hamato:54378950jn`,
|
|
274
307
|
".env.local": `APOLLO_KEY=service:yoshi:65489061ko`,
|
|
275
308
|
});
|
|
@@ -313,7 +346,7 @@ Object {
|
|
|
313
346
|
it("infers rover projects from config", () =>
|
|
314
347
|
withFeatureFlags("rover", async () => {
|
|
315
348
|
writeFilesToDir(dir, {
|
|
316
|
-
"apollo.config.js": `module.exports = { rover: {} }`,
|
|
349
|
+
"apollo.config.js": `module.exports = { rover: { bin: "/usr/bin/env" } }`,
|
|
317
350
|
});
|
|
318
351
|
|
|
319
352
|
const config = await loadConfig({
|
|
@@ -6,6 +6,8 @@ import z, { ZodError } from "zod";
|
|
|
6
6
|
import { ValidationRule } from "graphql/validation/ValidationContext";
|
|
7
7
|
import { Slot } from "@wry/context";
|
|
8
8
|
import { fromZodError } from "zod-validation-error";
|
|
9
|
+
import which from "which";
|
|
10
|
+
import { accessSync, constants as fsConstants, statSync } from "node:fs";
|
|
9
11
|
|
|
10
12
|
const ROVER_AVAILABLE = (process.env.APOLLO_FEATURE_FLAGS || "")
|
|
11
13
|
.split(",")
|
|
@@ -79,7 +81,30 @@ const clientConfig = z.object({
|
|
|
79
81
|
export type ClientConfigFormat = z.infer<typeof clientConfig>;
|
|
80
82
|
|
|
81
83
|
const roverConfig = z.object({
|
|
82
|
-
bin: z
|
|
84
|
+
bin: z
|
|
85
|
+
.preprocess(
|
|
86
|
+
(val) => val || which.sync("rover", { nothrow: true }) || undefined,
|
|
87
|
+
z.string({
|
|
88
|
+
message:
|
|
89
|
+
"Rover binary not found. Please either install it system-wide in PATH, or provide the `bin` option. Also ensure that the binary is executable.",
|
|
90
|
+
}),
|
|
91
|
+
)
|
|
92
|
+
.refine(
|
|
93
|
+
(bin) => {
|
|
94
|
+
try {
|
|
95
|
+
// is executable?
|
|
96
|
+
accessSync(bin, fsConstants.X_OK);
|
|
97
|
+
// is a file and not a directory?
|
|
98
|
+
return statSync(bin).isFile();
|
|
99
|
+
} catch {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
message:
|
|
105
|
+
"Rover binary is not marked as an executable. If you are using OS X or Linux, ensure to set the executable bit.",
|
|
106
|
+
},
|
|
107
|
+
),
|
|
83
108
|
profile: z.string().optional(),
|
|
84
109
|
});
|
|
85
110
|
type RoverConfigFormat = z.infer<typeof roverConfig>;
|