Socket
Socket
Sign inDemoInstall

node-normalizer

Package Overview
Dependencies
Maintainers
2
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-normalizer - npm Package Compare versions

Comparing version 1.0.0-alpha3 to 1.0.0-alpha4

115

lib/normalizer.js

@@ -46,52 +46,76 @@ 'use strict';

var reSet = {};
var quotemeta = function quotemeta(string) {
var unsafe = '\\.+*?[^]$(){}=!<>|:';
var cleanString = string;
for (var i = 0; i < unsafe.length; i++) {
string = string.replace(new RegExp('\\' + unsafe.charAt(i), 'g'), '\\' + unsafe.charAt(i));
cleanString = cleanString.replace(new RegExp('\\' + unsafe.charAt(i), 'g'), '\\' + unsafe.charAt(i));
}
return string;
return cleanString;
};
var lineHandle = function lineHandle(task, key, replacer) {
if (reSet[task.key] === undefined) {
reSet[task.key] = {};
}
var replacements = {};
var systemReplacements = [];
if (reSet[task.key][key] === undefined) {
reSet[task.key][key] = [];
}
var lineHandle = function lineHandle(task, phrase) {
var replacement = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
// Add RegEx
var startM = false;
var endM = false;
var lookup = key;
var start = false;
var end = false;
if (key[0] === '<') {
startM = true;
lookup = key.substring(1);
if (phrase[0] === '<') {
start = true;
phrase = phrase.substring(1);
}
if (key.slice(-1) === '>') {
endM = true;
lookup = lookup.substring(0, lookup.length - 1);
if (phrase.slice(-1) === '>') {
end = true;
phrase = phrase.substring(0, phrase.length - 1);
}
var qm = quotemeta(re11.replace(lookup, ' '));
phrase = re11.replace(phrase, ' ');
var cleanPhrase = quotemeta(phrase);
if (startM && endM) {
reSet[task.key][key].push({ re: new RegExp('^' + qm + '$', 'gi'), r: replacer });
} else if (startM) {
reSet[task.key][key].push({ re: new RegExp('^' + qm + '(\\W+|$)', 'gi'), r: replacer + '$1' });
} else if (endM) {
reSet[task.key][key].push({ re: new RegExp('(\\W+|^)' + qm + '$', 'gi'), r: '$1' + replacer });
phrase.split(' ').forEach(function (word) {
word = word.toLowerCase();
// TODO: Fuck me, am I right? Should.js won't let you do:
// replacements['should'] = [];
if (word === 'should') {
return;
}
if (replacements[word] === undefined) {
replacements[word] = [];
}
var phraseRegex = void 0;
var replacementRegex = void 0;
if (start && end) {
phraseRegex = new RegExp('^' + cleanPhrase + '$', 'gi');
replacementRegex = replacement;
} else if (start) {
phraseRegex = new RegExp('^' + cleanPhrase + '(\\W+|$)', 'gi');
replacementRegex = replacement + '$1';
} else if (end) {
phraseRegex = new RegExp('(\\W+|^)' + cleanPhrase + '$', 'gi');
replacementRegex = '$1' + replacement;
if (task.key === '_sys') {
phraseRegex = new RegExp(cleanPhrase + '$', 'i');
replacementRegex = replacement;
}
} else {
phraseRegex = new RegExp('(\\W+|^)' + cleanPhrase + '(\\W+|$)', 'gi');
replacementRegex = '$1' + replacement + '$2';
}
if (task.key === '_sys') {
reSet[task.key][key].push({ re: new RegExp(qm + '$', 'gi'), r: replacer });
systemReplacements.push({ phraseRegex: phraseRegex, replacementRegex: replacementRegex });
} else {
// reSet[task.key][key].push({ re: new RegExp(`(\\W+)${qm}(\\W+)`, 'gi'), r: `$1${replacer}$2` });
replacements[word].push({ phrase: phrase, replacement: replacement, phraseRegex: phraseRegex, replacementRegex: replacementRegex });
replacements[word].sort(function (a, b) {
return b.phrase.split(' ').length - a.phrase.split(' ').length;
});
}
} else {
reSet[task.key][key].push({ re: new RegExp('(\\W+|^)' + qm + '(\\W+|$)', 'gi'), r: '$1' + replacer + '$2' });
}
});
};

@@ -141,11 +165,20 @@

var replacer = function replacer(regex) {
msg = msg.replace(regex.re, regex.r);
};
systemReplacements.forEach(function (replacement) {
msg = msg.replace(replacement.phraseRegex, replacement.replacementRegex);
});
Object.keys(reSet).forEach(function (taskKey) {
Object.keys(reSet[taskKey]).forEach(function (key) {
var reArray = reSet[taskKey][key];
reArray.forEach(replacer);
});
var splitMsg = msg.toLowerCase();
splitMsg = splitMsg.split(' ');
splitMsg.forEach(function (word) {
if (word === 'should') {
return;
}
if (replacements[word]) {
replacements[word].forEach(function (phrase) {
// console.log(`Replacing "${phrase.phrase}" with "${phrase.replacement}"`);
msg = msg.replace(phrase.phraseRegex, phrase.replacementRegex);
});
}
});

@@ -152,0 +185,0 @@

{
"name": "node-normalizer",
"version": "1.0.0-alpha3",
"version": "1.0.0-alpha4",
"description": "Normalize and clean text",

@@ -5,0 +5,0 @@ "main": "lib/normalizer.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc