vscode-apollo 1.19.3 → 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.
Files changed (179) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +14 -0
  3. package/.circleci/config.yml +91 -0
  4. package/.eslintrc.js +10 -0
  5. package/.git-blame-ignore-revs +2 -0
  6. package/.gitattributes +1 -0
  7. package/.github/workflows/release.yml +95 -0
  8. package/.gitleaks.toml +26 -0
  9. package/.nvmrc +1 -0
  10. package/.prettierrc +5 -0
  11. package/.vscode/launch.json +66 -0
  12. package/.vscode/settings.json +16 -0
  13. package/.vscode/tasks.json +60 -0
  14. package/.vscodeignore +28 -1
  15. package/CHANGELOG.md +250 -1
  16. package/CODEOWNERS +4 -0
  17. package/LICENSE +2 -2
  18. package/README.md +104 -55
  19. package/codegen.yml +12 -0
  20. package/graphql.configuration.json +5 -1
  21. package/images/IconRun.svg +8 -0
  22. package/images/marketplace/apollo-wordmark.png +0 -0
  23. package/jest.config.ts +21 -0
  24. package/jest.e2e.config.js +17 -0
  25. package/package.json +102 -23
  26. package/renovate.json +30 -0
  27. package/sampleWorkspace/clientSchema/apollo.config.cjs +10 -0
  28. package/sampleWorkspace/clientSchema/src/clientSchema.js +16 -0
  29. package/sampleWorkspace/clientSchema/src/test.js +18 -0
  30. package/sampleWorkspace/fixtures/starwarsSchema.graphql +299 -0
  31. package/sampleWorkspace/httpSchema/apollo.config.ts +8 -0
  32. package/sampleWorkspace/httpSchema/src/test.js +9 -0
  33. package/sampleWorkspace/localSchema/apollo.config.js +8 -0
  34. package/sampleWorkspace/localSchema/src/test.js +8 -0
  35. package/sampleWorkspace/localSchemaArray/apollo.config.js +12 -0
  36. package/sampleWorkspace/localSchemaArray/planets.graphql +20 -0
  37. package/sampleWorkspace/localSchemaArray/src/test.js +12 -0
  38. package/sampleWorkspace/sampleWorkspace.code-workspace +20 -0
  39. package/sampleWorkspace/spotifyGraph/apollo.config.mjs +5 -0
  40. package/sampleWorkspace/spotifyGraph/src/test.js +11 -0
  41. package/src/__e2e__/mockServer.js +117 -0
  42. package/src/__e2e__/mocks.js +13094 -0
  43. package/src/__e2e__/run.js +23 -0
  44. package/src/__e2e__/runTests.js +44 -0
  45. package/src/__e2e__/setup.js +1 -0
  46. package/src/__e2e__/vscode-environment.js +16 -0
  47. package/src/__e2e__/vscode.js +1 -0
  48. package/src/__mocks__/fs.js +3 -0
  49. package/src/__tests__/statusBar.test.ts +8 -7
  50. package/src/build.js +57 -0
  51. package/src/debug.ts +2 -5
  52. package/src/env/index.ts +1 -0
  53. package/src/env/typescript-utility-types.ts +2 -0
  54. package/src/extension.ts +265 -170
  55. package/src/language-server/__e2e__/clientSchema.e2e.ts +147 -0
  56. package/src/language-server/__e2e__/httpSchema.e2e.ts +21 -0
  57. package/src/language-server/__e2e__/localSchema.e2e.ts +25 -0
  58. package/src/language-server/__e2e__/localSchemaArray.e2e.ts +31 -0
  59. package/src/language-server/__e2e__/studioGraph.e2e.ts +65 -0
  60. package/src/language-server/__e2e__/utils.ts +151 -0
  61. package/src/language-server/__tests__/diagnostics.test.ts +86 -0
  62. package/src/language-server/__tests__/document.test.ts +187 -0
  63. package/src/language-server/__tests__/fileSet.test.ts +46 -0
  64. package/src/language-server/__tests__/fixtures/starwarsSchema.ts +1917 -0
  65. package/src/language-server/config/__tests__/config.ts +54 -0
  66. package/src/language-server/config/__tests__/loadConfig.ts +384 -0
  67. package/src/language-server/config/__tests__/utils.ts +99 -0
  68. package/src/language-server/config/config.ts +284 -0
  69. package/src/language-server/config/index.ts +3 -0
  70. package/src/language-server/config/loadConfig.ts +101 -0
  71. package/src/language-server/config/utils.ts +45 -0
  72. package/src/language-server/diagnostics.ts +118 -0
  73. package/src/language-server/document.ts +277 -0
  74. package/src/language-server/engine/index.ts +123 -0
  75. package/src/language-server/engine/operations/frontendUrlRoot.ts +15 -0
  76. package/src/language-server/engine/operations/schemaTagsAndFieldStats.ts +32 -0
  77. package/src/language-server/errors/__tests__/NoMissingClientDirectives.test.ts +225 -0
  78. package/src/language-server/errors/logger.ts +58 -0
  79. package/src/language-server/errors/validation.ts +274 -0
  80. package/src/language-server/fileSet.ts +63 -0
  81. package/src/language-server/format.ts +48 -0
  82. package/src/language-server/graphqlTypes.ts +16741 -0
  83. package/src/language-server/index.ts +28 -0
  84. package/src/language-server/languageProvider.ts +795 -0
  85. package/src/language-server/loadingHandler.ts +47 -0
  86. package/src/language-server/project/base.ts +406 -0
  87. package/src/language-server/project/client.ts +568 -0
  88. package/src/language-server/project/defaultClientSchema.ts +70 -0
  89. package/src/language-server/providers/schema/__tests__/file.ts +191 -0
  90. package/src/language-server/providers/schema/base.ts +15 -0
  91. package/src/language-server/providers/schema/endpoint.ts +138 -0
  92. package/src/language-server/providers/schema/engine.ts +204 -0
  93. package/src/language-server/providers/schema/file.ts +176 -0
  94. package/src/language-server/providers/schema/index.ts +59 -0
  95. package/src/language-server/server.ts +274 -0
  96. package/src/language-server/typings/graphql.d.ts +27 -0
  97. package/src/language-server/utilities/__tests__/graphql.test.ts +399 -0
  98. package/src/language-server/utilities/__tests__/uri.ts +55 -0
  99. package/src/language-server/utilities/debouncer.ts +8 -0
  100. package/src/language-server/utilities/debug.ts +90 -0
  101. package/src/language-server/utilities/graphql.ts +433 -0
  102. package/src/language-server/utilities/index.ts +3 -0
  103. package/src/language-server/utilities/source.ts +182 -0
  104. package/src/language-server/utilities/uri.ts +19 -0
  105. package/src/language-server/workspace.ts +254 -0
  106. package/src/languageServerClient.ts +22 -15
  107. package/src/messages.ts +75 -0
  108. package/src/statusBar.ts +5 -5
  109. package/src/tools/__tests__/buildServiceDefinition.test.ts +491 -0
  110. package/src/tools/__tests__/snapshotSerializers/astSerializer.ts +19 -0
  111. package/src/tools/__tests__/snapshotSerializers/graphQLTypeSerializer.ts +14 -0
  112. package/src/tools/buildServiceDefinition.ts +241 -0
  113. package/src/tools/index.ts +6 -0
  114. package/src/tools/schema/index.ts +2 -0
  115. package/src/tools/schema/resolveObject.ts +18 -0
  116. package/src/tools/schema/resolverMap.ts +23 -0
  117. package/src/tools/utilities/graphql.ts +22 -0
  118. package/src/tools/utilities/index.ts +3 -0
  119. package/src/tools/utilities/invariant.ts +5 -0
  120. package/src/tools/utilities/predicates.ts +5 -0
  121. package/src/utils.ts +7 -21
  122. package/syntaxes/graphql.dart.json +2 -4
  123. package/syntaxes/graphql.ex.json +1 -4
  124. package/syntaxes/graphql.js.json +3 -3
  125. package/syntaxes/graphql.json +13 -9
  126. package/syntaxes/graphql.lua.json +51 -0
  127. package/syntaxes/graphql.rb.json +1 -1
  128. package/tsconfig.build.json +11 -0
  129. package/tsconfig.json +22 -7
  130. package/create-server-symlink.js +0 -8
  131. package/lib/debug.d.ts +0 -11
  132. package/lib/debug.d.ts.map +0 -1
  133. package/lib/debug.js +0 -48
  134. package/lib/debug.js.map +0 -1
  135. package/lib/extension.d.ts +0 -4
  136. package/lib/extension.d.ts.map +0 -1
  137. package/lib/extension.js +0 -187
  138. package/lib/extension.js.map +0 -1
  139. package/lib/languageServerClient.d.ts +0 -4
  140. package/lib/languageServerClient.d.ts.map +0 -1
  141. package/lib/languageServerClient.js +0 -57
  142. package/lib/languageServerClient.js.map +0 -1
  143. package/lib/statusBar.d.ts +0 -24
  144. package/lib/statusBar.d.ts.map +0 -1
  145. package/lib/statusBar.js +0 -46
  146. package/lib/statusBar.js.map +0 -1
  147. package/lib/testRunner/index.d.ts +0 -3
  148. package/lib/testRunner/index.d.ts.map +0 -1
  149. package/lib/testRunner/index.js +0 -49
  150. package/lib/testRunner/index.js.map +0 -1
  151. package/lib/testRunner/jest-config.d.ts +0 -14
  152. package/lib/testRunner/jest-config.d.ts.map +0 -1
  153. package/lib/testRunner/jest-config.js +0 -18
  154. package/lib/testRunner/jest-config.js.map +0 -1
  155. package/lib/testRunner/jest-vscode-environment.d.ts +0 -2
  156. package/lib/testRunner/jest-vscode-environment.d.ts.map +0 -1
  157. package/lib/testRunner/jest-vscode-environment.js +0 -19
  158. package/lib/testRunner/jest-vscode-environment.js.map +0 -1
  159. package/lib/testRunner/jest-vscode-framework-setup.d.ts +0 -1
  160. package/lib/testRunner/jest-vscode-framework-setup.d.ts.map +0 -1
  161. package/lib/testRunner/jest-vscode-framework-setup.js +0 -3
  162. package/lib/testRunner/jest-vscode-framework-setup.js.map +0 -1
  163. package/lib/testRunner/vscode-test-script.d.ts +0 -2
  164. package/lib/testRunner/vscode-test-script.d.ts.map +0 -1
  165. package/lib/testRunner/vscode-test-script.js +0 -23
  166. package/lib/testRunner/vscode-test-script.js.map +0 -1
  167. package/lib/utils.d.ts +0 -18
  168. package/lib/utils.d.ts.map +0 -1
  169. package/lib/utils.js +0 -52
  170. package/lib/utils.js.map +0 -1
  171. package/src/testRunner/README.md +0 -23
  172. package/src/testRunner/index.ts +0 -72
  173. package/src/testRunner/jest-config.ts +0 -17
  174. package/src/testRunner/jest-vscode-environment.ts +0 -25
  175. package/src/testRunner/jest-vscode-framework-setup.ts +0 -10
  176. package/src/testRunner/jest.d.ts +0 -37
  177. package/src/testRunner/vscode-test-script.ts +0 -38
  178. package/tsconfig.test.json +0 -4
  179. package/tsconfig.tsbuildinfo +0 -2486
