vscode-apollo 1.20.0 → 2.0.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 +27 -18
- package/.git-blame-ignore-revs +2 -0
- package/.nvmrc +1 -1
- package/.vscode/launch.json +9 -4
- package/.vscode/tasks.json +58 -16
- package/.vscodeignore +12 -1
- package/CHANGELOG.md +78 -0
- package/CODEOWNERS +4 -0
- package/README.md +97 -48
- package/graphql.configuration.json +5 -1
- package/images/marketplace/apollo-wordmark.png +0 -0
- package/jest.config.ts +14 -4
- package/jest.e2e.config.js +17 -0
- package/package.json +67 -68
- package/renovate.json +7 -0
- package/sampleWorkspace/clientSchema/apollo.config.cjs +10 -0
- package/sampleWorkspace/clientSchema/src/clientSchema.js +16 -0
- package/sampleWorkspace/clientSchema/src/test.js +18 -0
- package/sampleWorkspace/fixtures/starwarsSchema.graphql +299 -0
- package/sampleWorkspace/httpSchema/apollo.config.ts +8 -0
- package/sampleWorkspace/httpSchema/src/test.js +9 -0
- package/sampleWorkspace/localSchema/apollo.config.js +8 -0
- package/sampleWorkspace/localSchema/src/test.js +8 -0
- package/sampleWorkspace/localSchemaArray/apollo.config.js +12 -0
- package/sampleWorkspace/localSchemaArray/planets.graphql +20 -0
- package/sampleWorkspace/localSchemaArray/src/test.js +12 -0
- package/sampleWorkspace/sampleWorkspace.code-workspace +20 -0
- package/sampleWorkspace/spotifyGraph/apollo.config.mjs +5 -0
- package/sampleWorkspace/spotifyGraph/src/test.js +11 -0
- package/src/__e2e__/mockServer.js +117 -0
- package/src/__e2e__/mocks.js +13094 -0
- package/src/__e2e__/run.js +23 -0
- package/src/__e2e__/runTests.js +44 -0
- package/src/__e2e__/setup.js +1 -0
- package/src/__e2e__/vscode-environment.js +16 -0
- package/src/__e2e__/vscode.js +1 -0
- package/src/build.js +57 -0
- package/src/env/index.ts +0 -3
- package/src/extension.ts +251 -225
- package/src/language-server/__e2e__/clientSchema.e2e.ts +147 -0
- package/src/language-server/__e2e__/httpSchema.e2e.ts +21 -0
- package/src/language-server/__e2e__/localSchema.e2e.ts +25 -0
- package/src/language-server/__e2e__/localSchemaArray.e2e.ts +31 -0
- package/src/language-server/__e2e__/studioGraph.e2e.ts +65 -0
- package/src/language-server/__e2e__/utils.ts +151 -0
- package/src/language-server/__tests__/diagnostics.test.ts +8 -8
- package/src/language-server/__tests__/fileSet.test.ts +1 -1
- package/src/language-server/__tests__/fixtures/starwarsSchema.ts +2 -2
- package/src/language-server/config/__tests__/config.ts +22 -96
- package/src/language-server/config/__tests__/loadConfig.ts +97 -221
- package/src/language-server/config/__tests__/utils.ts +22 -29
- package/src/language-server/config/config.ts +221 -156
- package/src/language-server/config/loadConfig.ts +26 -153
- package/src/language-server/config/utils.ts +5 -16
- package/src/language-server/diagnostics.ts +17 -8
- package/src/language-server/document.ts +16 -16
- package/src/language-server/engine/index.ts +57 -39
- package/src/language-server/engine/operations/frontendUrlRoot.ts +9 -1
- package/src/language-server/engine/operations/schemaTagsAndFieldStats.ts +9 -1
- package/src/language-server/errors/__tests__/NoMissingClientDirectives.test.ts +10 -5
- package/src/language-server/errors/logger.ts +1 -1
- package/src/language-server/errors/validation.ts +20 -23
- package/src/language-server/fileSet.ts +10 -12
- package/src/language-server/format.ts +1 -1
- package/src/language-server/graphqlTypes.ts +13020 -3455
- package/src/language-server/index.ts +0 -1
- package/src/language-server/languageProvider.ts +29 -32
- package/src/language-server/loadingHandler.ts +10 -27
- package/src/language-server/project/base.ts +32 -25
- package/src/language-server/project/client.ts +80 -114
- package/src/language-server/project/defaultClientSchema.ts +29 -4
- package/src/language-server/providers/schema/__tests__/file.ts +60 -19
- package/src/language-server/providers/schema/base.ts +2 -2
- package/src/language-server/providers/schema/endpoint.ts +15 -34
- package/src/language-server/providers/schema/engine.ts +25 -18
- package/src/language-server/providers/schema/file.ts +41 -32
- package/src/language-server/providers/schema/index.ts +5 -21
- package/src/language-server/server.ts +72 -50
- package/src/language-server/typings/graphql.d.ts +3 -3
- package/src/language-server/utilities/__tests__/graphql.test.ts +42 -54
- package/src/language-server/utilities/debouncer.ts +1 -1
- package/src/language-server/utilities/debug.ts +6 -5
- package/src/language-server/utilities/graphql.ts +17 -16
- package/src/language-server/utilities/source.ts +16 -16
- package/src/language-server/utilities/uri.ts +2 -2
- package/src/language-server/workspace.ts +29 -37
- package/src/languageServerClient.ts +4 -4
- package/src/messages.ts +38 -47
- package/src/tools/__tests__/buildServiceDefinition.test.ts +2 -2
- package/src/tools/buildServiceDefinition.ts +11 -11
- package/src/tools/schema/resolveObject.ts +1 -1
- package/src/tools/utilities/predicates.ts +1 -1
- package/src/utils.ts +7 -6
- package/syntaxes/graphql.dart.json +2 -4
- package/syntaxes/graphql.ex.json +1 -4
- package/tsconfig.build.json +8 -1
- package/tsconfig.json +5 -3
- package/src/env/fetch/fetch.ts +0 -32
- package/src/env/fetch/global.ts +0 -30
- package/src/env/fetch/index.d.ts +0 -2
- package/src/env/fetch/index.ts +0 -2
- package/src/env/fetch/url.ts +0 -9
- package/src/env/polyfills/array.ts +0 -17
- package/src/env/polyfills/index.ts +0 -2
- package/src/env/polyfills/object.ts +0 -7
- package/src/language-server/engine/GraphQLDataSource.ts +0 -124
- package/src/language-server/project/service.ts +0 -48
- package/src/language-server/typings/codemirror.d.ts +0 -4
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
const http = require("http");
|
|
3
|
+
const {
|
|
4
|
+
parseRequestParams,
|
|
5
|
+
createHandler,
|
|
6
|
+
} = require("graphql-http/lib/use/http");
|
|
7
|
+
const { buildSchema } = require("graphql");
|
|
8
|
+
const { Trie } = require("@wry/trie");
|
|
9
|
+
|
|
10
|
+
function runMockServer(
|
|
11
|
+
/** @type {number} */ port,
|
|
12
|
+
onStart = (/** @type {number} */ port) => {},
|
|
13
|
+
) {
|
|
14
|
+
const mocks = new Trie(false);
|
|
15
|
+
|
|
16
|
+
const server = http.createServer(async (req, res) => {
|
|
17
|
+
if (req.url === "/apollo") {
|
|
18
|
+
if (req.method === "POST") {
|
|
19
|
+
await handleApolloPost(req, res);
|
|
20
|
+
} else if (req.method === "PUT") {
|
|
21
|
+
await handleApolloPut(req, res);
|
|
22
|
+
}
|
|
23
|
+
} else if (req.url === "/graphql") {
|
|
24
|
+
schemaHandler(req, res);
|
|
25
|
+
} else {
|
|
26
|
+
res.writeHead(404).end();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
server.on("error", (err) => {
|
|
31
|
+
console.log("Failed to start server", err);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
console.log("Starting server...");
|
|
35
|
+
server.listen(port);
|
|
36
|
+
onStart(port);
|
|
37
|
+
console.log(`Server ready at: http://localhost:${port}`);
|
|
38
|
+
return {
|
|
39
|
+
[Symbol.dispose]() {
|
|
40
|
+
console.log("Closing server...");
|
|
41
|
+
server.close();
|
|
42
|
+
console.log("Server closed");
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Mock GraphQL Endpoint Handler
|
|
48
|
+
* @param {http.IncomingMessage} req
|
|
49
|
+
* @param {http.ServerResponse} res
|
|
50
|
+
*/
|
|
51
|
+
async function handleApolloPost(req, res) {
|
|
52
|
+
const { operationName, variables } =
|
|
53
|
+
/** @type{import("graphql-http/lib/common").RequestParams} */ (
|
|
54
|
+
await parseRequestParams(req, res)
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const mock = mocks.peek(operationName, JSON.stringify(variables));
|
|
58
|
+
if (mock) {
|
|
59
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
60
|
+
res.end(JSON.stringify(mock.response));
|
|
61
|
+
} else {
|
|
62
|
+
console.warn("No mock available for %o", {
|
|
63
|
+
operationName,
|
|
64
|
+
variables,
|
|
65
|
+
});
|
|
66
|
+
res.writeHead(200).end(
|
|
67
|
+
JSON.stringify({
|
|
68
|
+
data: null,
|
|
69
|
+
errors: [
|
|
70
|
+
{
|
|
71
|
+
message: "No mock found.",
|
|
72
|
+
extensions: { operationName, variables },
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
}),
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Handler to accept new GraphQL Mocks
|
|
82
|
+
* @param {http.IncomingMessage} req
|
|
83
|
+
* @param {http.ServerResponse} res
|
|
84
|
+
*/
|
|
85
|
+
async function handleApolloPut(req, res) {
|
|
86
|
+
const body = await new Promise((resolve) => {
|
|
87
|
+
let body = "";
|
|
88
|
+
req.setEncoding("utf-8");
|
|
89
|
+
req.on("data", (chunk) => (body += chunk));
|
|
90
|
+
req.on("end", () => resolve(body));
|
|
91
|
+
});
|
|
92
|
+
const { operationName, variables, response } = JSON.parse(body);
|
|
93
|
+
mocks.lookup(operationName, JSON.stringify(variables)).response = response;
|
|
94
|
+
//console.info("mock loaded", { operationName, variables });
|
|
95
|
+
res.end();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const schema = buildSchema(`#graphql
|
|
100
|
+
type Book {
|
|
101
|
+
title: String
|
|
102
|
+
author: String
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type Query {
|
|
106
|
+
books: [Book]
|
|
107
|
+
}
|
|
108
|
+
`);
|
|
109
|
+
const schemaHandler = createHandler({
|
|
110
|
+
schema,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (require.main === module) {
|
|
114
|
+
runMockServer(7096, require("./mocks.js").loadDefaultMocks);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
module.exports.runMockServer = runMockServer;
|