Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/rename-http-error.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/router': minor
---

feat: `ServerError` is now `HttpError` and `requestEvent.error()` is now `requestEvent.httpError()`; the old names still work but are deprecated.
4 changes: 2 additions & 2 deletions e2e/qwik-e2e/apps/e2e-library/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
useTask$,
} from '@qwik.dev/core';
import { getBasePathname, getRequestEvent, getRoutes, Link, server$ } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';

export interface Greeting {
greeting: string;
Expand Down Expand Up @@ -55,7 +55,7 @@ const readRequestPath = server$(function () {
});

const rejectRequest = server$(() => {
throw new ServerError(403, 'rejected by the library');
throw new HttpError(403, 'rejected by the library');
});

/** Reads the request and the route config through the library's own copy of the router. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { component$ } from '@qwik.dev/core';
import { routeLoader$, server$ } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';

export const serverError = server$(() => {
throw new ServerError(401, 'server-error-data');
throw new HttpError(401, 'server-error-data');
});

const useCatchServerErrorInLoader = routeLoader$(async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { server$ } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';
import { component$, useSignal, useVisibleTask$ } from '@qwik.dev/core';
import { delay } from '../../actions/login';

Expand All @@ -9,7 +9,7 @@ type ErrorReason = {
};

const serverFunctionA = server$(async function a(): Promise<string> {
throw new ServerError<ErrorReason>(401, {
throw new HttpError<ErrorReason>(401, {
reason: 'my error',
middleware: 'server-error-uncaught',
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { component$ } from '@qwik.dev/core';
import { routeLoader$, server$ } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';

export const serverError = server$(() => {
throw new ServerError(401, 'loader-error-data');
throw new HttpError(401, 'loader-error-data');
});

const useCatchServerErrorInLoader = routeLoader$(async () => {
try {
await serverError();
} catch (err: any) {
if (err instanceof ServerError && typeof err.data === 'string') {
if (err instanceof HttpError && typeof err.data === 'string') {
return err.data;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { component$, useSignal, useVisibleTask$ } from '@qwik.dev/core';
import { server$ } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';

const serverFunctionA = server$(async () => {
throw new ServerError(401, 1);
throw new HttpError(401, 1);
});

const serverFunctionB = server$(async () => {
throw new ServerError(500, 'error');
throw new HttpError(500, 'error');
});

export default component$(() => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { type RequestHandler } from '@qwik.dev/router';
import { ServerError } from '@qwik.dev/router/middleware/request-handler';
import { HttpError } from '@qwik.dev/router/middleware/request-handler';
import { isErrorReason } from './(common)/server-func/server-error';

export const onRequest: RequestHandler = async ({ next }) => {
try {
return await next();
} catch (err) {
// Intercept and update ServerErrors to test middleware
if (err instanceof ServerError) {
// Intercept and update HttpErrors to test middleware
if (err instanceof HttpError) {
// Update for (common)/server-func/server-error
if (isErrorReason(err.data)) {
err.data.middleware = 'server-error-caught';
Expand Down
2 changes: 1 addition & 1 deletion e2e/qwik-e2e/tests/external-library.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ test.describe('externalized qwik library', () => {
await expect(page.locator('#lib-routes')).toHaveText('true');
});

test('a ServerError thrown by the external library keeps its status', async ({ page }) => {
test('a HttpError thrown by the external library keeps its status', async ({ page }) => {
// The browser logs the 403 response, so this test does not assert a clean console.
await page.goto('/external-library/');

Expand Down
4 changes: 2 additions & 2 deletions e2e/qwik-e2e/tests/qwikrouter/loaders.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ test.describe('loaders', () => {
await expect(page.locator('#prop-unwrapped')).toHaveText('test');
});

test('should modify ServerError in middleware', async ({ page }) => {
test('should modify HttpError in middleware', async ({ page }) => {
const response = await page.goto('/qwikrouter-test/loaders/loader-error');
const contentType = await response?.headerValue('Content-Type');
const status = response?.status();
Expand All @@ -454,7 +454,7 @@ test.describe('loaders', () => {
await expect(body).toContainText('loader-error-caught');
});

test('should return html with uncaught ServerErrors thrown in loaders', async ({ page }) => {
test('should return html with uncaught HttpErrors thrown in loaders', async ({ page }) => {
const response = await page.goto('/qwikrouter-test/loaders/loader-error/uncaught-server');
const contentType = await response?.headerValue('Content-Type');
const status = response?.status();
Expand Down
6 changes: 3 additions & 3 deletions e2e/qwik-e2e/tests/qwikrouter/server.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,18 +118,18 @@ test.describe('server$', () => {

await expect(serverConfigContainer).toContainText('POST--MyCustomValue-GET--MyCustomValue');
});
test('should modify ServerError in middleware', async ({ page }) => {
test('should modify HttpError in middleware', async ({ page }) => {
await page.goto('/qwikrouter-test/server-func/server-error');
const serverConfigContainer = page.locator('#server-error');

await expect(serverConfigContainer).toContainText('my errorserver-error-caughtPOST');
});
test('should catch ServerError in routeLoader', async ({ page }) => {
test('should catch HttpError in routeLoader', async ({ page }) => {
await page.goto('/qwikrouter-test/server-func/server-error/loader');
const serverConfigContainer = page.locator('#server-error');
await expect(serverConfigContainer).toContainText('loader-error-data');
});
test('should allow primitive ServerError data', async ({ page }) => {
test('should allow primitive HttpError data', async ({ page }) => {
await page.goto('/qwikrouter-test/server-func/server-error/primitive');
const serverConfigContainer = page.locator('#server-error');
await expect(serverConfigContainer).toContainText('1error');
Expand Down
Loading
Loading