vscode-apollo 1.19.3 → 1.20.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 (156) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +14 -0
  3. package/.circleci/config.yml +82 -0
  4. package/.eslintrc.js +10 -0
  5. package/.gitattributes +1 -0
  6. package/.github/workflows/build-prs.yml +57 -0
  7. package/.github/workflows/release.yml +114 -0
  8. package/.gitleaks.toml +26 -0
  9. package/.nvmrc +1 -0
  10. package/.prettierrc +5 -0
  11. package/.vscode/launch.json +61 -0
  12. package/.vscode/settings.json +16 -0
  13. package/.vscode/tasks.json +18 -0
  14. package/.vscodeignore +17 -1
  15. package/CHANGELOG.md +178 -1
  16. package/LICENSE +2 -2
  17. package/README.md +9 -9
  18. package/codegen.yml +12 -0
  19. package/images/IconRun.svg +8 -0
  20. package/jest.config.ts +11 -0
  21. package/package.json +102 -22
  22. package/renovate.json +23 -0
  23. package/src/__mocks__/fs.js +3 -0
  24. package/src/__tests__/statusBar.test.ts +8 -7
  25. package/src/debug.ts +2 -5
  26. package/src/env/fetch/fetch.ts +32 -0
  27. package/src/env/fetch/global.ts +30 -0
  28. package/src/env/fetch/index.d.ts +2 -0
  29. package/src/env/fetch/index.ts +2 -0
  30. package/src/env/fetch/url.ts +9 -0
  31. package/src/env/index.ts +4 -0
  32. package/src/env/polyfills/array.ts +17 -0
  33. package/src/env/polyfills/index.ts +2 -0
  34. package/src/env/polyfills/object.ts +7 -0
  35. package/src/env/typescript-utility-types.ts +2 -0
  36. package/src/extension.ts +106 -37
  37. package/src/language-server/__tests__/diagnostics.test.ts +86 -0
  38. package/src/language-server/__tests__/document.test.ts +187 -0
  39. package/src/language-server/__tests__/fileSet.test.ts +46 -0
  40. package/src/language-server/__tests__/fixtures/starwarsSchema.ts +1917 -0
  41. package/src/language-server/config/__tests__/config.ts +128 -0
  42. package/src/language-server/config/__tests__/loadConfig.ts +508 -0
  43. package/src/language-server/config/__tests__/utils.ts +106 -0
  44. package/src/language-server/config/config.ts +219 -0
  45. package/src/language-server/config/index.ts +3 -0
  46. package/src/language-server/config/loadConfig.ts +228 -0
  47. package/src/language-server/config/utils.ts +56 -0
  48. package/src/language-server/diagnostics.ts +109 -0
  49. package/src/language-server/document.ts +277 -0
  50. package/src/language-server/engine/GraphQLDataSource.ts +124 -0
  51. package/src/language-server/engine/index.ts +105 -0
  52. package/src/language-server/engine/operations/frontendUrlRoot.ts +7 -0
  53. package/src/language-server/engine/operations/schemaTagsAndFieldStats.ts +24 -0
  54. package/src/language-server/errors/__tests__/NoMissingClientDirectives.test.ts +220 -0
  55. package/src/language-server/errors/logger.ts +58 -0
  56. package/src/language-server/errors/validation.ts +277 -0
  57. package/src/language-server/fileSet.ts +65 -0
  58. package/src/language-server/format.ts +48 -0
  59. package/src/language-server/graphqlTypes.ts +7176 -0
  60. package/src/language-server/index.ts +29 -0
  61. package/src/language-server/languageProvider.ts +798 -0
  62. package/src/language-server/loadingHandler.ts +64 -0
  63. package/src/language-server/project/base.ts +399 -0
  64. package/src/language-server/project/client.ts +602 -0
  65. package/src/language-server/project/defaultClientSchema.ts +45 -0
  66. package/src/language-server/project/service.ts +48 -0
  67. package/src/language-server/providers/schema/__tests__/file.ts +150 -0
  68. package/src/language-server/providers/schema/base.ts +15 -0
  69. package/src/language-server/providers/schema/endpoint.ts +157 -0
  70. package/src/language-server/providers/schema/engine.ts +197 -0
  71. package/src/language-server/providers/schema/file.ts +167 -0
  72. package/src/language-server/providers/schema/index.ts +75 -0
  73. package/src/language-server/server.ts +252 -0
  74. package/src/language-server/typings/codemirror.d.ts +4 -0
  75. package/src/language-server/typings/graphql.d.ts +27 -0
  76. package/src/language-server/utilities/__tests__/graphql.test.ts +411 -0
  77. package/src/language-server/utilities/__tests__/uri.ts +55 -0
  78. package/src/language-server/utilities/debouncer.ts +8 -0
  79. package/src/language-server/utilities/debug.ts +89 -0
  80. package/src/language-server/utilities/graphql.ts +432 -0
  81. package/src/language-server/utilities/index.ts +3 -0
  82. package/src/language-server/utilities/source.ts +182 -0
  83. package/src/language-server/utilities/uri.ts +19 -0
  84. package/src/language-server/workspace.ts +262 -0
  85. package/src/languageServerClient.ts +19 -12
  86. package/src/messages.ts +84 -0
  87. package/src/statusBar.ts +5 -5
  88. package/src/tools/__tests__/buildServiceDefinition.test.ts +491 -0
  89. package/src/tools/__tests__/snapshotSerializers/astSerializer.ts +19 -0
  90. package/src/tools/__tests__/snapshotSerializers/graphQLTypeSerializer.ts +14 -0
  91. package/src/tools/buildServiceDefinition.ts +241 -0
  92. package/src/tools/index.ts +6 -0
  93. package/src/tools/schema/index.ts +2 -0
  94. package/src/tools/schema/resolveObject.ts +18 -0
  95. package/src/tools/schema/resolverMap.ts +23 -0
  96. package/src/tools/utilities/graphql.ts +22 -0
  97. package/src/tools/utilities/index.ts +3 -0
  98. package/src/tools/utilities/invariant.ts +5 -0
  99. package/src/tools/utilities/predicates.ts +5 -0
  100. package/src/utils.ts +1 -16
  101. package/syntaxes/graphql.js.json +3 -3
  102. package/syntaxes/graphql.json +13 -9
  103. package/syntaxes/graphql.lua.json +51 -0
  104. package/syntaxes/graphql.rb.json +1 -1
  105. package/tsconfig.build.json +4 -0
  106. package/tsconfig.json +20 -7
  107. package/create-server-symlink.js +0 -8
  108. package/lib/debug.d.ts +0 -11
  109. package/lib/debug.d.ts.map +0 -1
  110. package/lib/debug.js +0 -48
  111. package/lib/debug.js.map +0 -1
  112. package/lib/extension.d.ts +0 -4
  113. package/lib/extension.d.ts.map +0 -1
  114. package/lib/extension.js +0 -187
  115. package/lib/extension.js.map +0 -1
  116. package/lib/languageServerClient.d.ts +0 -4
  117. package/lib/languageServerClient.d.ts.map +0 -1
  118. package/lib/languageServerClient.js +0 -57
  119. package/lib/languageServerClient.js.map +0 -1
  120. package/lib/statusBar.d.ts +0 -24
  121. package/lib/statusBar.d.ts.map +0 -1
  122. package/lib/statusBar.js +0 -46
  123. package/lib/statusBar.js.map +0 -1
  124. package/lib/testRunner/index.d.ts +0 -3
  125. package/lib/testRunner/index.d.ts.map +0 -1
  126. package/lib/testRunner/index.js +0 -49
  127. package/lib/testRunner/index.js.map +0 -1
  128. package/lib/testRunner/jest-config.d.ts +0 -14
  129. package/lib/testRunner/jest-config.d.ts.map +0 -1
  130. package/lib/testRunner/jest-config.js +0 -18
  131. package/lib/testRunner/jest-config.js.map +0 -1
  132. package/lib/testRunner/jest-vscode-environment.d.ts +0 -2
  133. package/lib/testRunner/jest-vscode-environment.d.ts.map +0 -1
  134. package/lib/testRunner/jest-vscode-environment.js +0 -19
  135. package/lib/testRunner/jest-vscode-environment.js.map +0 -1
  136. package/lib/testRunner/jest-vscode-framework-setup.d.ts +0 -1
  137. package/lib/testRunner/jest-vscode-framework-setup.d.ts.map +0 -1
  138. package/lib/testRunner/jest-vscode-framework-setup.js +0 -3
  139. package/lib/testRunner/jest-vscode-framework-setup.js.map +0 -1
  140. package/lib/testRunner/vscode-test-script.d.ts +0 -2
  141. package/lib/testRunner/vscode-test-script.d.ts.map +0 -1
  142. package/lib/testRunner/vscode-test-script.js +0 -23
  143. package/lib/testRunner/vscode-test-script.js.map +0 -1
  144. package/lib/utils.d.ts +0 -18
  145. package/lib/utils.d.ts.map +0 -1
  146. package/lib/utils.js +0 -52
  147. package/lib/utils.js.map +0 -1
  148. package/src/testRunner/README.md +0 -23
  149. package/src/testRunner/index.ts +0 -72
  150. package/src/testRunner/jest-config.ts +0 -17
  151. package/src/testRunner/jest-vscode-environment.ts +0 -25
  152. package/src/testRunner/jest-vscode-framework-setup.ts +0 -10
  153. package/src/testRunner/jest.d.ts +0 -37
  154. package/src/testRunner/vscode-test-script.ts +0 -38
  155. package/tsconfig.test.json +0 -4
  156. package/tsconfig.tsbuildinfo +0 -2486
