🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

node-sensitive-word-filtering

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-sensitive-word-filtering - npm Package Compare versions

Comparing version
1.0.2
to
1.0.3
+8
index.d.ts
declare class Trie {
insert(word: string): void;
contains(word: string): boolean;
delete(word: string): void;
filter(text: string, ignoreSpaces?: boolean): string;
}
export = Trie;
+2
-1
{
"name": "node-sensitive-word-filtering",
"version": "1.0.2",
"version": "1.0.3",
"description": "A Node.js library for filtering sensitive words using a prefix tree (Trie).",
"main": "sensitive-word-trie.js",
"types": "index.d.ts",
"author": "aliSir",

@@ -7,0 +8,0 @@ "license": "MIT",

@@ -74,6 +74,8 @@ class TrieNode {

filter(text) {
let result = '';
filter({ text, ignoreSpaces = false, ignoreCase = false }) {
const resultArray = [];
const characters = Array.from(ignoreCase ? text.toLowerCase() : text);
const originalChars = Array.from(text);
let i = 0;
const characters = Array.from(text);
while (i < characters.length) {

@@ -83,3 +85,13 @@ let node = this.root;

let matchLength = 0;
while (j < characters.length && node.children[characters[j]]) {
while (j < characters.length) {
if (ignoreSpaces && characters[j] === ' ') {
j++;
continue;
}
if (!node.children[characters[j]]) {
break;
}
node = node.children[characters[j]];

@@ -91,14 +103,16 @@ j++;

}
if (matchLength > 0) {
result += '*'.repeat(matchLength);
resultArray.push('*'.repeat(matchLength));
i += matchLength;
} else {
result += characters[i];
resultArray.push(originalChars[i]);
i++;
}
}
return result;
return resultArray.join('');
}
}
module.exports = Trie;
module.exports = Trie;