glin-profanity 1.1.7 → 1.1.9
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/lib/{data → cjs/data}/dictionary.d.ts +0 -1
- package/lib/cjs/data/dictionary.js +52 -0
- package/lib/cjs/data/dictionary.js.map +1 -0
- package/lib/cjs/data/globalWhitelist.json +31 -0
- package/lib/{filters → cjs/filters}/Filter.d.ts +2 -1
- package/lib/cjs/filters/Filter.js +137 -0
- package/lib/cjs/filters/Filter.js.map +1 -0
- package/lib/{hooks → cjs/hooks}/useProfanityChecker.d.ts +0 -1
- package/lib/cjs/hooks/useProfanityChecker.js +47 -0
- package/lib/cjs/hooks/useProfanityChecker.js.map +1 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +0 -1
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{types → cjs/types}/types.d.ts +0 -1
- package/lib/cjs/types/types.js +3 -0
- package/lib/{types → cjs/types}/types.js.map +1 -1
- package/lib/esm/data/Norwegian.json +17 -0
- package/lib/esm/data/arabic.json +157 -0
- package/lib/esm/data/chinese.json +298 -0
- package/lib/esm/data/czech.json +45 -0
- package/lib/esm/data/danish.json +24 -0
- package/lib/esm/data/dictionary.d.ts +25 -0
- package/lib/esm/data/dictionary.js.map +1 -0
- package/lib/esm/data/english.json +382 -0
- package/lib/esm/data/esperanto.json +41 -0
- package/lib/esm/data/finnish.json +134 -0
- package/lib/esm/data/french.json +99 -0
- package/lib/esm/data/german.json +69 -0
- package/lib/esm/data/globalWhitelist.json +31 -0
- package/lib/esm/data/hindi.json +100 -0
- package/lib/esm/data/hungarian.json +100 -0
- package/lib/esm/data/italian.json +184 -0
- package/lib/esm/data/japanese.json +189 -0
- package/lib/esm/data/korean.json +76 -0
- package/lib/esm/data/persian.json +49 -0
- package/lib/esm/data/polish.json +57 -0
- package/lib/esm/data/portuguese.json +78 -0
- package/lib/esm/data/russian.json +156 -0
- package/lib/esm/data/swedish.json +47 -0
- package/lib/esm/data/thai.json +35 -0
- package/lib/esm/data/turkish.json +195 -0
- package/lib/esm/filters/Filter.d.ts +32 -0
- package/lib/{filters → esm/filters}/Filter.js +8 -2
- package/lib/esm/filters/Filter.js.map +1 -0
- package/lib/esm/hooks/useProfanityChecker.d.ts +17 -0
- package/lib/{hooks → esm/hooks}/useProfanityChecker.js +3 -1
- package/lib/esm/hooks/useProfanityChecker.js.map +1 -0
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types/types.d.ts +9 -0
- package/lib/esm/types/types.js.map +1 -0
- package/package.json +62 -46
- package/lib/data/dictionary.d.ts.map +0 -1
- package/lib/data/dictionary.js.map +0 -1
- package/lib/filters/Filter.d.ts.map +0 -1
- package/lib/filters/Filter.js.map +0 -1
- package/lib/hooks/useProfanityChecker.d.ts.map +0 -1
- package/lib/hooks/useProfanityChecker.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types/types.d.ts.map +0 -1
- /package/lib/{data → cjs/data}/Norwegian.json +0 -0
- /package/lib/{data → cjs/data}/arabic.json +0 -0
- /package/lib/{data → cjs/data}/chinese.json +0 -0
- /package/lib/{data → cjs/data}/czech.json +0 -0
- /package/lib/{data → cjs/data}/danish.json +0 -0
- /package/lib/{data → cjs/data}/english.json +0 -0
- /package/lib/{data → cjs/data}/esperanto.json +0 -0
- /package/lib/{data → cjs/data}/finnish.json +0 -0
- /package/lib/{data → cjs/data}/french.json +0 -0
- /package/lib/{data → cjs/data}/german.json +0 -0
- /package/lib/{data → cjs/data}/hindi.json +0 -0
- /package/lib/{data → cjs/data}/hungarian.json +0 -0
- /package/lib/{data → cjs/data}/italian.json +0 -0
- /package/lib/{data → cjs/data}/japanese.json +0 -0
- /package/lib/{data → cjs/data}/korean.json +0 -0
- /package/lib/{data → cjs/data}/persian.json +0 -0
- /package/lib/{data → cjs/data}/polish.json +0 -0
- /package/lib/{data → cjs/data}/portuguese.json +0 -0
- /package/lib/{data → cjs/data}/russian.json +0 -0
- /package/lib/{data → cjs/data}/swedish.json +0 -0
- /package/lib/{data → cjs/data}/thai.json +0 -0
- /package/lib/{data → cjs/data}/turkish.json +0 -0
- /package/lib/{data → esm/data}/dictionary.js +0 -0
- /package/lib/{index.js → esm/index.js} +0 -0
- /package/lib/{types → esm/types}/types.js +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const arabic_json_1 = __importDefault(require("./arabic.json"));
|
|
7
|
+
const chinese_json_1 = __importDefault(require("./chinese.json"));
|
|
8
|
+
const czech_json_1 = __importDefault(require("./czech.json"));
|
|
9
|
+
const danish_json_1 = __importDefault(require("./danish.json"));
|
|
10
|
+
const esperanto_json_1 = __importDefault(require("./esperanto.json"));
|
|
11
|
+
const english_json_1 = __importDefault(require("./english.json"));
|
|
12
|
+
const finnish_json_1 = __importDefault(require("./finnish.json"));
|
|
13
|
+
const german_json_1 = __importDefault(require("./german.json"));
|
|
14
|
+
const hindi_json_1 = __importDefault(require("./hindi.json"));
|
|
15
|
+
const hungarian_json_1 = __importDefault(require("./hungarian.json"));
|
|
16
|
+
const korean_json_1 = __importDefault(require("./korean.json"));
|
|
17
|
+
const Norwegian_json_1 = __importDefault(require("./Norwegian.json"));
|
|
18
|
+
const persian_json_1 = __importDefault(require("./persian.json"));
|
|
19
|
+
const polish_json_1 = __importDefault(require("./polish.json"));
|
|
20
|
+
const portuguese_json_1 = __importDefault(require("./portuguese.json"));
|
|
21
|
+
const russian_json_1 = __importDefault(require("./russian.json"));
|
|
22
|
+
const french_json_1 = __importDefault(require("./french.json"));
|
|
23
|
+
const italian_json_1 = __importDefault(require("./italian.json"));
|
|
24
|
+
const japanese_json_1 = __importDefault(require("./japanese.json"));
|
|
25
|
+
const turkish_json_1 = __importDefault(require("./turkish.json"));
|
|
26
|
+
const swedish_json_1 = __importDefault(require("./swedish.json"));
|
|
27
|
+
const thai_json_1 = __importDefault(require("./thai.json"));
|
|
28
|
+
exports.default = {
|
|
29
|
+
arabic: arabic_json_1.default.words,
|
|
30
|
+
chinese: chinese_json_1.default.words,
|
|
31
|
+
czech: czech_json_1.default.words,
|
|
32
|
+
danish: danish_json_1.default.words,
|
|
33
|
+
english: english_json_1.default.words,
|
|
34
|
+
esperanto: esperanto_json_1.default.words,
|
|
35
|
+
finnish: finnish_json_1.default.words,
|
|
36
|
+
french: french_json_1.default.words,
|
|
37
|
+
german: german_json_1.default.words,
|
|
38
|
+
hindi: hindi_json_1.default.words,
|
|
39
|
+
hungarian: hungarian_json_1.default.words,
|
|
40
|
+
italian: italian_json_1.default.words,
|
|
41
|
+
japanese: japanese_json_1.default.words,
|
|
42
|
+
korean: korean_json_1.default.words,
|
|
43
|
+
norwegian: Norwegian_json_1.default.words,
|
|
44
|
+
persian: persian_json_1.default.words,
|
|
45
|
+
polish: polish_json_1.default.words,
|
|
46
|
+
portuguese: portuguese_json_1.default.words,
|
|
47
|
+
russian: russian_json_1.default.words,
|
|
48
|
+
turkish: turkish_json_1.default.words,
|
|
49
|
+
swedish: swedish_json_1.default.words,
|
|
50
|
+
thai: thai_json_1.default.words,
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=dictionary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/data/dictionary.ts"],"names":[],"mappings":";;;;;AAAA,gEAAmC;AACnC,kEAAqC;AACrC,8DAAiC;AACjC,gEAAmC;AACnC,sEAAyC;AACzC,kEAAqC;AACrC,kEAAqC;AACrC,gEAAmC;AACnC,8DAAiC;AACjC,sEAAyC;AACzC,gEAAmC;AACnC,sEAAyC;AACzC,kEAAqC;AACrC,gEAAmC;AACnC,wEAA2C;AAC3C,kEAAqC;AACrC,gEAAmC;AACnC,kEAAqC;AACrC,oEAAuC;AACvC,kEAAqC;AACrC,kEAAqC;AACrC,4DAA+B;AAC/B,kBAAe;IACb,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,KAAK,EAAE,oBAAK,CAAC,KAAK;IAClB,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,SAAS,EAAE,wBAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,KAAK,EAAE,oBAAK,CAAC,KAAK;IAClB,SAAS,EAAE,wBAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,QAAQ,EAAE,uBAAQ,CAAC,KAAK;IACxB,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,SAAS,EAAE,wBAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,MAAM,EAAE,qBAAM,CAAC,KAAK;IACpB,UAAU,EAAE,yBAAU,CAAC,KAAK;IAC5B,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,OAAO,EAAE,sBAAO,CAAC,KAAK;IACtB,IAAI,EAAE,mBAAI,CAAC,KAAK;CACjB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"whitelist": [
|
|
3
|
+
"Document",
|
|
4
|
+
"Assume",
|
|
5
|
+
"Assistant",
|
|
6
|
+
"Assignment",
|
|
7
|
+
"Bass",
|
|
8
|
+
"Class",
|
|
9
|
+
"Grass",
|
|
10
|
+
"Pass",
|
|
11
|
+
"Analytics",
|
|
12
|
+
"Pension",
|
|
13
|
+
"Night",
|
|
14
|
+
"Butler",
|
|
15
|
+
"Canal",
|
|
16
|
+
"Election",
|
|
17
|
+
"Spreadsheet",
|
|
18
|
+
"Accountant",
|
|
19
|
+
"Cucumber",
|
|
20
|
+
"Analysis",
|
|
21
|
+
"Japan",
|
|
22
|
+
"Analytics",
|
|
23
|
+
"Manipulate",
|
|
24
|
+
"Shoot",
|
|
25
|
+
"Button",
|
|
26
|
+
"Scrutiny",
|
|
27
|
+
"Constitution",
|
|
28
|
+
"Associate",
|
|
29
|
+
"Country"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -9,6 +9,7 @@ interface FilterConfig {
|
|
|
9
9
|
severityLevels?: boolean;
|
|
10
10
|
ignoreWords?: string[];
|
|
11
11
|
logProfanity?: boolean;
|
|
12
|
+
globalWhitelist?: string[];
|
|
12
13
|
}
|
|
13
14
|
declare class Filter {
|
|
14
15
|
private words;
|
|
@@ -18,6 +19,7 @@ declare class Filter {
|
|
|
18
19
|
private severityLevels;
|
|
19
20
|
private ignoreWords;
|
|
20
21
|
private logProfanity;
|
|
22
|
+
private globalWhitelist;
|
|
21
23
|
constructor(config?: FilterConfig);
|
|
22
24
|
private getRegex;
|
|
23
25
|
private isFuzzyMatch;
|
|
@@ -28,4 +30,3 @@ declare class Filter {
|
|
|
28
30
|
checkProfanity(text: string): CheckProfanityResult;
|
|
29
31
|
}
|
|
30
32
|
export { Filter };
|
|
31
|
-
//# sourceMappingURL=Filter.d.ts.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Filter = void 0;
|
|
7
|
+
// src/filters/Filter.ts
|
|
8
|
+
const globalWhitelist_json_1 = __importDefault(require("../data/globalWhitelist.json"));
|
|
9
|
+
const dictionary_1 = __importDefault(require("../data/dictionary"));
|
|
10
|
+
class Filter {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
var _a, _b, _c, _d, _e, _f;
|
|
13
|
+
let words = [];
|
|
14
|
+
this.caseSensitive = (_a = config === null || config === void 0 ? void 0 : config.caseSensitive) !== null && _a !== void 0 ? _a : false;
|
|
15
|
+
this.wordBoundaries = (_b = config === null || config === void 0 ? void 0 : config.wordBoundaries) !== null && _b !== void 0 ? _b : true;
|
|
16
|
+
this.replaceWith = config === null || config === void 0 ? void 0 : config.replaceWith;
|
|
17
|
+
this.severityLevels = (_c = config === null || config === void 0 ? void 0 : config.severityLevels) !== null && _c !== void 0 ? _c : false;
|
|
18
|
+
this.ignoreWords = new Set(((_d = config === null || config === void 0 ? void 0 : config.ignoreWords) === null || _d === void 0 ? void 0 : _d.map(word => word.toLowerCase())) || []);
|
|
19
|
+
this.logProfanity = (_e = config === null || config === void 0 ? void 0 : config.logProfanity) !== null && _e !== void 0 ? _e : false;
|
|
20
|
+
const jsonWhitelist = globalWhitelist_json_1.default.whitelist.map(word => word.toLowerCase());
|
|
21
|
+
const mergedWhitelist = [...jsonWhitelist, ...((_f = config === null || config === void 0 ? void 0 : config.globalWhitelist) !== null && _f !== void 0 ? _f : [])];
|
|
22
|
+
this.globalWhitelist = new Set(mergedWhitelist);
|
|
23
|
+
if (config === null || config === void 0 ? void 0 : config.allLanguages) {
|
|
24
|
+
for (const lang in dictionary_1.default) {
|
|
25
|
+
if (dictionary_1.default.hasOwnProperty(lang)) {
|
|
26
|
+
words = [...words, ...dictionary_1.default[lang]];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const languages = (config === null || config === void 0 ? void 0 : config.languages) || ['english'];
|
|
32
|
+
const languagesChecks = new Set(languages);
|
|
33
|
+
if (languagesChecks.size !== 0) {
|
|
34
|
+
languagesChecks.forEach(lang => {
|
|
35
|
+
words = [...words, ...dictionary_1.default[lang]];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (config === null || config === void 0 ? void 0 : config.customWords) {
|
|
40
|
+
words = [...words, ...config.customWords];
|
|
41
|
+
}
|
|
42
|
+
this.words = new Map(words.map(word => [word.toLowerCase(), 1])); // Store words in lowercase
|
|
43
|
+
}
|
|
44
|
+
getRegex(word) {
|
|
45
|
+
const flags = this.caseSensitive ? 'g' : 'gi';
|
|
46
|
+
const boundary = this.wordBoundaries ? '\\b' : '';
|
|
47
|
+
return new RegExp(`${boundary}${word.replace(/(\W)/g, '\\$1')}${boundary}`, flags);
|
|
48
|
+
}
|
|
49
|
+
isFuzzyMatch(word, text) {
|
|
50
|
+
const pattern = `${word.split('').join('[^a-zA-Z]*')}`;
|
|
51
|
+
const regex = new RegExp(pattern, this.caseSensitive ? 'g' : 'gi');
|
|
52
|
+
return regex.test(text);
|
|
53
|
+
}
|
|
54
|
+
isMergedMatch(word, text) {
|
|
55
|
+
const pattern = `${word}`;
|
|
56
|
+
const regex = new RegExp(pattern, this.caseSensitive ? 'g' : 'gi');
|
|
57
|
+
return regex.test(text);
|
|
58
|
+
}
|
|
59
|
+
evaluateSeverity(word, text) {
|
|
60
|
+
if (this.getRegex(word).test(text)) {
|
|
61
|
+
return 1; // Exact match
|
|
62
|
+
}
|
|
63
|
+
else if (this.isFuzzyMatch(word, text)) {
|
|
64
|
+
return 2; // Fuzzy match
|
|
65
|
+
}
|
|
66
|
+
else if (this.isMergedMatch(word, text)) {
|
|
67
|
+
return 3; // Merged word match
|
|
68
|
+
}
|
|
69
|
+
return undefined; // No match or irrelevant match
|
|
70
|
+
}
|
|
71
|
+
isProfane(value) {
|
|
72
|
+
for (const word of this.words.keys()) {
|
|
73
|
+
if (!this.ignoreWords.has(word.toLowerCase()) && !this.globalWhitelist.has(word.toLowerCase()) && this.evaluateSeverity(word, value) !== undefined) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
checkProfanityInSentence(text) {
|
|
80
|
+
const words = text.split(/\s+/);
|
|
81
|
+
const profaneWords = [];
|
|
82
|
+
const severityMap = {};
|
|
83
|
+
for (const word of words) {
|
|
84
|
+
for (const dictWord of this.words.keys()) {
|
|
85
|
+
const severity = this.evaluateSeverity(dictWord, word);
|
|
86
|
+
if (severity !== undefined && !this.ignoreWords.has(dictWord.toLowerCase())) {
|
|
87
|
+
profaneWords.push(word);
|
|
88
|
+
severityMap[word] = severity; // Use the actual word found in text as the key
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
let processedText = text;
|
|
93
|
+
if (this.replaceWith) {
|
|
94
|
+
for (const word of profaneWords) {
|
|
95
|
+
processedText = processedText.replace(new RegExp(word, 'gi'), this.replaceWith);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
containsProfanity: profaneWords.length > 0,
|
|
100
|
+
profaneWords,
|
|
101
|
+
processedText: this.replaceWith ? processedText : undefined,
|
|
102
|
+
severityMap: Object.keys(severityMap).length > 0 ? severityMap : undefined, // Only return if there are valid severities
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
checkProfanity(text) {
|
|
106
|
+
const words = text.split(/\s+/);
|
|
107
|
+
const profaneWords = [];
|
|
108
|
+
const severityMap = {};
|
|
109
|
+
// Check each word individually
|
|
110
|
+
for (const word of words) {
|
|
111
|
+
for (const dictWord of this.words.keys()) {
|
|
112
|
+
const severity = this.evaluateSeverity(dictWord, word);
|
|
113
|
+
if (severity !== undefined && !this.ignoreWords.has(dictWord.toLowerCase())) {
|
|
114
|
+
profaneWords.push(word);
|
|
115
|
+
severityMap[word] = severity; // Use the actual word found in text as the key
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const sentenceResult = this.checkProfanityInSentence(text);
|
|
120
|
+
profaneWords.push(...sentenceResult.profaneWords);
|
|
121
|
+
Object.assign(severityMap, sentenceResult.severityMap);
|
|
122
|
+
let processedText = text;
|
|
123
|
+
if (this.replaceWith) {
|
|
124
|
+
for (const word of profaneWords) {
|
|
125
|
+
processedText = processedText.replace(new RegExp(word, 'gi'), this.replaceWith);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
containsProfanity: profaneWords.length > 0,
|
|
130
|
+
profaneWords: Array.from(new Set(profaneWords)),
|
|
131
|
+
processedText: this.replaceWith ? processedText : undefined,
|
|
132
|
+
severityMap: Object.keys(severityMap).length > 0 ? severityMap : undefined,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.Filter = Filter;
|
|
137
|
+
//# sourceMappingURL=Filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../src/filters/Filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.useProfanityChecker = void 0;
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const Filter_1 = require("../filters/Filter");
|
|
18
|
+
const globalWhitelist_json_1 = __importDefault(require("../data/globalWhitelist.json"));
|
|
19
|
+
const useProfanityChecker = (config) => {
|
|
20
|
+
const [result, setResult] = (0, react_1.useState)(null);
|
|
21
|
+
const filterConfig = Object.assign(Object.assign({}, config), { globalWhitelist: globalWhitelist_json_1.default.whitelist });
|
|
22
|
+
const filter = new Filter_1.Filter(filterConfig);
|
|
23
|
+
const checkText = (text) => {
|
|
24
|
+
const checkResult = filter.checkProfanity(text);
|
|
25
|
+
setResult(checkResult);
|
|
26
|
+
if (config === null || config === void 0 ? void 0 : config.customActions) {
|
|
27
|
+
config.customActions(checkResult);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const checkTextAsync = (text) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const checkResult = filter.checkProfanity(text);
|
|
33
|
+
setResult(checkResult);
|
|
34
|
+
if (config === null || config === void 0 ? void 0 : config.customActions) {
|
|
35
|
+
config.customActions(checkResult);
|
|
36
|
+
}
|
|
37
|
+
resolve(checkResult);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
result,
|
|
42
|
+
checkText,
|
|
43
|
+
checkTextAsync,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
exports.useProfanityChecker = useProfanityChecker;
|
|
47
|
+
//# sourceMappingURL=useProfanityChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useProfanityChecker.js","sourceRoot":"","sources":["../../../src/hooks/useProfanityChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,8CAA2C;AAE3C,wFAA+D;AAaxD,MAAM,mBAAmB,GAAG,CAAC,MAA+B,EAAE,EAAE;IACrE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAA8B,IAAI,CAAC,CAAC;IACxE,MAAM,YAAY,mCACb,MAAM,KACT,eAAe,EAAE,8BAAmB,CAAC,SAAS,GAC/C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAChD,SAAS,CAAC,WAAW,CAAC,CAAC;QACvB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,EAAE,CAAC;YAC1B,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAO,IAAY,EAAE,EAAE;QAC5C,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,EAAE;YACnD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChD,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,EAAE,CAAC;gBAC1B,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;IAEF,OAAO;QACL,MAAM;QACN,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,mBAAmB,uBAiC9B"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useProfanityChecker = exports.Filter = void 0;
|
|
4
|
+
var Filter_1 = require("./filters/Filter");
|
|
5
|
+
Object.defineProperty(exports, "Filter", { enumerable: true, get: function () { return Filter_1.Filter; } });
|
|
6
|
+
var useProfanityChecker_1 = require("./hooks/useProfanityChecker");
|
|
7
|
+
Object.defineProperty(exports, "useProfanityChecker", { enumerable: true, get: function () { return useProfanityChecker_1.useProfanityChecker; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AACf,mEAAkE;AAAzD,0HAAA,mBAAmB,OAAA"}
|
|
@@ -7,4 +7,3 @@ export interface CheckProfanityResult {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
export type Language = 'arabic' | 'chinese' | 'czech' | 'danish' | 'english' | 'esperanto' | 'finnish' | 'french' | 'german' | 'hindi' | 'hungarian' | 'italian' | 'japanese' | 'korean' | 'norwegian' | 'persian' | 'polish' | 'portuguese' | 'russian' | 'turkish' | 'swedish' | 'thai';
|
|
10
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"words": [
|
|
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
|
+
"bdsm",
|
|
49
|
+
"زان",
|
|
50
|
+
"سادي",
|
|
51
|
+
"سادى",
|
|
52
|
+
"كسها",
|
|
53
|
+
"كسي",
|
|
54
|
+
"كسك",
|
|
55
|
+
"كسم",
|
|
56
|
+
"بنتاك",
|
|
57
|
+
"بتناك",
|
|
58
|
+
"نيكني",
|
|
59
|
+
"ديوث",
|
|
60
|
+
"نياك",
|
|
61
|
+
"فشاخ",
|
|
62
|
+
"فشخ",
|
|
63
|
+
"هفشخك",
|
|
64
|
+
"شذوذ",
|
|
65
|
+
"لواط",
|
|
66
|
+
"لوطي",
|
|
67
|
+
"لوطى",
|
|
68
|
+
"عاهر",
|
|
69
|
+
"لحس",
|
|
70
|
+
"متع",
|
|
71
|
+
"حمام",
|
|
72
|
+
"هربط",
|
|
73
|
+
"دياث",
|
|
74
|
+
"سحاق",
|
|
75
|
+
"جنس",
|
|
76
|
+
"جنس",
|
|
77
|
+
"جوزي",
|
|
78
|
+
"مراتي",
|
|
79
|
+
"مراتى",
|
|
80
|
+
"مرات",
|
|
81
|
+
"ورا",
|
|
82
|
+
"شعر",
|
|
83
|
+
"مشعر",
|
|
84
|
+
"اركب",
|
|
85
|
+
"فرس",
|
|
86
|
+
"جاد",
|
|
87
|
+
"منيوك",
|
|
88
|
+
"زوبر",
|
|
89
|
+
"طياز",
|
|
90
|
+
"شراميط",
|
|
91
|
+
"فاجر",
|
|
92
|
+
"محروم",
|
|
93
|
+
"واقف",
|
|
94
|
+
"بيحك",
|
|
95
|
+
"ممحونة",
|
|
96
|
+
"لبن",
|
|
97
|
+
"لبو",
|
|
98
|
+
"واقف",
|
|
99
|
+
"شرقان",
|
|
100
|
+
"افضي",
|
|
101
|
+
"دهولت",
|
|
102
|
+
"bzaz",
|
|
103
|
+
"nek",
|
|
104
|
+
"nik",
|
|
105
|
+
"mtnak",
|
|
106
|
+
"zeb",
|
|
107
|
+
"zep",
|
|
108
|
+
"zobr",
|
|
109
|
+
"zopr",
|
|
110
|
+
"kos",
|
|
111
|
+
"a7a",
|
|
112
|
+
"hayg",
|
|
113
|
+
"لبوه",
|
|
114
|
+
"لبوة",
|
|
115
|
+
"لبوت",
|
|
116
|
+
"sharma",
|
|
117
|
+
"banoty",
|
|
118
|
+
"بنوتي",
|
|
119
|
+
"بنوتى",
|
|
120
|
+
"سلب",
|
|
121
|
+
"عايز",
|
|
122
|
+
"دكر",
|
|
123
|
+
"نتاية",
|
|
124
|
+
"نتايه",
|
|
125
|
+
"زنج",
|
|
126
|
+
"ممحون",
|
|
127
|
+
"تعبان",
|
|
128
|
+
"اقعد",
|
|
129
|
+
"بزاز",
|
|
130
|
+
"هيجان",
|
|
131
|
+
"سافل",
|
|
132
|
+
"مصيهولي",
|
|
133
|
+
"هتمص",
|
|
134
|
+
"مصي",
|
|
135
|
+
"بز",
|
|
136
|
+
"hayg",
|
|
137
|
+
"كلوت",
|
|
138
|
+
"اندر",
|
|
139
|
+
"سنتيا",
|
|
140
|
+
"بوكسر",
|
|
141
|
+
"بتاع",
|
|
142
|
+
"مشتهي",
|
|
143
|
+
"زبى",
|
|
144
|
+
"نكته",
|
|
145
|
+
"اتناك",
|
|
146
|
+
"nayak",
|
|
147
|
+
"nyak",
|
|
148
|
+
"neeek",
|
|
149
|
+
"اغتصا",
|
|
150
|
+
"زب",
|
|
151
|
+
"كس",
|
|
152
|
+
"بلكيشن",
|
|
153
|
+
"كيشن",
|
|
154
|
+
"ليسبيان",
|
|
155
|
+
"سبيان"
|
|
156
|
+
]
|
|
157
|
+
}
|