@sideid/id-profanity-filter 1.11.0 → 1.11.6
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 +504 -234
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +504 -234
- package/dist/index.js.map +1 -1
- package/dist/types/constants/regions/aceh.d.ts +4 -0
- package/dist/types/constants/regions/bali.d.ts +4 -0
- package/dist/{constants → types/constants}/regions/jawa.d.ts +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/aceh.ts +231 -0
- package/src/constants/regions/bali.ts +168 -0
- package/src/constants/regions/batak.ts +136 -6
- package/src/constants/regions/general.ts +9 -0
- package/src/constants/regions/jawa.ts +367 -229
- 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/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/.eslintrc.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
parser: '@typescript-eslint/parser',
|
|
3
|
-
parserOptions: {
|
|
4
|
-
ecmaVersion: 2020,
|
|
5
|
-
sourceType: 'module',
|
|
6
|
-
project: './tsconfig.json',
|
|
7
|
-
},
|
|
8
|
-
extends: [
|
|
9
|
-
'eslint:recommended',
|
|
10
|
-
'plugin:@typescript-eslint/recommended',
|
|
11
|
-
'prettier', // Disables ESLint rules that might conflict with Prettier
|
|
12
|
-
],
|
|
13
|
-
plugins: ['@typescript-eslint'],
|
|
14
|
-
env: {
|
|
15
|
-
node: true,
|
|
16
|
-
jest: true,
|
|
17
|
-
},
|
|
18
|
-
rules: {
|
|
19
|
-
// Enforce consistent code style
|
|
20
|
-
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
21
|
-
'@typescript-eslint/no-explicit-any': 'warn',
|
|
22
|
-
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
|
23
|
-
|
|
24
|
-
// Allow certain TypeScript patterns
|
|
25
|
-
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
26
|
-
|
|
27
|
-
// General ESLint rules
|
|
28
|
-
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
29
|
-
'prefer-const': 'warn',
|
|
30
|
-
'no-var': 'error',
|
|
31
|
-
|
|
32
|
-
// Make sure imports are properly sorted
|
|
33
|
-
'sort-imports': [
|
|
34
|
-
'off',
|
|
35
|
-
{
|
|
36
|
-
ignoreCase: false,
|
|
37
|
-
ignoreDeclarationSort: true,
|
|
38
|
-
ignoreMemberSort: false,
|
|
39
|
-
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
ignorePatterns: ['dist/', 'node_modules/', '*.js', '*.d.ts'],
|
|
44
|
-
};
|
|
1
|
+
module.exports = {
|
|
2
|
+
parser: '@typescript-eslint/parser',
|
|
3
|
+
parserOptions: {
|
|
4
|
+
ecmaVersion: 2020,
|
|
5
|
+
sourceType: 'module',
|
|
6
|
+
project: './tsconfig.json',
|
|
7
|
+
},
|
|
8
|
+
extends: [
|
|
9
|
+
'eslint:recommended',
|
|
10
|
+
'plugin:@typescript-eslint/recommended',
|
|
11
|
+
'prettier', // Disables ESLint rules that might conflict with Prettier
|
|
12
|
+
],
|
|
13
|
+
plugins: ['@typescript-eslint'],
|
|
14
|
+
env: {
|
|
15
|
+
node: true,
|
|
16
|
+
jest: true,
|
|
17
|
+
},
|
|
18
|
+
rules: {
|
|
19
|
+
// Enforce consistent code style
|
|
20
|
+
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
21
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
22
|
+
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
|
23
|
+
|
|
24
|
+
// Allow certain TypeScript patterns
|
|
25
|
+
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
26
|
+
|
|
27
|
+
// General ESLint rules
|
|
28
|
+
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
29
|
+
'prefer-const': 'warn',
|
|
30
|
+
'no-var': 'error',
|
|
31
|
+
|
|
32
|
+
// Make sure imports are properly sorted
|
|
33
|
+
'sort-imports': [
|
|
34
|
+
'off',
|
|
35
|
+
{
|
|
36
|
+
ignoreCase: false,
|
|
37
|
+
ignoreDeclarationSort: true,
|
|
38
|
+
ignoreMemberSort: false,
|
|
39
|
+
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
ignorePatterns: ['dist/', 'node_modules/', '*.js', '*.d.ts'],
|
|
44
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Create Release
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- 'package.json'
|
|
8
|
+
jobs:
|
|
9
|
+
check-version-and-release:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Checkout code
|
|
13
|
+
uses: actions/checkout@v4
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 2
|
|
16
|
+
token: ${{ secrets.GH_PAT }}
|
|
17
|
+
|
|
18
|
+
- name: Setup Node.js
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: '20.x'
|
|
22
|
+
registry-url: 'https://registry.npmjs.org'
|
|
23
|
+
|
|
24
|
+
- name: Check if version changed
|
|
25
|
+
id: check_version
|
|
26
|
+
run: |
|
|
27
|
+
git diff HEAD^ HEAD -- package.json | grep '"version"' || echo "No version change"
|
|
28
|
+
NEW_VERSION=$(node -p "require('./package.json').version")
|
|
29
|
+
echo "VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
|
|
30
|
+
echo "Version changed to $NEW_VERSION"
|
|
31
|
+
|
|
32
|
+
- name: Create Git Tag
|
|
33
|
+
if: contains(steps.check_version.outputs.VERSION, '.')
|
|
34
|
+
run: |
|
|
35
|
+
git config --local user.email "action@github.com"
|
|
36
|
+
git config --local user.name "GitHub Action"
|
|
37
|
+
git tag -a "v${{ steps.check_version.outputs.VERSION }}" -m "Release v${{ steps.check_version.outputs.VERSION }}"
|
|
38
|
+
git push https://${{ secrets.GH_PAT }}@github.com/${{ github.repository }}.git --tags
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: npm ci
|
|
42
|
+
|
|
43
|
+
- name: Build
|
|
44
|
+
run: npm run build
|
|
45
|
+
|
|
46
|
+
- name: Create GitHub Release
|
|
47
|
+
if: contains(steps.check_version.outputs.VERSION, '.')
|
|
48
|
+
uses: softprops/action-gh-release@v1
|
|
49
|
+
with:
|
|
50
|
+
tag_name: v${{ steps.check_version.outputs.VERSION }}
|
|
51
|
+
name: v${{ steps.check_version.outputs.VERSION }}
|
|
52
|
+
draft: false
|
|
53
|
+
prerelease: false
|
|
54
|
+
generate_release_notes: true
|
|
55
|
+
env:
|
|
56
|
+
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
|
|
57
|
+
|
|
58
|
+
- name: Publish to npm
|
|
59
|
+
if: contains(steps.check_version.outputs.VERSION, '.')
|
|
60
|
+
run: npm publish --access public
|
|
61
|
+
env:
|
|
62
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,151 +1,151 @@
|
|
|
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`:
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
{
|
|
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)
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
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)
|
|
100
|
-
|
|
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.
|
|
102
|
-
|
|
103
|
-
### 3. Update File indeks Daerah/Kategori (jika ada daerah baru)
|
|
104
|
-
|
|
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)
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
npm test
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### 5. Build Library
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npm run build
|
|
119
|
-
```
|
|
120
|
-
|
|
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
|
|
130
|
-
|
|
131
|
-
Buat Pull Request dari branch Anda ke repositori utama.
|
|
132
|
-
|
|
133
|
-
## Pedoman Penambahan Kata
|
|
134
|
-
|
|
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.
|
|
141
|
-
|
|
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
|
|
150
|
-
|
|
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`:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
{
|
|
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)
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
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)
|
|
100
|
+
|
|
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.
|
|
102
|
+
|
|
103
|
+
### 3. Update File indeks Daerah/Kategori (jika ada daerah baru)
|
|
104
|
+
|
|
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)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npm test
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 5. Build Library
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npm run build
|
|
119
|
+
```
|
|
120
|
+
|
|
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
|
|
130
|
+
|
|
131
|
+
Buat Pull Request dari branch Anda ke repositori utama.
|
|
132
|
+
|
|
133
|
+
## Pedoman Penambahan Kata
|
|
134
|
+
|
|
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.
|
|
141
|
+
|
|
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
|
|
150
|
+
|
|
151
151
|
Untuk pertanyaan atau diskusi, silakan buat issue di GitHub atau hubungi maintainer proyek. Terima kasih atas kontribusi Anda!
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Side ID ~
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Side ID ~
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|