vscode-apollo 1.20.0 → 2.0.1

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 (109) hide show
  1. package/.circleci/config.yml +27 -18
  2. package/.git-blame-ignore-revs +2 -0
  3. package/.nvmrc +1 -1
  4. package/.vscode/launch.json +9 -4
  5. package/.vscode/tasks.json +58 -16
  6. package/.vscodeignore +12 -1
  7. package/CHANGELOG.md +84 -0
  8. package/CODEOWNERS +4 -0
  9. package/README.md +97 -48
  10. package/graphql.configuration.json +5 -1
  11. package/images/marketplace/apollo-wordmark.png +0 -0
  12. package/jest.config.ts +14 -4
  13. package/jest.e2e.config.js +17 -0
  14. package/package.json +67 -68
  15. package/renovate.json +7 -0
  16. package/sampleWorkspace/clientSchema/apollo.config.cjs +10 -0
  17. package/sampleWorkspace/clientSchema/src/clientSchema.js +16 -0
  18. package/sampleWorkspace/clientSchema/src/test.js +18 -0
  19. package/sampleWorkspace/fixtures/starwarsSchema.graphql +299 -0
  20. package/sampleWorkspace/httpSchema/apollo.config.ts +8 -0
  21. package/sampleWorkspace/httpSchema/src/test.js +9 -0
  22. package/sampleWorkspace/localSchema/apollo.config.js +8 -0
  23. package/sampleWorkspace/localSchema/src/test.js +8 -0
  24. package/sampleWorkspace/localSchemaArray/apollo.config.js +12 -0
  25. package/sampleWorkspace/localSchemaArray/planets.graphql +20 -0
  26. package/sampleWorkspace/localSchemaArray/src/test.js +12 -0
  27. package/sampleWorkspace/sampleWorkspace.code-workspace +20 -0
  28. package/sampleWorkspace/spotifyGraph/apollo.config.mjs +5 -0
  29. package/sampleWorkspace/spotifyGraph/src/test.js +11 -0
  30. package/src/__e2e__/mockServer.js +117 -0
  31. package/src/__e2e__/mocks.js +13094 -0
  32. package/src/__e2e__/run.js +23 -0
  33. package/src/__e2e__/runTests.js +44 -0
  34. package/src/__e2e__/setup.js +1 -0
  35. package/src/__e2e__/vscode-environment.js +16 -0
  36. package/src/__e2e__/vscode.js +1 -0
  37. package/src/build.js +57 -0
  38. package/src/env/index.ts +0 -3
  39. package/src/extension.ts +251 -225
  40. package/src/language-server/__e2e__/clientSchema.e2e.ts +147 -0
  41. package/src/language-server/__e2e__/httpSchema.e2e.ts +21 -0
  42. package/src/language-server/__e2e__/localSchema.e2e.ts +25 -0
  43. package/src/language-server/__e2e__/localSchemaArray.e2e.ts +31 -0
  44. package/src/language-server/__e2e__/studioGraph.e2e.ts +65 -0
  45. package/src/language-server/__e2e__/utils.ts +151 -0
  46. package/src/language-server/__tests__/diagnostics.test.ts +8 -8
  47. package/src/language-server/__tests__/fileSet.test.ts +1 -1
  48. package/src/language-server/__tests__/fixtures/starwarsSchema.ts +2 -2
  49. package/src/language-server/config/__tests__/config.ts +22 -96
  50. package/src/language-server/config/__tests__/loadConfig.ts +120 -220
  51. package/src/language-server/config/__tests__/utils.ts +22 -29
  52. package/src/language-server/config/config.ts +221 -156
  53. package/src/language-server/config/loadConfig.ts +32 -153
  54. package/src/language-server/config/loadTsConfig.ts +70 -0
  55. package/src/language-server/config/utils.ts +5 -16
  56. package/src/language-server/diagnostics.ts +17 -8
  57. package/src/language-server/document.ts +16 -16
  58. package/src/language-server/engine/index.ts +57 -39
  59. package/src/language-server/engine/operations/frontendUrlRoot.ts +9 -1
  60. package/src/language-server/engine/operations/schemaTagsAndFieldStats.ts +9 -1
  61. package/src/language-server/errors/__tests__/NoMissingClientDirectives.test.ts +10 -5
  62. package/src/language-server/errors/logger.ts +1 -1
  63. package/src/language-server/errors/validation.ts +20 -23
  64. package/src/language-server/fileSet.ts +10 -12
  65. package/src/language-server/format.ts +1 -1
  66. package/src/language-server/graphqlTypes.ts +13020 -3455
  67. package/src/language-server/index.ts +0 -1
  68. package/src/language-server/languageProvider.ts +29 -32
  69. package/src/language-server/loadingHandler.ts +10 -27
  70. package/src/language-server/project/base.ts +32 -25
  71. package/src/language-server/project/client.ts +80 -114
  72. package/src/language-server/project/defaultClientSchema.ts +29 -4
  73. package/src/language-server/providers/schema/__tests__/file.ts +60 -19
  74. package/src/language-server/providers/schema/base.ts +2 -2
  75. package/src/language-server/providers/schema/endpoint.ts +15 -34
  76. package/src/language-server/providers/schema/engine.ts +25 -18
  77. package/src/language-server/providers/schema/file.ts +41 -32
  78. package/src/language-server/providers/schema/index.ts +5 -21
  79. package/src/language-server/server.ts +72 -50
  80. package/src/language-server/typings/graphql.d.ts +3 -3
  81. package/src/language-server/utilities/__tests__/graphql.test.ts +42 -54
  82. package/src/language-server/utilities/debouncer.ts +1 -1
  83. package/src/language-server/utilities/debug.ts +6 -5
  84. package/src/language-server/utilities/graphql.ts +17 -16
  85. package/src/language-server/utilities/source.ts +16 -16
  86. package/src/language-server/utilities/uri.ts +2 -2
  87. package/src/language-server/workspace.ts +29 -37
  88. package/src/languageServerClient.ts +4 -4
  89. package/src/messages.ts +38 -47
  90. package/src/tools/__tests__/buildServiceDefinition.test.ts +2 -2
  91. package/src/tools/buildServiceDefinition.ts +11 -11
  92. package/src/tools/schema/resolveObject.ts +1 -1
  93. package/src/tools/utilities/predicates.ts +1 -1
  94. package/src/utils.ts +7 -6
  95. package/syntaxes/graphql.dart.json +2 -4
  96. package/syntaxes/graphql.ex.json +1 -4
  97. package/tsconfig.build.json +8 -1
  98. package/tsconfig.json +5 -3
  99. package/src/env/fetch/fetch.ts +0 -32
  100. package/src/env/fetch/global.ts +0 -30
  101. package/src/env/fetch/index.d.ts +0 -2
  102. package/src/env/fetch/index.ts +0 -2
  103. package/src/env/fetch/url.ts +0 -9
  104. package/src/env/polyfills/array.ts +0 -17
  105. package/src/env/polyfills/index.ts +0 -2
  106. package/src/env/polyfills/object.ts +0 -7
  107. package/src/language-server/engine/GraphQLDataSource.ts +0 -124
  108. package/src/language-server/project/service.ts +0 -48
  109. package/src/language-server/typings/codemirror.d.ts +0 -4
