mirror of
https://github.com/nonebot/nonebot2.git
synced 2026-07-25 17:52:39 +00:00
🎨 replace prettier with oxfmt
This commit is contained in:
@@ -38,7 +38,7 @@ export default function AdapterForm(): React.ReactNode {
|
||||
template: "adapter_publish.yml",
|
||||
title: `Adapter: ${result.name}`,
|
||||
...result,
|
||||
})}`
|
||||
})}`,
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ export default function BotForm(): React.ReactNode {
|
||||
template: "bot_publish.yml",
|
||||
title: `Bot: ${result.name}`,
|
||||
...result,
|
||||
})}`
|
||||
})}`,
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ export default function TagFormItem({
|
||||
new Set(
|
||||
allowTags
|
||||
.filter((tag) => tag.label.toLocaleLowerCase().includes(label))
|
||||
.map((e) => e.label)
|
||||
)
|
||||
.map((e) => e.label),
|
||||
),
|
||||
).slice(0, 5);
|
||||
|
||||
const validateTag = () => {
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function PluginForm(): React.ReactNode {
|
||||
template: "plugin_publish.yml",
|
||||
title: `Plugin: ${result.pypi}`,
|
||||
...result,
|
||||
})}`
|
||||
})}`,
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -49,8 +49,8 @@ export function Form({
|
||||
data
|
||||
.filter((item) => item.tags.length > 0)
|
||||
.map((ele) => ele.tags)
|
||||
.flat()
|
||||
)
|
||||
.flat(),
|
||||
),
|
||||
)
|
||||
.catch((e) => {
|
||||
console.error(e);
|
||||
@@ -63,7 +63,7 @@ export function Form({
|
||||
|
||||
const handleNextStep = () => {
|
||||
const currentStepNames = formItems[currentStep].items.map(
|
||||
(item) => item.name
|
||||
(item) => item.name,
|
||||
);
|
||||
if (currentStepNames.every((name) => result[name])) {
|
||||
setCurrentStep(currentStep + 1);
|
||||
|
||||
@@ -37,7 +37,7 @@ function MessageBox({
|
||||
<div
|
||||
className={clsx(
|
||||
"messenger-chat-avatar",
|
||||
isRight && "messenger-chat-avatar-user"
|
||||
isRight && "messenger-chat-avatar-user",
|
||||
)}
|
||||
>
|
||||
{isRight ? (
|
||||
@@ -50,7 +50,7 @@ function MessageBox({
|
||||
<div
|
||||
className={clsx(
|
||||
"chat-bubble messenger-chat-bubble",
|
||||
monospace && "font-mono"
|
||||
monospace && "font-mono",
|
||||
)}
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: msg.replace(/\n/g, "<br/>").replace(/ /g, " "),
|
||||
|
||||
@@ -110,7 +110,7 @@ export default function Paginate({
|
||||
className={clsx(
|
||||
"paginate-button",
|
||||
typeof page !== "number" && "ellipsis",
|
||||
currentPage === page && "active"
|
||||
currentPage === page && "active",
|
||||
)}
|
||||
onClick={() =>
|
||||
typeof page === "number" &&
|
||||
|
||||
@@ -21,7 +21,7 @@ export default function Avatar({ authorLink, authorAvatar, className }: Props) {
|
||||
<div
|
||||
className={clsx(
|
||||
"absolute inset-0 rounded-full bg-gray-200",
|
||||
"animate-pulse"
|
||||
"animate-pulse",
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
@@ -31,7 +31,7 @@ export default function Avatar({ authorLink, authorAvatar, className }: Props) {
|
||||
className={clsx(
|
||||
"w-full h-full rounded-full object-cover",
|
||||
"transition-opacity duration-300",
|
||||
loaded ? "opacity-100" : "opacity-0"
|
||||
loaded ? "opacity-100" : "opacity-0",
|
||||
)}
|
||||
alt="Avatar"
|
||||
/>
|
||||
|
||||
@@ -28,7 +28,7 @@ export default function ResourceCard({
|
||||
className,
|
||||
}: Props): React.ReactNode {
|
||||
const isGithub = /^https:\/\/github.com\/[^/]+\/[^/]+/.test(
|
||||
resource.homepage
|
||||
resource.homepage,
|
||||
);
|
||||
|
||||
const isPlugin = resource.resourceType === "plugin";
|
||||
|
||||
@@ -180,7 +180,7 @@ export default function ResourceDetailCard({ resource }: Props) {
|
||||
`${
|
||||
pypiData.releases[pypiData.info.version].reduce(
|
||||
(acc, curr) => acc + curr.size,
|
||||
0
|
||||
0,
|
||||
) / 1000
|
||||
}K`) ||
|
||||
"无"}
|
||||
|
||||
@@ -88,14 +88,14 @@ export default function AdapterPage(): React.ReactNode {
|
||||
(tag: string) => {
|
||||
addFilter(tagFilter(tag));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
const onCardAuthorClick = useCallback(
|
||||
(author: string) => {
|
||||
addFilter(authorFilter(author));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -80,14 +80,14 @@ export default function PluginPage(): React.ReactNode {
|
||||
(tag: string) => {
|
||||
addFilter(tagFilter(tag));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
const onAuthorClick = useCallback(
|
||||
(author: string) => {
|
||||
addFilter(authorFilter(author));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -71,14 +71,14 @@ export default function DriverPage(): React.ReactNode {
|
||||
(tag: string) => {
|
||||
addFilter(tagFilter(tag));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
const onAuthorClick = useCallback(
|
||||
(author: string) => {
|
||||
addFilter(authorFilter(author));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -50,7 +50,7 @@ export default function PluginPage(): React.ReactNode {
|
||||
active: sortMode === SortMode.UpdateDesc,
|
||||
onClick: () => {
|
||||
setSortMode(
|
||||
sortMode === SortMode.Default ? SortMode.UpdateDesc : SortMode.Default
|
||||
sortMode === SortMode.Default ? SortMode.UpdateDesc : SortMode.Default,
|
||||
);
|
||||
},
|
||||
};
|
||||
@@ -58,7 +58,7 @@ export default function PluginPage(): React.ReactNode {
|
||||
const getSortedPlugins = (plugins: Plugin[]): Plugin[] => {
|
||||
if (sortMode === SortMode.UpdateDesc) {
|
||||
return [...plugins].sort(
|
||||
(a, b) => new Date(b.time).getTime() - new Date(a.time).getTime()
|
||||
(a, b) => new Date(b.time).getTime() - new Date(a.time).getTime(),
|
||||
);
|
||||
}
|
||||
return plugins;
|
||||
@@ -124,14 +124,14 @@ export default function PluginPage(): React.ReactNode {
|
||||
(tag: string) => {
|
||||
addFilter(tagFilter(tag));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
const onCardAuthorClick = useCallback(
|
||||
(author: string) => {
|
||||
addFilter(authorFilter(author));
|
||||
},
|
||||
[addFilter]
|
||||
[addFilter],
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -22,7 +22,7 @@ type Props = {
|
||||
function StorePage({ title, children }: Props): React.ReactNode {
|
||||
const sidebarItems = useVersionedSidebar(
|
||||
useDocsVersionCandidates()[0].name,
|
||||
SIDEBAR_ID
|
||||
SIDEBAR_ID,
|
||||
)!;
|
||||
|
||||
return (
|
||||
|
||||
@@ -125,7 +125,7 @@ export default function StoreToolbar({
|
||||
<button
|
||||
className={clsx(
|
||||
"btn btn-sm btn-primary no-animation mr-2",
|
||||
!sorter.active && "btn-outline"
|
||||
!sorter.active && "btn-outline",
|
||||
)}
|
||||
onClick={sorter.onClick}
|
||||
>
|
||||
@@ -154,7 +154,7 @@ export default function StoreToolbar({
|
||||
<button
|
||||
className={clsx(
|
||||
"btn btn-sm btn-primary no-animation mr-2",
|
||||
!sorter.active && "btn-outline"
|
||||
!sorter.active && "btn-outline",
|
||||
)}
|
||||
onClick={sorter.onClick}
|
||||
>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
export function pickTextColor(
|
||||
bgColor: string,
|
||||
lightColor: string,
|
||||
darkColor: string
|
||||
darkColor: string,
|
||||
) {
|
||||
const color = bgColor.charAt(0) === "#" ? bgColor.substring(1, 7) : bgColor;
|
||||
const r = parseInt(color.substring(0, 2), 16); // hexToR
|
||||
|
||||
+15
-15
@@ -39,7 +39,7 @@ const validStatusDisplayName = {
|
||||
};
|
||||
|
||||
export const validStatusFilter = <T extends Resource = Resource>(
|
||||
validStatus: ValidStatus
|
||||
validStatus: ValidStatus,
|
||||
): Filter<T> => ({
|
||||
type: "validStatus",
|
||||
id: `validStatus-${validStatus}`,
|
||||
@@ -51,7 +51,7 @@ export const validStatusFilter = <T extends Resource = Resource>(
|
||||
});
|
||||
|
||||
export const tagFilter = <T extends Resource = Resource>(
|
||||
tag: string
|
||||
tag: string,
|
||||
): Filter<T> => ({
|
||||
type: "tag",
|
||||
id: `tag-${tag}`,
|
||||
@@ -61,14 +61,14 @@ export const tagFilter = <T extends Resource = Resource>(
|
||||
description: "The display name of tag filter",
|
||||
message: "标签: {tag}",
|
||||
},
|
||||
{ tag }
|
||||
{ tag },
|
||||
),
|
||||
filter: (resource: Resource): boolean =>
|
||||
resource.tags.map((tag) => tag.label).includes(tag),
|
||||
});
|
||||
|
||||
export const officialFilter = <T extends Resource = Resource>(
|
||||
official: boolean = true
|
||||
official: boolean = true,
|
||||
): Filter<T> => ({
|
||||
type: "official",
|
||||
id: `official-${official}`,
|
||||
@@ -81,7 +81,7 @@ export const officialFilter = <T extends Resource = Resource>(
|
||||
});
|
||||
|
||||
export const authorFilter = <T extends Resource = Resource>(
|
||||
author: string
|
||||
author: string,
|
||||
): Filter<T> => ({
|
||||
type: "author",
|
||||
id: `author-${author}`,
|
||||
@@ -91,13 +91,13 @@ export const authorFilter = <T extends Resource = Resource>(
|
||||
description: "The display name of author filter",
|
||||
message: "作者: {author}",
|
||||
},
|
||||
{ author }
|
||||
{ author },
|
||||
),
|
||||
filter: (resource: Resource): boolean => resource.author === author,
|
||||
});
|
||||
|
||||
export const queryFilter = <T extends Resource = Resource>(
|
||||
query: string
|
||||
query: string,
|
||||
): Filter<T> => ({
|
||||
type: "query",
|
||||
id: `query-${query}`,
|
||||
@@ -123,10 +123,10 @@ export const queryFilter = <T extends Resource = Resource>(
|
||||
|
||||
export function filterResources<T extends Resource>(
|
||||
resources: T[],
|
||||
filters: Filter<T>[]
|
||||
filters: Filter<T>[],
|
||||
): T[] {
|
||||
return resources.filter((resource) =>
|
||||
filters.every((filter) => filter.filter(resource))
|
||||
filters.every((filter) => filter.filter(resource)),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ type useFilteredResourcesReturn<T extends Resource> = {
|
||||
};
|
||||
|
||||
export function useFilteredResources<T extends Resource>(
|
||||
resources: T[]
|
||||
resources: T[],
|
||||
): useFilteredResourcesReturn<T> {
|
||||
const [filters, setFilters] = useState<Filter<T>[]>([]);
|
||||
|
||||
@@ -149,22 +149,22 @@ export function useFilteredResources<T extends Resource>(
|
||||
}
|
||||
setFilters((filters) => [...filters, filter]);
|
||||
},
|
||||
[filters, setFilters]
|
||||
[filters, setFilters],
|
||||
);
|
||||
const removeFilter = useCallback(
|
||||
(filter: Filter<T> | string) => {
|
||||
setFilters((filters) =>
|
||||
filters.filter((f) =>
|
||||
typeof filter === "string" ? f.id !== filter : f !== filter
|
||||
)
|
||||
typeof filter === "string" ? f.id !== filter : f !== filter,
|
||||
),
|
||||
);
|
||||
},
|
||||
[setFilters]
|
||||
[setFilters],
|
||||
);
|
||||
|
||||
const filteredResources = useCallback(
|
||||
() => filterResources(resources, filters),
|
||||
[resources, filters]
|
||||
[resources, filters],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -16,7 +16,7 @@ type useSearchControlReturn<T extends Resource> = {
|
||||
};
|
||||
|
||||
export function useSearchControl<T extends Resource>(
|
||||
resources: T[]
|
||||
resources: T[],
|
||||
): useSearchControlReturn<T> {
|
||||
const [currentFilter, setCurrentFilter] = useState<Filter<T> | null>(null);
|
||||
|
||||
@@ -28,7 +28,7 @@ export function useSearchControl<T extends Resource>(
|
||||
|
||||
useEffect(() => {
|
||||
setSearcherFilters(
|
||||
filters.filter((f) => !(currentFilter && f === currentFilter))
|
||||
filters.filter((f) => !(currentFilter && f === currentFilter)),
|
||||
);
|
||||
}, [filters, currentFilter]);
|
||||
|
||||
@@ -53,7 +53,7 @@ export function useSearchControl<T extends Resource>(
|
||||
setCurrentFilter(newFilter);
|
||||
addFilter(newFilter);
|
||||
},
|
||||
[currentFilter, setCurrentFilter, addFilter, removeFilter]
|
||||
[currentFilter, setCurrentFilter, addFilter, removeFilter],
|
||||
);
|
||||
|
||||
const onSearchQuerySubmit = useCallback(() => {
|
||||
@@ -75,7 +75,7 @@ export function useSearchControl<T extends Resource>(
|
||||
(index: number) => {
|
||||
removeFilter(searcherFilters[index]);
|
||||
},
|
||||
[removeFilter, searcherFilters]
|
||||
[removeFilter, searcherFilters],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -23,21 +23,21 @@ type ResourceTypes = {
|
||||
export type Resource = Adapter | Bot | Driver | Plugin;
|
||||
|
||||
export async function fetchRegistryData<T extends RegistryDataType>(
|
||||
dataType: T
|
||||
dataType: T,
|
||||
): Promise<ResourceTypes[T][]> {
|
||||
const resp = await fetch(
|
||||
`https://registry.nonebot.dev/${dataType}s.json`
|
||||
`https://registry.nonebot.dev/${dataType}s.json`,
|
||||
).catch((e) => {
|
||||
throw new Error(`Failed to fetch ${dataType}s: ${e}`);
|
||||
});
|
||||
if (!resp.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}`
|
||||
`Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}`,
|
||||
);
|
||||
}
|
||||
const data = (await resp.json()) as RegistryDataResponseTypes[T];
|
||||
return data.map(
|
||||
(resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T]
|
||||
(resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T],
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@ export function useToolbar<T extends Resource = Resource>({
|
||||
icon: ["fas", "tag"],
|
||||
choices: Array.from(
|
||||
new Set(
|
||||
resources.flatMap((resource) => resource.tags.map((tag) => tag.label))
|
||||
)
|
||||
resources.flatMap((resource) => resource.tags.map((tag) => tag.label)),
|
||||
),
|
||||
),
|
||||
onSubmit: (tag: string) => {
|
||||
addFilter(tagFilter(tag));
|
||||
|
||||
Reference in New Issue
Block a user