Skip to content

Commit ebc76b4

Browse files
committed
strongly type extension activation
1 parent 76a640c commit ebc76b4

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/extension.ts

+13-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ let reporter: TelemetryReporter;
1717
let clientHandler: ClientHandler;
1818
const languageServerUpdater = new SingleInstanceTimeout();
1919

20-
export async function activate(context: vscode.ExtensionContext): Promise<any> {
20+
export interface TerraformExtension {
21+
handler: ClientHandler;
22+
moduleCallers;
23+
}
24+
25+
export async function activate(context: vscode.ExtensionContext): Promise<TerraformExtension> {
2126
const manifest = context.extension.packageJSON;
2227
reporter = new TelemetryReporter(context.extension.id, manifest.version, manifest.appInsightsKey);
2328
context.subscriptions.push(reporter);
@@ -122,6 +127,12 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
122127
}),
123128
vscode.window.onDidChangeVisibleTextEditors(async () => {
124129
const textEditor = getActiveTextEditor();
130+
if (textEditor === undefined) {
131+
return;
132+
}
133+
if (textEditor.document === undefined) {
134+
return;
135+
}
125136
await updateTerraformStatusBar(textEditor.document.uri);
126137
}),
127138
vscode.window.registerTreeDataProvider('terraform.modules', new ModuleProvider(context, clientHandler)),
@@ -137,7 +148,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
137148
}
138149

139150
// export public API
140-
return { clientHandler, moduleCallers };
151+
return { handler: clientHandler, moduleCallers };
141152
}
142153

143154
export function deactivate(): Promise<void> {

src/test/integration/workspaces.test.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as assert from 'assert';
22
import * as vscode from 'vscode';
33
import { Utils } from 'vscode-uri';
4+
import { TerraformExtension } from '../../extension';
45
import { getDocUri, getExtensionId, open, testFolderPath } from '../helper';
56

67

@@ -12,14 +13,14 @@ suite('moduleCallers', () => {
1213

1314
test('should execute language server command', async () => {
1415
const extId = getExtensionId()
15-
const ext = vscode.extensions.getExtension(extId);
16+
const ext = vscode.extensions.getExtension<TerraformExtension>(extId);
1617

1718
const documentUri = getDocUri('modules/sample.tf');
1819
await open(documentUri);
1920

2021
assert.ok(ext.isActive);
2122

22-
const client = ext.exports.clientHandler.getClient(documentUri);
23+
const client = ext.exports.handler.getClient();
2324

2425
const moduleUri = Utils.dirname(documentUri).toString();
2526
const response = await ext.exports.moduleCallers(client, moduleUri);

0 commit comments

Comments
 (0)