@@ -0,0 +1,23 @@
1
+ const path = require("path");
2
+ const { runCLI } = require("@jest/core");
3
+ const yargs = require("yargs");
4
+ const { yargsOptions } = require("jest-cli");
5
+
6
+ async function run() {
7
+ const root = path.join(__dirname, "..", "..");
8
+ const argv = await yargs(JSON.parse(process.env.TEST_ARGV || "[]").slice(2))
9
+ .alias("help", "h")
10
+ .options(yargsOptions).argv;
11
+
12
+ const results = await runCLI(
13
+ {
14
+ ...argv,
15
+ config: path.join(root, "jest.e2e.config.js"),
16
+ runInBand: true,
17
+ },
18
+ [root],
19
+ );
20
+ process.exit(results.results.numFailedTests);
21
+ }
22
+
23
+ module.exports.run = run;
@@ -0,0 +1,44 @@
1
+ // @ts-check
2
+ const path = require("path");
3
+ const { runTests } = require("@vscode/test-electron");
4
+ const { runMockServer } = require("./mockServer.js");
5
+ const { loadDefaultMocks } = require("./mocks.js");
6
+
7
+ async function main() {
8
+ let disposable;
9
+ try {
10
+ // The folder containing the Extension Manifest package.json
11
+ // Passed to `--extensionDevelopmentPath`
12
+ const extensionDevelopmentPath = path.resolve(__dirname, "../../");
13
+ // The path to the extension test runner script
14
+ // Passed to --extensionTestsPath
15
+ const extensionTestsPath = path.resolve(__dirname, "./run.js");
16
+ process.env.TEST_ARGV = JSON.stringify(process.argv);
17
+
18
+ const TEST_PORT = 7096;
19
+ process.env.APOLLO_ENGINE_ENDPOINT = "http://localhost:7096/apollo";
20
+ process.env.MOCK_SERVER_PORT = String(TEST_PORT);
21
+ disposable = runMockServer(TEST_PORT);
22
+ await loadDefaultMocks(TEST_PORT);
23
+ // Download VS Code, unzip it and run the integration test
24
+ const exitCode = await runTests({
25
+ extensionDevelopmentPath,
26
+ extensionTestsPath,
27
+ launchArgs: [
28
+ "--disable-extensions",
29
+ `${extensionDevelopmentPath}/sampleWorkspace/sampleWorkspace.code-workspace`,
30
+ ],
31
+ });
32
+ process.exit(exitCode);
33
+ } catch (err) {
34
+ console.error(err);
35
+ console.error("Failed to run tests");
36
+ process.exit(1);
37
+ } finally {
38
+ if (disposable) {
39
+ disposable[Symbol.dispose]();
40
+ }
41
+ }
42
+ }
43
+
44
+ main();
@@ -0,0 +1 @@
1
+ jest.setTimeout(10000);
@@ -0,0 +1,16 @@
1
+ const { TestEnvironment } = require("jest-environment-node");
2
+ const vscode = require("vscode");
3
+
4
+ class VsCodeEnvironment extends TestEnvironment {
5
+ async setup() {
6
+ await super.setup();
7
+ this.global.vscode = vscode;
8
+ }
9
+
10
+ async teardown() {
11
+ this.global.vscode = {};
12
+ await super.teardown();
13
+ }
14
+ }
15
+
16
+ module.exports = VsCodeEnvironment;
@@ -0,0 +1 @@
1
+ module.exports = global.vscode;
package/src/build.js ADDED
@@ -0,0 +1,57 @@
1
+ const esbuild = require("esbuild");
2
+
3
+ const production = process.argv.includes("--production");
4
+ const watch = process.argv.includes("--watch");
5
+
6
+ async function main() {
7
+ const ctx = await esbuild.context({
8
+ entryPoints: ["src/extension.ts", "src/language-server/server.ts"],
9
+ bundle: true,
10
+ format: "cjs",
11
+ minify: production,
12
+ keepNames: true,
13
+ sourcemap: !production,
14
+ sourcesContent: false,
15
+ platform: "node",
16
+ outdir: "lib",
17
+ external: ["vscode"],
18
+ logLevel: "silent",
19
+ plugins: [
20
+ /* add to the end of plugins array */
21
+ esbuildProblemMatcherPlugin,
22
+ ],
23
+ });
24
+ if (watch) {
25
+ await ctx.watch();
26
+ } else {
27
+ await ctx.rebuild();
28
+ await ctx.dispose();
29
+ }
30
+ }
31
+
32
+ /**
33
+ * @type {import('esbuild').Plugin}
34
+ */
35
+ const esbuildProblemMatcherPlugin = {
36
+ name: "esbuild-problem-matcher",
37
+
38
+ setup(build) {
39
+ build.onStart(() => {
40
+ console.log("[watch] build started");
41
+ });
42
+ build.onEnd((result) => {
43
+ result.errors.forEach(({ text, location }) => {
44
+ console.error(`✘ [ERROR] ${text}`);
45
+ console.error(
46
+ ` ${location.file}:${location.line}:${location.column}:`,
47
+ );
48
+ });
49
+ console.log("[watch] build finished");
50
+ });
51
+ },
52
+ };
53
+
54
+ main().catch((e) => {
55
+ console.error(e);
56
+ process.exit(1);
57
+ });
package/src/env/index.ts CHANGED
@@ -1,4 +1 @@
1
- import "./polyfills";
2
-
3
1
  export * from "./typescript-utility-types";
4
- export * from "./fetch";