37 lines
902 B
TypeScript
37 lines
902 B
TypeScript
import * as vscode from 'vscode';
|
|||
|
|
|
||
|
|
const DEFAULT_WEBVIEW_DEV_SERVER_URL = 'http://localhost:5173';
|
||
|
|
|
||
|
|
const normalizeUrl = (value: string): string | null => {
|
||
|
|
const trimmed = value.trim();
|
||
|
|
if (!trimmed) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
try {
|
||
|
|
const parsed = new URL(trimmed);
|
||
|
|
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
return parsed.toString().replace(/\/$/, '');
|
||
|
|
} catch {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
export const resolveWebviewDevServerUrl = (context: vscode.ExtensionContext): string | null => {
|
||
|
|
if (context.extensionMode !== vscode.ExtensionMode.Development) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (process.env.OPENCHAMBER_DISABLE_WEBVIEW_HMR === '1') {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
const configured = normalizeUrl(process.env.OPENCHAMBER_VSCODE_WEBVIEW_URL ?? '');
|
||
|
|
if (configured) {
|
||
|
|
return configured;
|
||
|
|
}
|
||
|
|
|
||
|
|
return DEFAULT_WEBVIEW_DEV_SERVER_URL;
|
||
|
|
};
|