diff --git a/server/src/web/embeddedAssets.generated.d.ts b/server/src/web/embeddedAssets.generated.d.ts new file mode 100644 index 00000000..c0dd50aa --- /dev/null +++ b/server/src/web/embeddedAssets.generated.d.ts @@ -0,0 +1,9 @@ +// Stub types for embeddedAssets.generated.ts when the manifest is not generated. + +export interface EmbeddedWebAsset { + path: string; + sourcePath: string; + mimeType: string; +} + +export const embeddedAssets: EmbeddedWebAsset[]; diff --git a/server/src/web/embeddedAssets.generated.stub.d.ts b/server/src/web/embeddedAssets.generated.stub.d.ts deleted file mode 100644 index ac63a5f4..00000000 --- a/server/src/web/embeddedAssets.generated.stub.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Stub types for embeddedAssets.generated.ts when the manifest is not generated. -declare module './embeddedAssets.generated' { - export interface EmbeddedWebAsset { - path: string; - sourcePath: string; - mimeType: string; - } - - export const embeddedAssets: EmbeddedWebAsset[]; -} diff --git a/server/src/web/server.ts b/server/src/web/server.ts index 162847dd..9b2d53a7 100644 --- a/server/src/web/server.ts +++ b/server/src/web/server.ts @@ -95,13 +95,11 @@ function createWebApp(options: { app.use('*', async (c, next) => { if (c.req.path.startsWith('/api')) { - await next() - return + return await next() } if (c.req.method !== 'GET' && c.req.method !== 'HEAD') { - await next() - return + return await next() } const asset = embeddedAssetMap.get(c.req.path) @@ -109,7 +107,7 @@ function createWebApp(options: { return serveEmbeddedAsset(asset) } - await next() + return await next() }) app.get('*', async (c, next) => { @@ -165,7 +163,8 @@ export async function startWebServer(options: { jwtSecret: Uint8Array socketEngine: SocketEngine }): Promise> { - const embeddedAssetMap = Bun.isCompiled ? await loadEmbeddedAssetMap() : null + const bunRuntime = (globalThis as typeof globalThis & { Bun?: { isCompiled?: boolean } }).Bun + const embeddedAssetMap = bunRuntime?.isCompiled ? await loadEmbeddedAssetMap() : null const app = createWebApp({ getSyncEngine: options.getSyncEngine, getSseManager: options.getSseManager, diff --git a/web/src/router.tsx b/web/src/router.tsx index bfb3c027..2d2b5b05 100644 --- a/web/src/router.tsx +++ b/web/src/router.tsx @@ -201,17 +201,24 @@ const sessionFilesRoute = createRoute({ component: FilesPage, }) +type SessionFileSearch = { + path: string + staged?: boolean +} + const sessionFileRoute = createRoute({ getParentRoute: () => rootRoute, path: '/sessions/$sessionId/file', - validateSearch: (search: Record) => ({ - path: typeof search.path === 'string' ? search.path : '', - staged: search.staged === true || search.staged === 'true' + validateSearch: (search: Record): SessionFileSearch => { + const path = typeof search.path === 'string' ? search.path : '' + const staged = search.staged === true || search.staged === 'true' ? true : search.staged === false || search.staged === 'false' ? false : undefined - }), + + return staged === undefined ? { path } : { path, staged } + }, component: FilePage, })