@@ -0,0 +1,262 @@
1
+ import {
2
+ WorkspaceFolder,
3
+ NotificationHandler,
4
+ PublishDiagnosticsParams,
5
+ } from "vscode-languageserver";
6
+ import { QuickPickItem } from "vscode";
7
+ import { GraphQLProject, DocumentUri } from "./project/base";
8
+ import { dirname } from "path";
9
+ import fg from "glob";
10
+ import {
11
+ loadConfig,
12
+ ApolloConfig,
13
+ isClientConfig,
14
+ ServiceConfig,
15
+ } from "./config";
16
+ import { LanguageServerLoadingHandler } from "./loadingHandler";
17
+ import { ServiceID, SchemaTag, ClientIdentity } from "./engine";
18
+ import { GraphQLClientProject, isClientProject } from "./project/client";
19
+ import { GraphQLServiceProject } from "./project/service";
20
+ import URI from "vscode-uri";
21
+ import { Debug } from "./utilities";
22
+ import type { EngineDecoration } from "src/messages";
23
+
24
+ export interface WorkspaceConfig {
25
+ clientIdentity?: ClientIdentity;
26
+ }
27
+
28
+ export class GraphQLWorkspace {
29
+ private _onDiagnostics?: NotificationHandler<PublishDiagnosticsParams>;
30
+ private _onDecorations?: NotificationHandler<EngineDecoration[]>;
31
+ private _onSchemaTags?: NotificationHandler<[ServiceID, SchemaTag[]]>;
32
+ private _onConfigFilesFound?: NotificationHandler<ApolloConfig[]>;
33
+ private _projectForFileCache: Map<string, GraphQLProject> = new Map();
34
+
35
+ private projectsByFolderUri: Map<string, GraphQLProject[]> = new Map();
36
+
37
+ constructor(
38
+ private LanguageServerLoadingHandler: LanguageServerLoadingHandler,
39
+ private config: WorkspaceConfig
40
+ ) {}
41
+
42
+ onDiagnostics(handler: NotificationHandler<PublishDiagnosticsParams>) {
43
+ this._onDiagnostics = handler;
44
+ }
45
+
46
+ onDecorations(handler: NotificationHandler<EngineDecoration[]>) {
47
+ this._onDecorations = handler;
48
+ }
49
+
50
+ onSchemaTags(handler: NotificationHandler<[ServiceID, SchemaTag[]]>) {
51
+ this._onSchemaTags = handler;
52
+ }
53
+
54
+ onConfigFilesFound(handler: NotificationHandler<ApolloConfig[]>) {
55
+ this._onConfigFilesFound = handler;
56
+ }
57
+
58
+ private createProject({
59
+ config,
60
+ folder,
61
+ }: {
62
+ config: ApolloConfig;
63
+ folder: WorkspaceFolder;
64
+ }) {
65
+ const { clientIdentity } = this.config;
66
+ const project = isClientConfig(config)
67
+ ? new GraphQLClientProject({
68
+ config,
69
+ loadingHandler: this.LanguageServerLoadingHandler,
70
+ configFolderURI: URI.parse(folder.uri),
71
+ clientIdentity,
72
+ })
73
+ : new GraphQLServiceProject({
74
+ config: config as ServiceConfig,
75
+ loadingHandler: this.LanguageServerLoadingHandler,
76
+ configFolderURI: URI.parse(folder.uri),
77
+ clientIdentity,
78
+ });
79
+
80
+ project.onDiagnostics((params) => {
81
+ this._onDiagnostics && this._onDiagnostics(params);
82
+ });
83
+
84
+ if (isClientProject(project)) {
85
+ project.onDecorations((params) => {
86
+ this._onDecorations && this._onDecorations(params);
87
+ });
88
+
89
+ project.onSchemaTags((tags) => {
90
+ this._onSchemaTags && this._onSchemaTags(tags);
91
+ });
92
+ }
93
+
94
+ // after a project has loaded, we do an initial validation to surface errors
95
+ // on the start of the language server. Instead of doing this in the
96
+ // base class which is used by codegen and other tools
97
+ project.whenReady.then(() => project.validate());
98
+
99
+ return project;
100
+ }
101
+
102
+ async addProjectsInFolder(folder: WorkspaceFolder) {
103
+ // load all possible workspace projects (contains possible config)
104
+ // see if we can move this detection to cosmiconfig
105
+ /*
106
+
107
+ - monorepo (GraphQLWorkspace) as WorkspaceFolder
108
+ -- engine-api (GraphQLProject)
109
+ -- engine-frontend (GraphQLProject)
110
+
111
+ OR
112
+
113
+ - vscode workspace (fullstack)
114
+ -- ~/:user/client (GraphQLProject) as WorkspaceFolder
115
+ -- ~/:user/server (GraphQLProject) as WorkspaceFolder
116
+
117
+ */
118
+ const apolloConfigFiles: string[] = fg.sync(
119
+ "**/apollo.config.@(js|ts|cjs)",
120
+ {
121
+ cwd: URI.parse(folder.uri).fsPath,
122
+ absolute: true,
123
+ ignore: "**/node_modules/**",
124
+ }
125
+ );
126
+
127
+ // only have unique possible folders
128
+ const apolloConfigFolders = new Set<string>(apolloConfigFiles.map(dirname));
129
+
130
+ // go from possible folders to known array of configs
131
+ let foundConfigs: ApolloConfig[] = [];
132
+
133
+ const projectConfigs = Array.from(apolloConfigFolders).map((configFolder) =>
134
+ loadConfig({ configPath: configFolder, requireConfig: true })
135
+ .then((config) => {
136
+ if (config) {
137
+ foundConfigs.push(config);
138
+ const projectsForConfig = config.projects.map((projectConfig) =>
139
+ this.createProject({ config, folder })
140
+ );
141
+
142
+ const existingProjects =
143
+ this.projectsByFolderUri.get(folder.uri) || [];
144
+
145
+ this.projectsByFolderUri.set(folder.uri, [
146
+ ...existingProjects,
147
+ ...projectsForConfig,
148
+ ]);
149
+ } else {
150
+ Debug.error(
151
+ `Workspace failed to load config from: ${configFolder}/`
152
+ );
153
+ }
154
+ })
155
+ .catch((error) => Debug.error(error))
156
+ );
157
+
158
+ await Promise.all(projectConfigs);
159
+
160
+ if (this._onConfigFilesFound) {
161
+ this._onConfigFilesFound(foundConfigs);
162
+ }
163
+ }
164
+
165
+ reloadService() {
166
+ this._projectForFileCache.clear();
167
+ this.projectsByFolderUri.forEach((projects, uri) => {
168
+ this.projectsByFolderUri.set(
169
+ uri,
170
+ projects.map((project) => {
171
+ project.clearAllDiagnostics();
172
+ return this.createProject({
173
+ config: project.config,
174
+ folder: { uri } as WorkspaceFolder,
175
+ });
176
+ })
177
+ );
178
+ });
179
+ }
180
+
181
+ async reloadProjectForConfig(configUri: DocumentUri) {
182
+ const configPath = dirname(URI.parse(configUri).fsPath);
183
+
184
+ let config: ApolloConfig | null;
185
+ let error;
186
+ try {
187
+ config = await loadConfig({ configPath, requireConfig: true });
188
+ } catch (e: any) {
189
+ config = null;
190
+ error = e;
191
+ }
192
+
193
+ const project = this.projectForFile(configUri);
194
+
195
+ if (!config && this._onConfigFilesFound) {
196
+ this._onConfigFilesFound(error);
197
+ }
198
+ // If project exists, update the config
199
+ if (project && config) {
200
+ await Promise.all(project.updateConfig(config));
201
+ this.reloadService();
202
+ }
203
+
204
+ // If project doesn't exist (new config file), create the project and add to workspace
205
+ if (!project && config) {
206
+ const folderUri = URI.file(configPath).toString();
207
+
208
+ const newProject = this.createProject({
209
+ config,
210
+ folder: { uri: folderUri } as WorkspaceFolder,
211
+ });
212
+
213
+ const existingProjects = this.projectsByFolderUri.get(folderUri) || [];
214
+ this.projectsByFolderUri.set(folderUri, [
215
+ ...existingProjects,
216
+ newProject,
217
+ ]);
218
+ this.reloadService();
219
+ }
220
+ }
221
+
222
+ updateSchemaTag(selection: QuickPickItem) {
223
+ const serviceID = selection.detail;
224
+ if (!serviceID) return;
225
+
226
+ this.projectsByFolderUri.forEach((projects) => {
227
+ projects.forEach((project) => {
228
+ if (isClientProject(project) && project.serviceID === serviceID) {
229
+ project.updateSchemaTag(selection.label);
230
+ }
231
+ });
232
+ });
233
+ }
234
+
235
+ removeProjectsInFolder(folder: WorkspaceFolder) {
236
+ const projects = this.projectsByFolderUri.get(folder.uri);
237
+ if (projects) {
238
+ projects.forEach((project) => project.clearAllDiagnostics());
239
+ this.projectsByFolderUri.delete(folder.uri);
240
+ }
241
+ }
242
+
243
+ get projects(): GraphQLProject[] {
244
+ return Array.from(this.projectsByFolderUri.values()).flat();
245
+ }
246
+
247
+ projectForFile(uri: DocumentUri): GraphQLProject | undefined {
248
+ const cachedResult = this._projectForFileCache.get(uri);
249
+ if (cachedResult) {
250
+ return cachedResult;
251
+ }
252
+
253
+ for (const projects of this.projectsByFolderUri.values()) {
254
+ const project = projects.find((project) => project.includesFile(uri));
255
+ if (project) {
256
+ this._projectForFileCache.set(uri, project);
257
+ return project;
258
+ }
259
+ }
260
+ return undefined;
261
+ }
262
+ }
@@ -2,7 +2,8 @@ import {
2
2
  ServerOptions,
3
3
  TransportKind,
4
4
  LanguageClientOptions,
5
- LanguageClient
5
+ LanguageClient,
6
+ RevealOutputChannelOn,
6
7
  } from "vscode-languageclient";
