Skip to content

Commit e23e695

Browse files
committed
temp
[ci skip]
1 parent 979751e commit e23e695

4 files changed

Lines changed: 107 additions & 71 deletions

File tree

vscode/extension/src/extension.ts

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,139 @@
1-
import { format } from "./commands/format"
2-
import * as vscode from "vscode"
1+
import { format } from "./commands/format";
2+
import * as vscode from "vscode";
33
import {
44
createOutputChannel,
55
onDidChangeConfiguration,
66
registerCommand,
7-
} from "./utilities/common/vscodeapi"
7+
} from "./utilities/common/vscodeapi";
88
import {
99
registerLogger,
1010
traceError,
1111
traceInfo,
1212
traceVerbose,
13-
} from "./utilities/common/log"
14-
import { onDidChangePythonInterpreter } from "./utilities/common/python"
15-
import { LSPClient } from "./lsp/lsp"
16-
import { AuthenticationProviderTobikoCloud } from "./auth/auth"
17-
import { signOut } from "./commands/signout"
18-
import { signIn } from "./commands/signin"
19-
import { signInSpecifyFlow } from "./commands/signinSpecifyFlow"
20-
import { isErr } from "./utilities/functional/result"
21-
import { handleNotSginedInError } from "./utilities/errors"
22-
import { startWebServer, WebServer } from "./web-server/server"
23-
import { LineagePanel } from "./webviews/lineagePanel"
13+
} from "./utilities/common/log";
14+
import { onDidChangePythonInterpreter } from "./utilities/common/python";
15+
import { LSPClient } from "./lsp/lsp";
16+
import { AuthenticationProviderTobikoCloud } from "./auth/auth";
17+
import { signOut } from "./commands/signout";
18+
import { signIn } from "./commands/signin";
19+
import { signInSpecifyFlow } from "./commands/signinSpecifyFlow";
20+
import { isErr } from "./utilities/functional/result";
21+
import { handleNotSginedInError } from "./utilities/errors";
22+
import { startWebServer, WebServer } from "./web-server/server";
23+
import { LineagePanel } from "./webviews/lineagePanel";
2424

25-
let lspClient: LSPClient | undefined
25+
let lspClient: LSPClient | undefined;
2626
let webServer: WebServer | undefined;
2727

2828
// This method is called when your extension is activated
2929
// Your extension is activated the very first time the command is executed
3030
export async function activate(context: vscode.ExtensionContext) {
31-
const extensionOutputChannel = createOutputChannel("sqlmesh")
31+
const extensionOutputChannel = createOutputChannel("sqlmesh");
3232
context.subscriptions.push(
3333
extensionOutputChannel,
3434
registerLogger(extensionOutputChannel)
35-
)
36-
traceInfo("Activating SQLMesh extension")
35+
);
36+
traceInfo("Activating SQLMesh extension");
3737

38-
const webServerOutputChannel = createOutputChannel("sqlmesh-webserver")
38+
const webServerOutputChannel = createOutputChannel("sqlmesh-webserver");
3939
context.subscriptions.push(
4040
webServerOutputChannel,
4141
registerLogger(webServerOutputChannel)
42-
)
42+
);
4343

44-
traceInfo("Registering authentication provider")
45-
const authProvider = new AuthenticationProviderTobikoCloud()
44+
traceInfo("Registering authentication provider");
45+
const authProvider = new AuthenticationProviderTobikoCloud();
4646
context.subscriptions.push(
4747
vscode.authentication.registerAuthenticationProvider(
4848
AuthenticationProviderTobikoCloud.id,
4949
AuthenticationProviderTobikoCloud.name,
5050
authProvider,
5151
{ supportsMultipleAccounts: false }
5252
)
53-
)
54-
traceInfo("Authentication provider registered")
53+
);
54+
traceInfo("Authentication provider registered");
5555

