الواجهة البرمجية
كل الدوال تقبل string | null | undefined. النص الفارغ يُعد نظيفاً.
ts
import {
contains,
mask,
inspect,
explain,
createFilter,
blockedError,
PROFANITY_BLOCKED,
WORDLIST_STATS,
VERSION,
} from "anti-ttyah";contains(text)
true إذا وُجد تطابق بعد التطبيع.
mask(text)
يستبدل كل تطابق برمز التغطية. النمط الافتراضي يحافظ على الطول (****). بقية النص لا تتغيّر.
inspect(text)
ts
type Hit = {
start: number;
end: number;
raw: string;
lang?: "ar" | "ar-latn" | "fr" | "en" | "tz";
category?: "sexual" | "insult" | "slur" | "mild";
};
type InspectResult = { blocked: boolean; hits: Hit[] };الإزاحات نسبة إلى النص الأصلي.
explain(text)
مثل inspect مع صف لكل رمز. يُستخدم في التجربة المباشرة وفي npx anti-ttyah --explain.
blockedError(...fields)
يفحص نصوصاً أو مصفوفات أو كائنات سطحية ({ title, body }). يعيد { error: "PROFANITY_BLOCKED" } عند أول تطابق، وإلا null.
createFilter(options)
| الخيار | الافتراضي | الدور |
|---|---|---|
extraTerms | [] | كلمات إضافية |
extraPhrases | [] | عبارات إضافية |
allowlist | [] | استثناءات |
maskChar | "*" | أول محرف فقط |
maskStyle | "preserve" | "token" → ثلاثة رموز لكل تطابق |
matchSeparators | true | طي . * - _ ' داخل الكلمة |
categories | الكل | تقييد القائمة الافتراضية |
أسماء بديلة
containsProfanity → contains، maskProfanity → mask، profanityError → blockedError.