7
8
  import { workspace, OutputChannel } from "vscode";
8
9
 
@@ -16,12 +17,12 @@ export function getLanguageServerClient(
16
17
  APOLLO_CLIENT_NAME: "Apollo VS Code",
17
18
  APOLLO_CLIENT_VERSION: version,
18
19
  APOLLO_CLIENT_REFERENCE_ID: referenceID,
19
- NODE_TLS_REJECT_UNAUTHORIZED: 0
20
+ NODE_TLS_REJECT_UNAUTHORIZED: 0,
20
21
  };
21
22
 
22
23
  const debugOptions = {
23
24
  execArgv: ["--nolazy", "--inspect=6009"],
24
- env
25
+ env,
25
26
  };
26
27
 
27
28
  const serverOptions: ServerOptions = {
@@ -29,14 +30,14 @@ export function getLanguageServerClient(
29
30
  module: serverModule,
30
31
  transport: TransportKind.ipc,
31
32
  options: {
32
- env
33
- }
33
+ env,
34
+ },
34
35
  },
35
36
  debug: {
36
37
  module: serverModule,
37
38
  transport: TransportKind.ipc,
38
- options: debugOptions
39
- }
39
+ options: debugOptions,
40
+ },
40
41
  };
41
42
 
42
43
  const clientOptions: LanguageClientOptions = {
@@ -47,21 +48,27 @@ export function getLanguageServerClient(
47
48
  "javascriptreact",
48
49
  "typescriptreact",
49
50
  "vue",
51
+ "svelte",
50
52
  "python",
51
53
  "ruby",
52
54
  "dart",
53
55
  "reason",
54
- "elixir"
56
+ "elixir",
55
57
  ],
56
58
  synchronize: {
57
59
  fileEvents: [
58
60
  workspace.createFileSystemWatcher("**/.env?(.local)"),
59
61
  workspace.createFileSystemWatcher(
60
- "**/*.{graphql,js,ts,jsx,tsx,vue,py,rb,dart,re,ex,exs}"
61
- )
62
- ]
62
+ "**/*.{graphql,js,ts,jsx,tsx,vue,svelte,py,rb,dart,re,ex,exs}"
63
+ ),
64
+ ],
63
65
  },
