@sideid/id-profanity-filter 1.11.0 → 1.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +44 -44
- package/.github/workflows/release.yml +62 -0
- package/CONTRIBUTING.md +150 -150
- package/LICENSE +21 -21
- package/README.md +548 -548
- package/dist/index.d.ts +989 -0
- package/dist/index.esm.js +9 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +375 -57
- package/dist/types/types/index.d.ts +59 -0
- package/eslint.config.mjs +40 -40
- package/examples/advanced.ts +120 -120
- package/examples/basic.ts +71 -71
- package/examples/custom-list.ts +140 -140
- package/jest.config.mjs +10 -10
- package/package.json +2 -1
- package/prettierrc +6 -6
- package/rollup.config.mjs +40 -35
- package/src/constants/regions/general.ts +9 -0
- package/src/index.ts +15 -15
- package/tsconfig.json +115 -115
- package/.github/workflows/ci.yml +0 -0
- package/dist/constants/categories/index.d.ts +0 -9
- package/dist/constants/regions/index.d.ts +0 -8
- /package/dist/{config → types/config}/options.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/blasphemy.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/disgusting.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/drugs.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/insult.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/profanity.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/sexual.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/slur.d.ts +0 -0
- /package/dist/{constants → types/constants}/regions/batak.d.ts +0 -0
- /package/dist/{constants → types/constants}/regions/betawi.d.ts +0 -0
- /package/dist/{constants → types/constants}/regions/general.d.ts +0 -0
- /package/dist/{constants → types/constants}/regions/jawa.d.ts +0 -0
- /package/dist/{constants → types/constants}/regions/sunda.d.ts +0 -0
- /package/dist/{constants → types/constants}/wordList.d.ts +0 -0
- /package/dist/{core → types/core}/analyzer.d.ts +0 -0
- /package/dist/{core → types/core}/filter.d.ts +0 -0
- /package/dist/{core → types/core}/matcher.d.ts +0 -0
- /package/dist/{utils → types/utils}/ahoCorasick.d.ts +0 -0
- /package/dist/{utils → types/utils}/regexUtils.d.ts +0 -0
- /package/dist/{utils → types/utils}/similarityUtils.d.ts +0 -0
- /package/dist/{utils → types/utils}/stringUtils.d.ts +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -58,4 +58,993 @@ interface RegexOptions {
|
|
|
58
58
|
indonesianVariation?: boolean;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
declare function findProfanity(text: string, options?: FilterOptions): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Mencari kata kotor lengkap dengan metadata
|
|
64
|
+
*
|
|
65
|
+
* @param text Teks yang akan diperika
|
|
66
|
+
* @param options Opsi utnuk pencarian kata kotor
|
|
67
|
+
* @return Array dari objek kata kotor yang ditemukan
|
|
68
|
+
*/
|
|
69
|
+
declare function findProfanityWithMetadata(text: string, options?: FilterOptions): ProfanityWord[];
|
|
70
|
+
/**
|
|
71
|
+
* Mencari kategory kata kotor yang ada dalam teks
|
|
72
|
+
*
|
|
73
|
+
* @param matchDetails Hasil pencarian dari fingProfanityWithMetadata()
|
|
74
|
+
* @return Array kategori unik
|
|
75
|
+
*/
|
|
76
|
+
declare function findCategories(matchDetails: ProfanityWord[]): ProfanityCategory[];
|
|
77
|
+
/**
|
|
78
|
+
* Mencari region kata kotor yang ada dalam teks
|
|
79
|
+
*
|
|
80
|
+
* @param matchDetails Hasil pencarian dari fingProfanityWithMetadata()
|
|
81
|
+
* @return Array region unik
|
|
82
|
+
*/
|
|
83
|
+
declare function findRegions(matchDetails: ProfanityWord[]): Region[];
|
|
84
|
+
/**
|
|
85
|
+
* Menghitung tingkat keparahan kata kotor yang ditemukan
|
|
86
|
+
*
|
|
87
|
+
* @param matchDetails Hasil pencarian dari findProfanityWithMetadata()
|
|
88
|
+
* @return Skor keparahan dari 0-1
|
|
89
|
+
*/
|
|
90
|
+
declare function calculateSeverity(matchDetails: ProfanityWord[]): number;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Menyensor kata kotor dalam teks
|
|
94
|
+
*
|
|
95
|
+
* @param text Teks yang akan disensor
|
|
96
|
+
* @param options Opsi untuk filter
|
|
97
|
+
* @returns FilterResult dengan hasil filter
|
|
98
|
+
*/
|
|
99
|
+
declare function filter(text: string, options?: FilterOptions): FilterResult;
|
|
100
|
+
/**
|
|
101
|
+
* Memeriksa apakah teks mengandung kata kotor
|
|
102
|
+
*
|
|
103
|
+
* @param text Teks yang akan diperiksa
|
|
104
|
+
* @param options Opsi untuk pemeriksaan
|
|
105
|
+
* @returns Boolean apakah teks mengandung kata kotor
|
|
106
|
+
*/
|
|
107
|
+
declare function isProfane(text: string, options?: FilterOptions): boolean;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Menganalisis teks untuk kata kotor
|
|
111
|
+
*
|
|
112
|
+
* @param text Teks yang akan dianalisis
|
|
113
|
+
* @param options Opsi untuk analisis
|
|
114
|
+
* @return AnalysisResult dengan hasil analisis
|
|
115
|
+
*/
|
|
116
|
+
declare function analyze(text: string, options?: FilterOptions): AnalysisResult;
|
|
117
|
+
/**
|
|
118
|
+
* Menganalisis daftar teks dan ringkasan
|
|
119
|
+
*
|
|
120
|
+
* @param texts Daftar teks yang dianalisis
|
|
121
|
+
* @param options Opsi untuk analisis
|
|
122
|
+
* @return Objek dengan ringkasan analisis
|
|
123
|
+
*/
|
|
124
|
+
declare function batchAnalyze(texts: string[], options?: FilterOptions): {
|
|
125
|
+
totalTexts: number;
|
|
126
|
+
profaneTexts: number;
|
|
127
|
+
cleanTexts: number;
|
|
128
|
+
averageSeverity: number;
|
|
129
|
+
topCategories: ProfanityCategory[];
|
|
130
|
+
topRegions: Region[];
|
|
131
|
+
mostFrequentWords: Array<{
|
|
132
|
+
word: string;
|
|
133
|
+
count: number;
|
|
134
|
+
}>;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Menganalisis per-kalimat untuk melokalisasi kata kotor
|
|
138
|
+
*
|
|
139
|
+
* @param text Teks yang akan dianalisis per-kalimat
|
|
140
|
+
* @param options Opsi untuk analisis
|
|
141
|
+
* @returns Array hasil analisis per-kalimat
|
|
142
|
+
*/
|
|
143
|
+
declare function analyzeBySentence(text: string, options?: FilterOptions): Array<AnalysisResult & {
|
|
144
|
+
sentence: string;
|
|
145
|
+
}>;
|
|
146
|
+
/**
|
|
147
|
+
* Menganalisis teks untuk menemukan kata kotor pada konteks tertentu
|
|
148
|
+
*
|
|
149
|
+
* @param text Teks yang akan dianalisis
|
|
150
|
+
* @param contextWindowSize Ukuran konteks (jumlah kata) di sekitar kata kotor
|
|
151
|
+
* @param options Opsi untuk analisis
|
|
152
|
+
* @returns Konteks di dekat kata kotor
|
|
153
|
+
*/
|
|
154
|
+
declare function analyzeWithContext(text: string, contextWindowSize?: number, options?: FilterOptions): Array<{
|
|
155
|
+
word: string;
|
|
156
|
+
context: string;
|
|
157
|
+
position: {
|
|
158
|
+
start: number;
|
|
159
|
+
end: number;
|
|
160
|
+
};
|
|
161
|
+
}>;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Menyensor kata dengan karakter pengganti
|
|
165
|
+
*
|
|
166
|
+
* @param word Kata yang akan disensor
|
|
167
|
+
* @param replaceChar Karakter pengganti (default: '*')
|
|
168
|
+
* @param keepFirstAndLast Apakah harus menyimpan huruf pertama dan terakhir
|
|
169
|
+
* @returns Kata yang telah disensor
|
|
170
|
+
*/
|
|
171
|
+
declare function censorWord(word: string, replaceChar?: string, keepFirstAndLast?: boolean): string;
|
|
172
|
+
/**
|
|
173
|
+
* Menormalisasi string untuk keperluan pembandingan
|
|
174
|
+
*
|
|
175
|
+
* @param text Teks yang akan dinormalisasi
|
|
176
|
+
* @returns Teks yang telah dinormalisasi
|
|
177
|
+
*/
|
|
178
|
+
declare function normalizeText(text: string): string;
|
|
179
|
+
/**
|
|
180
|
+
* Mendeteksi apakah string berisi sebagian atau keseluruhan kata dalam wordList
|
|
181
|
+
*
|
|
182
|
+
* @param text Teks yang akan diperiksa
|
|
183
|
+
* @param wordList Daftar kata yang dicari
|
|
184
|
+
* @param checkSubstring Apakah harus memeriksa substring
|
|
185
|
+
* @returns Boolean apakah teks mengandung kata-kata dalam wordList
|
|
186
|
+
*/
|
|
187
|
+
declare function containsAnyWord(text: string, wordList: string[], checkSubstring?: boolean): boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Memerikasa apakah stirng merupakan kode untuk kata kotor
|
|
190
|
+
* (Menangkap kasus seperti disensor dengan titik atau garis: a**ing, b*bi, dll)
|
|
191
|
+
*
|
|
192
|
+
* @param text Teks yang akan diperika
|
|
193
|
+
* @param wordList daftar kata kotor
|
|
194
|
+
* @return Boolean apakah teks mengandung kata kotor
|
|
195
|
+
*/
|
|
196
|
+
declare function containsEuphemism(text: string, wordList: string[]): boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Mendeteksi upaya menghindari filter dengan pemisahan kata
|
|
199
|
+
* (Tangkap kasus seperti: a n j i n g, b-a-b-i, dll)
|
|
200
|
+
*
|
|
201
|
+
* @param text Teks yang akan diperiksa
|
|
202
|
+
* @param wordList Daftar kata kotor
|
|
203
|
+
* @returns Boolean apakah teks mengandung upaya menghindari filter
|
|
204
|
+
*/
|
|
205
|
+
declare function detectSplitWords(text: string, wordList: string[]): boolean;
|
|
206
|
+
declare function escapeRegExp(string: string): string;
|
|
207
|
+
/**
|
|
208
|
+
* Mengganti sebagian kata dengan masking
|
|
209
|
+
* (berguna untuk email, nomor telepon, dll)
|
|
210
|
+
*
|
|
211
|
+
* @param text Teks untuk dimasking
|
|
212
|
+
* @param visibleStart Jumlah karakter yang terlihat di awal
|
|
213
|
+
* @param visibleEnd Jumlah karakter yang terlihat di akhir
|
|
214
|
+
* @param maskChar Karakter masking
|
|
215
|
+
* @returns Teks yang telah dimasking
|
|
216
|
+
*/
|
|
217
|
+
declare function maskText(text: string, visibleStart?: number, visibleEnd?: number, maskChar?: string): string;
|
|
218
|
+
/**
|
|
219
|
+
* menguabh sting menjadi bentuk leet speak
|
|
220
|
+
* (untuk testing filter bypass)
|
|
221
|
+
*
|
|
222
|
+
* @param text Teks yang akan diubah
|
|
223
|
+
* @return Teks yang telah diubah ke leet speak
|
|
224
|
+
*/
|
|
225
|
+
declare function toLeetSpeak(text: string): string;
|
|
226
|
+
/**
|
|
227
|
+
* memisahkan teks menajdi kelimat
|
|
228
|
+
*
|
|
229
|
+
* @param text Teks yang akan dipisahkan
|
|
230
|
+
* @return Array kalimat yang telah dipisahkan
|
|
231
|
+
*/
|
|
232
|
+
declare function splitIntoSentences(text: string): string[];
|
|
233
|
+
/**
|
|
234
|
+
* mengambil kata-kata di sekitar indeks tertentu
|
|
235
|
+
*
|
|
236
|
+
* @param text Teks yang akan diambil
|
|
237
|
+
* @param index Indeks dalam teks
|
|
238
|
+
* @param windowSize jumlah kata di sekitar indeks
|
|
239
|
+
* @return Kata-kata di sekitar indeks
|
|
240
|
+
*/
|
|
241
|
+
declare function getContextAroundIndex(text: string, index: number, windowSize?: number): string;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Membuat pola regex untuk mencocokkan kata
|
|
245
|
+
*
|
|
246
|
+
* @param word Kata yang akan dibuat pola regex-nya
|
|
247
|
+
* @param options Opsi untuk pembuatan regex
|
|
248
|
+
* @returns Objek RegExp
|
|
249
|
+
*/
|
|
250
|
+
declare function createWordRegex(word: string, options?: RegexOptions): RegExp;
|
|
251
|
+
/**
|
|
252
|
+
* Menambahkan variasi leet speak ke pola regex
|
|
253
|
+
*
|
|
254
|
+
* Contoh:
|
|
255
|
+
* - 'a' bisa jadi '4', '@'
|
|
256
|
+
* - 'i' bisa jadi '1', '!'
|
|
257
|
+
*
|
|
258
|
+
* @param pattern Pola regex asli
|
|
259
|
+
* @returns Pola regex dengan variasi leet speak
|
|
260
|
+
*/
|
|
261
|
+
declare function addLeetSpeakVariations(pattern: string): string;
|
|
262
|
+
/**
|
|
263
|
+
* Menambahkan kemungkinan split/pemisahan antar karakter
|
|
264
|
+
*
|
|
265
|
+
* @param pattern Pola regex asli
|
|
266
|
+
* @returns Pola regex dengan kemungkinan split
|
|
267
|
+
*/
|
|
268
|
+
declare function addSplitVariations(pattern: string): string;
|
|
269
|
+
/**
|
|
270
|
+
* Membuat regex untuk mencari kata dengan variasi spasi dan karakter penghubung
|
|
271
|
+
* Berguna untuk mendeteksi upaya menghindari filter dengan menambahkan spasi atau karakter lain
|
|
272
|
+
*
|
|
273
|
+
* @param word Kata yang akan dibuat pola regexnya
|
|
274
|
+
* @returns Objek RegExp
|
|
275
|
+
*/
|
|
276
|
+
declare function createEvasionRegex(word: string): RegExp;
|
|
277
|
+
/**
|
|
278
|
+
* Menambahkan variasi ejaan Bahasa Indonesia
|
|
279
|
+
*
|
|
280
|
+
* @param pattern Pola regex asli
|
|
281
|
+
* @returns Pola regex dengan variasi ejaan Bahasa Indonesia
|
|
282
|
+
*/
|
|
283
|
+
declare function addIndonesianVariations(pattern: string): string;
|
|
284
|
+
/**
|
|
285
|
+
* Membuat regex untuk mencocokkan kata dengan mempertimbangkan variasi ejaan Bahasa Indonesia
|
|
286
|
+
*
|
|
287
|
+
* @param word Kata yang akan dibuat pola regexnya
|
|
288
|
+
* @returns Objek RegExp
|
|
289
|
+
*/
|
|
290
|
+
declare function createIndonesianVariationRegex(word: string): RegExp;
|
|
291
|
+
/**
|
|
292
|
+
* Membuat regex untuk mencocokkan kata dengan konteks
|
|
293
|
+
*
|
|
294
|
+
* @param word Kata yang akan dibuat pola regexnya
|
|
295
|
+
* @param contextSize Jumlah kata konteks sebelum dan sesudah
|
|
296
|
+
* @returns Objek RegExp
|
|
297
|
+
*/
|
|
298
|
+
declare function createContextRegex(word: string, contextSize?: number): RegExp;
|
|
299
|
+
/**
|
|
300
|
+
* Membuat regex untuk mencocokkan variasi penulisan kata
|
|
301
|
+
*
|
|
302
|
+
* @param word Kata dasar
|
|
303
|
+
* @returns Objek RegExp untuk mencocokkan berbagai bentuk kata
|
|
304
|
+
*/
|
|
305
|
+
declare function createWordFormRegex(word: string): RegExp;
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Menghitung jarak Levenshtein antara dua string
|
|
309
|
+
* (Jumlah operasi insert, delete, atau replace untuk mengubah string1 menjadi string2)
|
|
310
|
+
*
|
|
311
|
+
* @param str1 String pertama
|
|
312
|
+
* @param str2 String kedua
|
|
313
|
+
* @returns Jarak Levenshtein
|
|
314
|
+
*/
|
|
315
|
+
declare function levenshteinDistance(str1: string, str2: string): number;
|
|
316
|
+
/**
|
|
317
|
+
* Menghitung tingkat kesamaan antara dua string
|
|
318
|
+
*
|
|
319
|
+
* @param str1 String pertama
|
|
320
|
+
* @param str2 String kedua
|
|
321
|
+
* @returns Nilai kesamaan (0-1, di mana 1 berarti identik)
|
|
322
|
+
*/
|
|
323
|
+
declare function stringSimilarity(str1: string, str2: string): number;
|
|
324
|
+
/**
|
|
325
|
+
* Mencari string yang paling mirip dari array
|
|
326
|
+
*
|
|
327
|
+
* @param target String target
|
|
328
|
+
* @param candidates Array string kandidat
|
|
329
|
+
* @param threshold Minimum kesamaan yang diterima (0-1)
|
|
330
|
+
* @returns String yang paling mirip atau null jika tidak ada yang di atas threshold
|
|
331
|
+
*/
|
|
332
|
+
declare function findMostSimilar(target: string, candidates: string[], threshold?: number): string | null;
|
|
333
|
+
/**
|
|
334
|
+
* Mencari string yang paling mirip dari array menggunakan Levenshtein distance
|
|
335
|
+
*
|
|
336
|
+
* @param target String target
|
|
337
|
+
* @param candidates Array string kandidat
|
|
338
|
+
* @param threshold Minimum kesamaan yang diterima (0-1)
|
|
339
|
+
* @param maxDistance Jarak Levenshtein maksimal yang diterima (default: 3)
|
|
340
|
+
* @returns String yang paling mirip atau null jika tidak ada yang di atas threshold
|
|
341
|
+
*/
|
|
342
|
+
declare function findMostSimilarWithLevenshtein(target: string, candidates: string[], threshold?: number, maxDistance?: number): string | null;
|
|
343
|
+
/**
|
|
344
|
+
* Cek apakah string mungkin merupakan variasi dari kata kotor
|
|
345
|
+
* menggunakan kesamaan string
|
|
346
|
+
*
|
|
347
|
+
* @param input String yang akan diperiksa
|
|
348
|
+
* @param profanityWords Daftar kata kotor
|
|
349
|
+
* @param threshold Batas minimum kesamaan (default: 0.75)
|
|
350
|
+
* @returns Array [Boolean (apakah variasi), String original (jika ditemukan)]
|
|
351
|
+
*/
|
|
352
|
+
declare function isPossibleProfanityVariation(input: string, profanityWords: string[], threshold?: number): [boolean, string | null];
|
|
353
|
+
/**
|
|
354
|
+
* Mengelompokkan kata berdasarkan kesamaan
|
|
355
|
+
*
|
|
356
|
+
* @param words Daftar kata
|
|
357
|
+
* @param threshold Batas minimum kesamaan (default: 0.8)
|
|
358
|
+
* @returns Array kluster kata yang mirip
|
|
359
|
+
*/
|
|
360
|
+
declare function clusterSimilarWords(words: string[], threshold?: number): string[][];
|
|
361
|
+
/**
|
|
362
|
+
* Cari kata-kata kotor yang mungkin dari teks menggunakan kesamaan string
|
|
363
|
+
* dengan optimasi untuk mengurangi kompleksitas
|
|
364
|
+
*
|
|
365
|
+
* @param text Teks yang akan diperiksa
|
|
366
|
+
* @param profanityWords Daftar kata kotor
|
|
367
|
+
* @param threshold Batas minimum kesamaan (default: 0.8)
|
|
368
|
+
* @returns Array kata yang mungkin merupakan kata kotor
|
|
369
|
+
*/
|
|
370
|
+
/**
|
|
371
|
+
* Cari kata-kata kotor yang mungkin dari teks berdasarkan kemiripan string
|
|
372
|
+
* dengan optimasi biar prosesnya nggak terlalu berat
|
|
373
|
+
*
|
|
374
|
+
* @param text Teks yang mau dicek
|
|
375
|
+
* @param profanityWords Daftar kata-kata kotor/kasar
|
|
376
|
+
* @param threshold Batas minimal kemiripan (default: 0.8)
|
|
377
|
+
* @returns Array kata yang kemungkinan kata kotor/kasar
|
|
378
|
+
*/
|
|
379
|
+
declare function findPossibleProfanityBySimiliarity(text: string, profanityWords: string[], threshold?: number): Array<{
|
|
380
|
+
word: string;
|
|
381
|
+
original: string;
|
|
382
|
+
similarity: number;
|
|
383
|
+
}>;
|
|
384
|
+
/**
|
|
385
|
+
* Cari kata-kata kotor yang mungkin dari teks menggunakan Levenshtein distance
|
|
386
|
+
*
|
|
387
|
+
* @param text Teks yang akan diperiksa
|
|
388
|
+
* @param profanityWords Daftar kata kotor
|
|
389
|
+
* @param threshold Batas minimum kesamaan (default: 0.8)
|
|
390
|
+
* @param maxDistance Jarak Levenshtein maksimal (default: 2)
|
|
391
|
+
* @returns Array kata yang mungkin merupakan kata kotor
|
|
392
|
+
*/
|
|
393
|
+
declare function findProfanityByLevenshteinDistance(text: string, profanityWords: string[], threshold?: number, maxDistance?: number): Array<{
|
|
394
|
+
word: string;
|
|
395
|
+
original: string;
|
|
396
|
+
similarity: number;
|
|
397
|
+
distance: number;
|
|
398
|
+
}>;
|
|
399
|
+
|
|
400
|
+
declare const DEFAULT_OPTIONS: FilterOptions;
|
|
401
|
+
declare const FILTER_PRESETS: {
|
|
402
|
+
strict: {
|
|
403
|
+
checkSubstring: boolean;
|
|
404
|
+
detectLeetSpeak: boolean;
|
|
405
|
+
severityThreshold: number;
|
|
406
|
+
replaceWith?: string;
|
|
407
|
+
fullWordCensor?: boolean;
|
|
408
|
+
wordList?: string[];
|
|
409
|
+
whitelist?: string[];
|
|
410
|
+
categories?: ProfanityCategory[];
|
|
411
|
+
regions?: Region[];
|
|
412
|
+
useRandomGrawlix?: boolean;
|
|
413
|
+
keepFirstAndLast?: boolean;
|
|
414
|
+
indonesianVariation?: boolean;
|
|
415
|
+
detectSimilarity?: boolean;
|
|
416
|
+
similarityThreshold?: number;
|
|
417
|
+
detectSplit?: boolean;
|
|
418
|
+
useLevenshtein?: boolean;
|
|
419
|
+
maxLevenshteinDistance?: number;
|
|
420
|
+
};
|
|
421
|
+
moderate: {
|
|
422
|
+
severityThreshold: number;
|
|
423
|
+
replaceWith?: string;
|
|
424
|
+
fullWordCensor?: boolean;
|
|
425
|
+
detectLeetSpeak?: boolean;
|
|
426
|
+
checkSubstring?: boolean;
|
|
427
|
+
wordList?: string[];
|
|
428
|
+
whitelist?: string[];
|
|
429
|
+
categories?: ProfanityCategory[];
|
|
430
|
+
regions?: Region[];
|
|
431
|
+
useRandomGrawlix?: boolean;
|
|
432
|
+
keepFirstAndLast?: boolean;
|
|
433
|
+
indonesianVariation?: boolean;
|
|
434
|
+
detectSimilarity?: boolean;
|
|
435
|
+
similarityThreshold?: number;
|
|
436
|
+
detectSplit?: boolean;
|
|
437
|
+
useLevenshtein?: boolean;
|
|
438
|
+
maxLevenshteinDistance?: number;
|
|
439
|
+
};
|
|
440
|
+
light: {
|
|
441
|
+
severityThreshold: number;
|
|
442
|
+
categories: ProfanityCategory[];
|
|
443
|
+
replaceWith?: string;
|
|
444
|
+
fullWordCensor?: boolean;
|
|
445
|
+
detectLeetSpeak?: boolean;
|
|
446
|
+
checkSubstring?: boolean;
|
|
447
|
+
wordList?: string[];
|
|
448
|
+
whitelist?: string[];
|
|
449
|
+
regions?: Region[];
|
|
450
|
+
useRandomGrawlix?: boolean;
|
|
451
|
+
keepFirstAndLast?: boolean;
|
|
452
|
+
indonesianVariation?: boolean;
|
|
453
|
+
detectSimilarity?: boolean;
|
|
454
|
+
similarityThreshold?: number;
|
|
455
|
+
detectSplit?: boolean;
|
|
456
|
+
useLevenshtein?: boolean;
|
|
457
|
+
maxLevenshteinDistance?: number;
|
|
458
|
+
};
|
|
459
|
+
childSafe: {
|
|
460
|
+
checkSubstring: boolean;
|
|
461
|
+
detectLeetSpeak: boolean;
|
|
462
|
+
fullWordCensor: boolean;
|
|
463
|
+
severityThreshold: number;
|
|
464
|
+
replaceWith?: string;
|
|
465
|
+
wordList?: string[];
|
|
466
|
+
whitelist?: string[];
|
|
467
|
+
categories?: ProfanityCategory[];
|
|
468
|
+
regions?: Region[];
|
|
469
|
+
useRandomGrawlix?: boolean;
|
|
470
|
+
keepFirstAndLast?: boolean;
|
|
471
|
+
indonesianVariation?: boolean;
|
|
472
|
+
detectSimilarity?: boolean;
|
|
473
|
+
similarityThreshold?: number;
|
|
474
|
+
detectSplit?: boolean;
|
|
475
|
+
useLevenshtein?: boolean;
|
|
476
|
+
maxLevenshteinDistance?: number;
|
|
477
|
+
};
|
|
478
|
+
};
|
|
479
|
+
declare const CATEGORY_PRESETS: {
|
|
480
|
+
sexual: {
|
|
481
|
+
categories: ProfanityCategory[];
|
|
482
|
+
replaceWith?: string;
|
|
483
|
+
fullWordCensor?: boolean;
|
|
484
|
+
detectLeetSpeak?: boolean;
|
|
485
|
+
checkSubstring?: boolean;
|
|
486
|
+
wordList?: string[];
|
|
487
|
+
whitelist?: string[];
|
|
488
|
+
regions?: Region[];
|
|
489
|
+
severityThreshold?: number;
|
|
490
|
+
useRandomGrawlix?: boolean;
|
|
491
|
+
keepFirstAndLast?: boolean;
|
|
492
|
+
indonesianVariation?: boolean;
|
|
493
|
+
detectSimilarity?: boolean;
|
|
494
|
+
similarityThreshold?: number;
|
|
495
|
+
detectSplit?: boolean;
|
|
496
|
+
useLevenshtein?: boolean;
|
|
497
|
+
maxLevenshteinDistance?: number;
|
|
498
|
+
};
|
|
499
|
+
insults: {
|
|
500
|
+
categories: ProfanityCategory[];
|
|
501
|
+
replaceWith?: string;
|
|
502
|
+
fullWordCensor?: boolean;
|
|
503
|
+
detectLeetSpeak?: boolean;
|
|
504
|
+
checkSubstring?: boolean;
|
|
505
|
+
wordList?: string[];
|
|
506
|
+
whitelist?: string[];
|
|
507
|
+
regions?: Region[];
|
|
508
|
+
severityThreshold?: number;
|
|
509
|
+
useRandomGrawlix?: boolean;
|
|
510
|
+
keepFirstAndLast?: boolean;
|
|
511
|
+
indonesianVariation?: boolean;
|
|
512
|
+
detectSimilarity?: boolean;
|
|
513
|
+
similarityThreshold?: number;
|
|
514
|
+
detectSplit?: boolean;
|
|
515
|
+
useLevenshtein?: boolean;
|
|
516
|
+
maxLevenshteinDistance?: number;
|
|
517
|
+
};
|
|
518
|
+
profanity: {
|
|
519
|
+
categories: ProfanityCategory[];
|
|
520
|
+
replaceWith?: string;
|
|
521
|
+
fullWordCensor?: boolean;
|
|
522
|
+
detectLeetSpeak?: boolean;
|
|
523
|
+
checkSubstring?: boolean;
|
|
524
|
+
wordList?: string[];
|
|
525
|
+
whitelist?: string[];
|
|
526
|
+
regions?: Region[];
|
|
527
|
+
severityThreshold?: number;
|
|
528
|
+
useRandomGrawlix?: boolean;
|
|
529
|
+
keepFirstAndLast?: boolean;
|
|
530
|
+
indonesianVariation?: boolean;
|
|
531
|
+
detectSimilarity?: boolean;
|
|
532
|
+
similarityThreshold?: number;
|
|
533
|
+
detectSplit?: boolean;
|
|
534
|
+
useLevenshtein?: boolean;
|
|
535
|
+
maxLevenshteinDistance?: number;
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
declare const REGION_PRESETS: {
|
|
539
|
+
general: {
|
|
540
|
+
regions: Region[];
|
|
541
|
+
replaceWith?: string;
|
|
542
|
+
fullWordCensor?: boolean;
|
|
543
|
+
detectLeetSpeak?: boolean;
|
|
544
|
+
checkSubstring?: boolean;
|
|
545
|
+
wordList?: string[];
|
|
546
|
+
whitelist?: string[];
|
|
547
|
+
categories?: ProfanityCategory[];
|
|
548
|
+
severityThreshold?: number;
|
|
549
|
+
useRandomGrawlix?: boolean;
|
|
550
|
+
keepFirstAndLast?: boolean;
|
|
551
|
+
indonesianVariation?: boolean;
|
|
552
|
+
detectSimilarity?: boolean;
|
|
553
|
+
similarityThreshold?: number;
|
|
554
|
+
detectSplit?: boolean;
|
|
555
|
+
useLevenshtein?: boolean;
|
|
556
|
+
maxLevenshteinDistance?: number;
|
|
557
|
+
};
|
|
558
|
+
jawa: {
|
|
559
|
+
regions: Region[];
|
|
560
|
+
replaceWith?: string;
|
|
561
|
+
fullWordCensor?: boolean;
|
|
562
|
+
detectLeetSpeak?: boolean;
|
|
563
|
+
checkSubstring?: boolean;
|
|
564
|
+
wordList?: string[];
|
|
565
|
+
whitelist?: string[];
|
|
566
|
+
categories?: ProfanityCategory[];
|
|
567
|
+
severityThreshold?: number;
|
|
568
|
+
useRandomGrawlix?: boolean;
|
|
569
|
+
keepFirstAndLast?: boolean;
|
|
570
|
+
indonesianVariation?: boolean;
|
|
571
|
+
detectSimilarity?: boolean;
|
|
572
|
+
similarityThreshold?: number;
|
|
573
|
+
detectSplit?: boolean;
|
|
574
|
+
useLevenshtein?: boolean;
|
|
575
|
+
maxLevenshteinDistance?: number;
|
|
576
|
+
};
|
|
577
|
+
sunda: {
|
|
578
|
+
regions: Region[];
|
|
579
|
+
replaceWith?: string;
|
|
580
|
+
fullWordCensor?: boolean;
|
|
581
|
+
detectLeetSpeak?: boolean;
|
|
582
|
+
checkSubstring?: boolean;
|
|
583
|
+
wordList?: string[];
|
|
584
|
+
whitelist?: string[];
|
|
585
|
+
categories?: ProfanityCategory[];
|
|
586
|
+
severityThreshold?: number;
|
|
587
|
+
useRandomGrawlix?: boolean;
|
|
588
|
+
keepFirstAndLast?: boolean;
|
|
589
|
+
indonesianVariation?: boolean;
|
|
590
|
+
detectSimilarity?: boolean;
|
|
591
|
+
similarityThreshold?: number;
|
|
592
|
+
detectSplit?: boolean;
|
|
593
|
+
useLevenshtein?: boolean;
|
|
594
|
+
maxLevenshteinDistance?: number;
|
|
595
|
+
};
|
|
596
|
+
betawi: {
|
|
597
|
+
regions: Region[];
|
|
598
|
+
replaceWith?: string;
|
|
599
|
+
fullWordCensor?: boolean;
|
|
600
|
+
detectLeetSpeak?: boolean;
|
|
601
|
+
checkSubstring?: boolean;
|
|
602
|
+
wordList?: string[];
|
|
603
|
+
whitelist?: string[];
|
|
604
|
+
categories?: ProfanityCategory[];
|
|
605
|
+
severityThreshold?: number;
|
|
606
|
+
useRandomGrawlix?: boolean;
|
|
607
|
+
keepFirstAndLast?: boolean;
|
|
608
|
+
indonesianVariation?: boolean;
|
|
609
|
+
detectSimilarity?: boolean;
|
|
610
|
+
similarityThreshold?: number;
|
|
611
|
+
detectSplit?: boolean;
|
|
612
|
+
useLevenshtein?: boolean;
|
|
613
|
+
maxLevenshteinDistance?: number;
|
|
614
|
+
};
|
|
615
|
+
batak: {
|
|
616
|
+
regions: Region[];
|
|
617
|
+
replaceWith?: string;
|
|
618
|
+
fullWordCensor?: boolean;
|
|
619
|
+
detectLeetSpeak?: boolean;
|
|
620
|
+
checkSubstring?: boolean;
|
|
621
|
+
wordList?: string[];
|
|
622
|
+
whitelist?: string[];
|
|
623
|
+
categories?: ProfanityCategory[];
|
|
624
|
+
severityThreshold?: number;
|
|
625
|
+
useRandomGrawlix?: boolean;
|
|
626
|
+
keepFirstAndLast?: boolean;
|
|
627
|
+
indonesianVariation?: boolean;
|
|
628
|
+
detectSimilarity?: boolean;
|
|
629
|
+
similarityThreshold?: number;
|
|
630
|
+
detectSplit?: boolean;
|
|
631
|
+
useLevenshtein?: boolean;
|
|
632
|
+
maxLevenshteinDistance?: number;
|
|
633
|
+
};
|
|
634
|
+
};
|
|
635
|
+
declare const REPLACEMENT_CHARS: {
|
|
636
|
+
asterisk: string;
|
|
637
|
+
hash: string;
|
|
638
|
+
dollar: string;
|
|
639
|
+
at: string;
|
|
640
|
+
percent: string;
|
|
641
|
+
underscore: string;
|
|
642
|
+
dash: string;
|
|
643
|
+
dot: string;
|
|
644
|
+
grawlix: string;
|
|
645
|
+
};
|
|
646
|
+
/**
|
|
647
|
+
* Membuat opsi custom dengan menggabungkan dengan default
|
|
648
|
+
*
|
|
649
|
+
* @param options Opsi yang akan digabungkan dengan default
|
|
650
|
+
* @returns Opsi yang sudah digabungkan
|
|
651
|
+
*/
|
|
652
|
+
declare function createOptions(options?: Partial<FilterOptions>): FilterOptions;
|
|
653
|
+
/**
|
|
654
|
+
* Mendapatkan opsi dari preset yang ada
|
|
655
|
+
*
|
|
656
|
+
* @param presetName Nama preset filter, kategori, atau region
|
|
657
|
+
* @param additionalOptions Opsi tambahan untuk mengganti preset
|
|
658
|
+
* @returns Opsi yang sudah digabungkan
|
|
659
|
+
*/
|
|
660
|
+
declare function getPresetOptions(presetName: string, additionalOptions?: Partial<FilterOptions>): FilterOptions;
|
|
661
|
+
/**
|
|
662
|
+
* Mendapatkan karakter pengganti
|
|
663
|
+
*
|
|
664
|
+
* @param type Tipe karakter pengganti
|
|
665
|
+
* @returns Karakter pengganti
|
|
666
|
+
*/
|
|
667
|
+
declare function getReplacementChar(type?: keyof typeof REPLACEMENT_CHARS): string;
|
|
668
|
+
/**
|
|
669
|
+
* Membuat karakter pengganti random dari grawlix
|
|
670
|
+
*
|
|
671
|
+
* @returns Karakter pengganti random
|
|
672
|
+
*/
|
|
673
|
+
declare function getRandomGrawlix(): string;
|
|
674
|
+
/**
|
|
675
|
+
* Membuat string pengganti untuk kata menggunakan grawlix random
|
|
676
|
+
*
|
|
677
|
+
* @param length Panjang string
|
|
678
|
+
* @returns String pengganti
|
|
679
|
+
*/
|
|
680
|
+
declare function makeRandomGrawlixString(length: number): string;
|
|
681
|
+
|
|
682
|
+
declare class IDProfanityFilter {
|
|
683
|
+
private options;
|
|
684
|
+
/**
|
|
685
|
+
* Membuat instance filter baru
|
|
686
|
+
* @param options Opsi untuk filter
|
|
687
|
+
*/
|
|
688
|
+
constructor(options?: FilterOptions);
|
|
689
|
+
/**
|
|
690
|
+
* Menyensor teks yang diberikan
|
|
691
|
+
* @param text Teks yang akan disensor
|
|
692
|
+
* @returns Hasil filter
|
|
693
|
+
*/
|
|
694
|
+
filter(text: string): FilterResult;
|
|
695
|
+
/**
|
|
696
|
+
* Memeriksa apakah teks mengandung kata kotor
|
|
697
|
+
* @param text Teks yang akan diperiksa
|
|
698
|
+
* @returns Boolean apakah teks mengandung kata kotor
|
|
699
|
+
*/
|
|
700
|
+
isProfane(text: string): boolean;
|
|
701
|
+
/**
|
|
702
|
+
* Menganalisis teks untuk kata kotor
|
|
703
|
+
* @param text Teks yang akan dianalisis
|
|
704
|
+
* @returns Hasil analisis
|
|
705
|
+
*/
|
|
706
|
+
analyze(text: string): AnalysisResult;
|
|
707
|
+
/**
|
|
708
|
+
* Menganalisis batch teks untuk kata kotor
|
|
709
|
+
* @param texts Array dari teks yang akan dianalisis
|
|
710
|
+
* @returns Hasil analisis batch
|
|
711
|
+
*/
|
|
712
|
+
batchAnalyze(texts: string[]): {
|
|
713
|
+
totalTexts: number;
|
|
714
|
+
profaneTexts: number;
|
|
715
|
+
cleanTexts: number;
|
|
716
|
+
averageSeverity: number;
|
|
717
|
+
topCategories: ProfanityCategory[];
|
|
718
|
+
topRegions: Region[];
|
|
719
|
+
mostFrequentWords: Array<{
|
|
720
|
+
word: string;
|
|
721
|
+
count: number;
|
|
722
|
+
}>;
|
|
723
|
+
};
|
|
724
|
+
/**
|
|
725
|
+
* Menganalisis teks per-kalimat
|
|
726
|
+
* @param text Teks yang akan dianalisis
|
|
727
|
+
* @returns Array hasil analisis per-kalimat
|
|
728
|
+
*/
|
|
729
|
+
analyzeBySentence(text: string): (AnalysisResult & {
|
|
730
|
+
sentence: string;
|
|
731
|
+
})[];
|
|
732
|
+
/**
|
|
733
|
+
* Menganalisis teks dengan konteks di sekitar kata kotor
|
|
734
|
+
* @param text Teks yang akan dianalisis
|
|
735
|
+
* @param contextWindowSize Jumlah kata konteks
|
|
736
|
+
* @returns Konteks di dekat kata kotor
|
|
737
|
+
*/
|
|
738
|
+
analyzeWithContext(text: string, contextWindowSize?: number): {
|
|
739
|
+
word: string;
|
|
740
|
+
context: string;
|
|
741
|
+
position: {
|
|
742
|
+
start: number;
|
|
743
|
+
end: number;
|
|
744
|
+
};
|
|
745
|
+
}[];
|
|
746
|
+
/**
|
|
747
|
+
* Mengubah opsi filter
|
|
748
|
+
* @param options Opsi baru untuk filter
|
|
749
|
+
*/
|
|
750
|
+
setOptions(options: Partial<FilterOptions>): void;
|
|
751
|
+
/**
|
|
752
|
+
* Menggunakan preset yang telah ditentukan
|
|
753
|
+
* @param presetName Nama preset yang akan digunakan
|
|
754
|
+
* @param additionalOptions Opsi tambahan untuk override
|
|
755
|
+
*/
|
|
756
|
+
usePreset(presetName: string, additionalOptions?: Partial<FilterOptions>): void;
|
|
757
|
+
/**
|
|
758
|
+
* Menetapkan daftar kata kustom
|
|
759
|
+
* @param wordList Daftar kata untuk digunakan
|
|
760
|
+
*/
|
|
761
|
+
setWordList(wordList: string[]): void;
|
|
762
|
+
/**
|
|
763
|
+
* Menambahkan kata ke whitelist
|
|
764
|
+
* @param word Kata yang akan diabaikan
|
|
765
|
+
*/
|
|
766
|
+
addToWhitelist(word: string): void;
|
|
767
|
+
/**
|
|
768
|
+
* Menghapus kata dari whitelist
|
|
769
|
+
* @param word Kata yang akan dihapus dari whitelist
|
|
770
|
+
*/
|
|
771
|
+
removeFromWhitelist(word: string): void;
|
|
772
|
+
/**
|
|
773
|
+
* Mengaktifkan deteksi variasi ejaan Indonesia
|
|
774
|
+
*/
|
|
775
|
+
enableIndonesianVariations(): void;
|
|
776
|
+
/**
|
|
777
|
+
* Mengaktifkan deteksi kata yang dipisah
|
|
778
|
+
*/
|
|
779
|
+
enableSplitWordDetection(): void;
|
|
780
|
+
/**
|
|
781
|
+
* Mengaktifkan deteksi berdasarkan kesamaan
|
|
782
|
+
* @param threshold Threshold kesamaan (0-1)
|
|
783
|
+
* @param useLevenshtein Gunakan algoritma Levenshtein untuk deteksi
|
|
784
|
+
* @param maxLevenshteinDistance Jarak maksimal Levenshtein (default: 2)
|
|
785
|
+
*/
|
|
786
|
+
enableSimilarityDetection(threshold?: number, useLevenshtein?: boolean, maxLevenshteinDistance?: number): void;
|
|
787
|
+
/**
|
|
788
|
+
* Mengaktifkan deteksi berbasis Levenshtein distance
|
|
789
|
+
* @param threshold Threshold kesamaan (0-1)
|
|
790
|
+
* @param maxDistance Jarak maksimal Levenshtein (default: 2)
|
|
791
|
+
*/
|
|
792
|
+
enableLevenshteinDetection(threshold?: number, maxDistance?: number): void;
|
|
793
|
+
}
|
|
794
|
+
declare const idFilter: {
|
|
795
|
+
filter: (text: string, options?: FilterOptions) => FilterResult;
|
|
796
|
+
isProfane: (text: string, options?: FilterOptions) => boolean;
|
|
797
|
+
analyze: (text: string, options?: FilterOptions) => AnalysisResult;
|
|
798
|
+
batchAnalyze: (texts: string[], options?: FilterOptions) => {
|
|
799
|
+
totalTexts: number;
|
|
800
|
+
profaneTexts: number;
|
|
801
|
+
cleanTexts: number;
|
|
802
|
+
averageSeverity: number;
|
|
803
|
+
topCategories: ProfanityCategory[];
|
|
804
|
+
topRegions: Region[];
|
|
805
|
+
mostFrequentWords: Array<{
|
|
806
|
+
word: string;
|
|
807
|
+
count: number;
|
|
808
|
+
}>;
|
|
809
|
+
};
|
|
810
|
+
getPresetOptions: typeof getPresetOptions;
|
|
811
|
+
presets: {
|
|
812
|
+
filter: {
|
|
813
|
+
strict: {
|
|
814
|
+
checkSubstring: boolean;
|
|
815
|
+
detectLeetSpeak: boolean;
|
|
816
|
+
severityThreshold: number;
|
|
817
|
+
replaceWith?: string;
|
|
818
|
+
fullWordCensor?: boolean;
|
|
819
|
+
wordList?: string[];
|
|
820
|
+
whitelist?: string[];
|
|
821
|
+
categories?: ProfanityCategory[];
|
|
822
|
+
regions?: Region[];
|
|
823
|
+
useRandomGrawlix?: boolean;
|
|
824
|
+
keepFirstAndLast?: boolean;
|
|
825
|
+
indonesianVariation?: boolean;
|
|
826
|
+
detectSimilarity?: boolean;
|
|
827
|
+
similarityThreshold?: number;
|
|
828
|
+
detectSplit?: boolean;
|
|
829
|
+
useLevenshtein?: boolean;
|
|
830
|
+
maxLevenshteinDistance?: number;
|
|
831
|
+
};
|
|
832
|
+
moderate: {
|
|
833
|
+
severityThreshold: number;
|
|
834
|
+
replaceWith?: string;
|
|
835
|
+
fullWordCensor?: boolean;
|
|
836
|
+
detectLeetSpeak?: boolean;
|
|
837
|
+
checkSubstring?: boolean;
|
|
838
|
+
wordList?: string[];
|
|
839
|
+
whitelist?: string[];
|
|
840
|
+
categories?: ProfanityCategory[];
|
|
841
|
+
regions?: Region[];
|
|
842
|
+
useRandomGrawlix?: boolean;
|
|
843
|
+
keepFirstAndLast?: boolean;
|
|
844
|
+
indonesianVariation?: boolean;
|
|
845
|
+
detectSimilarity?: boolean;
|
|
846
|
+
similarityThreshold?: number;
|
|
847
|
+
detectSplit?: boolean;
|
|
848
|
+
useLevenshtein?: boolean;
|
|
849
|
+
maxLevenshteinDistance?: number;
|
|
850
|
+
};
|
|
851
|
+
light: {
|
|
852
|
+
severityThreshold: number;
|
|
853
|
+
categories: ProfanityCategory[];
|
|
854
|
+
replaceWith?: string;
|
|
855
|
+
fullWordCensor?: boolean;
|
|
856
|
+
detectLeetSpeak?: boolean;
|
|
857
|
+
checkSubstring?: boolean;
|
|
858
|
+
wordList?: string[];
|
|
859
|
+
whitelist?: string[];
|
|
860
|
+
regions?: Region[];
|
|
861
|
+
useRandomGrawlix?: boolean;
|
|
862
|
+
keepFirstAndLast?: boolean;
|
|
863
|
+
indonesianVariation?: boolean;
|
|
864
|
+
detectSimilarity?: boolean;
|
|
865
|
+
similarityThreshold?: number;
|
|
866
|
+
detectSplit?: boolean;
|
|
867
|
+
useLevenshtein?: boolean;
|
|
868
|
+
maxLevenshteinDistance?: number;
|
|
869
|
+
};
|
|
870
|
+
childSafe: {
|
|
871
|
+
checkSubstring: boolean;
|
|
872
|
+
detectLeetSpeak: boolean;
|
|
873
|
+
fullWordCensor: boolean;
|
|
874
|
+
severityThreshold: number;
|
|
875
|
+
replaceWith?: string;
|
|
876
|
+
wordList?: string[];
|
|
877
|
+
whitelist?: string[];
|
|
878
|
+
categories?: ProfanityCategory[];
|
|
879
|
+
regions?: Region[];
|
|
880
|
+
useRandomGrawlix?: boolean;
|
|
881
|
+
keepFirstAndLast?: boolean;
|
|
882
|
+
indonesianVariation?: boolean;
|
|
883
|
+
detectSimilarity?: boolean;
|
|
884
|
+
similarityThreshold?: number;
|
|
885
|
+
detectSplit?: boolean;
|
|
886
|
+
useLevenshtein?: boolean;
|
|
887
|
+
maxLevenshteinDistance?: number;
|
|
888
|
+
};
|
|
889
|
+
};
|
|
890
|
+
category: {
|
|
891
|
+
sexual: {
|
|
892
|
+
categories: ProfanityCategory[];
|
|
893
|
+
replaceWith?: string;
|
|
894
|
+
fullWordCensor?: boolean;
|
|
895
|
+
detectLeetSpeak?: boolean;
|
|
896
|
+
checkSubstring?: boolean;
|
|
897
|
+
wordList?: string[];
|
|
898
|
+
whitelist?: string[];
|
|
899
|
+
regions?: Region[];
|
|
900
|
+
severityThreshold?: number;
|
|
901
|
+
useRandomGrawlix?: boolean;
|
|
902
|
+
keepFirstAndLast?: boolean;
|
|
903
|
+
indonesianVariation?: boolean;
|
|
904
|
+
detectSimilarity?: boolean;
|
|
905
|
+
similarityThreshold?: number;
|
|
906
|
+
detectSplit?: boolean;
|
|
907
|
+
useLevenshtein?: boolean;
|
|
908
|
+
maxLevenshteinDistance?: number;
|
|
909
|
+
};
|
|
910
|
+
insults: {
|
|
911
|
+
categories: ProfanityCategory[];
|
|
912
|
+
replaceWith?: string;
|
|
913
|
+
fullWordCensor?: boolean;
|
|
914
|
+
detectLeetSpeak?: boolean;
|
|
915
|
+
checkSubstring?: boolean;
|
|
916
|
+
wordList?: string[];
|
|
917
|
+
whitelist?: string[];
|
|
918
|
+
regions?: Region[];
|
|
919
|
+
severityThreshold?: number;
|
|
920
|
+
useRandomGrawlix?: boolean;
|
|
921
|
+
keepFirstAndLast?: boolean;
|
|
922
|
+
indonesianVariation?: boolean;
|
|
923
|
+
detectSimilarity?: boolean;
|
|
924
|
+
similarityThreshold?: number;
|
|
925
|
+
detectSplit?: boolean;
|
|
926
|
+
useLevenshtein?: boolean;
|
|
927
|
+
maxLevenshteinDistance?: number;
|
|
928
|
+
};
|
|
929
|
+
profanity: {
|
|
930
|
+
categories: ProfanityCategory[];
|
|
931
|
+
replaceWith?: string;
|
|
932
|
+
fullWordCensor?: boolean;
|
|
933
|
+
detectLeetSpeak?: boolean;
|
|
934
|
+
checkSubstring?: boolean;
|
|
935
|
+
wordList?: string[];
|
|
936
|
+
whitelist?: string[];
|
|
937
|
+
regions?: Region[];
|
|
938
|
+
severityThreshold?: number;
|
|
939
|
+
useRandomGrawlix?: boolean;
|
|
940
|
+
keepFirstAndLast?: boolean;
|
|
941
|
+
indonesianVariation?: boolean;
|
|
942
|
+
detectSimilarity?: boolean;
|
|
943
|
+
similarityThreshold?: number;
|
|
944
|
+
detectSplit?: boolean;
|
|
945
|
+
useLevenshtein?: boolean;
|
|
946
|
+
maxLevenshteinDistance?: number;
|
|
947
|
+
};
|
|
948
|
+
};
|
|
949
|
+
region: {
|
|
950
|
+
general: {
|
|
951
|
+
regions: Region[];
|
|
952
|
+
replaceWith?: string;
|
|
953
|
+
fullWordCensor?: boolean;
|
|
954
|
+
detectLeetSpeak?: boolean;
|
|
955
|
+
checkSubstring?: boolean;
|
|
956
|
+
wordList?: string[];
|
|
957
|
+
whitelist?: string[];
|
|
958
|
+
categories?: ProfanityCategory[];
|
|
959
|
+
severityThreshold?: number;
|
|
960
|
+
useRandomGrawlix?: boolean;
|
|
961
|
+
keepFirstAndLast?: boolean;
|
|
962
|
+
indonesianVariation?: boolean;
|
|
963
|
+
detectSimilarity?: boolean;
|
|
964
|
+
similarityThreshold?: number;
|
|
965
|
+
detectSplit?: boolean;
|
|
966
|
+
useLevenshtein?: boolean;
|
|
967
|
+
maxLevenshteinDistance?: number;
|
|
968
|
+
};
|
|
969
|
+
jawa: {
|
|
970
|
+
regions: Region[];
|
|
971
|
+
replaceWith?: string;
|
|
972
|
+
fullWordCensor?: boolean;
|
|
973
|
+
detectLeetSpeak?: boolean;
|
|
974
|
+
checkSubstring?: boolean;
|
|
975
|
+
wordList?: string[];
|
|
976
|
+
whitelist?: string[];
|
|
977
|
+
categories?: ProfanityCategory[];
|
|
978
|
+
severityThreshold?: number;
|
|
979
|
+
useRandomGrawlix?: boolean;
|
|
980
|
+
keepFirstAndLast?: boolean;
|
|
981
|
+
indonesianVariation?: boolean;
|
|
982
|
+
detectSimilarity?: boolean;
|
|
983
|
+
similarityThreshold?: number;
|
|
984
|
+
detectSplit?: boolean;
|
|
985
|
+
useLevenshtein?: boolean;
|
|
986
|
+
maxLevenshteinDistance?: number;
|
|
987
|
+
};
|
|
988
|
+
sunda: {
|
|
989
|
+
regions: Region[];
|
|
990
|
+
replaceWith?: string;
|
|
991
|
+
fullWordCensor?: boolean;
|
|
992
|
+
detectLeetSpeak?: boolean;
|
|
993
|
+
checkSubstring?: boolean;
|
|
994
|
+
wordList?: string[];
|
|
995
|
+
whitelist?: string[];
|
|
996
|
+
categories?: ProfanityCategory[];
|
|
997
|
+
severityThreshold?: number;
|
|
998
|
+
useRandomGrawlix?: boolean;
|
|
999
|
+
keepFirstAndLast?: boolean;
|
|
1000
|
+
indonesianVariation?: boolean;
|
|
1001
|
+
detectSimilarity?: boolean;
|
|
1002
|
+
similarityThreshold?: number;
|
|
1003
|
+
detectSplit?: boolean;
|
|
1004
|
+
useLevenshtein?: boolean;
|
|
1005
|
+
maxLevenshteinDistance?: number;
|
|
1006
|
+
};
|
|
1007
|
+
betawi: {
|
|
1008
|
+
regions: Region[];
|
|
1009
|
+
replaceWith?: string;
|
|
1010
|
+
fullWordCensor?: boolean;
|
|
1011
|
+
detectLeetSpeak?: boolean;
|
|
1012
|
+
checkSubstring?: boolean;
|
|
1013
|
+
wordList?: string[];
|
|
1014
|
+
whitelist?: string[];
|
|
1015
|
+
categories?: ProfanityCategory[];
|
|
1016
|
+
severityThreshold?: number;
|
|
1017
|
+
useRandomGrawlix?: boolean;
|
|
1018
|
+
keepFirstAndLast?: boolean;
|
|
1019
|
+
indonesianVariation?: boolean;
|
|
1020
|
+
detectSimilarity?: boolean;
|
|
1021
|
+
similarityThreshold?: number;
|
|
1022
|
+
detectSplit?: boolean;
|
|
1023
|
+
useLevenshtein?: boolean;
|
|
1024
|
+
maxLevenshteinDistance?: number;
|
|
1025
|
+
};
|
|
1026
|
+
batak: {
|
|
1027
|
+
regions: Region[];
|
|
1028
|
+
replaceWith?: string;
|
|
1029
|
+
fullWordCensor?: boolean;
|
|
1030
|
+
detectLeetSpeak?: boolean;
|
|
1031
|
+
checkSubstring?: boolean;
|
|
1032
|
+
wordList?: string[];
|
|
1033
|
+
whitelist?: string[];
|
|
1034
|
+
categories?: ProfanityCategory[];
|
|
1035
|
+
severityThreshold?: number;
|
|
1036
|
+
useRandomGrawlix?: boolean;
|
|
1037
|
+
keepFirstAndLast?: boolean;
|
|
1038
|
+
indonesianVariation?: boolean;
|
|
1039
|
+
detectSimilarity?: boolean;
|
|
1040
|
+
similarityThreshold?: number;
|
|
1041
|
+
detectSplit?: boolean;
|
|
1042
|
+
useLevenshtein?: boolean;
|
|
1043
|
+
maxLevenshteinDistance?: number;
|
|
1044
|
+
};
|
|
1045
|
+
};
|
|
1046
|
+
};
|
|
1047
|
+
};
|
|
1048
|
+
|
|
1049
|
+
export { CATEGORY_PRESETS, DEFAULT_OPTIONS, FILTER_PRESETS, IDProfanityFilter, REGION_PRESETS, REPLACEMENT_CHARS, addIndonesianVariations, addLeetSpeakVariations, addSplitVariations, analyze, analyzeBySentence, analyzeWithContext, batchAnalyze, calculateSeverity, censorWord, clusterSimilarWords, containsAnyWord, containsEuphemism, createContextRegex, createEvasionRegex, createIndonesianVariationRegex, createOptions, createWordFormRegex, createWordRegex, IDProfanityFilter as default, detectSplitWords, escapeRegExp, filter, findCategories, findMostSimilar, findMostSimilarWithLevenshtein, findPossibleProfanityBySimiliarity, findProfanity, findProfanityByLevenshteinDistance, findProfanityWithMetadata, findRegions, getContextAroundIndex, getPresetOptions, getRandomGrawlix, getReplacementChar, idFilter, isPossibleProfanityVariation, isProfane, levenshteinDistance, makeRandomGrawlixString, maskText, normalizeText, splitIntoSentences, stringSimilarity, toLeetSpeak };
|
|
61
1050
|
export type { AnalysisResult, FilterOptions, FilterResult, ProfanityCategory, ProfanityWord, RegexOptions, Region };
|