chore: tighten lint rules and tests
This commit is contained in:
@@ -1,13 +1,21 @@
|
||||
const HANDLE_REGEX = /^[A-Za-z0-9_]{1,15}$/;
|
||||
|
||||
export function normalizeHandle(input?: string | null): string | null {
|
||||
const raw = (input ?? '').trim();
|
||||
if (!raw) return null;
|
||||
if (!raw) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const withoutAt = raw.startsWith('@') ? raw.slice(1) : raw;
|
||||
const handle = withoutAt.trim();
|
||||
if (!handle) return null;
|
||||
if (!handle) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// X/Twitter handles are traditionally max 15 chars; keep strict to avoid surprising queries.
|
||||
if (!/^[A-Za-z0-9_]{1,15}$/.test(handle)) return null;
|
||||
if (!HANDLE_REGEX.test(handle)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
@@ -16,7 +24,9 @@ export function mentionsQueryFromUserOption(userOption?: string | null): {
|
||||
query: string | null;
|
||||
error: string | null;
|
||||
} {
|
||||
if (typeof userOption === 'undefined') return { query: null, error: null };
|
||||
if (typeof userOption === 'undefined') {
|
||||
return { query: null, error: null };
|
||||
}
|
||||
|
||||
const handle = normalizeHandle(userOption);
|
||||
if (!handle) {
|
||||
|
||||
Reference in New Issue
Block a user