/** Normalize webhook paths into the canonical registry form used by route lookup. */
export function normalizeWebhookPath(raw: string): string { const trimmed = raw.trim(); if (!trimmed) { return"/";
} const withSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`; if (withSlash.length > 1 && withSlash.endsWith("/")) { return withSlash.slice(0, -1);
} return withSlash;
}
/** Resolve the effective webhook path from explicit path, URL, or default fallback. */
export function resolveWebhookPath(params: {
webhookPath?: string;
webhookUrl?: string;
defaultPath?: string | null;
}): string | null { const trimmedPath = params.webhookPath?.trim(); if (trimmedPath) { return normalizeWebhookPath(trimmedPath);
} if (params.webhookUrl?.trim()) { try { const parsed = new URL(params.webhookUrl); return normalizeWebhookPath(parsed.pathname || "/");
} catch { returnnull;
}
} return params.defaultPath ?? null;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.31Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.