website refactor

This commit is contained in:
2026-01-17 02:03:19 +01:00
parent 75ffe0798e
commit 6a49448e0a
18 changed files with 168 additions and 47 deletions

View File

@@ -42,7 +42,10 @@ export interface ParsedWizardParams {
}
export class SearchParamParser {
private static getParam(params: URLSearchParams | Record<string, string | string[] | undefined>, key: string): string | null {
private static getParam(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null, key: string): string | null {
if (!params) {
return null;
}
if (params instanceof URLSearchParams) {
return params.get(key);
}
@@ -54,7 +57,7 @@ export class SearchParamParser {
}
// Parse auth parameters
static parseAuth(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedAuthParams, string> {
static parseAuth(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedAuthParams, string> {
const errors: string[] = [];
const returnTo = this.getParam(params, 'returnTo');
@@ -95,7 +98,7 @@ export class SearchParamParser {
}
// Parse sponsor parameters
static parseSponsor(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedSponsorParams, string> {
static parseSponsor(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedSponsorParams, string> {
const errors: string[] = [];
const type = this.getParam(params, 'type');
@@ -117,7 +120,7 @@ export class SearchParamParser {
}
// Parse pagination parameters
static parsePagination(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedPaginationParams, string> {
static parsePagination(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedPaginationParams, string> {
const result: ParsedPaginationParams = {};
const errors: string[] = [];
@@ -157,7 +160,7 @@ export class SearchParamParser {
}
// Parse sorting parameters
static parseSorting(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedSortingParams, string> {
static parseSorting(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedSortingParams, string> {
const errors: string[] = [];
const order = this.getParam(params, 'order');
@@ -179,7 +182,7 @@ export class SearchParamParser {
}
// Parse filter parameters
static parseFilters(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedFilterParams, string> {
static parseFilters(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedFilterParams, string> {
return Result.ok({
status: this.getParam(params, 'status'),
role: this.getParam(params, 'role'),
@@ -188,14 +191,14 @@ export class SearchParamParser {
}
// Parse wizard parameters
static parseWizard(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<ParsedWizardParams, string> {
static parseWizard(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<ParsedWizardParams, string> {
return Result.ok({
step: this.getParam(params, 'step'),
});
}
// Parse all parameters at once
static parseAll(params: URLSearchParams | Record<string, string | string[] | undefined>): Result<
static parseAll(params: URLSearchParams | Record<string, string | string[] | undefined> | undefined | null): Result<
{
auth: ParsedAuthParams;
sponsor: ParsedSponsorParams;