@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.
Files changed (38) hide show
  1. package/CONTRIBUTING.md +91 -129
  2. package/README.md +172 -447
  3. package/dist/index.d.ts +11 -6
  4. package/dist/index.esm.js +161 -180
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.js +161 -180
  7. package/dist/index.js.map +1 -1
  8. package/dist/types/core/matcher.d.ts +5 -5
  9. package/dist/types/index.d.ts +5 -0
  10. package/dist/types/types/index.d.ts +1 -1
  11. package/dist/types/utils/ahoCorasick.d.ts +10 -0
  12. package/eslint.config.mjs +1 -0
  13. package/examples/advanced.ts +4 -1
  14. package/examples/custom-list.ts +3 -3
  15. package/package.json +9 -2
  16. package/rollup.config.mjs +5 -1
  17. package/src/constants/categories/sexual.ts +1 -1
  18. package/src/constants/regions/general.ts +3 -3
  19. package/src/constants/wordList.ts +0 -27
  20. package/src/core/filter.ts +58 -178
  21. package/src/core/matcher.ts +69 -43
  22. package/src/index.ts +8 -0
  23. package/src/types/index.ts +1 -11
  24. package/src/utils/ahoCorasick.ts +37 -0
  25. package/src/utils/regexUtils.ts +1 -2
  26. package/src/utils/similarityUtils.ts +0 -4
  27. package/test/matcher.test.ts +18 -0
  28. package/test/profanity-filter.test.ts +15 -0
  29. package/.eslintrc.js +0 -44
  30. package/src/constants/regions/ambon.ts +0 -0
  31. package/src/constants/regions/banjar.ts +0 -0
  32. package/src/constants/regions/bugis.ts +0 -0
  33. package/src/constants/regions/lampung.ts +0 -0
  34. package/src/constants/regions/manado.ts +0 -0
  35. package/src/constants/regions/ntb.ts +0 -0
  36. package/src/constants/regions/ntt.ts +0 -0
  37. package/src/constants/regions/palembang.ts +0 -0
  38. package/src/constants/regions/papua.ts +0 -0
package/CONTRIBUTING.md CHANGED
@@ -1,151 +1,113 @@
1
- # Panduan Kontribusi untuk ID-Profanity-Filter
2
-
3
- Terima kasih telah mempertimbangkan untuk berkontribusi pada proyek ID-Profanity-Filter! Panduan ini akan menjelaskan proses kontribusi, terutama untuk menambahkan kata kotor baru ke dalam database.
4
-
5
- ## Cara Berkontribusi
6
-
7
- ### 1. Fork & Clone Repositori
8
-
9
- - Fork repositori ini ke akun GitHub Anda
10
- - Clone repositori fork Anda ke komputer lokal:
11
- ```bash
12
- git clone https://github.com/username/id-profanity-filter.git
13
- cd id-profanity-filter
14
- ```
15
-
16
- ### 2. Install Dependensi
17
-
18
- ```bash
19
- npm install
20
- ```
21
-
22
- ### 3. Buat Branch Baru
23
-
24
- ```bash
25
- git switch -c add-kata-kotor-daerah
26
- ```
27
-
28
- ## Struktur Kata Kotor
29
-
30
- Kata-kata kotor dalam proyek ini dikelompokkan berdasarkan dua dimensi:
31
-
32
- ### Berdasarkan Daerah Asal
33
-
34
- Lokasi file: `src/constants/regions/`
35
-
36
- Kata-kata dikelompokkan berdasarkan daerah asalnya di Indonesia, seperti:
37
- - `general.ts` - Kata-kata umum di Indonesia
38
- - `jawa.ts` - Kata-kata dari Jawa
39
- - `sunda.ts` - Kata-kata dari Sunda
40
- - `betawi.ts` - Kata-kata dari Betawi
41
- - `batak.ts` - Kata-kata dari Batak
42
- - ... dan daerah lainnya
43
-
44
- ### Berdasarkan Kategori
45
-
46
- Lokasi file: `src/constants/categories/`
47
-
48
- Kata-kata juga dikelompokkan berdasarkan jenisnya:
49
- - `sexual.ts` - Kata-kata berbau seksual
50
- - `insult.ts` - Kata-kata penghinaan
51
- - `profanity.ts` - Umpatan umum
52
- - `slur.ts` - Kata-kata merendahkan berdasarkan identitas
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: 'kata_kotor', // Kata kotor dalam bentuk dasarnya
66
- category: 'insult', // Kategori kata (sexual, insult, profanity, slur, drugs, disgusting, blasphemy)
67
- region: 'nama_daerah', // Daerah asal kata
68
- severity: 0.7, // Tingkat keparahan (0-1)
69
- aliases: ['alias1', 'alias2'], // Variasi atau alias kata (opsional)
70
- description: 'Deskripsi kata', // Penjelasan singkat tentang kata (opsional)
71
- context: 'Konteks penggunaan' // Informasi konteks penggunaan (opsional)
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
- Contoh menambahkan kata ke file daerah (misalnya `bali.ts`):
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
- Jika Anda menambahkan kata baru, perbarui juga file kategori yang sesuai (`src/constants/categories/`). Kata-kata tersebut akan otomatis terambil saat library dibuild, tetapi terkadang kategori perlu diperbarui.
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
- ### 3. Update File indeks Daerah/Kategori (jika ada daerah baru)
72
+ ## Pengujian dan build
104
73
 
105
- Jika Anda menambahkan daerah baru, pastikan untuk memperbarui file indeks:
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
- ### 5. Build Library
82
+ # Jalankan linter
83
+ bun run lint
84
+ # atau
85
+ npm run lint
116
86
 
117
- ```bash
87
+ # Pastikan build bundle berhasil
88
+ bun run build
89
+ # atau
118
90
  npm run build
119
91
  ```
120
92
 
121
- ### 6. Commit dan Push Perubahan Anda
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
- Buat Pull Request dari branch Anda ke repositori utama.
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
- ## Pedoman Penambahan Kata
103
+ ## Mengajukan perubahan
134
104
 
135
- 1. **Validasi Kata**: Pastikan kata tersebut benar-benar dianggap kasar di daerah yang dimaksud.
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
- ## Format Commit
143
-
144
- Gunakan format commit yang konsisten:
145
- - `Add: Menambahkan kata X dari daerah Y`
146
- - `Update: Memperbaiki metadata kata X`
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
- Untuk pertanyaan atau diskusi, silakan buat issue di GitHub atau hubungi maintainer proyek. Terima kasih atas kontribusi Anda!
113
+ Lalu buat pull request ke branch `main` repositori utama dengan deskripsi kata apa saja yang ditambahkan beserta artinya.