@sideid/id-profanity-filter 1.10.6 → 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 +545 -50
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +545 -50
- package/dist/index.js.map +1 -1
- package/dist/types/constants/categories/blasphemy.d.ts +4 -0
- package/dist/types/constants/categories/disgusting.d.ts +4 -0
- package/dist/types/constants/categories/drugs.d.ts +4 -0
- package/dist/types/constants/categories/profanity.d.ts +4 -0
- package/dist/types/constants/categories/slur.d.ts +4 -0
- package/dist/{constants → types/constants}/wordList.d.ts +1 -1
- package/dist/{core → types/core}/analyzer.d.ts +1 -1
- package/dist/{core → types/core}/filter.d.ts +1 -1
- package/dist/{core → types/core}/matcher.d.ts +1 -1
- package/dist/types/index.d.ts +375 -57
- package/dist/types/types/index.d.ts +59 -0
- package/dist/types/utils/ahoCorasick.d.ts +36 -0
- package/dist/{utils → types/utils}/similarityUtils.d.ts +10 -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/categories/blasphemy.ts +25 -0
- package/src/constants/categories/disgusting.ts +82 -0
- package/src/constants/categories/drugs.ts +72 -0
- package/src/constants/categories/profanity.ts +139 -0
- package/src/constants/categories/slur.ts +102 -0
- package/src/constants/regions/general.ts +9 -0
- package/src/constants/regions/jawa.ts +356 -354
- package/src/core/analyzer.ts +28 -7
- package/src/core/matcher.ts +25 -18
- package/src/index.ts +15 -15
- package/src/utils/ahoCorasick.ts +179 -0
- package/src/utils/similarityUtils.ts +157 -20
- 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/test.js +0 -184
- /package/dist/{config → types/config}/options.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/insult.d.ts +0 -0
- /package/dist/{constants → types/constants}/categories/sexual.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/{utils → types/utils}/regexUtils.d.ts +0 -0
- /package/dist/{utils → types/utils}/stringUtils.d.ts +0 -0
package/jest.config.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
preset: 'ts-jest',
|
|
3
|
-
testEnvironment: 'node',
|
|
4
|
-
roots: ['<rootDir>/test'],
|
|
5
|
-
transform: {
|
|
6
|
-
'^.+\\.tsx?$': 'ts-jest',
|
|
7
|
-
},
|
|
8
|
-
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
|
|
9
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
10
|
-
};
|
|
1
|
+
module.exports = {
|
|
2
|
+
preset: 'ts-jest',
|
|
3
|
+
testEnvironment: 'node',
|
|
4
|
+
roots: ['<rootDir>/test'],
|
|
5
|
+
transform: {
|
|
6
|
+
'^.+\\.tsx?$': 'ts-jest',
|
|
7
|
+
},
|
|
8
|
+
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
|
|
9
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
10
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sideid/id-profanity-filter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.5",
|
|
4
4
|
"description": "Library filter kata kotor dalam Bahasa Indonesia",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"rollup": "^4.39.0",
|
|
46
46
|
"rollup-plugin-dts": "^6.2.1",
|
|
47
47
|
"ts-jest": "^29.3.1",
|
|
48
|
+
"tslib": "^2.8.1",
|
|
48
49
|
"typescript": "^5.8.3"
|
|
49
50
|
}
|
|
50
51
|
}
|
package/prettierrc
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
{
|
|
2
|
-
"singleQuote": true,
|
|
3
|
-
"trailingComma": "es5",
|
|
4
|
-
"printWidth": 100,
|
|
5
|
-
"tabWidth": 2,
|
|
6
|
-
"semi": true
|
|
1
|
+
{
|
|
2
|
+
"singleQuote": true,
|
|
3
|
+
"trailingComma": "es5",
|
|
4
|
+
"printWidth": 100,
|
|
5
|
+
"tabWidth": 2,
|
|
6
|
+
"semi": true
|
|
7
7
|
}
|
package/rollup.config.mjs
CHANGED
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
import resolve from '@rollup/plugin-node-resolve';
|
|
2
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
3
|
-
import typescript from '@rollup/plugin-typescript';
|
|
4
|
-
import json from '@rollup/plugin-json';
|
|
5
|
-
import dts from 'rollup-plugin-dts';
|
|
6
|
-
import pkg from './package.json' assert { type: 'json' };
|
|
7
|
-
|
|
8
|
-
export default [
|
|
9
|
-
{
|
|
10
|
-
input: 'src/index.ts',
|
|
11
|
-
output: [
|
|
12
|
-
{
|
|
13
|
-
file: pkg.main,
|
|
14
|
-
format: 'cjs',
|
|
15
|
-
sourcemap: true,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
|
|
1
|
+
import resolve from '@rollup/plugin-node-resolve';
|
|
2
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
3
|
+
import typescript from '@rollup/plugin-typescript';
|
|
4
|
+
import json from '@rollup/plugin-json';
|
|
5
|
+
import dts from 'rollup-plugin-dts';
|
|
6
|
+
import pkg from './package.json' assert { type: 'json' };
|
|
7
|
+
|
|
8
|
+
export default [
|
|
9
|
+
{
|
|
10
|
+
input: 'src/index.ts',
|
|
11
|
+
output: [
|
|
12
|
+
{
|
|
13
|
+
file: pkg.main,
|
|
14
|
+
format: 'cjs',
|
|
15
|
+
sourcemap: true,
|
|
16
|
+
exports: 'named',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
file: pkg.module,
|
|
20
|
+
format: 'esm',
|
|
21
|
+
sourcemap: true,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
plugins: [
|
|
25
|
+
resolve(),
|
|
26
|
+
commonjs(),
|
|
27
|
+
typescript({
|
|
28
|
+
tsconfig: './tsconfig.json',
|
|
29
|
+
declaration: true,
|
|
30
|
+
declarationDir: './dist/types/',
|
|
31
|
+
}),
|
|
32
|
+
json(),
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
input: 'dist/types/index.d.ts',
|
|
37
|
+
output: [{ file: 'dist/index.d.ts', format: 'es' }],
|
|
38
|
+
plugins: [dts()],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ProfanityWord } from "../../types";
|
|
2
|
+
import { general } from "../regions/general";
|
|
3
|
+
import { jawa } from "../regions/jawa";
|
|
4
|
+
import { sunda } from "../regions/sunda";
|
|
5
|
+
import { betawi } from "../regions/betawi";
|
|
6
|
+
|
|
7
|
+
export const blasphemy: ProfanityWord[] = [
|
|
8
|
+
...general.filter((word) => word.category === "blasphemy"),
|
|
9
|
+
...jawa.filter((word) => word.category === "blasphemy"),
|
|
10
|
+
...sunda.filter((word) => word.category === "blasphemy"),
|
|
11
|
+
...betawi.filter((word) => word.category === "blasphemy"),
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
word: "kafir",
|
|
15
|
+
category: "blasphemy",
|
|
16
|
+
region: "general",
|
|
17
|
+
severity: 0.6,
|
|
18
|
+
aliases: ["kapir", "kafur"],
|
|
19
|
+
description: "Istilah untuk orang yang tidak percaya pada Islam",
|
|
20
|
+
context: "Dapat bersifat merendahkan ketika digunakan terhadap non-Muslim",
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
export const blasphemyWords = blasphemy.map((item) => item.word);
|
|
25
|
+
export default blasphemy;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ProfanityWord } from "../../types";
|
|
2
|
+
import { general } from "../regions/general";
|
|
3
|
+
import { jawa } from "../regions/jawa";
|
|
4
|
+
import { sunda } from "../regions/sunda";
|
|
5
|
+
import { betawi } from "../regions/betawi";
|
|
6
|
+
|
|
7
|
+
export const disgusting: ProfanityWord[] = [
|
|
8
|
+
...general.filter((word) => word.category === "disgusting"),
|
|
9
|
+
...jawa.filter((word) => word.category === "disgusting"),
|
|
10
|
+
...sunda.filter((word) => word.category === "disgusting"),
|
|
11
|
+
...betawi.filter((word) => word.category === "disgusting"),
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
word: "muntah",
|
|
15
|
+
category: "disgusting",
|
|
16
|
+
region: "general",
|
|
17
|
+
severity: 0.4,
|
|
18
|
+
aliases: ["muntaber", "memuntahkan"],
|
|
19
|
+
description: "Muntahan atau tindakan muntah",
|
|
20
|
+
context:
|
|
21
|
+
"Digunakan untuk mengekspresikan rasa jijik atau menggambarkan tindakan tersebut",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
word: "ingus",
|
|
25
|
+
category: "disgusting",
|
|
26
|
+
region: "general",
|
|
27
|
+
severity: 0.4,
|
|
28
|
+
aliases: ["ingusan", "beringus"],
|
|
29
|
+
description: "Lendir hidung",
|
|
30
|
+
context: "Digunakan untuk menggambarkan lendir hidung atau sebagai hinaan",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
word: "tai",
|
|
34
|
+
category: "disgusting",
|
|
35
|
+
region: "general",
|
|
36
|
+
severity: 0.8,
|
|
37
|
+
aliases: ["tahi", "kotoran"],
|
|
38
|
+
description: "Kotoran manusia",
|
|
39
|
+
context: "Istilah vulgar untuk kotoran, sering digunakan sebagai hinaan",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
word: "jembut",
|
|
43
|
+
category: "disgusting",
|
|
44
|
+
region: "general",
|
|
45
|
+
severity: 1.0,
|
|
46
|
+
aliases: ["jembud", "rambut kemaluan"],
|
|
47
|
+
description: "Rambut kemaluan",
|
|
48
|
+
context:
|
|
49
|
+
"Istilah vulgar untuk rambut kemaluan, dianggap sangat tidak pantas",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
word: "pecret",
|
|
53
|
+
category: "disgusting",
|
|
54
|
+
region: "sunda",
|
|
55
|
+
severity: 0.8,
|
|
56
|
+
aliases: ["mencret", "diare"],
|
|
57
|
+
description: "Diare dalam bahasa Sunda",
|
|
58
|
+
context: "Dianggap vulgar ketika disebutkan di depan umum",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
word: "bacot",
|
|
62
|
+
category: "disgusting",
|
|
63
|
+
region: "betawi",
|
|
64
|
+
severity: 0.8,
|
|
65
|
+
aliases: ["cicing", "berisik"],
|
|
66
|
+
description: "Mulut atau omongan berisik dalam konteks vulgar",
|
|
67
|
+
context: "Istilah kasar yang digunakan untuk menyuruh seseorang diam",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
word: "lendir",
|
|
71
|
+
category: "disgusting",
|
|
72
|
+
region: "general",
|
|
73
|
+
severity: 0.3,
|
|
74
|
+
aliases: ["berlendir", "cairan lengket"],
|
|
75
|
+
description: "Lendir atau cairan lengket",
|
|
76
|
+
context:
|
|
77
|
+
"Dapat digunakan dalam konteks vulgar untuk menggambarkan cairan tubuh",
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
export const disgustingWords = disgusting.map((item) => item.word);
|
|
82
|
+
export default disgusting;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ProfanityWord } from "../../types";
|
|
2
|
+
import { general } from "../regions/general";
|
|
3
|
+
import { jawa } from "../regions/jawa";
|
|
4
|
+
import { sunda } from "../regions/sunda";
|
|
5
|
+
import { betawi } from "../regions/betawi";
|
|
6
|
+
|
|
7
|
+
export const drugs: ProfanityWord[] = [
|
|
8
|
+
...general.filter((word) => word.category === "drugs"),
|
|
9
|
+
...jawa.filter((word) => word.category === "drugs"),
|
|
10
|
+
...sunda.filter((word) => word.category === "drugs"),
|
|
11
|
+
...betawi.filter((word) => word.category === "drugs"),
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
word: "ganja",
|
|
15
|
+
category: "drugs",
|
|
16
|
+
region: "general",
|
|
17
|
+
severity: 0.6,
|
|
18
|
+
aliases: ["cimeng", "kanabis", "marijuana"],
|
|
19
|
+
description: "Tanaman yang mengandung zat psikoaktif",
|
|
20
|
+
context: "Digunakan untuk merujuk pada narkotika jenis cannabis",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
word: "sabu",
|
|
24
|
+
category: "drugs",
|
|
25
|
+
region: "general",
|
|
26
|
+
severity: 0.8,
|
|
27
|
+
aliases: ["crystal", "meth", "ss"],
|
|
28
|
+
description: "Narkotika jenis metamfetamin",
|
|
29
|
+
context: "Istilah untuk metamfetamin yang merupakan narkotika berbahaya",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
word: "inex",
|
|
33
|
+
category: "drugs",
|
|
34
|
+
region: "general",
|
|
35
|
+
severity: 0.7,
|
|
36
|
+
aliases: ["ekstasi", "pil"],
|
|
37
|
+
description: "Obat terlarang yang mengandung MDMA",
|
|
38
|
+
context: "Nama slang untuk obat terlarang ecstasy",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
word: "sakaw",
|
|
42
|
+
category: "drugs",
|
|
43
|
+
region: "general",
|
|
44
|
+
severity: 0.5,
|
|
45
|
+
aliases: ["ketagihan", "menarik"],
|
|
46
|
+
description: "Gejala putus obat pada pecandu",
|
|
47
|
+
context:
|
|
48
|
+
"Menggambarkan kondisi pecandu yang sedang mengalami gejala putus obat",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
word: "ngepil",
|
|
52
|
+
category: "drugs",
|
|
53
|
+
region: "jawa",
|
|
54
|
+
severity: 0.3,
|
|
55
|
+
aliases: ["minum pil", "telan pil"],
|
|
56
|
+
description: "Mengkonsumsi obat-obatan terlarang dalam bentuk pil",
|
|
57
|
+
context:
|
|
58
|
+
"Istilah dalam bahasa gaul untuk mengkonsumsi obat terlarang jenis tablet",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
word: "nyimeng",
|
|
62
|
+
category: "drugs",
|
|
63
|
+
region: "sunda",
|
|
64
|
+
severity: 0.6,
|
|
65
|
+
aliases: ["nyimang", "isap ganja"],
|
|
66
|
+
description: "Mengisap ganja atau marijuana",
|
|
67
|
+
context: "Istilah sunda untuk aktivitas mengkonsumsi ganja",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
export const drugsWords = drugs.map((item) => item.word);
|
|
72
|
+
export default drugs;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { ProfanityWord } from "../../types";
|
|
2
|
+
import { general } from "../regions/general";
|
|
3
|
+
import { jawa } from "../regions/jawa";
|
|
4
|
+
import { sunda } from "../regions/sunda";
|
|
5
|
+
import { betawi } from "../regions/betawi";
|
|
6
|
+
|
|
7
|
+
export const profanity: ProfanityWord[] = [
|
|
8
|
+
...general.filter((word) => word.category === "profanity"),
|
|
9
|
+
...jawa.filter((word) => word.category === "profanity"),
|
|
10
|
+
...sunda.filter((word) => word.category === "profanity"),
|
|
11
|
+
...betawi.filter((word) => word.category === "profanity"),
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
word: "anjing",
|
|
15
|
+
category: "profanity",
|
|
16
|
+
region: "general",
|
|
17
|
+
severity: 0.9,
|
|
18
|
+
aliases: ["anjir", "anying", "njing", "njir"],
|
|
19
|
+
description: "Kata umpatan yang mengacu pada hewan anjing",
|
|
20
|
+
context: "Digunakan sebagai ekspresi kemarahan atau frustasi",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
word: "babi",
|
|
24
|
+
category: "profanity",
|
|
25
|
+
region: "general",
|
|
26
|
+
severity: 0.8,
|
|
27
|
+
aliases: ["babik", "khinzir"],
|
|
28
|
+
description: "Kata umpatan yang mengacu pada hewan babi",
|
|
29
|
+
context:
|
|
30
|
+
"Digunakan untuk mengekspresikan kemarahan atau menghina seseorang",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
word: "bangsat",
|
|
34
|
+
category: "profanity",
|
|
35
|
+
region: "general",
|
|
36
|
+
severity: 0.8,
|
|
37
|
+
aliases: ["bgst", "bangst"],
|
|
38
|
+
description: "Kata umpatan kasar yang berarti kutu atau parasit",
|
|
39
|
+
context: "Digunakan untuk menunjukkan kemarahan atau menghina seseorang",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
word: "kampret",
|
|
43
|
+
category: "profanity",
|
|
44
|
+
region: "general",
|
|
45
|
+
severity: 0.7,
|
|
46
|
+
aliases: ["kampret lu", "kampretot"],
|
|
47
|
+
description: "Kata umpatan yang mengacu pada jenis kelelawar kecil",
|
|
48
|
+
context: "Digunakan untuk mengungkapkan kekesalan atau menghina seseorang",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
word: "sialan",
|
|
52
|
+
category: "profanity",
|
|
53
|
+
region: "general",
|
|
54
|
+
severity: 0.6,
|
|
55
|
+
aliases: ["sial", "siaal"],
|
|
56
|
+
description: "Kata umpatan yang menunjukkan nasib buruk",
|
|
57
|
+
context: "Digunakan untuk mengekspresikan kekesalan atau kemarahan",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
word: "monyet",
|
|
61
|
+
category: "profanity",
|
|
62
|
+
region: "general",
|
|
63
|
+
severity: 0.7,
|
|
64
|
+
aliases: ["monyong", "munyuk"],
|
|
65
|
+
description: "Kata umpatan yang mengacu pada hewan primata",
|
|
66
|
+
context: "Digunakan untuk menghina atau mengekspresikan kemarahan",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
word: "bajingan",
|
|
70
|
+
category: "profanity",
|
|
71
|
+
region: "general",
|
|
72
|
+
severity: 0.8,
|
|
73
|
+
aliases: ["bajinga", "bjngn"],
|
|
74
|
+
description: "Kata umpatan yang berarti penjahat atau orang jahat",
|
|
75
|
+
context:
|
|
76
|
+
"Digunakan untuk mengumpat seseorang yang dianggap buruk perilakunya",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
word: "jancok",
|
|
80
|
+
category: "profanity",
|
|
81
|
+
region: "jawa",
|
|
82
|
+
severity: 0.9,
|
|
83
|
+
aliases: ["jancuk", "jancik", "dancok"],
|
|
84
|
+
description: "Kata umpatan kasar dalam bahasa Jawa",
|
|
85
|
+
context:
|
|
86
|
+
"Umpatan sangat kasar dalam budaya Jawa, menunjukkan kemarahan yang tinggi",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
word: "cuk",
|
|
90
|
+
category: "profanity",
|
|
91
|
+
region: "jawa",
|
|
92
|
+
severity: 0.8,
|
|
93
|
+
aliases: ["cok", "cug"],
|
|
94
|
+
description: "Bentuk singkat dari jancok",
|
|
95
|
+
context:
|
|
96
|
+
"Versi pendek dari umpatan jancok, digunakan dalam percakapan sehari-hari",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
word: "asu",
|
|
100
|
+
category: "profanity",
|
|
101
|
+
region: "jawa",
|
|
102
|
+
severity: 0.8,
|
|
103
|
+
aliases: ["asyu", "su"],
|
|
104
|
+
description: "Kata Jawa untuk anjing, digunakan sebagai umpatan",
|
|
105
|
+
context: "Ekspresi umpatan yang umum di masyarakat Jawa",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
word: "sia",
|
|
109
|
+
category: "profanity",
|
|
110
|
+
region: "sunda",
|
|
111
|
+
severity: 0.6,
|
|
112
|
+
aliases: ["siah", "siaa"],
|
|
113
|
+
description: "Kata ganti orang kedua dalam bahasa Sunda yang kasar",
|
|
114
|
+
context:
|
|
115
|
+
"Menunjukkan ketidakhormatan pada lawan bicara dalam konteks Sunda",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
word: "lu",
|
|
119
|
+
category: "profanity",
|
|
120
|
+
region: "betawi",
|
|
121
|
+
severity: 0.4,
|
|
122
|
+
aliases: ["elu", "lo"],
|
|
123
|
+
description: "Kata ganti orang kedua dalam dialek Betawi",
|
|
124
|
+
context:
|
|
125
|
+
"Dapat dianggap kasar dalam konteks formal atau saat berbicara dengan orang yang lebih tua",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
word: "goblok",
|
|
129
|
+
category: "profanity",
|
|
130
|
+
region: "general",
|
|
131
|
+
severity: 0.7,
|
|
132
|
+
aliases: ["goblog", "goblokk", "bego", "bodoh"],
|
|
133
|
+
description: "Kata umpatan yang menunjukkan kebodohan",
|
|
134
|
+
context: "Digunakan untuk menghina kecerdasan seseorang",
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
|
|
138
|
+
export const profanityWords = profanity.map((item) => item.word);
|
|
139
|
+
export default profanity;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ProfanityWord } from "../../types";
|
|
2
|
+
import { general } from "../regions/general";
|
|
3
|
+
import { jawa } from "../regions/jawa";
|
|
4
|
+
import { sunda } from "../regions/sunda";
|
|
5
|
+
import { betawi } from "../regions/betawi";
|
|
6
|
+
|
|
7
|
+
export const slur: ProfanityWord[] = [
|
|
8
|
+
...general.filter((word) => word.category === "slur"),
|
|
9
|
+
...jawa.filter((word) => word.category === "slur"),
|
|
10
|
+
...sunda.filter((word) => word.category === "slur"),
|
|
11
|
+
...betawi.filter((word) => word.category === "slur"),
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
word: "cina",
|
|
15
|
+
category: "slur",
|
|
16
|
+
region: "general",
|
|
17
|
+
severity: 0.7,
|
|
18
|
+
aliases: ["cino", "china"],
|
|
19
|
+
description:
|
|
20
|
+
"Sebutan yang dianggap merendahkan untuk orang keturunan Tionghoa",
|
|
21
|
+
context: 'Dianggap tidak sopan dan sebaiknya diganti dengan "Tionghoa"',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
word: "banci",
|
|
25
|
+
category: "slur",
|
|
26
|
+
region: "general",
|
|
27
|
+
severity: 0.7,
|
|
28
|
+
aliases: ["bencong", "waria", "bences"],
|
|
29
|
+
description:
|
|
30
|
+
"Istilah merendahkan untuk transgender atau pria yang dianggap feminin",
|
|
31
|
+
context:
|
|
32
|
+
"Digunakan sebagai hinaan terhadap identitas gender atau ekspresi gender seseorang",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
word: "autis",
|
|
36
|
+
category: "slur",
|
|
37
|
+
region: "general",
|
|
38
|
+
severity: 0.6,
|
|
39
|
+
aliases: ["autis lu", "autisan"],
|
|
40
|
+
description: "Penyalahgunaan kondisi medis sebagai hinaan",
|
|
41
|
+
context:
|
|
42
|
+
"Menggunakan kondisi spektrum autisme sebagai hinaan untuk seseorang yang dianggap aneh",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
word: "londo",
|
|
46
|
+
category: "slur",
|
|
47
|
+
region: "jawa",
|
|
48
|
+
severity: 0.5,
|
|
49
|
+
aliases: ["landa", "landi"],
|
|
50
|
+
description: "Sebutan untuk orang Belanda atau orang berkulit putih",
|
|
51
|
+
context: "Dapat bersifat merendahkan tergantung konteks dan nada bicara",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
word: "keling",
|
|
55
|
+
category: "slur",
|
|
56
|
+
region: "general",
|
|
57
|
+
severity: 0.8,
|
|
58
|
+
aliases: ["kaling", "hitam legam"],
|
|
59
|
+
description: "Istilah merendahkan untuk orang India atau berkulit gelap",
|
|
60
|
+
context: "Dianggap sangat tidak sopan dan bernada rasis",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
word: "cacat",
|
|
64
|
+
category: "slur",
|
|
65
|
+
region: "general",
|
|
66
|
+
severity: 0.7,
|
|
67
|
+
aliases: ["cacad", "difabel"],
|
|
68
|
+
description: "Istilah merendahkan untuk penyandang disabilitas",
|
|
69
|
+
context: "Digunakan sebagai hinaan untuk menunjukkan ketidaksempurnaan",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
word: "gembel",
|
|
73
|
+
category: "slur",
|
|
74
|
+
region: "general",
|
|
75
|
+
severity: 0.6,
|
|
76
|
+
aliases: ["gembul", "gelandangan"],
|
|
77
|
+
description: "Istilah merendahkan untuk orang tidak mampu atau tunawisma",
|
|
78
|
+
context: "Mengandung stigma terhadap kemiskinan dan kelas sosial",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
word: "kampungan",
|
|
82
|
+
category: "slur",
|
|
83
|
+
region: "general",
|
|
84
|
+
severity: 0.5,
|
|
85
|
+
aliases: ["ndeso", "katrok", "udik"],
|
|
86
|
+
description: "Istilah merendahkan untuk orang dari daerah pedesaan",
|
|
87
|
+
context:
|
|
88
|
+
"Menyiratkan seseorang tidak beradab, tidak berpendidikan, atau ketinggalan zaman",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
word: "tolol",
|
|
92
|
+
category: "slur",
|
|
93
|
+
region: "general",
|
|
94
|
+
severity: 0.6,
|
|
95
|
+
aliases: ["tololnya", "tolo"],
|
|
96
|
+
description: "Hinaan terhadap kecerdasan seseorang",
|
|
97
|
+
context: "Digunakan untuk menghina kapasitas mental seseorang",
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
export const slurWords = slur.map((item) => item.word);
|
|
102
|
+
export default slur;
|
|
@@ -204,6 +204,15 @@ export const general: ProfanityWord[] = [
|
|
|
204
204
|
"Simbol yang sering digunakan untuk menandai konten pornografi",
|
|
205
205
|
context: "Digunakan untuk menandai konten seksual eksplisit",
|
|
206
206
|
},
|
|
207
|
+
{
|
|
208
|
+
word: "xnxx",
|
|
209
|
+
category: "sexual",
|
|
210
|
+
region: "general",
|
|
211
|
+
severity: 0.6,
|
|
212
|
+
aliases: ["xnxx", "xnx"],
|
|
213
|
+
description: "simbol yang sering digunakan untuk menandai konten pornografi",
|
|
214
|
+
context: "Digunakan untuk menandai konten seksual eksplisit",
|
|
215
|
+
}
|
|
207
216
|
];
|
|
208
217
|
|
|
209
218
|
export const generalWords = general.map((item) => item.word);
|