@universe/phone-parser
Advanced tools
Comparing version 0.2.1 to 0.3.0
export declare function sanitize(str: string): string; | ||
export declare function bitCount(str: string): number; | ||
export declare function segmentCount(str: string): number; | ||
export interface SpamScore { | ||
score: number; | ||
phrases: { | ||
text: string; | ||
start: number; | ||
weight: number; | ||
}[]; | ||
} | ||
export declare function spamScore(message: string): SpamScore; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.segmentCount = exports.bitCount = exports.sanitize = void 0; | ||
exports.spamScore = exports.segmentCount = exports.bitCount = exports.sanitize = void 0; | ||
const unicode_chars_1 = require("./unicode-chars"); | ||
const gsm_1 = require("./gsm"); | ||
const spam_1 = require("./spam"); | ||
function sanitize(str) { | ||
@@ -44,2 +45,26 @@ for (let i = 0; i < str.length; i++) { | ||
exports.segmentCount = segmentCount; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVzc2FnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBa0Q7QUFDbEQsK0JBQXVDO0FBRXZDLFNBQWdCLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sT0FBTyxHQUFHLCtCQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksT0FBTyxFQUFFO1lBQ1gsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekQ7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVJELDRCQVFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsa0RBQWtEO0lBQ3BFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsb0JBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekQ7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxvQkFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDdkU7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw0QkFjQztBQUVELFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7SUFDN0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlEQUFpRDtJQUMzRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLEtBQUssSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsK0ZBQStGO0lBQy9GLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBVkQsb0NBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVTklDT0RFX01BUFBJTkcgfSBmcm9tICcuL3VuaWNvZGUtY2hhcnMnO1xuaW1wb3J0IHsgVU5JQ09ERV9UT19HU00gfSBmcm9tICcuL2dzbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShzdHI6IHN0cmluZykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hcHBpbmcgPSBVTklDT0RFX01BUFBJTkdbc3RyW2ldLmNoYXJDb2RlQXQoMCldO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBzdHIgPSBzdHIuc3Vic3RyKDAsIGkpICsgbWFwcGluZy50byArIHN0ci5zdWJzdHIoaSArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0Q291bnQoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgaXNHU00gPSB0cnVlOyAvLyBJZiBmYWxzZSwgaXMgdWNzMi4gR1NNIGlzIDcgYml0cyBwZXIgY2hhcmFjdGVyLlxuICBsZXQgY291bnQgPSAwO1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaXNHU00gPSBpc0dTTSAmJiAhIVVOSUNPREVfVE9fR1NNW3N0cltpXS5jaGFyQ29kZUF0KDApXTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvdW50ICs9IGlzR1NNID8gVU5JQ09ERV9UT19HU01bc3RyW2ldLmNoYXJDb2RlQXQoMCldLmxlbmd0aCAqIDcgOiAxNjtcbiAgfVxuXG4gIHJldHVybiBjb3VudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlZ21lbnRDb3VudChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHNlZ21lbnRTaXplID0gMTQwICogODsgLy8gU2VnbWVudHMgYXJlIDE0MCBieXRlcyBsYXJnZS5cbiAgY29uc3QgaGVhZGVyU2l6ZSA9IDYgKiA4OyAvLyBNdWx0aSBzZWdtZW50IG1lc3NhZ2VzIGhhdmUgYSBzaXggYnl0ZSBoZWFkZXIuXG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY29uc3QgYnl0ZXMgPSBiaXRDb3VudChzdHIpO1xuICBpZiAoYnl0ZXMgPD0gc2VnbWVudFNpemUpIHJldHVybiAxO1xuICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlZ21lbnQsIGVhY2ggc2VnbWVudCBnZXRzIHRoZSBzZWdtZW50IHNpemUgbWludXMgdGhlIGhlYWRlciBzaXplLlxuICByZXR1cm4gTWF0aC5jZWlsKGJ5dGVzIC8gKHNlZ21lbnRTaXplIC0gaGVhZGVyU2l6ZSkpO1xufVxuIl19 | ||
function spamScore(message) { | ||
const out = { score: 0, phrases: [] }; | ||
message = ' ' + message.toLowerCase().replace(/[^a-z0-9#%$]/g, ' ') + ' '; | ||
for (const text of spam_1.SPAM_WORDS) { | ||
let start = message.indexOf(` ${text} `); | ||
while (start !== -1) { | ||
out.score += 1; | ||
out.phrases.push({ text, start, weight: 2 }); | ||
start = message.indexOf(` ${text} `, start + text.length + 1); | ||
} | ||
} | ||
for (const text of spam_1.POWER_WORDS) { | ||
let start = message.indexOf(` ${text} `); | ||
while (start !== -1) { | ||
// start += 1; | ||
out.score += 0.5; | ||
out.phrases.push({ text, start, weight: 1 }); | ||
start = message.indexOf(` ${text} `, start + text.length + 1); | ||
} | ||
} | ||
out.score = Math.floor(Math.min(out.score, 5)); | ||
return out; | ||
} | ||
exports.spamScore = spamScore; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVzc2FnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBa0Q7QUFDbEQsK0JBQXVDO0FBQ3ZDLGlDQUFpRDtBQUVqRCxTQUFnQixRQUFRLENBQUMsR0FBVztJQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRywrQkFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLE9BQU8sRUFBRTtZQUNYLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFSRCw0QkFRQztBQUVELFNBQWdCLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLGtEQUFrRDtJQUNwRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLEtBQUssR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLG9CQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pEO0lBQ0QsS0FBSyxJQUFJ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L3VuaWNvZGUtY2hhcnMnO1xuaW1wb3J0IHsgVU5JQ09ERV9UT19HU00gfSBmcm9tICcuL2dzbSc7XG5pbXBvcnQgeyBTUEFNX1dPUkRTLCBQT1dFUl9XT1JEUyB9IGZyb20gJy4vc3BhbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShzdHI6IHN0cmluZykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hcHBpbmcgPSBVTklDT0RFX01BUFBJTkdbc3RyW2ldLmNoYXJDb2RlQXQoMCldO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBzdHIgPSBzdHIuc3Vic3RyKDAsIGkpICsgbWFwcGluZy50byArIHN0ci5zdWJzdHIoaSArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0Q291bnQoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgaXNHU00gPSB0cnVlOyAvLyBJZiBmYWxzZSwgaXMgdWNzMi4gR1NNIGlzIDcgYml0cyBwZXIgY2hhcmFjdGVyLlxuICBsZXQgY291bnQgPSAwO1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaXNHU00gPSBpc0dTTSAmJiAhIVVOSUNPREVfVE9fR1NNW3N0cltpXS5jaGFyQ29kZUF0KDApXTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvdW50ICs9IGlzR1NNID8gVU5JQ09ERV9UT19HU01bc3RyW2ldLmNoYXJDb2RlQXQoMCldLmxlbmd0aCAqIDcgOiAxNjtcbiAgfVxuXG4gIHJldHVybiBjb3VudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlZ21lbnRDb3VudChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHNlZ21lbnRTaXplID0gMTQwICogODsgLy8gU2VnbWVudHMgYXJlIDE0MCBieXRlcyBsYXJnZS5cbiAgY29uc3QgaGVhZGVyU2l6ZSA9IDYgKiA4OyAvLyBNdWx0aSBzZWdtZW50IG1lc3NhZ2VzIGhhdmUgYSBzaXggYnl0ZSBoZWFkZXIuXG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY29uc3QgYnl0ZXMgPSBiaXRDb3VudChzdHIpO1xuICBpZiAoYnl0ZXMgPD0gc2VnbWVudFNpemUpIHJldHVybiAxO1xuICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlZ21lbnQsIGVhY2ggc2VnbWVudCBnZXRzIHRoZSBzZWdtZW50IHNpemUgbWludXMgdGhlIGhlYWRlciBzaXplLlxuICByZXR1cm4gTWF0aC5jZWlsKGJ5dGVzIC8gKHNlZ21lbnRTaXplIC0gaGVhZGVyU2l6ZSkpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW1TY29yZSB7XG4gIHNjb3JlOiBudW1iZXI7XG4gIHBocmFzZXM6IHsgdGV4dDogc3RyaW5nOyBzdGFydDogbnVtYmVyOyB3ZWlnaHQ6IG51bWJlciB9W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGFtU2NvcmUobWVzc2FnZTogc3RyaW5nKSB7XG4gIGNvbnN0IG91dDogU3BhbVNjb3JlID0geyBzY29yZTogMCwgcGhyYXNlczogW10gfTtcbiAgbWVzc2FnZSA9ICcgJyArIG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOSMlJF0vZywgJyAnKSArICcgJztcbiAgZm9yIChjb25zdCB0ZXh0IG9mIFNQQU1fV09SRFMpIHtcbiAgICBsZXQgc3RhcnQgPSBtZXNzYWdlLmluZGV4T2YoYCAke3RleHR9IGApO1xuICAgIHdoaWxlIChzdGFydCAhPT0gLTEpIHtcbiAgICAgIG91dC5zY29yZSArPSAxO1xuICAgICAgb3V0LnBocmFzZXMucHVzaCh7IHRleHQsIHN0YXJ0LCB3ZWlnaHQ6IDIgfSk7XG4gICAgICBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZihgICR7dGV4dH0gYCwgc3RhcnQgKyB0ZXh0Lmxlbmd0aCArIDEpO1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IHRleHQgb2YgUE9XRVJfV09SRFMpIHtcbiAgICBsZXQgc3RhcnQgPSBtZXNzYWdlLmluZGV4T2YoYCAke3RleHR9IGApO1xuICAgIHdoaWxlIChzdGFydCAhPT0gLTEpIHtcbiAgICAgIC8vIHN0YXJ0ICs9IDE7XG4gICAgICBvdXQuc2NvcmUgKz0gMC41O1xuICAgICAgb3V0LnBocmFzZXMucHVzaCh7IHRleHQsIHN0YXJ0LCB3ZWlnaHQ6IDEgfSk7XG4gICAgICBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZihgICR7dGV4dH0gYCwgc3RhcnQgKyB0ZXh0Lmxlbmd0aCArIDEpO1xuICAgIH1cbiAgfVxuICBvdXQuc2NvcmUgPSBNYXRoLmZsb29yKE1hdGgubWluKG91dC5zY29yZSwgNSkpO1xuICByZXR1cm4gb3V0O1xufVxuIl19 |
@@ -5,1 +5,2 @@ export declare type InputTypes = string | number | boolean | undefined | null; | ||
export declare function isValid(v: string): boolean; | ||
export declare function isFictitious(tel: string): boolean; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isValid = exports.toString = exports.parse = void 0; | ||
exports.isFictitious = exports.isValid = exports.toString = exports.parse = void 0; | ||
function parse(number) { | ||
@@ -50,2 +50,8 @@ if (!number) { | ||
exports.isValid = isValid; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL251bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixLQUFLLENBQUMsTUFBa0I7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFFN0IsdUNBQXVDO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBRXJCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxQiw4QkFBOEI7SUFDOUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUViLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBQy9DLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsK0NBQStDO0lBQy9DLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTtRQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFBQyxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBRS9DLDREQUE0RDtJQUM1RCxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFFckQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUEzQkQsc0JBMkJDO0FBQUEsQ0FBQztBQUVGLFNBQWdCLFFBQVEsQ0FBQyxLQUFpQjtJQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDN0UsQ0FBQztBQU5ELDRCQU1DO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVM7SUFDL0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRkQsMEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBJbnB1dFR5cGVzID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShudW1iZXI6IElucHV0VHlwZXMpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFudW1iZXIpIHsgcmV0dXJuIG51bGw7IH1cblxuICAvLyBJZiBjYW1lIGluIGFzIGFuIGludGVnZXIsIHN0cmluZ2lmeS5cbiAgbnVtYmVyID0gYCR7bnVtYmVyfWA7XG5cbiAgbGV0IGZpbmRpbmcgPSAxMTtcbiAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KDEyKTtcblxuICAvLyBBbGwgbnVtYmVycyBzdGFydCB3aXRoIFwiK1wiLlxuICBvdXRbMF0gPSAnKyc7XG5cbiAgZm9yIChsZXQgaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IGMgPSBudW1iZXJbaV07XG4gICAgaWYgKCFjIHx8IGMgPT09ICcgJyB8fCBpc05hTigrYykpIHsgY29udGludWU7IH1cbiAgICBpZiAoZmluZGluZyA9PT0gMCkgeyByZXR1cm4gbnVsbDsgfVxuICAgIG91dFtmaW5kaW5nXSA9IGM7XG4gICAgZmluZGluZy0tO1xuICB9XG5cbiAgLy8gUHJlZml4IHdpdGggY291bnRyeSBjb2RlIGlmIDEwIGRpZ2l0IG51bWJlci5cbiAgaWYgKGZpbmRpbmcgPT09IDEpIHsgb3V0WzFdID0gJzEnOyBmaW5kaW5nLS07IH1cblxuICAvLyBJZiBub3QgMTEgZGlnaXQgbnVtYmVyIHdpdGggVVMgY291bnRyeSBjb2RlLCByZXR1cm4gbnVsbC5cbiAgaWYgKGZpbmRpbmcgIT09IDAgfHwgb3V0WzFdICE9PSAnMScpIHsgcmV0dXJuIG51bGw7IH1cblxuICByZXR1cm4gb3V0LmpvaW4oJycpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHBob25lOiBJbnB1dFR5cGVzKTogc3RyaW5nIHwgbnVsbCB7XG4gIHBob25lID0gcGFyc2UocGhvbmUpO1xuICBpZiAoIXBob25lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGAoJHtwaG9uZS5zbGljZSgyLCA1KX0pICR7cGhvbmUuc2xpY2UoNSwgOCl9LSR7cGhvbmUuc2xpY2UoOCwgMTIpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKHY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKC9eXFwrMVxcZHsxMH0kLykudGVzdCh2KTtcbn1cbiJdfQ== | ||
// TODO: https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes | ||
// TODO: https://en.wikipedia.org/wiki/Fictitious_telephone_number | ||
function isFictitious(tel) { | ||
return tel.startsWith('+1555') || tel.startsWith('+10') || tel.startsWith('+11') || tel.indexOf('555') === 5; | ||
} | ||
exports.isFictitious = isFictitious; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL251bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixLQUFLLENBQUMsTUFBa0I7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFFN0IsdUNBQXVDO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBRXJCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxQiw4QkFBOEI7SUFDOUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUViLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBQy9DLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsK0NBQStDO0lBQy9DLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTtRQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFBQyxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBRS9DLDREQUE0RDtJQUM1RCxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFFckQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUEzQkQsc0JBMkJDO0FBQUEsQ0FBQztBQUVGLFNBQWdCLFFBQVEsQ0FBQyxLQUFpQjtJQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDN0UsQ0FBQztBQU5ELDRCQU1DO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVM7SUFDL0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRkQsMEJBRUM7QUFFRCx1RkFBdUY7QUFDdkYsa0VBQWtFO0FBQ2xFLFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0csQ0FBQztBQUZELG9DQUVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSW5wdXRUeXBlcyA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UobnVtYmVyOiBJbnB1dFR5cGVzKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghbnVtYmVyKSB7IHJldHVybiBudWxsOyB9XG5cbiAgLy8gSWYgY2FtZSBpbiBhcyBhbiBpbnRlZ2VyLCBzdHJpbmdpZnkuXG4gIG51bWJlciA9IGAke251bWJlcn1gO1xuXG4gIGxldCBmaW5kaW5nID0gMTE7XG4gIGNvbnN0IG91dCA9IG5ldyBBcnJheSgxMik7XG5cbiAgLy8gQWxsIG51bWJlcnMgc3RhcnQgd2l0aCBcIitcIi5cbiAgb3V0WzBdID0gJysnO1xuXG4gIGZvciAobGV0IGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBjID0gbnVtYmVyW2ldO1xuICAgIGlmICghYyB8fCBjID09PSAnICcgfHwgaXNOYU4oK2MpKSB7IGNvbnRpbnVlOyB9XG4gICAgaWYgKGZpbmRpbmcgPT09IDApIHsgcmV0dXJuIG51bGw7IH1cbiAgICBvdXRbZmluZGluZ10gPSBjO1xuICAgIGZpbmRpbmctLTtcbiAgfVxuXG4gIC8vIFByZWZpeCB3aXRoIGNvdW50cnkgY29kZSBpZiAxMCBkaWdpdCBudW1iZXIuXG4gIGlmIChmaW5kaW5nID09PSAxKSB7IG91dFsxXSA9ICcxJzsgZmluZGluZy0tOyB9XG5cbiAgLy8gSWYgbm90IDExIGRpZ2l0IG51bWJlciB3aXRoIFVTIGNvdW50cnkgY29kZSwgcmV0dXJuIG51bGwuXG4gIGlmIChmaW5kaW5nICE9PSAwIHx8IG91dFsxXSAhPT0gJzEnKSB7IHJldHVybiBudWxsOyB9XG5cbiAgcmV0dXJuIG91dC5qb2luKCcnKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyhwaG9uZTogSW5wdXRUeXBlcyk6IHN0cmluZyB8IG51bGwge1xuICBwaG9uZSA9IHBhcnNlKHBob25lKTtcbiAgaWYgKCFwaG9uZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgKCR7cGhvbmUuc2xpY2UoMiwgNSl9KSAke3Bob25lLnNsaWNlKDUsIDgpfS0ke3Bob25lLnNsaWNlKDgsIDEyKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZCh2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICgvXlxcKzFcXGR7MTB9JC8pLnRlc3Qodik7XG59XG5cbi8vIFRPRE86IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfTm9ydGhfQW1lcmljYW5fTnVtYmVyaW5nX1BsYW5fYXJlYV9jb2Rlc1xuLy8gVE9ETzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmljdGl0aW91c190ZWxlcGhvbmVfbnVtYmVyXG5leHBvcnQgZnVuY3Rpb24gaXNGaWN0aXRpb3VzKHRlbDogc3RyaW5nKSB7XG4gIHJldHVybiB0ZWwuc3RhcnRzV2l0aCgnKzE1NTUnKSB8fCB0ZWwuc3RhcnRzV2l0aCgnKzEwJykgfHwgdGVsLnN0YXJ0c1dpdGgoJysxMScpIHx8IHRlbC5pbmRleE9mKCc1NTUnKSA9PT0gNTtcbn1cbiJdfQ== |
@@ -6,2 +6,3 @@ "use strict"; | ||
const src_1 = require("../src"); | ||
const message_1 = require("../src/message"); | ||
const { bitCount, sanitize, segmentCount } = src_1.message; | ||
@@ -37,4 +38,24 @@ describe('Message Utilities', function () { | ||
}); | ||
it('counts spam scores', () => { | ||
assert.deepStrictEqual(message_1.spamScore("We're the #1 option!"), { | ||
score: 1, | ||
phrases: [{ text: '#1', start: 10, weight: 2 }], | ||
}, 'Spam words counted'); | ||
assert.deepStrictEqual(message_1.spamScore("We're the #1 best option!").score, 1, 'Combination spam and power words'); | ||
assert.deepStrictEqual(message_1.spamScore("We're the #1 best option in the apocalypse!").score, 2, 'Two power words make score go up.'); | ||
assert.deepStrictEqual(message_1.spamScore('I Add up the Ad'), { | ||
score: 1, | ||
phrases: [ | ||
{ start: 13, text: 'ad', weight: 2 }, | ||
], | ||
}, 'Catches words at end'); | ||
assert.deepStrictEqual(message_1.spamScore('Ad targeting adds value'), { | ||
score: 1, | ||
phrases: [ | ||
{ start: 0, text: 'ad', weight: 2 }, | ||
], | ||
}, 'Catches words at beginning.'); | ||
}); | ||
}); | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5QkFBeUI7O0FBRXpCLGlDQUFpQztBQUVqQyxnQ0FBaUM7QUFFakMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEdBQUcsYUFBTyxDQUFDO0FBRXJELFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixRQUFRLENBQUMsV0FBVyxFQUFFO1FBQ3BCLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7WUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtZQUM1RCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxHQUFHLEVBQUU7WUFDdkUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEdBQUcsRUFBRTtZQUNqRixNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLDRCQUE0QixDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztZQUMvRixNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7WUFDL0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNqRixNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLG9DQUFvQyxDQUFDLENBQUM7WUFDakcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUseUNBQXlDLENBQUMsQ0FBQztRQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgZGVzY3JpYmUsIGl0ICovXG5cbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSAnLi4vc3JjJztcblxuY29uc3QgeyBiaXRDb3VudCwgc2FuaXRpemUsIHNlZ21lbnRDb3VudCB9ID0gbWVzc2FnZTtcblxuZGVzY3JpYmUoJ01lc3NhZ2UgVXRpbGl0aWVzJywgZnVuY3Rpb24oKSB7XG4gIGRlc2NyaWJlKCdpdCBzaG91bGQnLCBmdW5jdGlvbigpIHtcbiAgICBpdCgncmVwbGFjZSB1bmljb2RlJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNhbml0aXplKCdJ4oCYbSByZWFkeSxcXHhhMGhlcmUgd2UgZ2/vuZcnKSwgXCJJJ20gcmVhZHksIGhlcmUgd2UgZ28hXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FzY2lpIGNvdW50cyBjaGFyYWN0ZXJzIG9uZSBieXRlIGZvciBvbmUgY2hhcmFjdGVyJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJpdENvdW50KCdhc2RmIDEyMzQhJyksIDcwKTtcbiAgICB9KTtcblxuICAgIGl0KCdub24gR1NNIHVuaWNvZGUgY2hhcmFjdGVycyBmb3JjZSBhbGwgY2hhcnMgdG8gY291bnQgdHdvIGJ5dGVzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJpdENvdW50KCdhc2RmJyksIDI4KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChiaXRDb3VudCgnYXNkZu+5lycpLCAnYXNkZu+5lycubGVuZ3RoICogMTYpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJpdENvdW50KHNhbml0aXplKCdhc2Rm77mXJykpLCAzNSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2ltcGxlIGVtb2ppIGNvdW50IGFzIHR3byBieXRlcycsICgpID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChiaXRDb3VudCgn4pyoJyksIDE2KTtcbiAgICB9KTtcblxuICAgIGl0KCdmYW5jeSBkb3VibGUgdW5pY29kZSBjaGFyIGVtb2ppIGNvdW50IGFzIGZvdXIgYnl0ZXMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYml0Q291bnQoJ/CfmpgnKSwgMzIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NlZ21lbnQgY291bnQgd29ya3MsIHRha2VzIGhlYWRlcnMgaW4gdG8gYWNjb3VudCB3aXRoIG11bHRpcGxlIHNlZ21lbnRzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlZ21lbnRDb3VudCgnIScucmVwZWF0KDE2MCkpLCAxLCAnU2luZ2xlIHNlZ21lbnQgR1NNIG1lc3NhZ2UnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWdtZW50Q291bnQoJyEnLnJlcGVhdCgxNjEpKSwgMiwgJ1R3byBzZWdtZW50IEdTTSBtZXNzYWdlJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoMzA2KSksIDIsICdVcHBlciBsaW1pdCBvZiB0d28gc2VnbWVudCBHU00gbWVzc2FnZScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlZ21lbnRDb3VudCgnIScucmVwZWF0KDMwNykpLCAzLCAnR1NNIG1lc3NhZ2Ugb3ZlcmZsb3cgdG8gdGhyZWUgc2VnbWVudHMnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWdtZW50Q291bnQoJyEnLnJlcGVhdCg2OSkgKyAn4pyoJyksIDEsICdVQ1MyIHNpbmdsZSBzZWdtZW50Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoNzApICsgJ+KcqCcpLCAyLCAnVUNTMiBkb3VibGUgc2VnbWVudCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlZ21lbnRDb3VudCgnIScucmVwZWF0KDEzMykgKyAn4pyoJyksIDIsICdVcHBlciBsaW1pdCBvZiBVQ1MyIGRvdWJsZSBzZWdtZW50Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoMTM0KSArICfinKgnKSwgMywgJ1VDUzIgbWVzc2FnZSBvdmVyZmxvdyB0byB0aHJlZSBzZWdtZW50cycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5QkFBeUI7O0FBRXpCLGlDQUFpQztBQUVqQyxnQ0FBaUM7QUFDakMsNENBQTJDO0FBRTNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxHQUFHLGFBQU8sQ0FBQztBQUVyRCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsUUFBUSxDQUFDLFdBQVcsRUFBRTtRQUNwQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7WUFDNUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsR0FBRyxFQUFFO1lBQ3ZFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcs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LEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7aUJBQ3BDO2FBQ0YsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBkZXNjcmliZSwgaXQgKi9cblxuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHsgc3BhbVNjb3JlIH0gZnJvbSAnLi4vc3JjL21lc3NhZ2UnO1xuXG5jb25zdCB7IGJpdENvdW50LCBzYW5pdGl6ZSwgc2VnbWVudENvdW50IH0gPSBtZXNzYWdlO1xuXG5kZXNjcmliZSgnTWVzc2FnZSBVdGlsaXRpZXMnLCBmdW5jdGlvbigpIHtcbiAgZGVzY3JpYmUoJ2l0IHNob3VsZCcsIGZ1bmN0aW9uKCkge1xuICAgIGl0KCdyZXBsYWNlIHVuaWNvZGUnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2FuaXRpemUoJ0nigJhtIHJlYWR5LFxceGEwaGVyZSB3ZSBnb++5lycpLCBcIkknbSByZWFkeSwgaGVyZSB3ZSBnbyFcIik7XG4gICAgfSk7XG5cbiAgICBpdCgnYXNjaWkgY291bnRzIGNoYXJhY3RlcnMgb25lIGJ5dGUgZm9yIG9uZSBjaGFyYWN0ZXInLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYml0Q291bnQoJ2FzZGYgMTIzNCEnKSwgNzApO1xuICAgIH0pO1xuXG4gICAgaXQoJ25vbiBHU00gdW5pY29kZSBjaGFyYWN0ZXJzIGZvcmNlIGFsbCBjaGFycyB0byBjb3VudCB0d28gYnl0ZXMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYml0Q291bnQoJ2FzZGYnKSwgMjgpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJpdENvdW50KCdhc2Rm77mXJyksICdhc2Rm77mXJy5sZW5ndGggKiAxNik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYml0Q291bnQoc2FuaXRpemUoJ2FzZGbvuZcnKSksIDM1KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaW1wbGUgZW1vamkgY291bnQgYXMgdHdvIGJ5dGVzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJpdENvdW50KCfinKgnKSwgMTYpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbmN5IGRvdWJsZSB1bmljb2RlIGNoYXIgZW1vamkgY291bnQgYXMgZm91ciBieXRlcycsICgpID0+IHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChiaXRDb3VudCgn8J+amCcpLCAzMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VnbWVudCBjb3VudCB3b3JrcywgdGFrZXMgaGVhZGVycyBpbiB0byBhY2NvdW50IHdpdGggbXVsdGlwbGUgc2VnbWVudHMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoMTYwKSksIDEsICdTaW5nbGUgc2VnbWVudCBHU00gbWVzc2FnZScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlZ21lbnRDb3VudCgnIScucmVwZWF0KDE2MSkpLCAyLCAnVHdvIHNlZ21lbnQgR1NNIG1lc3NhZ2UnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWdtZW50Q291bnQoJyEnLnJlcGVhdCgzMDYpKSwgMiwgJ1VwcGVyIGxpbWl0IG9mIHR3byBzZWdtZW50IEdTTSBtZXNzYWdlJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoMzA3KSksIDMsICdHU00gbWVzc2FnZSBvdmVyZmxvdyB0byB0aHJlZSBzZWdtZW50cycpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlZ21lbnRDb3VudCgnIScucmVwZWF0KDY5KSArICfinKgnKSwgMSwgJ1VDUzIgc2luZ2xlIHNlZ21lbnQnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWdtZW50Q291bnQoJyEnLnJlcGVhdCg3MCkgKyAn4pyoJyksIDIsICdVQ1MyIGRvdWJsZSBzZWdtZW50Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2VnbWVudENvdW50KCchJy5yZXBlYXQoMTMzKSArICfinKgnKSwgMiwgJ1VwcGVyIGxpbWl0IG9mIFVDUzIgZG91YmxlIHNlZ21lbnQnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWdtZW50Q291bnQoJyEnLnJlcGVhdCgxMzQpICsgJ+KcqCcpLCAzLCAnVUNTMiBtZXNzYWdlIG92ZXJmbG93IHRvIHRocmVlIHNlZ21lbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY291bnRzIHNwYW0gc2NvcmVzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzcGFtU2NvcmUoXCJXZSdyZSB0aGUgIzEgb3B0aW9uIVwiKSwge1xuICAgICAgICBzY29yZTogMSxcbiAgICAgICAgcGhyYXNlczogW3sgdGV4dDogJyMxJywgc3RhcnQ6IDEwLCB3ZWlnaHQ6IDIgfV0sXG4gICAgICB9LCAnU3BhbSB3b3JkcyBjb3VudGVkJyk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNwYW1TY29yZShcIldlJ3JlIHRoZSAjMSBiZXN0IG9wdGlvbiFcIikuc2NvcmUsIDEsICdDb21iaW5hdGlvbiBzcGFtIGFuZCBwb3dlciB3b3JkcycpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzcGFtU2NvcmUoXCJXZSdyZSB0aGUgIzEgYmVzdCBvcHRpb24gaW4gdGhlIGFwb2NhbHlwc2UhXCIpLnNjb3JlLCAyLCAnVHdvIHBvd2VyIHdvcmRzIG1ha2Ugc2NvcmUgZ28gdXAuJyk7XG5cbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc3BhbVNjb3JlKCdJIEFkZCB1cCB0aGUgQWQnKSwge1xuICAgICAgICBzY29yZTogMSxcbiAgICAgICAgcGhyYXNlczogW1xuICAgICAgICAgIHsgc3RhcnQ6IDEzLCB0ZXh0OiAnYWQnLCB3ZWlnaHQ6IDIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sICdDYXRjaGVzIHdvcmRzIGF0IGVuZCcpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzcGFtU2NvcmUoJ0FkIHRhcmdldGluZyBhZGRzIHZhbHVlJyksIHtcbiAgICAgICAgc2NvcmU6IDEsXG4gICAgICAgIHBocmFzZXM6IFtcbiAgICAgICAgICB7IHN0YXJ0OiAwLCB0ZXh0OiAnYWQnLCB3ZWlnaHQ6IDIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sICdDYXRjaGVzIHdvcmRzIGF0IGJlZ2lubmluZy4nKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ== |
{ | ||
"name": "@universe/phone-parser", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"main": "dist/src/index.js", | ||
@@ -5,0 +5,0 @@ "description": "Universe phone parser.", |
import { UNICODE_MAPPING } from './unicode-chars'; | ||
import { UNICODE_TO_GSM } from './gsm'; | ||
import { SPAM_WORDS, POWER_WORDS } from './spam'; | ||
@@ -41,1 +42,30 @@ export function sanitize(str: string) { | ||
} | ||
export interface SpamScore { | ||
score: number; | ||
phrases: { text: string; start: number; weight: number }[]; | ||
} | ||
export function spamScore(message: string) { | ||
const out: SpamScore = { score: 0, phrases: [] }; | ||
message = ' ' + message.toLowerCase().replace(/[^a-z0-9#%$]/g, ' ') + ' '; | ||
for (const text of SPAM_WORDS) { | ||
let start = message.indexOf(` ${text} `); | ||
while (start !== -1) { | ||
out.score += 1; | ||
out.phrases.push({ text, start, weight: 2 }); | ||
start = message.indexOf(` ${text} `, start + text.length + 1); | ||
} | ||
} | ||
for (const text of POWER_WORDS) { | ||
let start = message.indexOf(` ${text} `); | ||
while (start !== -1) { | ||
// start += 1; | ||
out.score += 0.5; | ||
out.phrases.push({ text, start, weight: 1 }); | ||
start = message.indexOf(` ${text} `, start + text.length + 1); | ||
} | ||
} | ||
out.score = Math.floor(Math.min(out.score, 5)); | ||
return out; | ||
} |
@@ -43,1 +43,7 @@ export type InputTypes = string | number | boolean | undefined | null; | ||
} | ||
// TODO: https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes | ||
// TODO: https://en.wikipedia.org/wiki/Fictitious_telephone_number | ||
export function isFictitious(tel: string) { | ||
return tel.startsWith('+1555') || tel.startsWith('+10') || tel.startsWith('+11') || tel.indexOf('555') === 5; | ||
} |
@@ -6,2 +6,3 @@ /* global describe, it */ | ||
import { message } from '../src'; | ||
import { spamScore } from '../src/message'; | ||
@@ -44,3 +45,25 @@ const { bitCount, sanitize, segmentCount } = message; | ||
}); | ||
it('counts spam scores', () => { | ||
assert.deepStrictEqual(spamScore("We're the #1 option!"), { | ||
score: 1, | ||
phrases: [{ text: '#1', start: 10, weight: 2 }], | ||
}, 'Spam words counted'); | ||
assert.deepStrictEqual(spamScore("We're the #1 best option!").score, 1, 'Combination spam and power words'); | ||
assert.deepStrictEqual(spamScore("We're the #1 best option in the apocalypse!").score, 2, 'Two power words make score go up.'); | ||
assert.deepStrictEqual(spamScore('I Add up the Ad'), { | ||
score: 1, | ||
phrases: [ | ||
{ start: 13, text: 'ad', weight: 2 }, | ||
], | ||
}, 'Catches words at end'); | ||
assert.deepStrictEqual(spamScore('Ad targeting adds value'), { | ||
score: 1, | ||
phrases: [ | ||
{ start: 0, text: 'ad', weight: 2 }, | ||
], | ||
}, 'Catches words at beginning.'); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
392493
27
6258