style: lint and fmt code

This commit is contained in:
ReaJason
2026-08-30 21:19:42 +08:00
parent 3ada01bd97
commit e1152000f2
24 changed files with 1247 additions and 133 deletions
@@ -1,123 +0,0 @@
import type { TokenLine } from "@/lib/decompile/decompile.worker";
import { memo, type ReactNode } from "react";
import { CopyMenuButton, type CopyOption } from "@/components/code-viewer";
/** material-dark palette (react-syntax-highlighter prism theme) */
const TOKEN_COLORS: Record<string, string> = {
atrule: "#c792ea",
boolean: "#c792ea",
builtin: "#ffcb6b",
char: "#80cbc4",
"class-name": "#f2ff00",
comment: "#616161",
constant: "#c792ea",
function: "#c792ea",
keyword: "#c792ea",
number: "#fd9170",
operator: "#89ddff",
property: "#80cbc4",
punctuation: "#89ddff",
regex: "#f2ff00",
string: "#a5e844",
variable: "#ff6666",
};
const BACKGROUND = "#2f2f2f";
const PLAIN = "#eee";
const GUTTER_COLOR = "#616161";
const FONT_FAMILY = "Roboto Mono, monospace";
interface DecompiledCodeViewerProps {
lines: TokenLine[] | null;
placeholder: string;
header?: ReactNode;
button?: ReactNode;
height: number;
copyLabel: string;
copyOptions: CopyOption[];
}
export default memo(function DecompiledCodeViewer({
lines,
placeholder,
header,
button,
height,
copyLabel,
copyOptions,
}: Readonly<DecompiledCodeViewerProps>) {
return (
<div className="rounded-lg border">
<div
className={
header
? "flex items-center justify-between border-b p-2"
: "flex items-center justify-end border-b p-2"
}
>
{header}
<div className="flex items-center gap-2">
{button}
<CopyMenuButton
options={copyOptions}
variant="ghost"
size="sm"
aria-label={copyLabel}
title={copyLabel}
/>
</div>
</div>
<div
className="overflow-auto text-xs"
style={{
height,
background: BACKGROUND,
color: PLAIN,
borderRadius: "0 0 var(--radius) var(--radius)",
}}
>
{lines ? (
<div
className="flex"
style={{ fontFamily: FONT_FAMILY, lineHeight: "1.5em", tabSize: 4 }}
>
<div
aria-hidden
className="sticky left-0 shrink-0 pr-4 pl-4 text-right select-none"
style={{ background: BACKGROUND, color: GUTTER_COLOR }}
>
{lines.map((_, index) => (
<div key={index}>{index + 1}</div>
))}
</div>
<pre className="m-0 flex-1 pr-4" style={{ fontFamily: "inherit", tabSize: 4 }}>
{lines.map((line, index) => (
<div key={index} style={{ whiteSpace: "pre" }}>
{line.map(([type, text], segmentIndex) =>
type === "plain" ? (
text
) : (
<span key={segmentIndex} style={{ color: TOKEN_COLORS[type] ?? PLAIN }}>
{text}
</span>
),
)}
{line.length === 0 ? " " : null}
</div>
))}
</pre>
</div>
) : (
<pre
className="m-0 p-4"
style={{ fontFamily: FONT_FAMILY, lineHeight: "1.5em", whiteSpace: "pre-wrap" }}
>
{placeholder}
</pre>
)}
</div>
</div>
);
});
@@ -23,6 +23,7 @@ import { FeedbackAlert } from "./feedback-alert";
export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShellResult }>) {
const { t } = useTranslation(["memshell", "common"]);
const isDubbo = generateResult?.shellConfig.server === "Dubbo";
const shellToolConfig = generateResult?.shellToolConfig;
return (
<Card>
<CardHeader>
@@ -65,13 +66,13 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
/>
<CopyableField
label={t("shellToolConfig.behinder.pass")}
text={(generateResult?.shellToolConfig as BehinderShellToolConfig).pass}
value={(generateResult?.shellToolConfig as BehinderShellToolConfig).pass}
text={(shellToolConfig as BehinderShellToolConfig).pass}
value={(shellToolConfig as BehinderShellToolConfig).pass}
/>
<CopyableField
label={t("shellToolConfig.behinder.header")}
text={`${(generateResult?.shellToolConfig as BehinderShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as BehinderShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as BehinderShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as BehinderShellToolConfig).headerValue}`}
text={`${(shellToolConfig as BehinderShellToolConfig).headerName}: ${(shellToolConfig as BehinderShellToolConfig).headerValue}`}
value={`${(shellToolConfig as BehinderShellToolConfig).headerName}: ${(shellToolConfig as BehinderShellToolConfig).headerValue}`}
/>
</>
)}
@@ -79,26 +80,28 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
<>
<CopyableField
label={t("shellToolConfig.godzilla.pass")}
text={(generateResult?.shellToolConfig as GodzillaShellToolConfig).pass}
value={(generateResult?.shellToolConfig as GodzillaShellToolConfig).pass}
text={(shellToolConfig as GodzillaShellToolConfig).pass}
value={(shellToolConfig as GodzillaShellToolConfig).pass}
/>
<CopyableField
label={t("shellToolConfig.godzilla.key")}
text={(generateResult?.shellToolConfig as GodzillaShellToolConfig).key}
value={(generateResult?.shellToolConfig as GodzillaShellToolConfig).key}
text={(shellToolConfig as GodzillaShellToolConfig).key}
value={(shellToolConfig as GodzillaShellToolConfig).key}
/>
<CopyableField
label={t("shellToolConfig.godzilla.encryptor")}
text={
generateResult?.shellConfig.shellType.includes("WebSocket")
? "JAVA_WEBSOCKET_AES_RAW"
: generateResult?.shellConfig.shellType.includes("Dubbo") ? "DUBBO_XOR_BASE64" : "JAVA_AES_BASE64"
: generateResult?.shellConfig.shellType.includes("Dubbo")
? "DUBBO_XOR_BASE64"
: "JAVA_AES_BASE64"
}
/>
<CopyableField
label={t("shellToolConfig.godzilla.header")}
text={`${(generateResult?.shellToolConfig as GodzillaShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as GodzillaShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as GodzillaShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as GodzillaShellToolConfig).headerValue}`}
text={`${(shellToolConfig as GodzillaShellToolConfig).headerName}: ${(shellToolConfig as GodzillaShellToolConfig).headerValue}`}
value={`${(shellToolConfig as GodzillaShellToolConfig).headerName}: ${(shellToolConfig as GodzillaShellToolConfig).headerValue}`}
/>
</>
)}
@@ -107,8 +110,8 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
<CopyableField
hidden={generateResult?.shellConfig.shellType.includes("WebSocket")}
label={t("common:paramName")}
text={(generateResult?.shellToolConfig as CommandShellToolConfig).paramName}
value={(generateResult?.shellToolConfig as CommandShellToolConfig).paramName}
text={(shellToolConfig as CommandShellToolConfig).paramName}
value={(shellToolConfig as CommandShellToolConfig).paramName}
/>
<CopyableField
hidden={
@@ -118,8 +121,8 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
)
}
label={t("shellToolConfig.httpHeader")}
text={`${(generateResult?.shellToolConfig as CommandShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as CommandShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as CommandShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as CommandShellToolConfig).headerValue}`}
text={`${(shellToolConfig as CommandShellToolConfig).headerName}: ${(shellToolConfig as CommandShellToolConfig).headerValue}`}
value={`${(shellToolConfig as CommandShellToolConfig).headerName}: ${(shellToolConfig as CommandShellToolConfig).headerValue}`}
/>
</Fragment>
)}
@@ -127,28 +130,28 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
generateResult?.shellConfig.shellTool === ShellToolType.Suo5v2) && (
<CopyableField
label={t("shellToolConfig.suo5Header")}
text={`${(generateResult?.shellToolConfig as Suo5ShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as Suo5ShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as Suo5ShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as Suo5ShellToolConfig).headerValue}`}
text={`${(shellToolConfig as Suo5ShellToolConfig).headerName}: ${(shellToolConfig as Suo5ShellToolConfig).headerValue}`}
value={`${(shellToolConfig as Suo5ShellToolConfig).headerName}: ${(shellToolConfig as Suo5ShellToolConfig).headerValue}`}
/>
)}
{generateResult?.shellConfig.shellTool === ShellToolType.Proxy && (
<CopyableField
label={t("shellToolConfig.httpHeader")}
text={`${(generateResult?.shellToolConfig as ProxyShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as ProxyShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as ProxyShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as ProxyShellToolConfig).headerValue}`}
text={`${(shellToolConfig as ProxyShellToolConfig).headerName}: ${(shellToolConfig as ProxyShellToolConfig).headerValue}`}
value={`${(shellToolConfig as ProxyShellToolConfig).headerName}: ${(shellToolConfig as ProxyShellToolConfig).headerValue}`}
/>
)}
{generateResult?.shellConfig.shellTool === ShellToolType.AntSword && (
<>
<CopyableField
label={t("shellToolConfig.antSword.pass")}
text={(generateResult?.shellToolConfig as AntSwordShellToolConfig).pass}
value={(generateResult?.shellToolConfig as AntSwordShellToolConfig).pass}
text={(shellToolConfig as AntSwordShellToolConfig).pass}
value={(shellToolConfig as AntSwordShellToolConfig).pass}
/>
<CopyableField
label={t("shellToolConfig.httpHeader")}
text={`${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerValue}`}
text={`${(shellToolConfig as AntSwordShellToolConfig).headerName}: ${(shellToolConfig as AntSwordShellToolConfig).headerValue}`}
value={`${(shellToolConfig as AntSwordShellToolConfig).headerName}: ${(shellToolConfig as AntSwordShellToolConfig).headerValue}`}
/>
</>
)}
@@ -157,8 +160,8 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: MemShe
<CopyableField label={t("shellToolConfig.neoreGeorgKey")} text="key" value="key" />
<CopyableField
label={t("shellToolConfig.neoreGeorgHeader")}
text={`${(generateResult?.shellToolConfig as NeoreGeorgShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as NeoreGeorgShellToolConfig).headerValue}`}
value={`${(generateResult?.shellToolConfig as NeoreGeorgShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as NeoreGeorgShellToolConfig).headerValue}`}
text={`${(shellToolConfig as NeoreGeorgShellToolConfig).headerName}: ${(shellToolConfig as NeoreGeorgShellToolConfig).headerValue}`}
value={`${(shellToolConfig as NeoreGeorgShellToolConfig).headerName}: ${(shellToolConfig as NeoreGeorgShellToolConfig).headerValue}`}
/>
</>
)}
+1 -1
View File
@@ -4,7 +4,7 @@ import { DownloadIcon } from "lucide-react";
import { useTranslation } from "react-i18next";
import { toast } from "sonner";
import DecompiledCodeViewer from "@/components/memshell/decompiled-code-viewer";
import DecompiledCodeViewer from "@/components/decompiled-code-viewer";
import { QuickUsage } from "@/components/memshell/quick-usage";
import { Button } from "@/components/ui/button";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";