@sideid/id-profanity-filter 1.11.13 → 1.13.0
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/CONTRIBUTING.md +91 -129
- package/README.md +172 -447
- package/dist/index.d.ts +11 -6
- package/dist/index.esm.js +161 -180
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +161 -180
- package/dist/index.js.map +1 -1
- package/dist/types/core/matcher.d.ts +5 -5
- package/dist/types/index.d.ts +5 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/utils/ahoCorasick.d.ts +10 -0
- package/eslint.config.mjs +1 -0
- package/examples/advanced.ts +4 -1
- package/examples/custom-list.ts +3 -3
- package/package.json +9 -2
- package/rollup.config.mjs +5 -1
- package/src/constants/categories/sexual.ts +1 -1
- package/src/constants/regions/general.ts +3 -3
- package/src/constants/wordList.ts +0 -27
- package/src/core/filter.ts +58 -178
- package/src/core/matcher.ts +69 -43
- package/src/index.ts +8 -0
- package/src/types/index.ts +1 -11
- package/src/utils/ahoCorasick.ts +37 -0
- package/src/utils/regexUtils.ts +1 -2
- package/src/utils/similarityUtils.ts +0 -4
- package/test/matcher.test.ts +18 -0
- package/test/profanity-filter.test.ts +15 -0
- package/.eslintrc.js +0 -44
- package/src/constants/regions/ambon.ts +0 -0
- package/src/constants/regions/banjar.ts +0 -0
- package/src/constants/regions/bugis.ts +0 -0
- package/src/constants/regions/lampung.ts +0 -0
- package/src/constants/regions/manado.ts +0 -0
- package/src/constants/regions/ntb.ts +0 -0
- package/src/constants/regions/ntt.ts +0 -0
- package/src/constants/regions/palembang.ts +0 -0
- package/src/constants/regions/papua.ts +0 -0
package/CONTRIBUTING.md
CHANGED
|
@@ -1,151 +1,113 @@
|
|
|
1
|
-
# Panduan
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- `
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- `drugs.ts` - Kata-kata terkait narkoba
|
|
54
|
-
- `disgusting.ts` - Kata-kata menjijikkan
|
|
55
|
-
- `blasphemy.ts` - Kata-kata penistaan agama
|
|
56
|
-
|
|
57
|
-
## Cara Menambahkan Kata Kotor Baru
|
|
58
|
-
|
|
59
|
-
### 1. Menambahkan ke File Daerah
|
|
60
|
-
|
|
61
|
-
Pilih file daerah yang sesuai di `src/constants/regions/` atau buat file baru jika daerah tersebut belum ada. Format entri kata kotor harus mengikuti interface `ProfanityWord`:
|
|
1
|
+
# Panduan kontribusi
|
|
2
|
+
|
|
3
|
+
Panduan ini menjelaskan alur kerja untuk mengembangkan kode dan menambahkan kata baru ke dalam database kata kotor `id-profanity-filter`.
|
|
4
|
+
|
|
5
|
+
## Memulai pengembangan
|
|
6
|
+
|
|
7
|
+
1. Fork repositori ini ke akun GitHub Anda, lalu clone secara lokal:
|
|
8
|
+
```bash
|
|
9
|
+
git clone https://github.com/username/id-profanity-filter.git
|
|
10
|
+
cd id-profanity-filter
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Pasang dependensi:
|
|
14
|
+
```bash
|
|
15
|
+
bun install
|
|
16
|
+
# atau
|
|
17
|
+
npm install
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
3. Buat branch baru untuk fitur atau perbaikan Anda:
|
|
21
|
+
```bash
|
|
22
|
+
git checkout -b feature/tambah-kata-daerah
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Struktur data kata
|
|
26
|
+
|
|
27
|
+
Kata-kata kotor dalam proyek ini dikelompokkan ke dalam dua dimensi:
|
|
28
|
+
|
|
29
|
+
### 1. Berdasarkan daerah asal (`src/constants/regions/`)
|
|
30
|
+
File daerah saat ini mencakup:
|
|
31
|
+
- `general.ts`: kata umum nasional
|
|
32
|
+
- `jawa.ts`: bahasa Jawa
|
|
33
|
+
- `sunda.ts`: bahasa Sunda
|
|
34
|
+
- `betawi.ts`: dialek Betawi
|
|
35
|
+
- `batak.ts`: bahasa Batak
|
|
36
|
+
- `minang.ts`: bahasa Minang
|
|
37
|
+
- `bali.ts`: bahasa Bali
|
|
38
|
+
- `madura.ts`: bahasa Madura
|
|
39
|
+
- `aceh.ts`: bahasa Aceh
|
|
40
|
+
|
|
41
|
+
### 2. Berdasarkan kategori (`src/constants/categories/`)
|
|
42
|
+
- `sexual.ts`: istilah seksual vulgar
|
|
43
|
+
- `insult.ts`: hinaan dan caci maki
|
|
44
|
+
- `profanity.ts`: umpatan umum
|
|
45
|
+
- `slur.ts`: kata diskriminatif / pelecehan SARA
|
|
46
|
+
- `drugs.ts`: istilah narkoba
|
|
47
|
+
- `disgusting.ts`: hal jorok atau menjijikkan
|
|
48
|
+
- `blasphemy.ts`: penistaan agama
|
|
49
|
+
|
|
50
|
+
## Menambahkan kata kotor baru
|
|
51
|
+
|
|
52
|
+
Setiap entri kata kotor harus mengikuti interface `ProfanityWord`:
|
|
62
53
|
|
|
63
54
|
```typescript
|
|
64
55
|
{
|
|
65
|
-
word: '
|
|
66
|
-
category: 'insult',
|
|
67
|
-
region: '
|
|
68
|
-
severity: 0.7,
|
|
69
|
-
aliases: ['alias1', 'alias2'], // Variasi atau
|
|
70
|
-
description: '
|
|
71
|
-
context: 'Konteks
|
|
56
|
+
word: 'kata_dasar', // Kata kotor dalam bentuk dasar
|
|
57
|
+
category: 'insult', // Kategori kata
|
|
58
|
+
region: 'jawa', // Daerah asal kata
|
|
59
|
+
severity: 0.7, // Tingkat keparahan dari 0.0 sampai 1.0
|
|
60
|
+
aliases: ['alias1', 'alias2'], // Variasi penulisan atau singkatan lazim (opsional)
|
|
61
|
+
description: 'Penjelasan', // Arti kata (opsional)
|
|
62
|
+
context: 'Konteks kata' // Situasi penggunaan kata (opsional)
|
|
72
63
|
}
|
|
73
64
|
```
|
|
74
65
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
import { ProfanityWord } from '../../types';
|
|
79
|
-
|
|
80
|
-
export const bali: ProfanityWord[] = [
|
|
81
|
-
// ... kata-kata yang sudah ada
|
|
82
|
-
{
|
|
83
|
-
word: 'cicing',
|
|
84
|
-
category: 'profanity',
|
|
85
|
-
region: 'bali',
|
|
86
|
-
severity: 0.6,
|
|
87
|
-
aliases: ['cicying'],
|
|
88
|
-
description: 'Secara harfiah berarti anjing dalam Bahasa Bali',
|
|
89
|
-
context: 'Umpatan umum dalam Bahasa Bali'
|
|
90
|
-
},
|
|
91
|
-
// ... tambahkan kata lainnya
|
|
92
|
-
];
|
|
93
|
-
|
|
94
|
-
export const baliWords = bali.map(item => item.word);
|
|
95
|
-
|
|
96
|
-
export default bali;
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### 2. Menambahkan ke File Kategori (Opsional)
|
|
66
|
+
### Langkah penambahan kata
|
|
100
67
|
|
|
101
|
-
|
|
68
|
+
1. Tambahkan objek kata ke file daerah terkait di `src/constants/regions/<daerah>.ts`.
|
|
69
|
+
2. Jika kata termasuk ke kategori tertentu, pastikan kata juga tercatat di `src/constants/categories/<kategori>.ts`.
|
|
70
|
+
3. Pastikan kata didaftarkan pada `wordObjects` di `src/constants/wordList.ts` jika menambahkan file daerah baru.
|
|
102
71
|
|
|
103
|
-
|
|
72
|
+
## Pengujian dan build
|
|
104
73
|
|
|
105
|
-
|
|
106
|
-
- `src/constants/regions/index.ts`
|
|
107
|
-
- `src/constants/wordList.ts`
|
|
108
|
-
|
|
109
|
-
### 4. Jalankan Tes (jika ada)
|
|
74
|
+
Sebelum membuat pull request, jalankan pengujian dan linter untuk memastikan tidak ada regresi:
|
|
110
75
|
|
|
111
76
|
```bash
|
|
77
|
+
# Jalankan test suite
|
|
78
|
+
bun test
|
|
79
|
+
# atau
|
|
112
80
|
npm test
|
|
113
|
-
```
|
|
114
81
|
|
|
115
|
-
|
|
82
|
+
# Jalankan linter
|
|
83
|
+
bun run lint
|
|
84
|
+
# atau
|
|
85
|
+
npm run lint
|
|
116
86
|
|
|
117
|
-
|
|
87
|
+
# Pastikan build bundle berhasil
|
|
88
|
+
bun run build
|
|
89
|
+
# atau
|
|
118
90
|
npm run build
|
|
119
91
|
```
|
|
120
92
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
git add .
|
|
125
|
-
git commit -m "Menambahkan kata kotor daerah X"
|
|
126
|
-
git push origin add-kata-kotor-daerah
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### 7. Buat Pull Request
|
|
93
|
+
## Pedoman kurasi kata
|
|
130
94
|
|
|
131
|
-
|
|
95
|
+
- **Bentuk dasar**: Masukkan kata dalam bentuk dasar (tanpa imbuhan). Variasi ejaan dapat dimasukkan ke dalam `aliases`.
|
|
96
|
+
- **Hindari alias terlalu pendek yang ambigu**: Jangan menambahkan alias 1 atau 2 huruf jika kata tersebut merupakan kata umum atau singkatan lazim dalam bahasa Indonesia (misalnya `we`, `sl`, `cd`) untuk mencegah false positive.
|
|
97
|
+
- **Skor keparahan realistis**:
|
|
98
|
+
- `0.1 - 0.4`: Celaan ringan atau umpatan santai sehari-hari
|
|
99
|
+
- `0.5 - 0.7`: Hinaan kasar atau umpatan bernada marah
|
|
100
|
+
- `0.8 - 1.0`: Kata seksual vulgar eksplisit, penistaan, atau slur diskriminatif berat
|
|
101
|
+
- **Cek duplikasi**: Pastikan kata belum ada di file daerah lain sebelum menambahkan.
|
|
132
102
|
|
|
133
|
-
##
|
|
103
|
+
## Mengajukan perubahan
|
|
134
104
|
|
|
135
|
-
|
|
136
|
-
2. **Metadata**: Tambahkan metadata yang cukup, terutama tingkat keparahan dan kategori.
|
|
137
|
-
3. **Konteks**: Tambahkan komentar konteks jika diperlukan untuk menjelaskan kata tersebut.
|
|
138
|
-
4. **Bentuk Dasar**: Tambahkan kata dalam bentuk dasarnya, variasi dapat ditambahkan dalam `aliases`.
|
|
139
|
-
5. **Kategorisasi**: Kategorikan kata dengan benar (seksual, hinaan, umpatan, dll).
|
|
140
|
-
6. **Hindari Duplikasi**: Periksa apakah kata tersebut sudah ada sebelum menambahkannya.
|
|
105
|
+
Commit perubahan Anda dengan pesan yang jelas dan deskriptif:
|
|
141
106
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- `Fix: Memperbaiki bug pada ...`
|
|
148
|
-
|
|
149
|
-
## Informasi Tambahan
|
|
107
|
+
```bash
|
|
108
|
+
git add -A
|
|
109
|
+
git commit -m "feat(words): tambah kata kasar dari bahasa Jawa"
|
|
110
|
+
git push origin feature/tambah-kata-daerah
|
|
111
|
+
```
|
|
150
112
|
|
|
151
|
-
|
|
113
|
+
Lalu buat pull request ke branch `main` repositori utama dengan deskripsi kata apa saja yang ditambahkan beserta artinya.
|