64
- outputChannel
66
+ outputChannel,
67
+ revealOutputChannelOn: workspace
68
+ .getConfiguration("apollographql")
69
+ .get("debug.revealOutputOnLanguageServerError")
70
+ ? RevealOutputChannelOn.Error
71
+ : RevealOutputChannelOn.Never,
65
72
  };
66
73
 
67
74
  return new LanguageClient(
@@ -0,0 +1,84 @@
1
+ import { MarkdownString } from "vscode";
2
+ import type {
3
+ LanguageClient as GenericLanguageClient,
4
+ NotificationHandler,
5
+ NotificationHandler0,
6
+ NotificationType,
7
+ NotificationType0,
8
+ Range,
9
+ } from "vscode-languageclient";
10
+ import type { IConnection as GenericConnection } from "vscode-languageserver";
11
+
12
+ export interface TypeStats {
13
+ service?: number;
14
+ client?: number;
15
+ total?: number;
16
+ }
17
+
18
+ export type ProjectStats =
19
+ | {
20
+ type: string;
21
+ loaded: true;
22
+ serviceId?: string;
23
+ types?: TypeStats;
24
+ tag?: string;
25
+ lastFetch?: number;
26
+ }
27
+ | { loaded: false };
28
+
29
+ export type EngineDecoration =
30
+ | {
31
+ type: "text";
32
+ document: string;
33
+ message: string;
34
+ range: Range;
35
+ }
36
+ | {
37
+ type: "runGlyph";
38
+ document: string;
39
+ range: Range;
40
+ hoverMessage: string;
41
+ };
42
+
43
+ type Messages = {
44
+ "apollographql/statsLoaded": ProjectStats;
45
+ "apollographql/configFilesFound": string;
46
+ "apollographql/tagsLoaded": string;
47
+ "apollographql/loadingComplete": number;
48
+ "apollographql/loading": { message: string; token: number };
49
+ "apollographql/engineDecorations": { decorations: EngineDecoration[] };
50
+ serverDebugMessage: {
51
+ type: "info" | "warning" | "error" | "errorTelemetry";
52
+ message: string;
53
+ };
54
+ };
55
+
56
+ export type LanguageClient = Omit<GenericLanguageClient, "onNotification"> & {
57
+ // Don't allow passing of generic string messages, restrict to only those
58
+ // listed in the Message type
59
+ onNotification<MessageType extends keyof Messages>(
60
+ messageType: MessageType,
61
+ handler: (value: Messages[MessageType]) => void
62
+ ): void;
63
+ // Allow other notification types
64
+ onNotification<RO>(
65
+ type: NotificationType0<RO>,
66
+ handler: NotificationHandler0
67
+ ): void;
68
+ onNotification<P, RO>(
69
+ type: NotificationType<P, RO>,
70
+ handler: NotificationHandler<P>
71
+ ): void;
72
+ };
73
+
74
+ export type Connection = Omit<GenericConnection, "sendNotification"> & {
75
+ // Don't allow passing of generic string messages, restrict to only those
76
+ // listed in the Message type
77
+ sendNotification<MessageType extends keyof Messages>(
78
+ messageType: MessageType,
79
+ value: Messages[MessageType]
80
+ ): void;
81
+ // Allow other notification types
82
+ sendNotification<RO>(type: NotificationType0<RO>): void;
83
+ sendNotification<P, RO>(type: NotificationType<P, RO>, params: P): void;
84
+ };
package/src/statusBar.ts CHANGED
@@ -24,7 +24,7 @@ export default class ApolloStatusBar {
24
24
  protected changeState({
25
25
  hasActiveTextEditor,
26
26
  text,
27
- tooltip
27
+ tooltip,
28
28
  }: StateChangeInput) {
29
29
  if (!hasActiveTextEditor) {
30
30
  this.statusBarItem.hide();
@@ -39,25 +39,25 @@ export default class ApolloStatusBar {
39
39
  public showLoadingState({ hasActiveTextEditor }: LoadingInput) {
40
40
  this.changeState({
41
41
  hasActiveTextEditor,
42
- text: ApolloStatusBar.loadingStateText
42
+ text: ApolloStatusBar.loadingStateText,
43
43
  });
44
44
  }
45
45
 
46
46
  public showLoadedState({ hasActiveTextEditor }: LoadingInput) {
47
47
  this.changeState({
48
48
  hasActiveTextEditor,
49
- text: ApolloStatusBar.loadedStateText
49
+ text: ApolloStatusBar.loadedStateText,
50
50
  });
51
51
  }
52
52
 
53
53
  public showWarningState({
54
54
  hasActiveTextEditor,
55
- tooltip
55
+ tooltip,
56
56
  }: LoadingInput & { tooltip: string }) {
57
57
  this.changeState({
58
58
  hasActiveTextEditor,
59
59
  text: ApolloStatusBar.warningText,
60
- tooltip
60
+ tooltip,
61
61
  });
62
62
  }
63
63