| export class HttpError { | |
| /** | |
| * @param {number} status | |
| * @param {{message: string} extends App.Error ? (App.Error | string | undefined) : App.Error} body | |
| */ | |
| constructor(status, body) { | |
| this.status = status; | |
| if (typeof body === 'string') { | |
| this.body = { message: body }; | |
| } else if (body) { | |
| this.body = body; | |
| } else { | |
| this.body = { message: `Error: ${status}` }; | |
| } | |
| } | |
| toString() { | |
| return JSON.stringify(this.body); | |
| } | |
| } | |
| export class Redirect { | |
| /** | |
| * @param {300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308} status | |
| * @param {string} location | |
| */ | |
| constructor(status, location) { | |
| this.status = status; | |
| this.location = location; | |
| } | |
| } | |
| /** | |
| * An error that was thrown from within the SvelteKit runtime that is not fatal and doesn't result in a 500, such as a 404. | |
| * `SvelteKitError` goes through `handleError`. | |
| * @extends Error | |
| */ | |
| export class SvelteKitError extends Error { | |
| /** | |
| * @param {number} status | |
| * @param {string} text | |
| * @param {string} message | |
| */ | |
| constructor(status, text, message) { | |
| super(message); | |
| this.status = status; | |
| this.text = text; | |
| } | |
| } | |
| /** | |
| * @template {Record<string, unknown> | undefined} [T=undefined] | |
| */ | |
| export class ActionFailure { | |
| /** | |
| * @param {number} status | |
| * @param {T} data | |
| */ | |
| constructor(status, data) { | |
| this.status = status; | |
| this.data = data; | |
| } | |
| } | |
| /** | |
| * This is a grotesque hack that, in dev, allows us to replace the implementations | |
| * of these classes that you'd get by importing them from `@sveltejs/kit` with the | |
| * ones that are imported via Vite and loaded internally, so that instanceof | |
| * checks work even though SvelteKit imports this module via Vite and consumers | |
| * import it via Node | |
| * @param {{ | |
| * ActionFailure: typeof ActionFailure; | |
| * HttpError: typeof HttpError; | |
| * Redirect: typeof Redirect; | |
| * SvelteKitError: typeof SvelteKitError; | |
| * }} implementations | |
| */ | |
| export function replace_implementations(implementations) { | |
| // @ts-expect-error | |
| ActionFailure = implementations.ActionFailure; // eslint-disable-line no-class-assign | |
| // @ts-expect-error | |
| HttpError = implementations.HttpError; // eslint-disable-line no-class-assign | |
| // @ts-expect-error | |
| Redirect = implementations.Redirect; // eslint-disable-line no-class-assign | |
| // @ts-expect-error | |
| SvelteKitError = implementations.SvelteKitError; // eslint-disable-line no-class-assign | |
| } | |