5656
context.subscriptions.push(
5757
vscode.commands.registerCommand("sqlmesh.signin", signIn(authProvider))
58-
)
58+
);
5959
context.subscriptions.push(
6060
vscode.commands.registerCommand(
6161
"sqlmesh.signinSpecifyFlow",
6262
signInSpecifyFlow(authProvider)
6363
)
64-
)
64+
);
6565
context.subscriptions.push(
6666
vscode.commands.registerCommand("sqlmesh.signout", signOut(authProvider))
67-
)
67+
);
6868
context.subscriptions.push(
6969
vscode.commands.registerCommand("sqlmesh.format", format(authProvider))
70-
)
71-
// Register the webview
72-
const lineagePanel = new LineagePanel(
73-
context.extensionUri,
74-
() => webServer?.url ?? ""
75-
);
76-
context.subscriptions.push(
77-
vscode.window.registerWebviewViewProvider(
78-
LineagePanel.viewType,
79-
lineagePanel
80-
)
81-
);
70+
);
71+
// Register the webview
72+
const lineagePanel = new LineagePanel(
73+
context.extensionUri,
74+
() => webServer?.url ?? ""
75+
);
76+
context.subscriptions.push(
77+
vscode.window.registerWebviewViewProvider(
78+
LineagePanel.viewType,
79+
lineagePanel
80+
)
81+
);
8282

83-
lspClient = new LSPClient()
84-
const result = await lspClient.start()
83+
lspClient = new LSPClient();
84+
const result = await lspClient.start();
8585
if (isErr(result)) {
86-
handleNotSginedInError(authProvider)
86+
handleNotSginedInError(authProvider);
8787
}
88-
context.subscriptions.push(lspClient)
88+
context.subscriptions.push(lspClient);
8989

9090
// start web server
91-
const webServerResult = await startWebServer(webServerOutputChannel)
91+
const webServerResult = await startWebServer(webServerOutputChannel);
9292
if (!isErr(webServerResult)) {
93-
webServer = webServerResult.value
93+
webServer = webServerResult.value;
9494
} else {
95-
traceError("Failed to start web server", webServerResult.error)
95+
traceError("Failed to start web server", webServerResult.error);
9696
}
9797

9898
const restart = async () => {
9999
if (webServer) {
100100
webServer.stop();
101101
webServer = undefined;
102-
const webServerResult = await startWebServer(webServerOutputChannel)
102+
const webServerResult = await startWebServer(webServerOutputChannel);
103103
if (!isErr(webServerResult)) {
104-
webServer = webServerResult.value
104+
webServer = webServerResult.value;
105105
} else {
106-
traceError("Failed to start web server", webServerResult.error)
106+
traceError("Failed to start web server", webServerResult.error);
107107
}
108108
}
109109
if (lspClient) {
110-
traceVerbose("Restarting LSP client")
111-
const restartResult = await lspClient.restart()
110+
traceVerbose("Restarting LSP client");
111+
const restartResult = await lspClient.restart();
112112
if (isErr(restartResult)) {
113-
handleNotSginedInError(authProvider)
113+
handleNotSginedInError(authProvider);
114114
}
115115
}
116-
}
116+
};
117117

118118
context.subscriptions.push(
119119
onDidChangePythonInterpreter(async () => {
120-
await restart()
120+
await restart();
121121
}),
122122
onDidChangeConfiguration(async () => {
123-
await restart()
123+
await restart();
124124
}),
125125
registerCommand(`sqlmesh.restart`, async () => {
126-
await restart()
126+
await restart();
127127
})
128-
)
128+
);
129129

130-
traceInfo("Extension activated")
130+
traceInfo("Extension activated");
131131
}
132132

