diff --git a/apps/desktop/src/main/index.ts b/apps/desktop/src/main/index.ts index 19da3f6..1b3b00b 100644 --- a/apps/desktop/src/main/index.ts +++ b/apps/desktop/src/main/index.ts @@ -28,8 +28,7 @@ const sidecar = createSidecarRuntime({ }, }) -const toErrorMessage = (error: unknown): string => - error instanceof Error ? error.message : String(error) +const toErrorMessage = (error: unknown): string => (error instanceof Error ? error.message : String(error)) const canOpenExternally = (url: string): boolean => { try { diff --git a/apps/desktop/src/main/sidecar.ts b/apps/desktop/src/main/sidecar.ts index 987f853..0bb7ba2 100644 --- a/apps/desktop/src/main/sidecar.ts +++ b/apps/desktop/src/main/sidecar.ts @@ -29,12 +29,9 @@ type SidecarRuntime = { stop: () => void } -const sleep = (ms: number): Promise => - new Promise((resolve) => setTimeout(resolve, ms)) +const sleep = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)) -const isProcessAlive = ( - processToCheck: ChildProcess | null, -): processToCheck is ChildProcess => { +const isProcessAlive = (processToCheck: ChildProcess | null): processToCheck is ChildProcess => { if (!processToCheck || !processToCheck.pid) { return false } @@ -81,11 +78,7 @@ const isServerReady = async (url: string): Promise => { return false } -const waitForServer = async ( - url: string, - isQuitting: () => boolean, - processRef?: ChildProcess, -): Promise => { +const waitForServer = async (url: string, isQuitting: () => boolean, processRef?: ChildProcess): Promise => { const start = Date.now() while (Date.now() - start < SERVER_READY_TIMEOUT_MS && !isQuitting()) { if (processRef && processRef.exitCode !== null) { @@ -119,9 +112,7 @@ const formatUnexpectedStopMessage = ( return `Server process exited unexpectedly (code ${code ?? 'unknown'}, signal ${signal ?? 'none'}).` } -export const createSidecarRuntime = ( - options: SidecarRuntimeOptions, -): SidecarRuntime => { +export const createSidecarRuntime = (options: SidecarRuntimeOptions): SidecarRuntime => { const state: SidecarState = { process: null, startup: null, @@ -162,9 +153,7 @@ export const createSidecarRuntime = ( resetState(processRef) if (!options.isQuitting() && hadReadyServer) { - options.onUnexpectedStop( - 'The background service crashed unexpectedly. Please restart the app.', - ) + options.onUnexpectedStop('The background service crashed unexpectedly. Please restart the app.') return } @@ -180,9 +169,7 @@ export const createSidecarRuntime = ( resetState(processRef) if (!options.isQuitting() && hadReadyServer) { - options.onUnexpectedStop( - formatUnexpectedStopMessage(options.isPackaged, code, signal), - ) + options.onUnexpectedStop(formatUnexpectedStopMessage(options.isPackaged, code, signal)) } }) } @@ -222,11 +209,7 @@ export const createSidecarRuntime = ( state.process = processRef attachLifecycleHandlers(processRef) - const ready = await waitForServer( - nextServerUrl, - options.isQuitting, - processRef, - ) + const ready = await waitForServer(nextServerUrl, options.isQuitting, processRef) if (ready && isProcessAlive(processRef)) { state.url = nextServerUrl return nextServerUrl @@ -253,9 +236,7 @@ export const createSidecarRuntime = ( const ready = await waitForServer(options.devServerUrl, options.isQuitting) if (!ready) { - throw new Error( - 'Dev server not responding. Run `bun dev` in apps/server first.', - ) + throw new Error('Dev server not responding. Run `bun dev` in apps/server first.') } return options.devServerUrl diff --git a/apps/desktop/src/renderer/components/SplashApp.tsx b/apps/desktop/src/renderer/components/SplashApp.tsx index 3bd49f4..551100a 100644 --- a/apps/desktop/src/renderer/components/SplashApp.tsx +++ b/apps/desktop/src/renderer/components/SplashApp.tsx @@ -13,12 +13,7 @@ export const SplashApp = () => { ease: [0.16, 1, 0.3, 1], }} > - Logo + Logo
{ if (values.target !== undefined) { if (!isSupportedTarget(values.target)) { - throw new Error( - `Invalid target: ${values.target}\nAllowed: ${SUPPORTED_TARGETS.join(', ')}`, - ) + throw new Error(`Invalid target: ${values.target}\nAllowed: ${SUPPORTED_TARGETS.join(', ')}`) } return values.target } @@ -45,10 +43,7 @@ const main = async () => { const outfile = `server-${suffix}` await mkdir(OUTDIR, { recursive: true }) - await Promise.all([ - rm(`${OUTDIR}/${outfile}`, { force: true }), - rm(`${OUTDIR}/${outfile}.exe`, { force: true }), - ]) + await Promise.all([rm(`${OUTDIR}/${outfile}`, { force: true }), rm(`${OUTDIR}/${outfile}.exe`, { force: true })]) const result = await Bun.build({ entrypoints: [ENTRYPOINT], diff --git a/apps/server/src/routes/__root.tsx b/apps/server/src/routes/__root.tsx index 3ff843d..3d68915 100644 --- a/apps/server/src/routes/__root.tsx +++ b/apps/server/src/routes/__root.tsx @@ -1,11 +1,7 @@ import { TanStackDevtools } from '@tanstack/react-devtools' import type { QueryClient } from '@tanstack/react-query' import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools' -import { - createRootRouteWithContext, - HeadContent, - Scripts, -} from '@tanstack/react-router' +import { createRootRouteWithContext, HeadContent, Scripts } from '@tanstack/react-router' import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools' import type { ReactNode } from 'react' import { ErrorComponent } from '@/components/Error' diff --git a/apps/server/src/routes/index.tsx b/apps/server/src/routes/index.tsx index c6549d3..fa57a89 100644 --- a/apps/server/src/routes/index.tsx +++ b/apps/server/src/routes/index.tsx @@ -53,9 +53,7 @@ function Todos() { {/* Header */}
-

- 我的待办 -

+

我的待办

保持专注,逐个击破

@@ -63,9 +61,7 @@ function Todos() { {completedCount} /{totalCount}
-
- 已完成 -
+
已完成
@@ -112,18 +108,11 @@ function Todos() { stroke="currentColor" aria-hidden="true" > - +

没有待办事项

-

- 输入上方内容添加您的第一个任务 -

+

输入上方内容添加您的第一个任务

) : ( todos.map((todo) => ( @@ -151,11 +140,7 @@ function Todos() { strokeWidth={3} aria-hidden="true" > - + )} diff --git a/apps/server/src/server/api/contracts/todo.contract.ts b/apps/server/src/server/api/contracts/todo.contract.ts index 081c2f5..b00a15e 100644 --- a/apps/server/src/server/api/contracts/todo.contract.ts +++ b/apps/server/src/server/api/contracts/todo.contract.ts @@ -1,9 +1,5 @@ import { oc } from '@orpc/contract' -import { - createInsertSchema, - createSelectSchema, - createUpdateSchema, -} from 'drizzle-orm/zod' +import { createInsertSchema, createSelectSchema, createUpdateSchema } from 'drizzle-orm/zod' import { z } from 'zod' import { todoTable } from '@/server/db/schema' diff --git a/apps/server/src/server/api/interceptors.ts b/apps/server/src/server/api/interceptors.ts index 5efdbb0..0e1d072 100644 --- a/apps/server/src/server/api/interceptors.ts +++ b/apps/server/src/server/api/interceptors.ts @@ -6,11 +6,7 @@ export const logError = (error: unknown) => { } export const handleValidationError = (error: unknown) => { - if ( - error instanceof ORPCError && - error.code === 'BAD_REQUEST' && - error.cause instanceof ValidationError - ) { + if (error instanceof ORPCError && error.code === 'BAD_REQUEST' && error.cause instanceof ValidationError) { // If you only use Zod you can safely cast to ZodIssue[] (per ORPC official docs) const zodError = new z.ZodError(error.cause.issues as z.core.$ZodIssue[]) @@ -22,11 +18,7 @@ export const handleValidationError = (error: unknown) => { }) } - if ( - error instanceof ORPCError && - error.code === 'INTERNAL_SERVER_ERROR' && - error.cause instanceof ValidationError - ) { + if (error instanceof ORPCError && error.code === 'INTERNAL_SERVER_ERROR' && error.cause instanceof ValidationError) { throw new ORPCError('OUTPUT_VALIDATION_FAILED', { cause: error.cause, }) diff --git a/apps/server/src/server/api/routers/todo.router.ts b/apps/server/src/server/api/routers/todo.router.ts index 6377626..ea639bc 100644 --- a/apps/server/src/server/api/routers/todo.router.ts +++ b/apps/server/src/server/api/routers/todo.router.ts @@ -11,39 +11,26 @@ export const list = os.todo.list.use(db).handler(async ({ context }) => { return todos }) -export const create = os.todo.create - .use(db) - .handler(async ({ context, input }) => { - const [newTodo] = await context.db - .insert(todoTable) - .values(input) - .returning() +export const create = os.todo.create.use(db).handler(async ({ context, input }) => { + const [newTodo] = await context.db.insert(todoTable).values(input).returning() - if (!newTodo) { - throw new ORPCError('NOT_FOUND') - } + if (!newTodo) { + throw new ORPCError('NOT_FOUND') + } - return newTodo - }) + return newTodo +}) -export const update = os.todo.update - .use(db) - .handler(async ({ context, input }) => { - const [updatedTodo] = await context.db - .update(todoTable) - .set(input.data) - .where(eq(todoTable.id, input.id)) - .returning() +export const update = os.todo.update.use(db).handler(async ({ context, input }) => { + const [updatedTodo] = await context.db.update(todoTable).set(input.data).where(eq(todoTable.id, input.id)).returning() - if (!updatedTodo) { - throw new ORPCError('NOT_FOUND') - } + if (!updatedTodo) { + throw new ORPCError('NOT_FOUND') + } - return updatedTodo - }) + return updatedTodo +}) -export const remove = os.todo.remove - .use(db) - .handler(async ({ context, input }) => { - await context.db.delete(todoTable).where(eq(todoTable.id, input.id)) - }) +export const remove = os.todo.remove.use(db).handler(async ({ context, input }) => { + await context.db.delete(todoTable).where(eq(todoTable.id, input.id)) +}) diff --git a/apps/server/src/server/api/types.ts b/apps/server/src/server/api/types.ts index 5509525..f4447bb 100644 --- a/apps/server/src/server/api/types.ts +++ b/apps/server/src/server/api/types.ts @@ -1,8 +1,4 @@ -import type { - ContractRouterClient, - InferContractRouterInputs, - InferContractRouterOutputs, -} from '@orpc/contract' +import type { ContractRouterClient, InferContractRouterInputs, InferContractRouterOutputs } from '@orpc/contract' import type { Contract } from './contracts' export type RouterClient = ContractRouterClient diff --git a/apps/server/src/server/db/fields.ts b/apps/server/src/server/db/fields.ts index 4ba0ef9..de8a9b9 100644 --- a/apps/server/src/server/db/fields.ts +++ b/apps/server/src/server/db/fields.ts @@ -25,8 +25,7 @@ export const pk = (name: string, strategy?: 'native' | 'extension') => { // timestamp -export const createdAt = (name = 'created_at') => - timestamp(name, { withTimezone: true }).notNull().defaultNow() +export const createdAt = (name = 'created_at') => timestamp(name, { withTimezone: true }).notNull().defaultNow() export const updatedAt = (name = 'updated_at') => timestamp(name, { withTimezone: true }) @@ -43,9 +42,7 @@ export const generatedFields = { } // Helper to create omit keys from generatedFields -const createGeneratedFieldKeys = >( - fields: T, -): Record => { +const createGeneratedFieldKeys = >(fields: T): Record => { return Object.keys(fields).reduce( (acc, key) => { acc[key as keyof T] = true diff --git a/biome.json b/biome.json index 7464f81..3f499ba 100644 --- a/biome.json +++ b/biome.json @@ -11,7 +11,8 @@ "formatter": { "enabled": true, "indentStyle": "space", - "lineEnding": "lf" + "lineEnding": "lf", + "lineWidth": 120 }, "linter": { "enabled": true,