|
|
@@ -2,14 +2,20 @@ import crypto from 'node:crypto';
|
|
|
|
|
|
import type { Handle, HandleServerError } from '@sveltejs/kit';
|
|
|
|
|
|
+import { resolve } from '$app/paths';
|
|
|
+
|
|
|
import {
|
|
|
isAppError,
|
|
|
logger as rootLogger,
|
|
|
+ NotFoundError,
|
|
|
runWithContext,
|
|
|
server,
|
|
|
serverLogger as log,
|
|
|
+ ValidationError,
|
|
|
} from '$lib/server';
|
|
|
|
|
|
+const WORKSPACE_RESOURCES = resolve('/api/workspaces');
|
|
|
+
|
|
|
const ready = server.init();
|
|
|
|
|
|
const shutdown = async (signal: string) => {
|
|
|
@@ -29,6 +35,22 @@ const handle: Handle = async ({ event, resolve: resolveRequest }) => {
|
|
|
event.locals.requestId = requestId;
|
|
|
|
|
|
return runWithContext({ requestId }, async () => {
|
|
|
+ const { pathname } = event.url;
|
|
|
+ if (pathname.startsWith(WORKSPACE_RESOURCES) && pathname !== WORKSPACE_RESOURCES) {
|
|
|
+ const workspaceId = event.params.workspaceId;
|
|
|
+ if (workspaceId === undefined) {
|
|
|
+ throw new ValidationError('Workspace ID is required');
|
|
|
+ }
|
|
|
+ const workspace = server.ws.list().find((ws) => ws.id === workspaceId);
|
|
|
+ if (!workspace) {
|
|
|
+ throw new NotFoundError('Workspace not found');
|
|
|
+ }
|
|
|
+ event.locals.workspaceId = workspaceId;
|
|
|
+ event.locals.workspace = workspace;
|
|
|
+ } else {
|
|
|
+ event.locals.workspaceId = event.cookies.get('workspaceId') || null;
|
|
|
+ }
|
|
|
+
|
|
|
return resolveRequest(event);
|
|
|
});
|
|
|
};
|