133133
// This method is called when your extension is deactivated
134134
export async function deactivate() {
135135
if (lspClient) {
136-
await lspClient.dispose()
136+
await lspClient.dispose();
137137
}
138138
if (webServer) {
139139
webServer.stop();

vscode/extension/src/web-server/server.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { ChildProcess, spawn } from "child_process"
2-
import { isErr, ok, Result } from "../utilities/functional/result"
2+
import { err, isErr, ok, Result } from "../utilities/functional/result"
33
import { sqlmesh_exec } from "../utilities/sqlmesh/sqlmesh"
44
import * as vscode from 'vscode'
55
import { isProduction } from "../utilities/isDev"
66
import getPort from "../utilities/getPort"
77
import { ErrorType } from "../utilities/errors"
88

99
export interface Server {
10-
port: number;
11-
url: string;
1210
stop: () => void;
11+
get_url: () => string
1312
}
1413

1514
export const startWebServer = async (outputChannel: vscode.OutputChannel): Promise<Result<WebServer, ErrorType>> => {
@@ -45,8 +44,30 @@ export class WebServer implements Server {
4544
this.process = process
4645
}
4746

47+
get_url() {
48+
return this.url
49+
}
50+
4851
stop() {
4952
this.process.kill()
5053
}
5154
}
5255

56+
export const queryServer = async (
57+
root_url: string,
58+
path: string,
59+
body: any,
60+
method: string
61+
): Promise<Result<Object, string>> => {
62+
try {
63+
const url = `${root_url}${path}`
64+
console.log('making request', url, method, body)
65+
const response = await fetch(url, {
66+
method,
67+
body,
68+
})
69+
return response.json()
70+
} catch (e) {
71+
return err("error o")
72+
}
73+
}

vscode/extension/src/webviews/lineagePanel.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import {
1212
} from "vscode";
1313
import { isProduction } from "../utilities/isDev";
1414
import { getWorkspaceFolders } from "../utilities/common/vscodeapi";
15+
import { queryServer } from "../web-server/server";
16+
import { isErr } from "../utilities/functional/result";
17+
import { traceError } from "../utilities/common/log";
1518

1619
export class LineagePanel implements WebviewViewProvider, Disposable {
1720
public static readonly viewType = "sqlmesh.lineage";
@@ -65,7 +68,7 @@ export class LineagePanel implements WebviewViewProvider, Disposable {
6568
// Set up message listener for events from the iframe
6669
webviewView.webview.onDidReceiveMessage(
6770
async (message) => {
68-
console.log("message received", message);
71+
console.log("message received in vscode", message);
6972
if (message && message.key) {
7073
if (message.key === "vscode_callback") {
7174
const payload: CallbackEvent = message.payload;
@@ -175,8 +178,22 @@ export class LineagePanel implements WebviewViewProvider, Disposable {
175178
const { requestId } = message.payload;
176179
try {
177180
// Process the query based on the queryKey
178-
let responseData;
179181
console.log('got query request in extension', message.payload, "with requestId", requestId)
182+
183+
console.log("querying server")
184+
const responseData = await queryServer(
185+
this.getServerUrl(),
186+
message.payload.queryKey,
187+
message.payload.body,
188+
message.payload.method
189+
)
190+
if (isErr(responseData)) {
191+
traceError("failed to parse data", responseData)
192+
return
193+
}
194+
195+
console.log('response data', responseData)
196+
180197
// Send successful response back to the webview
181198
panel.postMessage({
182199
key: 'vscode_response',

vscode/react/src/api/instance.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,7 @@ export async function fetchAPIProduction<T = any, B extends object = any>(
140140
config: FetchOptions<B>,
141141
options?: Partial<FetchOptionsWithSignal>,
142142
): Promise<T & ResponseWithDetail> {
143-
console.log('queryFn', config, options)
144-
getVSCodeAPI().postMessage({
145-
type: 'fetchAPI',
146-
config,
147-
options,
148-
})
143+
console.log('fetchAPIProduction', config, options)
149144

150145
// Generate a unique ID for this request
151146
const requestId = `query_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
@@ -173,10 +168,12 @@ export async function fetchAPIProduction<T = any, B extends object = any>(
173168

174169
// Add the listener
175170
window.addEventListener('message', messageHandler);
171+
console.log("added listener to window")
176172

177173
// Send the message to VSCode with the query parameters and request ID
178174
// @ts-ignore
179-
const vscode = acquireVsCodeApi()
175+
const vscode = getVSCodeAPI()
176+
console.log("vscode to send message", vscode)
180177
vscode.postMessage({
181178
key: 'query_request',
182179
payload: {
@@ -201,6 +198,7 @@ export function fetchAPI<T = any, B extends object = any>(
201198
config: FetchOptions<B>,
202199
options?: Partial<FetchOptionsWithSignal>,
203200
): Promise<T & ResponseWithDetail> {
201+
console.log("fetchAPI", config, options)
204202
if (IS_PRODUCTION) {
205203
return fetchAPIProduction(config, options)
206204
}

0 commit comments

Comments
 (0)