diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-05-22 12:27:54 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-06-06 22:20:17 -0400 |
| commit | 2cba0ada3cdf6b7ee37fa5c0b54134160be657a9 (patch) | |
| tree | 38f6b59f7c60eda90677bc178974f71c877afe0d /packages/backend/src/misc/render-inline-error.ts | |
| parent | render error cause in render-inline-error.ts (diff) | |
| download | sharkey-2cba0ada3cdf6b7ee37fa5c0b54134160be657a9.tar.gz sharkey-2cba0ada3cdf6b7ee37fa5c0b54134160be657a9.tar.bz2 sharkey-2cba0ada3cdf6b7ee37fa5c0b54134160be657a9.zip | |
more use of identifiable errors, improvements to inner error rendering, and more heuristics for is-retryable-error
Diffstat (limited to 'packages/backend/src/misc/render-inline-error.ts')
| -rw-r--r-- | packages/backend/src/misc/render-inline-error.ts | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/packages/backend/src/misc/render-inline-error.ts b/packages/backend/src/misc/render-inline-error.ts index 3d1bd7746d..ccd4f524bc 100644 --- a/packages/backend/src/misc/render-inline-error.ts +++ b/packages/backend/src/misc/render-inline-error.ts @@ -5,23 +5,35 @@ import { IdentifiableError } from '@/misc/identifiable-error.js'; import { StatusError } from '@/misc/status-error.js'; +import { CaptchaError } from '@/core/CaptchaService.js'; export function renderInlineError(err: unknown): string { - if (err instanceof Error) { - const text = printError(err); + const parts: string[] = []; + renderTo(err, parts); + return parts.join(''); +} - if (err.cause) { - const cause = renderInlineError(err.cause); - return `${text} [caused by]: ${cause}`; - } else { - return text; +function renderTo(err: unknown, parts: string[]): void { + parts.push(printError(err)); + + if (err instanceof AggregateError) { + for (let i = 0; i < err.errors.length; i++) { + parts.push(` [${i + 1}/${err.errors.length}]: `); + renderTo(err.errors[i], parts); } } - return String(err); + if (err instanceof Error) { + if (err.cause) { + parts.push(' [caused by]: '); + renderTo(err.cause, parts); + // const cause = renderInlineError(err.cause); + // parts.push(' [caused by]: ', cause); + } + } } -function printError(err: Error): string { +function printError(err: unknown): string { if (err instanceof IdentifiableError) { if (err.message) { return `${err.name} ${err.id}: ${err.message}`; @@ -40,9 +52,21 @@ function printError(err: Error): string { } } - if (err.message) { - return `${err.name}: ${err.message}`; - } else { - return err.name; + if (err instanceof CaptchaError) { + if (err.code.description) { + return `${err.name} ${err.code.description}: ${err.message}`; + } else { + return `${err.name}: ${err.message}`; + } + } + + if (err instanceof Error) { + if (err.message) { + return `${err.name}: ${err.message}`; + } else { + return err.name; + } } + + return String(err); } |