@@ -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;
@@ -0,0 +1,3 @@
1
+ const { fs } = require("memfs");
2
+
3
+ module.exports = fs;
@@ -1,11 +1,12 @@
1
- import StatusBar from "../statusBar";
1
+ // import StatusBar from "../statusBar";
2
2
 
3
- describe("statusBar", () => {
3
+ // TODO (jgzuke) disable this until we migrate away from `vscode`.
4
+ // https://code.visualstudio.com/api/working-with-extensions/testing-extension#migrating-from-vscode
5
+ describe.skip("statusBar", () => {
4
6
  it("only shows loaded state when it's supposed to", () => {
5
- const statusBar = new StatusBar({ hasActiveTextEditor: true });
6
-
7
- expect(statusBar.statusBarItem.text).toEqual(StatusBar.loadingStateText);
8
- statusBar.showLoadedState({ hasActiveTextEditor: true });
9
- expect(statusBar.statusBarItem.text).toEqual(StatusBar.loadedStateText);
7
+ // const statusBar = new StatusBar({ hasActiveTextEditor: true });
8
+ // expect(statusBar.statusBarItem.text).toEqual(StatusBar.loadingStateText);
9
+ // statusBar.showLoadedState({ hasActiveTextEditor: true });
10
+ // expect(statusBar.statusBarItem.text).toEqual(StatusBar.loadedStateText);
10
11
  });
11
12
  });
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/debug.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { window, workspace, OutputChannel } from "vscode";
1
+ import { OutputChannel } from "vscode";
2
2
 
3
3
  /**
4
4
  * for errors (and other logs in debug mode) we want to print
@@ -10,10 +10,7 @@ const createAndTrimStackTrace = () => {
10
10
  let stack: string | undefined = new Error().stack;
11
11
  // remove the lines in the stack from _this_ function and the caller (in this file) and shorten the trace
12
12
  return stack && stack.split("\n").length > 2
13
- ? stack
14
- .split("\n")
15
- .slice(3, 7)
16
- .join("\n")
13
+ ? stack.split("\n").slice(3, 7).join("\n")
17
14
  : stack;
18
15
  };
19
16
 
@@ -0,0 +1 @@
1
+ export * from "./typescript-utility-types";
@@ -0,0 +1,2 @@
1
+ export type WithRequired<T, K extends keyof T> = T & Required<Pick<T, K>>;
2
+ export type DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]> };