mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-29 13:51:49 +00:00
* First dark theme commits for command bar * Updated theme on sidebar * Updated tabs, sidebar, splash screen * settings theme changes * Dark theme applied to Monaco editor * Dark theme to stored procedures * Fixed sidebar scroll * Updated scroll issue in sidebar * Command bar items fixed * Fixed lint errors * fixed lint errors * settings side panel fixed * Second last iteration for css * Fixed all the issues of css * Updated the theme icon for now on DE to change the theme from portal/DE itself * Formatting issue resolved * Remove CloudShellTerminalComponent changes - revert to master version * Fixed test issue * Fixed formatting issue * Fix tests: update snapshots and revert xterm imports for compatibility * Fix xterm imports in CloudShellTerminalComponent to use @xterm packages * Fix Cloud Shell component imports for compatibility * Update test snapshots * Fix xterm package consistency across all CloudShell components * Fix TypeScript compilation errors in CloudShell components and query Documents - Standardized xterm package imports across CloudShell components to use legacy 'xterm' package - Fixed Terminal type compatibility issues in CommonUtils.tsx - Added type casting for enableQueryControl property in queryDocuments.ts to handle Azure Cosmos SDK interface limitations - Applied code formatting to ensure consistency * Update failing snapshot tests - Updated TreeNodeComponent snapshot tests for loading states - Updated ThroughputInputAutoPilotV3Component snapshots for number formatting changes (10,00,000 -> 1,000,000) - All snapshot tests now pass * Fixed test issue * Fixed test issue * Updated the buttons for theme * Updated the Theme changes based on portal theme changes * Updated review comments * Updated the duplicate code and fixed the fabric react error * Few places styling added and resolving few comments * Fixed errors * Fixed comments * Fixed comments * Fixed comments * Fixed full text policy issue for mongoru accounts * Resolved comments for class Name and few others * Added css for homepage in ru accounts * Final commit with all the feedback issues resolved * Lint error resolved * Updated the review comments and few Ui issues * Resolved review comments and changed header bg and active state color * Moved svg code to different file and imported * css fixed for the hpome page boxed for ru account * Lint errors * Fixed boxes issue in ru accounts * Handled the initial theme from the portal * Updated snap * Update snapshots for TreeNodeComponent and CreateCopyJobScreensProvider tests * Fix duplicate DataExplorerRoot test id causing Playwright strict mode violation * Fix locale-dependent number formatting in ThroughputInputAutoPilotV3Component --------- Co-authored-by: Sakshi Gupta <sakshig+microsoft@microsoft.com> Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>
84 lines
2.2 KiB
TypeScript
84 lines
2.2 KiB
TypeScript
import { Terminal } from "xterm";
|
|
import { TerminalKind } from "../../../../Contracts/ViewModels";
|
|
|
|
/**
|
|
* Utility function to wait for a specified duration
|
|
*/
|
|
export const wait = (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
|
/**
|
|
* Extract host from a URL
|
|
*/
|
|
export const getHostFromUrl = (url: string): string => {
|
|
try {
|
|
const urlObj = new URL(url);
|
|
return urlObj.hostname;
|
|
} catch (error) {
|
|
console.error("Invalid URL:", error);
|
|
return "";
|
|
}
|
|
};
|
|
|
|
export const askConfirmation = async (terminal: Terminal, question: string): Promise<boolean> => {
|
|
terminal.writeln(`\n${question} (Y/N)`);
|
|
terminal.focus();
|
|
return new Promise<boolean>((resolve) => {
|
|
const keyListener = terminal.onKey(({ key }: { key: string }) => {
|
|
keyListener.dispose();
|
|
terminal.writeln(key);
|
|
return resolve(key.toLowerCase() === "y");
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Gets the current locale for API requests
|
|
*/
|
|
export const getLocale = (): string => {
|
|
const langLocale = navigator.language;
|
|
return langLocale && langLocale.length > 2 ? langLocale : "en-us";
|
|
};
|
|
|
|
export const getShellNameForDisplay = (terminalKind: TerminalKind): string => {
|
|
switch (terminalKind) {
|
|
case TerminalKind.Postgres:
|
|
return "PostgreSQL";
|
|
case TerminalKind.Mongo:
|
|
case TerminalKind.VCoreMongo:
|
|
return "MongoDB";
|
|
default:
|
|
return "";
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Get MongoDB shell information text that should be removed from terminal output
|
|
*/
|
|
export const getMongoShellRemoveInfoText = (): string[] => {
|
|
return [
|
|
"For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/",
|
|
"disableTelemetry() command",
|
|
"https://www.mongodb.com/legal/privacy-policy",
|
|
];
|
|
};
|
|
|
|
export const filterAndCleanTerminalOutput = (data: string, removeInfoText: string[]): string => {
|
|
if (!data || removeInfoText.length === 0) {
|
|
return data;
|
|
}
|
|
|
|
const lines = data.split("\n");
|
|
const filteredLines: string[] = [];
|
|
|
|
for (let i = 0; i < lines.length; i++) {
|
|
const line = lines[i];
|
|
const shouldRemove = removeInfoText.some((text) => line.includes(text));
|
|
|
|
if (!shouldRemove) {
|
|
filteredLines.push(line);
|
|
}
|
|
}
|
|
|
|
return filteredLines.join("\n").replace(/((\r\n)|\n|\r){2,}/g, "\r\n");
|
|
};
|