vscode-apollo 1.19.3 → 1.20.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/.changeset/README.md +8 -0
- package/.changeset/config.json +14 -0
- package/.circleci/config.yml +82 -0
- package/.eslintrc.js +10 -0
- package/.gitattributes +1 -0
- package/.github/workflows/release.yml +95 -0
- package/.gitleaks.toml +26 -0
- package/.nvmrc +1 -0
- package/.prettierrc +5 -0
- package/.vscode/launch.json +61 -0
- package/.vscode/settings.json +16 -0
- package/.vscode/tasks.json +18 -0
- package/.vscodeignore +17 -1
- package/CHANGELOG.md +172 -1
- package/LICENSE +2 -2
- package/README.md +9 -9
- package/codegen.yml +12 -0
- package/images/IconRun.svg +8 -0
- package/jest.config.ts +11 -0
- package/package.json +102 -22
- package/renovate.json +23 -0
- package/src/__mocks__/fs.js +3 -0
- package/src/__tests__/statusBar.test.ts +8 -7
- package/src/debug.ts +2 -5
- package/src/env/fetch/fetch.ts +32 -0
- package/src/env/fetch/global.ts +30 -0
- package/src/env/fetch/index.d.ts +2 -0
- package/src/env/fetch/index.ts +2 -0
- package/src/env/fetch/url.ts +9 -0
- package/src/env/index.ts +4 -0
- package/src/env/polyfills/array.ts +17 -0
- package/src/env/polyfills/index.ts +2 -0
- package/src/env/polyfills/object.ts +7 -0
- package/src/env/typescript-utility-types.ts +2 -0
- package/src/extension.ts +106 -37
- package/src/language-server/__tests__/diagnostics.test.ts +86 -0
- package/src/language-server/__tests__/document.test.ts +187 -0
- package/src/language-server/__tests__/fileSet.test.ts +46 -0
- package/src/language-server/__tests__/fixtures/starwarsSchema.ts +1917 -0
- package/src/language-server/config/__tests__/config.ts +128 -0
- package/src/language-server/config/__tests__/loadConfig.ts +508 -0
- package/src/language-server/config/__tests__/utils.ts +106 -0
- package/src/language-server/config/config.ts +219 -0
- package/src/language-server/config/index.ts +3 -0
- package/src/language-server/config/loadConfig.ts +228 -0
- package/src/language-server/config/utils.ts +56 -0
- package/src/language-server/diagnostics.ts +109 -0
- package/src/language-server/document.ts +277 -0
- package/src/language-server/engine/GraphQLDataSource.ts +124 -0
- package/src/language-server/engine/index.ts +105 -0
- package/src/language-server/engine/operations/frontendUrlRoot.ts +7 -0
- package/src/language-server/engine/operations/schemaTagsAndFieldStats.ts +24 -0
- package/src/language-server/errors/__tests__/NoMissingClientDirectives.test.ts +220 -0
- package/src/language-server/errors/logger.ts +58 -0
- package/src/language-server/errors/validation.ts +277 -0
- package/src/language-server/fileSet.ts +65 -0
- package/src/language-server/format.ts +48 -0
- package/src/language-server/graphqlTypes.ts +7176 -0
- package/src/language-server/index.ts +29 -0
- package/src/language-server/languageProvider.ts +798 -0
- package/src/language-server/loadingHandler.ts +64 -0
- package/src/language-server/project/base.ts +399 -0
- package/src/language-server/project/client.ts +602 -0
- package/src/language-server/project/defaultClientSchema.ts +45 -0
- package/src/language-server/project/service.ts +48 -0
- package/src/language-server/providers/schema/__tests__/file.ts +150 -0
- package/src/language-server/providers/schema/base.ts +15 -0
- package/src/language-server/providers/schema/endpoint.ts +157 -0
- package/src/language-server/providers/schema/engine.ts +197 -0
- package/src/language-server/providers/schema/file.ts +167 -0
- package/src/language-server/providers/schema/index.ts +75 -0
- package/src/language-server/server.ts +252 -0
- package/src/language-server/typings/codemirror.d.ts +4 -0
- package/src/language-server/typings/graphql.d.ts +27 -0
- package/src/language-server/utilities/__tests__/graphql.test.ts +411 -0
- package/src/language-server/utilities/__tests__/uri.ts +55 -0
- package/src/language-server/utilities/debouncer.ts +8 -0
- package/src/language-server/utilities/debug.ts +89 -0
- package/src/language-server/utilities/graphql.ts +432 -0
- package/src/language-server/utilities/index.ts +3 -0
- package/src/language-server/utilities/source.ts +182 -0
- package/src/language-server/utilities/uri.ts +19 -0
- package/src/language-server/workspace.ts +262 -0
- package/src/languageServerClient.ts +19 -12
- package/src/messages.ts +84 -0
- package/src/statusBar.ts +5 -5
- package/src/tools/__tests__/buildServiceDefinition.test.ts +491 -0
- package/src/tools/__tests__/snapshotSerializers/astSerializer.ts +19 -0
- package/src/tools/__tests__/snapshotSerializers/graphQLTypeSerializer.ts +14 -0
- package/src/tools/buildServiceDefinition.ts +241 -0
- package/src/tools/index.ts +6 -0
- package/src/tools/schema/index.ts +2 -0
- package/src/tools/schema/resolveObject.ts +18 -0
- package/src/tools/schema/resolverMap.ts +23 -0
- package/src/tools/utilities/graphql.ts +22 -0
- package/src/tools/utilities/index.ts +3 -0
- package/src/tools/utilities/invariant.ts +5 -0
- package/src/tools/utilities/predicates.ts +5 -0
- package/src/utils.ts +1 -16
- package/syntaxes/graphql.js.json +3 -3
- package/syntaxes/graphql.json +13 -9
- package/syntaxes/graphql.lua.json +51 -0
- package/syntaxes/graphql.rb.json +1 -1
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +20 -7
- package/create-server-symlink.js +0 -8
- package/lib/debug.d.ts +0 -11
- package/lib/debug.d.ts.map +0 -1
- package/lib/debug.js +0 -48
- package/lib/debug.js.map +0 -1
- package/lib/extension.d.ts +0 -4
- package/lib/extension.d.ts.map +0 -1
- package/lib/extension.js +0 -187
- package/lib/extension.js.map +0 -1
- package/lib/languageServerClient.d.ts +0 -4
- package/lib/languageServerClient.d.ts.map +0 -1
- package/lib/languageServerClient.js +0 -57
- package/lib/languageServerClient.js.map +0 -1
- package/lib/statusBar.d.ts +0 -24
- package/lib/statusBar.d.ts.map +0 -1
- package/lib/statusBar.js +0 -46
- package/lib/statusBar.js.map +0 -1
- package/lib/testRunner/index.d.ts +0 -3
- package/lib/testRunner/index.d.ts.map +0 -1
- package/lib/testRunner/index.js +0 -49
- package/lib/testRunner/index.js.map +0 -1
- package/lib/testRunner/jest-config.d.ts +0 -14
- package/lib/testRunner/jest-config.d.ts.map +0 -1
- package/lib/testRunner/jest-config.js +0 -18
- package/lib/testRunner/jest-config.js.map +0 -1
- package/lib/testRunner/jest-vscode-environment.d.ts +0 -2
- package/lib/testRunner/jest-vscode-environment.d.ts.map +0 -1
- package/lib/testRunner/jest-vscode-environment.js +0 -19
- package/lib/testRunner/jest-vscode-environment.js.map +0 -1
- package/lib/testRunner/jest-vscode-framework-setup.d.ts +0 -1
- package/lib/testRunner/jest-vscode-framework-setup.d.ts.map +0 -1
- package/lib/testRunner/jest-vscode-framework-setup.js +0 -3
- package/lib/testRunner/jest-vscode-framework-setup.js.map +0 -1
- package/lib/testRunner/vscode-test-script.d.ts +0 -2
- package/lib/testRunner/vscode-test-script.d.ts.map +0 -1
- package/lib/testRunner/vscode-test-script.js +0 -23
- package/lib/testRunner/vscode-test-script.js.map +0 -1
- package/lib/utils.d.ts +0 -18
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js +0 -52
- package/lib/utils.js.map +0 -1
- package/src/testRunner/README.md +0 -23
- package/src/testRunner/index.ts +0 -72
- package/src/testRunner/jest-config.ts +0 -17
- package/src/testRunner/jest-vscode-environment.ts +0 -25
- package/src/testRunner/jest-vscode-framework-setup.ts +0 -10
- package/src/testRunner/jest.d.ts +0 -37
- package/src/testRunner/vscode-test-script.ts +0 -38
- package/tsconfig.test.json +0 -4
- package/tsconfig.tsbuildinfo +0 -2486
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GraphQLSchemaProvider,
|
|
3
|
+
SchemaChangeUnsubscribeHandler,
|
|
4
|
+
SchemaResolveConfig,
|
|
5
|
+
} from "./base";
|
|
6
|
+
import {
|
|
7
|
+
ApolloConfig,
|
|
8
|
+
isClientConfig,
|
|
9
|
+
isServiceConfig,
|
|
10
|
+
isLocalServiceConfig,
|
|
11
|
+
ClientConfig,
|
|
12
|
+
} from "../../config";
|
|
13
|
+
|
|
14
|
+
import { EndpointSchemaProvider } from "./endpoint";
|
|
15
|
+
import { EngineSchemaProvider } from "./engine";
|
|
16
|
+
import { FileSchemaProvider } from "./file";
|
|
17
|
+
import { ClientIdentity } from "../../engine";
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
GraphQLSchemaProvider,
|
|
21
|
+
SchemaChangeUnsubscribeHandler,
|
|
22
|
+
SchemaResolveConfig,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export function schemaProviderFromConfig(
|
|
26
|
+
config: ApolloConfig,
|
|
27
|
+
clientIdentity?: ClientIdentity // engine provider needs this
|
|
28
|
+
): GraphQLSchemaProvider {
|
|
29
|
+
// we need this to be first because there will pretty much always be a
|
|
30
|
+
// url (since it's a default). If there is a localSchemaFile, we need to
|
|
31
|
+
// use that instead of the url.
|
|
32
|
+
if (config.service && config.service.localSchemaFile) {
|
|
33
|
+
const isListOfSchemaFiles = Array.isArray(config.service.localSchemaFile);
|
|
34
|
+
return new FileSchemaProvider(
|
|
35
|
+
isListOfSchemaFiles
|
|
36
|
+
? { paths: config.service.localSchemaFile as string[] }
|
|
37
|
+
: { path: config.service.localSchemaFile as string }
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (config.service && config.service.endpoint) {
|
|
42
|
+
return new EndpointSchemaProvider(config.service.endpoint);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (isClientConfig(config)) {
|
|
46
|
+
if (typeof config.client.service === "string") {
|
|
47
|
+
return new EngineSchemaProvider(config, clientIdentity);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (config.client.service) {
|
|
51
|
+
if (isLocalServiceConfig(config.client.service)) {
|
|
52
|
+
const isListOfSchemaFiles = Array.isArray(
|
|
53
|
+
config.client.service.localSchemaFile
|
|
54
|
+
);
|
|
55
|
+
return new FileSchemaProvider(
|
|
56
|
+
isListOfSchemaFiles
|
|
57
|
+
? { paths: config.client.service.localSchemaFile as string[] }
|
|
58
|
+
: {
|
|
59
|
+
path: config.client.service.localSchemaFile as string,
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return new EndpointSchemaProvider(config.client.service);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (config.graph && config.engine) {
|
|
69
|
+
return new EngineSchemaProvider(config as ClientConfig, clientIdentity);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
throw new Error(
|
|
73
|
+
"No schema provider was created, because the project type was unable to be resolved from your config. Please add either a client or service config. For more information, please refer to https://go.apollo.dev/t/config"
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import "../env";
|
|
2
|
+
// FIXME: The global fetch dependency comes from `apollo-link-http` and should be removed there.
|
|
3
|
+
import "../env/fetch/global";
|
|
4
|
+
import {
|
|
5
|
+
createConnection,
|
|
6
|
+
ProposedFeatures,
|
|
7
|
+
TextDocuments,
|
|
8
|
+
FileChangeType,
|
|
9
|
+
ServerCapabilities,
|
|
10
|
+
} from "vscode-languageserver";
|
|
11
|
+
import type { QuickPickItem } from "vscode";
|
|
12
|
+
import { GraphQLWorkspace } from "./workspace";
|
|
13
|
+
import { GraphQLLanguageProvider } from "./languageProvider";
|
|
14
|
+
import { LanguageServerLoadingHandler } from "./loadingHandler";
|
|
15
|
+
import { debounceHandler, Debug } from "./utilities";
|
|
16
|
+
import type { Connection } from "src/messages";
|
|
17
|
+
import URI from "vscode-uri";
|
|
18
|
+
|
|
19
|
+
const connection: Connection = createConnection(ProposedFeatures.all);
|
|
20
|
+
Debug.SetConnection(connection);
|
|
21
|
+
|
|
22
|
+
let hasWorkspaceFolderCapability = false;
|
|
23
|
+
|
|
24
|
+
// Awaitable promise for sending messages before the connection is initialized
|
|
25
|
+
let initializeConnection: () => void;
|
|
26
|
+
const whenConnectionInitialized: Promise<void> = new Promise(
|
|
27
|
+
(resolve) => (initializeConnection = resolve)
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const workspace = new GraphQLWorkspace(
|
|
31
|
+
new LanguageServerLoadingHandler(connection),
|
|
32
|
+
{
|
|
33
|
+
clientIdentity: {
|
|
34
|
+
name: process.env["APOLLO_CLIENT_NAME"],
|
|
35
|
+
version: process.env["APOLLO_CLIENT_VERSION"],
|
|
36
|
+
referenceID: process.env["APOLLO_CLIENT_REFERENCE_ID"],
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
workspace.onDiagnostics((params) => {
|
|
42
|
+
connection.sendDiagnostics(params);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
workspace.onDecorations((params) => {
|
|
46
|
+
connection.sendNotification("apollographql/engineDecorations", {
|
|
47
|
+
decorations: params,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
workspace.onSchemaTags((params) => {
|
|
52
|
+
connection.sendNotification(
|
|
53
|
+
"apollographql/tagsLoaded",
|
|
54
|
+
JSON.stringify(params)
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
workspace.onConfigFilesFound(async (params) => {
|
|
59
|
+
await whenConnectionInitialized;
|
|
60
|
+
|
|
61
|
+
connection.sendNotification(
|
|
62
|
+
"apollographql/configFilesFound",
|
|
63
|
+
params instanceof Error
|
|
64
|
+
? // Can't stringify Errors, just results in "{}"
|
|
65
|
+
JSON.stringify({ message: params.message, stack: params.stack })
|
|
66
|
+
: JSON.stringify(params)
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
connection.onInitialize(async ({ capabilities, workspaceFolders }) => {
|
|
71
|
+
hasWorkspaceFolderCapability = !!(
|
|
72
|
+
capabilities.workspace && capabilities.workspace.workspaceFolders
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
if (workspaceFolders) {
|
|
76
|
+
// We wait until all projects are added, because after `initialize` returns we can get additional requests
|
|
77
|
+
// like `textDocument/codeLens`, and that way these can await `GraphQLProject#whenReady` to make sure
|
|
78
|
+
// we provide them eventually.
|
|
79
|
+
await Promise.all(
|
|
80
|
+
workspaceFolders.map((folder) => workspace.addProjectsInFolder(folder))
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
capabilities: {
|
|
86
|
+
hoverProvider: true,
|
|
87
|
+
completionProvider: {
|
|
88
|
+
resolveProvider: false,
|
|
89
|
+
triggerCharacters: ["...", "@"],
|
|
90
|
+
},
|
|
91
|
+
definitionProvider: true,
|
|
92
|
+
referencesProvider: true,
|
|
93
|
+
documentSymbolProvider: true,
|
|
94
|
+
workspaceSymbolProvider: true,
|
|
95
|
+
codeLensProvider: {
|
|
96
|
+
resolveProvider: false,
|
|
97
|
+
},
|
|
98
|
+
codeActionProvider: true,
|
|
99
|
+
executeCommandProvider: {
|
|
100
|
+
commands: [],
|
|
101
|
+
},
|
|
102
|
+
textDocumentSync: documents.syncKind,
|
|
103
|
+
} as ServerCapabilities,
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
connection.onInitialized(async () => {
|
|
108
|
+
initializeConnection();
|
|
109
|
+
if (hasWorkspaceFolderCapability) {
|
|
110
|
+
connection.workspace.onDidChangeWorkspaceFolders(async (event) => {
|
|
111
|
+
await Promise.all([
|
|
112
|
+
...event.removed.map((folder) =>
|
|
113
|
+
workspace.removeProjectsInFolder(folder)
|
|
114
|
+
),
|
|
115
|
+
...event.added.map((folder) => workspace.addProjectsInFolder(folder)),
|
|
116
|
+
]);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const documents: TextDocuments = new TextDocuments();
|
|
122
|
+
|
|
123
|
+
// Make the text document manager listen on the connection
|
|
124
|
+
// for open, change and close text document events
|
|
125
|
+
documents.listen(connection);
|
|
126
|
+
|
|
127
|
+
function isFile(uri: string) {
|
|
128
|
+
return URI.parse(uri).scheme === "file";
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
documents.onDidChangeContent(
|
|
132
|
+
debounceHandler((params) => {
|
|
133
|
+
const project = workspace.projectForFile(params.document.uri);
|
|
134
|
+
if (!project) return;
|
|
135
|
+
|
|
136
|
+
// Only watch changes to files
|
|
137
|
+
if (!isFile(params.document.uri)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
project.documentDidChange(params.document);
|
|
142
|
+
})
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
connection.onDidChangeWatchedFiles((params) => {
|
|
146
|
+
for (const { uri, type } of params.changes) {
|
|
147
|
+
if (
|
|
148
|
+
uri.endsWith("apollo.config.js") ||
|
|
149
|
+
uri.endsWith("apollo.config.cjs") ||
|
|
150
|
+
uri.endsWith(".env")
|
|
151
|
+
) {
|
|
152
|
+
workspace.reloadProjectForConfig(uri);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Don't respond to changes in files that are currently open,
|
|
156
|
+
// because we'll get content change notifications instead
|
|
157
|
+
if (type === FileChangeType.Changed) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Only watch changes to files
|
|
162
|
+
if (!isFile(uri)) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const project = workspace.projectForFile(uri);
|
|
167
|
+
if (!project) continue;
|
|
168
|
+
|
|
169
|
+
switch (type) {
|
|
170
|
+
case FileChangeType.Created:
|
|
171
|
+
project.fileDidChange(uri);
|
|
172
|
+
break;
|
|
173
|
+
case FileChangeType.Deleted:
|
|
174
|
+
project.fileWasDeleted(uri);
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const languageProvider = new GraphQLLanguageProvider(workspace);
|
|
181
|
+
|
|
182
|
+
connection.onHover((params, token) =>
|
|
183
|
+
languageProvider.provideHover(params.textDocument.uri, params.position, token)
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
connection.onDefinition((params, token) =>
|
|
187
|
+
languageProvider.provideDefinition(
|
|
188
|
+
params.textDocument.uri,
|
|
189
|
+
params.position,
|
|
190
|
+
token
|
|
191
|
+
)
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
connection.onReferences((params, token) =>
|
|
195
|
+
languageProvider.provideReferences(
|
|
196
|
+
params.textDocument.uri,
|
|
197
|
+
params.position,
|
|
198
|
+
params.context,
|
|
199
|
+
token
|
|
200
|
+
)
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
connection.onDocumentSymbol((params, token) =>
|
|
204
|
+
languageProvider.provideDocumentSymbol(params.textDocument.uri, token)
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
connection.onWorkspaceSymbol((params, token) =>
|
|
208
|
+
languageProvider.provideWorkspaceSymbol(params.query, token)
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
connection.onCompletion(
|
|
212
|
+
debounceHandler((params, token) =>
|
|
213
|
+
languageProvider.provideCompletionItems(
|
|
214
|
+
params.textDocument.uri,
|
|
215
|
+
params.position,
|
|
216
|
+
token
|
|
217
|
+
)
|
|
218
|
+
)
|
|
219
|
+
);
|
|
220
|
+
|
|
221
|
+
connection.onCodeLens(
|
|
222
|
+
debounceHandler((params, token) =>
|
|
223
|
+
languageProvider.provideCodeLenses(params.textDocument.uri, token)
|
|
224
|
+
)
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
connection.onCodeAction(
|
|
228
|
+
debounceHandler((params, token) =>
|
|
229
|
+
languageProvider.provideCodeAction(
|
|
230
|
+
params.textDocument.uri,
|
|
231
|
+
params.range,
|
|
232
|
+
token
|
|
233
|
+
)
|
|
234
|
+
)
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
connection.onNotification("apollographql/reloadService", () =>
|
|
238
|
+
workspace.reloadService()
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
connection.onNotification(
|
|
242
|
+
"apollographql/tagSelected",
|
|
243
|
+
(selection: QuickPickItem) => workspace.updateSchemaTag(selection)
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
connection.onNotification("apollographql/getStats", async ({ uri }) => {
|
|
247
|
+
const status = await languageProvider.provideStats(uri);
|
|
248
|
+
connection.sendNotification("apollographql/statsLoaded", status);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Listen on the connection
|
|
252
|
+
connection.listen();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ASTNode,
|
|
3
|
+
TypeSystemDefinitionNode,
|
|
4
|
+
TypeSystemExtensionNode,
|
|
5
|
+
FragmentDefinitionNode,
|
|
6
|
+
OperationDefinitionNode,
|
|
7
|
+
} from "graphql";
|
|
8
|
+
|
|
9
|
+
// FIXME: We should add proper type guards for these predicate functions
|
|
10
|
+
// to `@types/graphql`.
|
|
11
|
+
declare module "graphql/language/predicates" {
|
|
12
|
+
function isExecutableDefinitionNode(
|
|
13
|
+
node: ASTNode
|
|
14
|
+
): node is OperationDefinitionNode | FragmentDefinitionNode;
|
|
15
|
+
function isTypeSystemDefinitionNode(
|
|
16
|
+
node: ASTNode
|
|
17
|
+
): node is TypeSystemDefinitionNode;
|
|
18
|
+
function isTypeSystemExtensionNode(
|
|
19
|
+
node: ASTNode
|
|
20
|
+
): node is TypeSystemExtensionNode;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare module "graphql/validation/validate" {
|
|
24
|
+
interface ValidationContext {
|
|
25
|
+
_fragments: { [fragmentName: string]: FragmentDefinitionNode };
|
|
26
|
+
}
|
|
27
|
+
}
|