allprofanity 2.1.0 → 2.1.1
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/README.md +8 -1
- package/dist/index.d.ts +108 -35
- package/dist/index.js +121 -74
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -380,6 +380,13 @@ A: Yes! AllProfanity is universal.
|
|
|
380
380
|
|
|
381
381
|
---
|
|
382
382
|
|
|
383
|
+
## Middleware Examples
|
|
384
|
+
|
|
385
|
+
**Looking for Express.js/Node.js middleware to use AllProfanity in your API or chat app?**
|
|
386
|
+
**Check the [`examples/`](./examples/) folder for ready-to-copy middleware and integration samples.**
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
383
390
|
## Roadmap
|
|
384
391
|
|
|
385
392
|
- More language packs (Arabic, Russian, etc.)
|
|
@@ -399,4 +406,4 @@ MIT — See [LICENSE](https://github.com/ayush-jadaun/allprofanity/blob/main/LIC
|
|
|
399
406
|
|
|
400
407
|
We welcome new language packs, detection improvements, and docs!
|
|
401
408
|
To add a new language, create a file in `src/languages/` and export a string array.
|
|
402
|
-
Open a PR or issue for bugs, features, or suggestions.
|
|
409
|
+
Open a PR or issue for bugs, features, or suggestions.
|
package/dist/index.d.ts
CHANGED
|
@@ -7,15 +7,27 @@ export { default as bengaliBadWords } from "./languages/bengali-words.js";
|
|
|
7
7
|
export { default as tamilBadWords } from "./languages/tamil-words.js";
|
|
8
8
|
export { default as teluguBadWords } from "./languages/telugu-words.js";
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Logger interface for the library.
|
|
11
11
|
*/
|
|
12
12
|
export interface Logger {
|
|
13
|
+
/**
|
|
14
|
+
* Log informational messages.
|
|
15
|
+
* @param message - The message to log.
|
|
16
|
+
*/
|
|
13
17
|
info(message: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Log warning messages.
|
|
20
|
+
* @param message - The message to log.
|
|
21
|
+
*/
|
|
14
22
|
warn(message: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Log error messages.
|
|
25
|
+
* @param message - The message to log.
|
|
26
|
+
*/
|
|
15
27
|
error(message: string): void;
|
|
16
28
|
}
|
|
17
29
|
/**
|
|
18
|
-
* Configuration options for AllProfanity
|
|
30
|
+
* Configuration options for AllProfanity.
|
|
19
31
|
*/
|
|
20
32
|
export interface AllProfanityOptions {
|
|
21
33
|
languages?: string[];
|
|
@@ -29,7 +41,7 @@ export interface AllProfanityOptions {
|
|
|
29
41
|
logger?: Logger;
|
|
30
42
|
}
|
|
31
43
|
/**
|
|
32
|
-
* Severity levels for profanity detection
|
|
44
|
+
* Severity levels for profanity detection.
|
|
33
45
|
*/
|
|
34
46
|
export declare enum ProfanitySeverity {
|
|
35
47
|
MILD = 1,
|
|
@@ -38,7 +50,7 @@ export declare enum ProfanitySeverity {
|
|
|
38
50
|
EXTREME = 4
|
|
39
51
|
}
|
|
40
52
|
/**
|
|
41
|
-
* Detection result
|
|
53
|
+
* Detection result for profanity detection.
|
|
42
54
|
*/
|
|
43
55
|
export interface ProfanityDetectionResult {
|
|
44
56
|
hasProfanity: boolean;
|
|
@@ -52,8 +64,7 @@ export interface ProfanityDetectionResult {
|
|
|
52
64
|
}>;
|
|
53
65
|
}
|
|
54
66
|
/**
|
|
55
|
-
*
|
|
56
|
-
* Addresses all critical issues from the original implementation
|
|
67
|
+
* Main class for profanity detection and filtering.
|
|
57
68
|
*/
|
|
58
69
|
export declare class AllProfanity {
|
|
59
70
|
private readonly profanityTrie;
|
|
@@ -68,127 +79,189 @@ export declare class AllProfanity {
|
|
|
68
79
|
private readonly availableLanguages;
|
|
69
80
|
private readonly leetMappings;
|
|
70
81
|
private readonly dynamicWords;
|
|
82
|
+
/**
|
|
83
|
+
* Create an AllProfanity instance.
|
|
84
|
+
* @param options - Profanity filter configuration options.
|
|
85
|
+
*/
|
|
71
86
|
constructor(options?: AllProfanityOptions);
|
|
72
87
|
/**
|
|
73
|
-
* Normalize
|
|
88
|
+
* Normalize leet speak to regular characters.
|
|
89
|
+
* @param text - The input text.
|
|
90
|
+
* @returns Normalized text.
|
|
74
91
|
*/
|
|
75
92
|
private normalizeLeetSpeak;
|
|
76
93
|
/**
|
|
77
|
-
*
|
|
94
|
+
* Escape regex special characters in a string.
|
|
95
|
+
* @param str - The string to escape.
|
|
96
|
+
* @returns The escaped string.
|
|
78
97
|
*/
|
|
79
98
|
private escapeRegex;
|
|
80
99
|
/**
|
|
81
|
-
* Check if a
|
|
100
|
+
* Check if a match is bounded by word boundaries (strict mode).
|
|
101
|
+
* @param text - The text.
|
|
102
|
+
* @param start - Start index.
|
|
103
|
+
* @param end - End index.
|
|
104
|
+
* @returns True if match is at word boundaries, false otherwise.
|
|
82
105
|
*/
|
|
83
106
|
private hasWordBoundaries;
|
|
84
107
|
/**
|
|
85
|
-
*
|
|
108
|
+
* Determine if a match is a whole word.
|
|
109
|
+
* @param text - The text.
|
|
110
|
+
* @param start - Start index.
|
|
111
|
+
* @param end - End index.
|
|
112
|
+
* @returns True if whole word, false otherwise.
|
|
86
113
|
*/
|
|
87
114
|
private isWholeWord;
|
|
88
115
|
/**
|
|
89
|
-
* Check if a match is whitelisted
|
|
116
|
+
* Check if a match is whitelisted.
|
|
117
|
+
* @param word - Word from dictionary.
|
|
118
|
+
* @param matchedText - Actual matched text.
|
|
119
|
+
* @returns True if whitelisted, false otherwise.
|
|
90
120
|
*/
|
|
91
121
|
private isWhitelistedMatch;
|
|
92
122
|
/**
|
|
93
|
-
* Remove overlapping matches,
|
|
123
|
+
* Remove overlapping matches, keeping only the longest at each start position.
|
|
124
|
+
* @param matches - Array of match results.
|
|
125
|
+
* @returns Deduplicated matches.
|
|
94
126
|
*/
|
|
95
127
|
private deduplicateMatches;
|
|
96
128
|
/**
|
|
97
|
-
*
|
|
129
|
+
* Detect profanity in a given text.
|
|
130
|
+
* @param text - The text to check.
|
|
131
|
+
* @returns Profanity detection result.
|
|
98
132
|
*/
|
|
99
133
|
detect(text: string): ProfanityDetectionResult;
|
|
100
134
|
/**
|
|
101
135
|
* Main matching function, with whole-word logic.
|
|
136
|
+
* @param searchText - The normalized text to search.
|
|
137
|
+
* @param originalText - The original text.
|
|
138
|
+
* @param matches - Array to collect matches.
|
|
102
139
|
*/
|
|
103
140
|
private findMatches;
|
|
104
141
|
/**
|
|
105
|
-
* Generate cleaned text by replacing profane words
|
|
142
|
+
* Generate cleaned text by replacing profane words.
|
|
143
|
+
* @param originalText - The original text.
|
|
144
|
+
* @param matches - Array of matches.
|
|
145
|
+
* @returns Cleaned text.
|
|
106
146
|
*/
|
|
107
147
|
private generateCleanedText;
|
|
108
148
|
/**
|
|
109
|
-
*
|
|
149
|
+
* Check if a string contains profanity.
|
|
150
|
+
* @param text - The text to check.
|
|
151
|
+
* @returns True if profanity is found, false otherwise.
|
|
110
152
|
*/
|
|
111
153
|
check(text: string): boolean;
|
|
112
154
|
/**
|
|
113
|
-
* Clean text with custom placeholder
|
|
155
|
+
* Clean text with a custom placeholder.
|
|
156
|
+
* @param text - The text to clean.
|
|
157
|
+
* @param placeholder - The placeholder to use.
|
|
158
|
+
* @returns Cleaned text.
|
|
114
159
|
*/
|
|
115
160
|
clean(text: string, placeholder?: string): string;
|
|
116
161
|
/**
|
|
117
|
-
* Clean text by replacing each profane word with a single placeholder (word-level)
|
|
162
|
+
* Clean text by replacing each profane word with a single placeholder (word-level).
|
|
163
|
+
* @param text - The text to clean.
|
|
164
|
+
* @param placeholder - The placeholder to use.
|
|
165
|
+
* @returns Word-level cleaned text.
|
|
118
166
|
*/
|
|
119
167
|
cleanWithPlaceholder(text: string, placeholder?: string): string;
|
|
120
168
|
/**
|
|
121
|
-
* Add word(s) to the profanity
|
|
169
|
+
* Add word(s) to the profanity filter.
|
|
170
|
+
* @param word - Word or array of words to add.
|
|
122
171
|
*/
|
|
123
172
|
add(word: string | string[]): void;
|
|
124
173
|
/**
|
|
125
|
-
* Remove word(s) from the profanity
|
|
174
|
+
* Remove word(s) from the profanity filter.
|
|
175
|
+
* @param word - Word or array of words to remove.
|
|
126
176
|
*/
|
|
127
177
|
remove(word: string | string[]): void;
|
|
128
178
|
/**
|
|
129
|
-
* Add words to whitelist
|
|
179
|
+
* Add words to the whitelist.
|
|
180
|
+
* @param words - Words to whitelist.
|
|
130
181
|
*/
|
|
131
182
|
addToWhitelist(words: string[]): void;
|
|
132
183
|
/**
|
|
133
|
-
* Remove words from whitelist
|
|
184
|
+
* Remove words from the whitelist.
|
|
185
|
+
* @param words - Words to remove from whitelist.
|
|
134
186
|
*/
|
|
135
187
|
removeFromWhitelist(words: string[]): void;
|
|
136
188
|
/**
|
|
137
|
-
*
|
|
189
|
+
* Check if a word is whitelisted.
|
|
190
|
+
* @param word - The word to check.
|
|
191
|
+
* @returns True if whitelisted, false otherwise.
|
|
138
192
|
*/
|
|
139
193
|
private isWhitelisted;
|
|
140
194
|
/**
|
|
141
|
-
* Load a built-in language dictionary
|
|
195
|
+
* Load a built-in language dictionary.
|
|
196
|
+
* @param language - The language key.
|
|
197
|
+
* @returns True if loaded, false otherwise.
|
|
142
198
|
*/
|
|
143
199
|
loadLanguage(language: string): boolean;
|
|
144
200
|
/**
|
|
145
|
-
* Load multiple
|
|
201
|
+
* Load multiple language dictionaries.
|
|
202
|
+
* @param languages - Array of languages to load.
|
|
203
|
+
* @returns Number of successfully loaded languages.
|
|
146
204
|
*/
|
|
147
205
|
loadLanguages(languages: string[]): number;
|
|
148
206
|
/**
|
|
149
|
-
* Load all Indian languages
|
|
207
|
+
* Load all supported Indian languages.
|
|
208
|
+
* @returns Number of loaded Indian languages.
|
|
150
209
|
*/
|
|
151
210
|
loadIndianLanguages(): number;
|
|
152
211
|
/**
|
|
153
|
-
* Load a custom dictionary
|
|
212
|
+
* Load a custom dictionary.
|
|
213
|
+
* @param name - Name of the dictionary.
|
|
214
|
+
* @param words - Words to add.
|
|
154
215
|
*/
|
|
155
216
|
loadCustomDictionary(name: string, words: string[]): void;
|
|
156
217
|
/**
|
|
157
|
-
* Add a single word to the trie
|
|
218
|
+
* Add a single word to the trie.
|
|
219
|
+
* @param word - The word to add.
|
|
220
|
+
* @returns True if added, false otherwise.
|
|
158
221
|
*/
|
|
159
222
|
private addWordToTrie;
|
|
160
223
|
/**
|
|
161
|
-
*
|
|
224
|
+
* Calculate severity from matches.
|
|
225
|
+
* @param matches - Array of matches.
|
|
226
|
+
* @returns Severity level.
|
|
162
227
|
*/
|
|
163
228
|
private calculateSeverity;
|
|
164
229
|
/**
|
|
165
|
-
* Clear all loaded dictionaries
|
|
230
|
+
* Clear all loaded dictionaries and dynamic words.
|
|
166
231
|
*/
|
|
167
232
|
clearList(): void;
|
|
168
233
|
/**
|
|
169
|
-
* Set placeholder character
|
|
234
|
+
* Set the placeholder character for filtered words.
|
|
235
|
+
* @param placeholder - The placeholder character.
|
|
170
236
|
*/
|
|
171
237
|
setPlaceholder(placeholder: string): void;
|
|
172
238
|
/**
|
|
173
|
-
* Get loaded languages
|
|
239
|
+
* Get the list of loaded languages.
|
|
240
|
+
* @returns Array of loaded language keys.
|
|
174
241
|
*/
|
|
175
242
|
getLoadedLanguages(): string[];
|
|
176
243
|
/**
|
|
177
|
-
* Get available languages
|
|
244
|
+
* Get the list of available built-in languages.
|
|
245
|
+
* @returns Array of available language keys.
|
|
178
246
|
*/
|
|
179
247
|
getAvailableLanguages(): string[];
|
|
180
248
|
/**
|
|
181
|
-
* Get current configuration
|
|
249
|
+
* Get the current configuration of the profanity filter.
|
|
250
|
+
* @returns Partial configuration object.
|
|
182
251
|
*/
|
|
183
252
|
getConfig(): Partial<AllProfanityOptions>;
|
|
184
253
|
/**
|
|
185
|
-
*
|
|
254
|
+
* Rebuild the profanity trie from loaded dictionaries and dynamic words.
|
|
186
255
|
*/
|
|
187
256
|
private rebuildTrie;
|
|
188
257
|
/**
|
|
189
|
-
* Update configuration
|
|
258
|
+
* Update configuration options for the profanity filter.
|
|
259
|
+
* @param options - Partial configuration object.
|
|
190
260
|
*/
|
|
191
261
|
updateConfig(options: Partial<AllProfanityOptions>): void;
|
|
192
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Singleton instance of AllProfanity with default configuration.
|
|
265
|
+
*/
|
|
193
266
|
declare const allProfanity: AllProfanity;
|
|
194
267
|
export default allProfanity;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Language dictionaries imports
|
|
2
2
|
import englishBadWords from "./languages/english-words.js";
|
|
3
3
|
import hindiBadWords from "./languages/hindi-words.js";
|
|
4
4
|
import frenchBadWords from "./languages/french-words.js";
|
|
@@ -17,7 +17,7 @@ export { default as bengaliBadWords } from "./languages/bengali-words.js";
|
|
|
17
17
|
export { default as tamilBadWords } from "./languages/tamil-words.js";
|
|
18
18
|
export { default as teluguBadWords } from "./languages/telugu-words.js";
|
|
19
19
|
/**
|
|
20
|
-
* Default console logger implementation
|
|
20
|
+
* Default console logger implementation.
|
|
21
21
|
*/
|
|
22
22
|
class ConsoleLogger {
|
|
23
23
|
info(message) {
|
|
@@ -31,7 +31,7 @@ class ConsoleLogger {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Severity levels for profanity detection
|
|
34
|
+
* Severity levels for profanity detection.
|
|
35
35
|
*/
|
|
36
36
|
export var ProfanitySeverity;
|
|
37
37
|
(function (ProfanitySeverity) {
|
|
@@ -41,7 +41,11 @@ export var ProfanitySeverity;
|
|
|
41
41
|
ProfanitySeverity[ProfanitySeverity["EXTREME"] = 4] = "EXTREME";
|
|
42
42
|
})(ProfanitySeverity = ProfanitySeverity || (ProfanitySeverity = {}));
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* Validate a string parameter.
|
|
45
|
+
* @param input - The input to validate.
|
|
46
|
+
* @param paramName - The name of the parameter.
|
|
47
|
+
* @returns The validated string.
|
|
48
|
+
* @throws {TypeError} If input is not a string.
|
|
45
49
|
*/
|
|
46
50
|
function validateString(input, paramName) {
|
|
47
51
|
if (typeof input !== "string") {
|
|
@@ -49,6 +53,13 @@ function validateString(input, paramName) {
|
|
|
49
53
|
}
|
|
50
54
|
return input;
|
|
51
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate a string array parameter.
|
|
58
|
+
* @param input - The input to validate.
|
|
59
|
+
* @param paramName - The name of the parameter.
|
|
60
|
+
* @returns The validated string array.
|
|
61
|
+
* @throws {TypeError} If input is not an array.
|
|
62
|
+
*/
|
|
52
63
|
function validateStringArray(input, paramName) {
|
|
53
64
|
if (!Array.isArray(input)) {
|
|
54
65
|
throw new TypeError(`${paramName} must be an array`);
|
|
@@ -62,7 +73,7 @@ function validateStringArray(input, paramName) {
|
|
|
62
73
|
});
|
|
63
74
|
}
|
|
64
75
|
/**
|
|
65
|
-
*
|
|
76
|
+
* Trie node for efficient string matching.
|
|
66
77
|
*/
|
|
67
78
|
class TrieNode {
|
|
68
79
|
constructor() {
|
|
@@ -71,7 +82,8 @@ class TrieNode {
|
|
|
71
82
|
this.word = "";
|
|
72
83
|
}
|
|
73
84
|
/**
|
|
74
|
-
* Add a word to the trie
|
|
85
|
+
* Add a word to the trie.
|
|
86
|
+
* @param word - The word to add.
|
|
75
87
|
*/
|
|
76
88
|
addWord(word) {
|
|
77
89
|
let current = this;
|
|
@@ -88,7 +100,9 @@ class TrieNode {
|
|
|
88
100
|
current.word = word;
|
|
89
101
|
}
|
|
90
102
|
/**
|
|
91
|
-
* Remove a word from the trie
|
|
103
|
+
* Remove a word from the trie.
|
|
104
|
+
* @param word - The word to remove.
|
|
105
|
+
* @returns True if the word was removed, false otherwise.
|
|
92
106
|
*/
|
|
93
107
|
removeWord(word) {
|
|
94
108
|
return this.removeHelper(word, 0);
|
|
@@ -112,7 +126,11 @@ class TrieNode {
|
|
|
112
126
|
return false;
|
|
113
127
|
}
|
|
114
128
|
/**
|
|
115
|
-
* Find all matches starting at a given position
|
|
129
|
+
* Find all matches starting at a given position.
|
|
130
|
+
* @param text - The text to search.
|
|
131
|
+
* @param startPos - The start position.
|
|
132
|
+
* @param allowPartial - Whether to allow partial word matches.
|
|
133
|
+
* @returns Array of matches.
|
|
116
134
|
*/
|
|
117
135
|
findMatches(text, startPos, allowPartial) {
|
|
118
136
|
const matches = [];
|
|
@@ -146,7 +164,7 @@ class TrieNode {
|
|
|
146
164
|
return matches;
|
|
147
165
|
}
|
|
148
166
|
/**
|
|
149
|
-
* Clear all words from the trie
|
|
167
|
+
* Clear all words from the trie.
|
|
150
168
|
*/
|
|
151
169
|
clear() {
|
|
152
170
|
this.children.clear();
|
|
@@ -155,22 +173,23 @@ class TrieNode {
|
|
|
155
173
|
}
|
|
156
174
|
}
|
|
157
175
|
/**
|
|
158
|
-
*
|
|
159
|
-
* Addresses all critical issues from the original implementation
|
|
176
|
+
* Main class for profanity detection and filtering.
|
|
160
177
|
*/
|
|
161
178
|
export class AllProfanity {
|
|
179
|
+
/**
|
|
180
|
+
* Create an AllProfanity instance.
|
|
181
|
+
* @param options - Profanity filter configuration options.
|
|
182
|
+
*/
|
|
162
183
|
constructor(options) {
|
|
163
184
|
var _a, _b, _c, _d, _e;
|
|
164
185
|
this.profanityTrie = new TrieNode();
|
|
165
186
|
this.whitelistSet = new Set();
|
|
166
187
|
this.loadedLanguages = new Set();
|
|
167
|
-
// Configuration
|
|
168
188
|
this.defaultPlaceholder = "*";
|
|
169
189
|
this.enableLeetSpeak = true;
|
|
170
190
|
this.caseSensitive = false;
|
|
171
191
|
this.strictMode = false;
|
|
172
192
|
this.detectPartialWords = false;
|
|
173
|
-
// Available language dictionaries
|
|
174
193
|
this.availableLanguages = {
|
|
175
194
|
english: englishBadWords || [],
|
|
176
195
|
hindi: hindiBadWords || [],
|
|
@@ -181,7 +200,6 @@ export class AllProfanity {
|
|
|
181
200
|
tamil: tamilBadWords || [],
|
|
182
201
|
telugu: teluguBadWords || [],
|
|
183
202
|
};
|
|
184
|
-
// Fixed leet speak mappings
|
|
185
203
|
this.leetMappings = new Map([
|
|
186
204
|
["@", "a"],
|
|
187
205
|
["^", "a"],
|
|
@@ -240,10 +258,8 @@ export class AllProfanity {
|
|
|
240
258
|
["2", "z"],
|
|
241
259
|
["7_", "z"],
|
|
242
260
|
]);
|
|
243
|
-
// Dynamic words added at runtime
|
|
244
261
|
this.dynamicWords = new Set();
|
|
245
262
|
this.logger = (options === null || options === void 0 ? void 0 : options.logger) || new ConsoleLogger();
|
|
246
|
-
// Validate and set configuration
|
|
247
263
|
if ((options === null || options === void 0 ? void 0 : options.defaultPlaceholder) !== undefined) {
|
|
248
264
|
this.setPlaceholder(options.defaultPlaceholder);
|
|
249
265
|
}
|
|
@@ -251,18 +267,14 @@ export class AllProfanity {
|
|
|
251
267
|
this.caseSensitive = (_b = options === null || options === void 0 ? void 0 : options.caseSensitive) !== null && _b !== void 0 ? _b : false;
|
|
252
268
|
this.strictMode = (_c = options === null || options === void 0 ? void 0 : options.strictMode) !== null && _c !== void 0 ? _c : false;
|
|
253
269
|
this.detectPartialWords = (_d = options === null || options === void 0 ? void 0 : options.detectPartialWords) !== null && _d !== void 0 ? _d : false;
|
|
254
|
-
// Load whitelist
|
|
255
270
|
if (options === null || options === void 0 ? void 0 : options.whitelistWords) {
|
|
256
271
|
this.addToWhitelist(options.whitelistWords);
|
|
257
272
|
}
|
|
258
|
-
// Load default languages
|
|
259
273
|
this.loadLanguage("english");
|
|
260
274
|
this.loadLanguage("hindi");
|
|
261
|
-
// Load additional languages
|
|
262
275
|
if ((_e = options === null || options === void 0 ? void 0 : options.languages) === null || _e === void 0 ? void 0 : _e.length) {
|
|
263
276
|
options.languages.forEach((lang) => this.loadLanguage(lang));
|
|
264
277
|
}
|
|
265
|
-
// Load custom dictionaries
|
|
266
278
|
if (options === null || options === void 0 ? void 0 : options.customDictionaries) {
|
|
267
279
|
Object.entries(options.customDictionaries).forEach(([name, words]) => {
|
|
268
280
|
this.loadCustomDictionary(name, words);
|
|
@@ -270,7 +282,9 @@ export class AllProfanity {
|
|
|
270
282
|
}
|
|
271
283
|
}
|
|
272
284
|
/**
|
|
273
|
-
* Normalize
|
|
285
|
+
* Normalize leet speak to regular characters.
|
|
286
|
+
* @param text - The input text.
|
|
287
|
+
* @returns Normalized text.
|
|
274
288
|
*/
|
|
275
289
|
normalizeLeetSpeak(text) {
|
|
276
290
|
if (!this.enableLeetSpeak)
|
|
@@ -284,13 +298,19 @@ export class AllProfanity {
|
|
|
284
298
|
return normalized;
|
|
285
299
|
}
|
|
286
300
|
/**
|
|
287
|
-
*
|
|
301
|
+
* Escape regex special characters in a string.
|
|
302
|
+
* @param str - The string to escape.
|
|
303
|
+
* @returns The escaped string.
|
|
288
304
|
*/
|
|
289
305
|
escapeRegex(str) {
|
|
290
306
|
return str.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
|
|
291
307
|
}
|
|
292
308
|
/**
|
|
293
|
-
* Check if a
|
|
309
|
+
* Check if a match is bounded by word boundaries (strict mode).
|
|
310
|
+
* @param text - The text.
|
|
311
|
+
* @param start - Start index.
|
|
312
|
+
* @param end - End index.
|
|
313
|
+
* @returns True if match is at word boundaries, false otherwise.
|
|
294
314
|
*/
|
|
295
315
|
hasWordBoundaries(text, start, end) {
|
|
296
316
|
if (!this.strictMode)
|
|
@@ -301,27 +321,24 @@ export class AllProfanity {
|
|
|
301
321
|
return (wordBoundaryRegex.test(beforeChar) && wordBoundaryRegex.test(afterChar));
|
|
302
322
|
}
|
|
303
323
|
/**
|
|
304
|
-
*
|
|
324
|
+
* Determine if a match is a whole word.
|
|
325
|
+
* @param text - The text.
|
|
326
|
+
* @param start - Start index.
|
|
327
|
+
* @param end - End index.
|
|
328
|
+
* @returns True if whole word, false otherwise.
|
|
305
329
|
*/
|
|
306
330
|
isWholeWord(text, start, end) {
|
|
307
|
-
|
|
308
|
-
if (start === 0) {
|
|
309
|
-
// ok
|
|
310
|
-
}
|
|
311
|
-
else if (/\w/.test(text[start - 1])) {
|
|
331
|
+
if (start !== 0 && /\w/.test(text[start - 1]))
|
|
312
332
|
return false;
|
|
313
|
-
|
|
314
|
-
// Check right boundary
|
|
315
|
-
if (end === text.length) {
|
|
316
|
-
// ok
|
|
317
|
-
}
|
|
318
|
-
else if (/\w/.test(text[end])) {
|
|
333
|
+
if (end !== text.length && /\w/.test(text[end]))
|
|
319
334
|
return false;
|
|
320
|
-
}
|
|
321
335
|
return true;
|
|
322
336
|
}
|
|
323
337
|
/**
|
|
324
|
-
* Check if a match is whitelisted
|
|
338
|
+
* Check if a match is whitelisted.
|
|
339
|
+
* @param word - Word from dictionary.
|
|
340
|
+
* @param matchedText - Actual matched text.
|
|
341
|
+
* @returns True if whitelisted, false otherwise.
|
|
325
342
|
*/
|
|
326
343
|
isWhitelistedMatch(word, matchedText) {
|
|
327
344
|
if (this.caseSensitive) {
|
|
@@ -333,7 +350,9 @@ export class AllProfanity {
|
|
|
333
350
|
}
|
|
334
351
|
}
|
|
335
352
|
/**
|
|
336
|
-
* Remove overlapping matches,
|
|
353
|
+
* Remove overlapping matches, keeping only the longest at each start position.
|
|
354
|
+
* @param matches - Array of match results.
|
|
355
|
+
* @returns Deduplicated matches.
|
|
337
356
|
*/
|
|
338
357
|
deduplicateMatches(matches) {
|
|
339
358
|
const sorted = [...matches].sort((a, b) => {
|
|
@@ -352,7 +371,9 @@ export class AllProfanity {
|
|
|
352
371
|
return result;
|
|
353
372
|
}
|
|
354
373
|
/**
|
|
355
|
-
*
|
|
374
|
+
* Detect profanity in a given text.
|
|
375
|
+
* @param text - The text to check.
|
|
376
|
+
* @returns Profanity detection result.
|
|
356
377
|
*/
|
|
357
378
|
detect(text) {
|
|
358
379
|
const validatedText = validateString(text, "text");
|
|
@@ -370,7 +391,6 @@ export class AllProfanity {
|
|
|
370
391
|
? validatedText
|
|
371
392
|
: validatedText.toLowerCase();
|
|
372
393
|
this.findMatches(normalizedText, validatedText, matches);
|
|
373
|
-
// Leet speak detection (normalize and search, map back to original)
|
|
374
394
|
if (this.enableLeetSpeak) {
|
|
375
395
|
const leetNormalized = this.normalizeLeetSpeak(normalizedText);
|
|
376
396
|
if (leetNormalized !== normalizedText) {
|
|
@@ -395,6 +415,9 @@ export class AllProfanity {
|
|
|
395
415
|
}
|
|
396
416
|
/**
|
|
397
417
|
* Main matching function, with whole-word logic.
|
|
418
|
+
* @param searchText - The normalized text to search.
|
|
419
|
+
* @param originalText - The original text.
|
|
420
|
+
* @param matches - Array to collect matches.
|
|
398
421
|
*/
|
|
399
422
|
findMatches(searchText, originalText, matches) {
|
|
400
423
|
for (let i = 0; i < searchText.length; i++) {
|
|
@@ -402,12 +425,10 @@ export class AllProfanity {
|
|
|
402
425
|
for (const match of matchResults) {
|
|
403
426
|
const start = i + match.start;
|
|
404
427
|
const end = i + match.end;
|
|
405
|
-
// Only match whole words if !detectPartialWords
|
|
406
428
|
if (!this.detectPartialWords &&
|
|
407
429
|
!this.isWholeWord(originalText, start, end)) {
|
|
408
430
|
continue;
|
|
409
431
|
}
|
|
410
|
-
// Use actual matched text for whitelist check
|
|
411
432
|
const matchedText = originalText.substring(start, end);
|
|
412
433
|
if (this.isWhitelistedMatch(match.word, matchedText)) {
|
|
413
434
|
continue;
|
|
@@ -424,13 +445,15 @@ export class AllProfanity {
|
|
|
424
445
|
}
|
|
425
446
|
}
|
|
426
447
|
/**
|
|
427
|
-
* Generate cleaned text by replacing profane words
|
|
448
|
+
* Generate cleaned text by replacing profane words.
|
|
449
|
+
* @param originalText - The original text.
|
|
450
|
+
* @param matches - Array of matches.
|
|
451
|
+
* @returns Cleaned text.
|
|
428
452
|
*/
|
|
429
453
|
generateCleanedText(originalText, matches) {
|
|
430
454
|
if (matches.length === 0)
|
|
431
455
|
return originalText;
|
|
432
456
|
let result = originalText;
|
|
433
|
-
// Process matches in reverse order to maintain indices and avoid overlap
|
|
434
457
|
const sortedMatches = [...this.deduplicateMatches(matches)].sort((a, b) => b.start - a.start);
|
|
435
458
|
for (const match of sortedMatches) {
|
|
436
459
|
const replacement = this.defaultPlaceholder.repeat(match.originalWord.length);
|
|
@@ -442,20 +465,24 @@ export class AllProfanity {
|
|
|
442
465
|
return result;
|
|
443
466
|
}
|
|
444
467
|
/**
|
|
445
|
-
*
|
|
468
|
+
* Check if a string contains profanity.
|
|
469
|
+
* @param text - The text to check.
|
|
470
|
+
* @returns True if profanity is found, false otherwise.
|
|
446
471
|
*/
|
|
447
472
|
check(text) {
|
|
448
473
|
return this.detect(text).hasProfanity;
|
|
449
474
|
}
|
|
450
475
|
/**
|
|
451
|
-
* Clean text with custom placeholder
|
|
476
|
+
* Clean text with a custom placeholder.
|
|
477
|
+
* @param text - The text to clean.
|
|
478
|
+
* @param placeholder - The placeholder to use.
|
|
479
|
+
* @returns Cleaned text.
|
|
452
480
|
*/
|
|
453
481
|
clean(text, placeholder) {
|
|
454
482
|
const detection = this.detect(text);
|
|
455
483
|
if (!placeholder || placeholder === this.defaultPlaceholder) {
|
|
456
484
|
return detection.cleanedText;
|
|
457
485
|
}
|
|
458
|
-
// Use custom placeholder
|
|
459
486
|
let result = text;
|
|
460
487
|
const sortedPositions = [
|
|
461
488
|
...this.deduplicateMatches(detection.positions.map((p) => ({
|
|
@@ -476,14 +503,16 @@ export class AllProfanity {
|
|
|
476
503
|
return result;
|
|
477
504
|
}
|
|
478
505
|
/**
|
|
479
|
-
* Clean text by replacing each profane word with a single placeholder (word-level)
|
|
506
|
+
* Clean text by replacing each profane word with a single placeholder (word-level).
|
|
507
|
+
* @param text - The text to clean.
|
|
508
|
+
* @param placeholder - The placeholder to use.
|
|
509
|
+
* @returns Word-level cleaned text.
|
|
480
510
|
*/
|
|
481
511
|
cleanWithPlaceholder(text, placeholder = "***") {
|
|
482
512
|
const detection = this.detect(text);
|
|
483
513
|
if (detection.positions.length === 0)
|
|
484
514
|
return text;
|
|
485
515
|
let result = text;
|
|
486
|
-
// Sort matches so later matches don't affect earlier ones
|
|
487
516
|
const sortedPositions = [
|
|
488
517
|
...this.deduplicateMatches(detection.positions.map((p) => ({
|
|
489
518
|
word: p.word,
|
|
@@ -493,7 +522,6 @@ export class AllProfanity {
|
|
|
493
522
|
}))),
|
|
494
523
|
].sort((a, b) => b.start - a.start);
|
|
495
524
|
for (const pos of sortedPositions) {
|
|
496
|
-
// Only replace whole words!
|
|
497
525
|
if (!this.isWholeWord(result, pos.start, pos.end))
|
|
498
526
|
continue;
|
|
499
527
|
result =
|
|
@@ -504,7 +532,8 @@ export class AllProfanity {
|
|
|
504
532
|
return result;
|
|
505
533
|
}
|
|
506
534
|
/**
|
|
507
|
-
* Add word(s) to the profanity
|
|
535
|
+
* Add word(s) to the profanity filter.
|
|
536
|
+
* @param word - Word or array of words to add.
|
|
508
537
|
*/
|
|
509
538
|
add(word) {
|
|
510
539
|
const words = Array.isArray(word) ? word : [word];
|
|
@@ -515,7 +544,8 @@ export class AllProfanity {
|
|
|
515
544
|
}
|
|
516
545
|
}
|
|
517
546
|
/**
|
|
518
|
-
* Remove word(s) from the profanity
|
|
547
|
+
* Remove word(s) from the profanity filter.
|
|
548
|
+
* @param word - Word or array of words to remove.
|
|
519
549
|
*/
|
|
520
550
|
remove(word) {
|
|
521
551
|
const words = Array.isArray(word) ? word : [word];
|
|
@@ -527,7 +557,8 @@ export class AllProfanity {
|
|
|
527
557
|
}
|
|
528
558
|
}
|
|
529
559
|
/**
|
|
530
|
-
* Add words to whitelist
|
|
560
|
+
* Add words to the whitelist.
|
|
561
|
+
* @param words - Words to whitelist.
|
|
531
562
|
*/
|
|
532
563
|
addToWhitelist(words) {
|
|
533
564
|
const validatedWords = validateStringArray(words, "whitelist words");
|
|
@@ -537,7 +568,8 @@ export class AllProfanity {
|
|
|
537
568
|
}
|
|
538
569
|
}
|
|
539
570
|
/**
|
|
540
|
-
* Remove words from whitelist
|
|
571
|
+
* Remove words from the whitelist.
|
|
572
|
+
* @param words - Words to remove from whitelist.
|
|
541
573
|
*/
|
|
542
574
|
removeFromWhitelist(words) {
|
|
543
575
|
const validatedWords = validateStringArray(words, "whitelist words");
|
|
@@ -547,14 +579,18 @@ export class AllProfanity {
|
|
|
547
579
|
}
|
|
548
580
|
}
|
|
549
581
|
/**
|
|
550
|
-
*
|
|
582
|
+
* Check if a word is whitelisted.
|
|
583
|
+
* @param word - The word to check.
|
|
584
|
+
* @returns True if whitelisted, false otherwise.
|
|
551
585
|
*/
|
|
552
586
|
isWhitelisted(word) {
|
|
553
587
|
const normalizedWord = this.caseSensitive ? word : word.toLowerCase();
|
|
554
588
|
return this.whitelistSet.has(normalizedWord);
|
|
555
589
|
}
|
|
556
590
|
/**
|
|
557
|
-
* Load a built-in language dictionary
|
|
591
|
+
* Load a built-in language dictionary.
|
|
592
|
+
* @param language - The language key.
|
|
593
|
+
* @returns True if loaded, false otherwise.
|
|
558
594
|
*/
|
|
559
595
|
loadLanguage(language) {
|
|
560
596
|
if (!language || typeof language !== "string") {
|
|
@@ -587,7 +623,9 @@ export class AllProfanity {
|
|
|
587
623
|
}
|
|
588
624
|
}
|
|
589
625
|
/**
|
|
590
|
-
* Load multiple
|
|
626
|
+
* Load multiple language dictionaries.
|
|
627
|
+
* @param languages - Array of languages to load.
|
|
628
|
+
* @returns Number of successfully loaded languages.
|
|
591
629
|
*/
|
|
592
630
|
loadLanguages(languages) {
|
|
593
631
|
const validatedLanguages = validateStringArray(languages, "languages");
|
|
@@ -596,14 +634,17 @@ export class AllProfanity {
|
|
|
596
634
|
}, 0);
|
|
597
635
|
}
|
|
598
636
|
/**
|
|
599
|
-
* Load all Indian languages
|
|
637
|
+
* Load all supported Indian languages.
|
|
638
|
+
* @returns Number of loaded Indian languages.
|
|
600
639
|
*/
|
|
601
640
|
loadIndianLanguages() {
|
|
602
641
|
const indianLanguages = ["hindi", "bengali", "tamil", "telugu"];
|
|
603
642
|
return this.loadLanguages(indianLanguages);
|
|
604
643
|
}
|
|
605
644
|
/**
|
|
606
|
-
* Load a custom dictionary
|
|
645
|
+
* Load a custom dictionary.
|
|
646
|
+
* @param name - Name of the dictionary.
|
|
647
|
+
* @param words - Words to add.
|
|
607
648
|
*/
|
|
608
649
|
loadCustomDictionary(name, words) {
|
|
609
650
|
validateString(name, "dictionary name");
|
|
@@ -619,7 +660,6 @@ export class AllProfanity {
|
|
|
619
660
|
addedCount++;
|
|
620
661
|
}
|
|
621
662
|
}
|
|
622
|
-
// Store for future reference
|
|
623
663
|
this.availableLanguages[name.toLowerCase()] = validatedWords;
|
|
624
664
|
this.loadedLanguages.add(name.toLowerCase());
|
|
625
665
|
this.logger.info(`Loaded ${addedCount} words from custom dictionary '${name}'`);
|
|
@@ -629,7 +669,9 @@ export class AllProfanity {
|
|
|
629
669
|
}
|
|
630
670
|
}
|
|
631
671
|
/**
|
|
632
|
-
* Add a single word to the trie
|
|
672
|
+
* Add a single word to the trie.
|
|
673
|
+
* @param word - The word to add.
|
|
674
|
+
* @returns True if added, false otherwise.
|
|
633
675
|
*/
|
|
634
676
|
addWordToTrie(word) {
|
|
635
677
|
if (!word || typeof word !== "string" || word.trim().length === 0) {
|
|
@@ -638,16 +680,16 @@ export class AllProfanity {
|
|
|
638
680
|
const normalizedWord = this.caseSensitive
|
|
639
681
|
? word.trim()
|
|
640
682
|
: word.trim().toLowerCase();
|
|
641
|
-
// Skip if whitelisted
|
|
642
683
|
if (this.isWhitelisted(normalizedWord)) {
|
|
643
684
|
return false;
|
|
644
685
|
}
|
|
645
|
-
// Add to trie
|
|
646
686
|
this.profanityTrie.addWord(normalizedWord);
|
|
647
687
|
return true;
|
|
648
688
|
}
|
|
649
689
|
/**
|
|
650
|
-
*
|
|
690
|
+
* Calculate severity from matches.
|
|
691
|
+
* @param matches - Array of matches.
|
|
692
|
+
* @returns Severity level.
|
|
651
693
|
*/
|
|
652
694
|
calculateSeverity(matches) {
|
|
653
695
|
if (matches.length === 0)
|
|
@@ -663,7 +705,7 @@ export class AllProfanity {
|
|
|
663
705
|
return ProfanitySeverity.MILD;
|
|
664
706
|
}
|
|
665
707
|
/**
|
|
666
|
-
* Clear all loaded dictionaries
|
|
708
|
+
* Clear all loaded dictionaries and dynamic words.
|
|
667
709
|
*/
|
|
668
710
|
clearList() {
|
|
669
711
|
this.profanityTrie.clear();
|
|
@@ -671,7 +713,8 @@ export class AllProfanity {
|
|
|
671
713
|
this.dynamicWords.clear();
|
|
672
714
|
}
|
|
673
715
|
/**
|
|
674
|
-
* Set placeholder character
|
|
716
|
+
* Set the placeholder character for filtered words.
|
|
717
|
+
* @param placeholder - The placeholder character.
|
|
675
718
|
*/
|
|
676
719
|
setPlaceholder(placeholder) {
|
|
677
720
|
validateString(placeholder, "placeholder");
|
|
@@ -681,19 +724,22 @@ export class AllProfanity {
|
|
|
681
724
|
this.defaultPlaceholder = placeholder.charAt(0);
|
|
682
725
|
}
|
|
683
726
|
/**
|
|
684
|
-
* Get loaded languages
|
|
727
|
+
* Get the list of loaded languages.
|
|
728
|
+
* @returns Array of loaded language keys.
|
|
685
729
|
*/
|
|
686
730
|
getLoadedLanguages() {
|
|
687
731
|
return Array.from(this.loadedLanguages);
|
|
688
732
|
}
|
|
689
733
|
/**
|
|
690
|
-
* Get available languages
|
|
734
|
+
* Get the list of available built-in languages.
|
|
735
|
+
* @returns Array of available language keys.
|
|
691
736
|
*/
|
|
692
737
|
getAvailableLanguages() {
|
|
693
738
|
return Object.keys(this.availableLanguages);
|
|
694
739
|
}
|
|
695
740
|
/**
|
|
696
|
-
* Get current configuration
|
|
741
|
+
* Get the current configuration of the profanity filter.
|
|
742
|
+
* @returns Partial configuration object.
|
|
697
743
|
*/
|
|
698
744
|
getConfig() {
|
|
699
745
|
return {
|
|
@@ -707,24 +753,23 @@ export class AllProfanity {
|
|
|
707
753
|
};
|
|
708
754
|
}
|
|
709
755
|
/**
|
|
710
|
-
*
|
|
756
|
+
* Rebuild the profanity trie from loaded dictionaries and dynamic words.
|
|
711
757
|
*/
|
|
712
758
|
rebuildTrie() {
|
|
713
759
|
this.profanityTrie.clear();
|
|
714
|
-
// Re-add all loaded language words
|
|
715
760
|
for (const lang of this.loadedLanguages) {
|
|
716
761
|
const words = this.availableLanguages[lang] || [];
|
|
717
762
|
for (const word of words) {
|
|
718
763
|
this.addWordToTrie(word);
|
|
719
764
|
}
|
|
720
765
|
}
|
|
721
|
-
// Re-add dynamic words
|
|
722
766
|
for (const word of this.dynamicWords) {
|
|
723
767
|
this.addWordToTrie(word);
|
|
724
768
|
}
|
|
725
769
|
}
|
|
726
770
|
/**
|
|
727
|
-
* Update configuration
|
|
771
|
+
* Update configuration options for the profanity filter.
|
|
772
|
+
* @param options - Partial configuration object.
|
|
728
773
|
*/
|
|
729
774
|
updateConfig(options) {
|
|
730
775
|
let rebuildNeeded = false;
|
|
@@ -753,7 +798,9 @@ export class AllProfanity {
|
|
|
753
798
|
}
|
|
754
799
|
}
|
|
755
800
|
}
|
|
756
|
-
|
|
801
|
+
/**
|
|
802
|
+
* Singleton instance of AllProfanity with default configuration.
|
|
803
|
+
*/
|
|
757
804
|
const allProfanity = new AllProfanity();
|
|
758
805
|
export default allProfanity;
|
|
759
806
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|