@sideid/id-profanity-filter 1.1.0 → 1.9.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/dist/config/options.d.ts +258 -0
- package/dist/constants/categories/insult.d.ts +1 -1
- package/dist/constants/categories/sexual.d.ts +1 -1
- package/dist/constants/regions/batak.d.ts +1 -1
- package/dist/constants/regions/betawi.d.ts +1 -1
- package/dist/constants/regions/general.d.ts +1 -1
- package/dist/constants/regions/jawa.d.ts +1 -1
- package/dist/constants/regions/sunda.d.ts +1 -1
- package/dist/constants/wordList.d.ts +1 -1
- package/dist/core/analyzer.d.ts +4 -4
- package/dist/core/filter.d.ts +1 -1
- package/dist/core/matcher.d.ts +5 -5
- package/dist/index.d.ts +30 -42
- package/dist/index.esm.js +1070 -432
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1101 -429
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +29 -41
- package/dist/utils/regexUtils.d.ts +64 -0
- package/dist/utils/similarityUtils.d.ts +57 -0
- package/dist/utils/stringUtils.d.ts +79 -0
- package/package.json +1 -1
- package/src/config/options.ts +178 -0
- package/src/constants/categories/index.ts +31 -31
- package/src/constants/categories/insult.ts +114 -114
- package/src/constants/categories/sexual.ts +99 -100
- package/src/constants/regions/batak.ts +17 -17
- package/src/constants/regions/betawi.ts +39 -39
- package/src/constants/regions/general.ts +111 -111
- package/src/constants/regions/index.ts +62 -62
- package/src/constants/regions/jawa.ts +102 -102
- package/src/constants/regions/sunda.ts +35 -35
- package/src/constants/wordList.ts +125 -125
- package/src/core/analyzer.ts +225 -204
- package/src/core/filter.ts +129 -129
- package/src/core/matcher.ts +259 -267
- package/src/index.ts +188 -133
- package/src/types/index.ts +88 -115
- package/src/utils/regexUtils.ts +203 -0
- package/src/utils/similarityUtils.ts +195 -0
- package/src/utils/stringUtils.ts +213 -0
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
import { ProfanityWord } from
|
|
2
|
-
|
|
3
|
-
import { sexual, sexualWords } from
|
|
4
|
-
import { insult, insultWords } from
|
|
5
|
-
// import { profanity, profanityWords } from './categories/profanity';
|
|
6
|
-
// import { slur, slurWords } from './categories/slur';
|
|
7
|
-
// import { drugs, drugsWords } from './categories/drugs';
|
|
8
|
-
// import { disgusting, disgustingWords } from './categories/disgusting';
|
|
9
|
-
// import { blasphemy, blasphemyWords } from './categories/blasphemy';
|
|
10
|
-
|
|
11
|
-
import { general, generalWords } from
|
|
12
|
-
import { jawa, jawaWords } from
|
|
13
|
-
import { sunda, sundaWords } from
|
|
14
|
-
import { betawi, betawiWords } from
|
|
15
|
-
import { batak, batakWords } from
|
|
16
|
-
// import { minang, minangWords } from './regions/minang';
|
|
17
|
-
// import { bali, baliWords } from './regions/bali';
|
|
18
|
-
// import { madura, maduraWords } from './regions/madura';
|
|
19
|
-
// import { bugis, bugisWords } from './regions/bugis';
|
|
20
|
-
// import { aceh, acehWords } from './regions/aceh';
|
|
21
|
-
// import { ambon, ambonWords } from './regions/ambon';
|
|
22
|
-
// import { papua, papuaWords } from './regions/papua';
|
|
23
|
-
// import { manado, manadoWords } from './regions/manado';
|
|
24
|
-
// import { banjar, banjarWords } from './regions/banjar';
|
|
25
|
-
// import { palembang, palembangWords } from './regions/palembang';
|
|
26
|
-
// import { lampung, lampungWords } from './regions/lampung';
|
|
27
|
-
// import { ntt, nttWords } from './regions/ntt';
|
|
28
|
-
// import { ntb, ntbWords } from './regions/ntb';
|
|
29
|
-
|
|
30
|
-
export const wordCategories = {
|
|
31
|
-
sexual: sexualWords,
|
|
32
|
-
insult: insultWords,
|
|
33
|
-
// profanity: profanityWords,
|
|
34
|
-
// slur: slurWords,
|
|
35
|
-
// drugs: drugsWords,
|
|
36
|
-
// disgusting: disgustingWords,
|
|
37
|
-
// blasphemy: blasphemyWords,
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export const wordRegions = {
|
|
41
|
-
general: generalWords,
|
|
42
|
-
jawa: jawaWords,
|
|
43
|
-
sunda: sundaWords,
|
|
44
|
-
betawi: betawiWords,
|
|
45
|
-
batak: batakWords,
|
|
46
|
-
// minang: minangWords,
|
|
47
|
-
// bali: baliWords,
|
|
48
|
-
// madura: maduraWords,
|
|
49
|
-
// bugis: bugisWords,
|
|
50
|
-
// aceh: acehWords,
|
|
51
|
-
// ambon: ambonWords,
|
|
52
|
-
// papua: papuaWords,
|
|
53
|
-
// manado: manadoWords,
|
|
54
|
-
// banjar: banjarWords,
|
|
55
|
-
// palembang: palembangWords,
|
|
56
|
-
// lampung: lampungWords,
|
|
57
|
-
// ntt: nttWords,
|
|
58
|
-
// ntb: ntbWords,
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export const wordObjects: ProfanityWord[] = [
|
|
62
|
-
...general,
|
|
63
|
-
...jawa,
|
|
64
|
-
...sunda,
|
|
65
|
-
...betawi,
|
|
66
|
-
...batak,
|
|
67
|
-
// ...minang,
|
|
68
|
-
// ...bali,
|
|
69
|
-
// ...madura,
|
|
70
|
-
// ...bugis,
|
|
71
|
-
// ...aceh,
|
|
72
|
-
// ...ambon,
|
|
73
|
-
// ...papua,
|
|
74
|
-
// ...manado,
|
|
75
|
-
// ...banjar,
|
|
76
|
-
// ...palembang,
|
|
77
|
-
// ...lampung,
|
|
78
|
-
// ...ntt,
|
|
79
|
-
// ...ntb,
|
|
80
|
-
];
|
|
81
|
-
|
|
82
|
-
export const allWords: string[] = wordObjects.map((item) => item.word);
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Kata-kata dengan tingkat keparahan tinggi (subset dari semua kata)
|
|
86
|
-
*/
|
|
87
|
-
export const severeWords: string[] = wordObjects
|
|
88
|
-
.filter((word) => word.severity >= 0.8)
|
|
89
|
-
.map((item) => item.word);
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Mencari kata berdasarkan kategori dan region
|
|
93
|
-
*
|
|
94
|
-
* @param category Kategori kata kotor
|
|
95
|
-
* @param region Daerah asal kata kotor
|
|
96
|
-
* @returns Array dari kata kotor
|
|
97
|
-
*/
|
|
98
|
-
export function getWordsByFilter(category?: string, region?: string): string[] {
|
|
99
|
-
return wordObjects
|
|
100
|
-
.filter((word) => {
|
|
101
|
-
const matchCategory = category ? word.category === category : true;
|
|
102
|
-
const matchRegion = region ? word.region === region : true;
|
|
103
|
-
return matchCategory && matchRegion;
|
|
104
|
-
})
|
|
105
|
-
.map((item) => item.word);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Mencari metadata lengkap untuk sebuah kata
|
|
110
|
-
*
|
|
111
|
-
* @param word Kata yang dicari
|
|
112
|
-
* @returns Objek ProfanityWord jika ditemukan, undefined jika tidak
|
|
113
|
-
*/
|
|
114
|
-
export function getWordMetadata(word: string): ProfanityWord | undefined {
|
|
115
|
-
return wordObjects.find(
|
|
116
|
-
(item) =>
|
|
117
|
-
item.word.toLowerCase() === word.toLowerCase() ||
|
|
118
|
-
(item.aliases &&
|
|
119
|
-
item.aliases.some(
|
|
120
|
-
(alias) => alias.toLowerCase() === word.toLowerCase(),
|
|
121
|
-
)),
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export default allWords;
|
|
1
|
+
import { ProfanityWord } from "../types";
|
|
2
|
+
|
|
3
|
+
import { sexual, sexualWords } from "./categories/sexual";
|
|
4
|
+
import { insult, insultWords } from "./categories/insult";
|
|
5
|
+
// import { profanity, profanityWords } from './categories/profanity';
|
|
6
|
+
// import { slur, slurWords } from './categories/slur';
|
|
7
|
+
// import { drugs, drugsWords } from './categories/drugs';
|
|
8
|
+
// import { disgusting, disgustingWords } from './categories/disgusting';
|
|
9
|
+
// import { blasphemy, blasphemyWords } from './categories/blasphemy';
|
|
10
|
+
|
|
11
|
+
import { general, generalWords } from "./regions/general";
|
|
12
|
+
import { jawa, jawaWords } from "./regions/jawa";
|
|
13
|
+
import { sunda, sundaWords } from "./regions/sunda";
|
|
14
|
+
import { betawi, betawiWords } from "./regions/betawi";
|
|
15
|
+
import { batak, batakWords } from "./regions/batak";
|
|
16
|
+
// import { minang, minangWords } from './regions/minang';
|
|
17
|
+
// import { bali, baliWords } from './regions/bali';
|
|
18
|
+
// import { madura, maduraWords } from './regions/madura';
|
|
19
|
+
// import { bugis, bugisWords } from './regions/bugis';
|
|
20
|
+
// import { aceh, acehWords } from './regions/aceh';
|
|
21
|
+
// import { ambon, ambonWords } from './regions/ambon';
|
|
22
|
+
// import { papua, papuaWords } from './regions/papua';
|
|
23
|
+
// import { manado, manadoWords } from './regions/manado';
|
|
24
|
+
// import { banjar, banjarWords } from './regions/banjar';
|
|
25
|
+
// import { palembang, palembangWords } from './regions/palembang';
|
|
26
|
+
// import { lampung, lampungWords } from './regions/lampung';
|
|
27
|
+
// import { ntt, nttWords } from './regions/ntt';
|
|
28
|
+
// import { ntb, ntbWords } from './regions/ntb';
|
|
29
|
+
|
|
30
|
+
export const wordCategories = {
|
|
31
|
+
sexual: sexualWords,
|
|
32
|
+
insult: insultWords,
|
|
33
|
+
// profanity: profanityWords,
|
|
34
|
+
// slur: slurWords,
|
|
35
|
+
// drugs: drugsWords,
|
|
36
|
+
// disgusting: disgustingWords,
|
|
37
|
+
// blasphemy: blasphemyWords,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const wordRegions = {
|
|
41
|
+
general: generalWords,
|
|
42
|
+
jawa: jawaWords,
|
|
43
|
+
sunda: sundaWords,
|
|
44
|
+
betawi: betawiWords,
|
|
45
|
+
batak: batakWords,
|
|
46
|
+
// minang: minangWords,
|
|
47
|
+
// bali: baliWords,
|
|
48
|
+
// madura: maduraWords,
|
|
49
|
+
// bugis: bugisWords,
|
|
50
|
+
// aceh: acehWords,
|
|
51
|
+
// ambon: ambonWords,
|
|
52
|
+
// papua: papuaWords,
|
|
53
|
+
// manado: manadoWords,
|
|
54
|
+
// banjar: banjarWords,
|
|
55
|
+
// palembang: palembangWords,
|
|
56
|
+
// lampung: lampungWords,
|
|
57
|
+
// ntt: nttWords,
|
|
58
|
+
// ntb: ntbWords,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const wordObjects: ProfanityWord[] = [
|
|
62
|
+
...general,
|
|
63
|
+
...jawa,
|
|
64
|
+
...sunda,
|
|
65
|
+
...betawi,
|
|
66
|
+
...batak,
|
|
67
|
+
// ...minang,
|
|
68
|
+
// ...bali,
|
|
69
|
+
// ...madura,
|
|
70
|
+
// ...bugis,
|
|
71
|
+
// ...aceh,
|
|
72
|
+
// ...ambon,
|
|
73
|
+
// ...papua,
|
|
74
|
+
// ...manado,
|
|
75
|
+
// ...banjar,
|
|
76
|
+
// ...palembang,
|
|
77
|
+
// ...lampung,
|
|
78
|
+
// ...ntt,
|
|
79
|
+
// ...ntb,
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
export const allWords: string[] = wordObjects.map((item) => item.word);
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Kata-kata dengan tingkat keparahan tinggi (subset dari semua kata)
|
|
86
|
+
*/
|
|
87
|
+
export const severeWords: string[] = wordObjects
|
|
88
|
+
.filter((word) => word.severity >= 0.8)
|
|
89
|
+
.map((item) => item.word);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Mencari kata berdasarkan kategori dan region
|
|
93
|
+
*
|
|
94
|
+
* @param category Kategori kata kotor
|
|
95
|
+
* @param region Daerah asal kata kotor
|
|
96
|
+
* @returns Array dari kata kotor
|
|
97
|
+
*/
|
|
98
|
+
export function getWordsByFilter(category?: string, region?: string): string[] {
|
|
99
|
+
return wordObjects
|
|
100
|
+
.filter((word) => {
|
|
101
|
+
const matchCategory = category ? word.category === category : true;
|
|
102
|
+
const matchRegion = region ? word.region === region : true;
|
|
103
|
+
return matchCategory && matchRegion;
|
|
104
|
+
})
|
|
105
|
+
.map((item) => item.word);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Mencari metadata lengkap untuk sebuah kata
|
|
110
|
+
*
|
|
111
|
+
* @param word Kata yang dicari
|
|
112
|
+
* @returns Objek ProfanityWord jika ditemukan, undefined jika tidak
|
|
113
|
+
*/
|
|
114
|
+
export function getWordMetadata(word: string): ProfanityWord | undefined {
|
|
115
|
+
return wordObjects.find(
|
|
116
|
+
(item) =>
|
|
117
|
+
item.word.toLowerCase() === word.toLowerCase() ||
|
|
118
|
+
(item.aliases &&
|
|
119
|
+
item.aliases.some(
|
|
120
|
+
(alias) => alias.toLowerCase() === word.toLowerCase(),
|
|
121
|
+
)),
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default allWords;
|