bad-words-next
TypeScript icon, indicating that this package has built-in type declarations

2.3.1 • Public • Published

bad-words-next

workflows-nodejs-ci npm version NPM license npm bundle size npm downloads

JavaScript/TypeScript filter and checker for bad words aka profanity.

API documentation in GitHub Wiki.

Install

yarn add bad-words-next

or

npm install bad-words-next

Basic usage

const BadWordsNext = require('bad-words-next')
const en = require('bad-words-next/data/en.json')

const badwords = new BadWordsNext({ data: en })

// Returns true when passed string contains a bad word
console.log(badwords.check('S0me sh!tt is here'))
// will print `true`

// Returns filtered string with masked bad words
console.log(badwords.filter('S0me sh!tt is here'))
// will print `S0me *** is here`

// Returns filtered string and catches bad words
badwords.filter('S0me sh!tt is here', badword => {
  console.log(badword)
})
// will print `sh!tt`

// Use exclusions
const badwords = new BadWordsNext({ data: en, exclusions: ['sh+it+' /*works with lookalikes or the actual words*/] })
console.log(badwords.filter('S0me sh!tt is here'))
// will keep the `sh!tt` word

Add more dictionaries

const BadWordsNext = require('bad-words-next')

const en = require('bad-words-next/data/en.json')
const es = require('bad-words-next/data/es.json')
const fr = require('bad-words-next/data/fr.json')
const de = require('bad-words-next/data/de.json')
const ru = require('bad-words-next/data/ru.json')
const rl = require('bad-words-next/data/ru_lat.json')
const ua = require('bad-words-next/data/ua.json')
const pl = require('bad-words-next/data/pl.json')
const ch = require('bad-words-next/data/ch.json')

const badwords = new BadWordsNext()
badwords.add(en)
badwords.add(es)
badwords.add(fr)
badwords.add(de)
badwords.add(ru)
badwords.add(rl)
badwords.add(ua)
badwords.add(pl)
badwords.add(ch)

Dictionary files format

interface Data {
  id: string  // Unique dictionary ID
  words: string[] // Words list
  lookalike: Lookalike // Lookalike homoglyphs map
}

type Lookalike = Record<string | number, string> // Simple key-value object

You can use the following pattern characters in a word string:

  • * indicates any characters, use it only on start and/or end of a word
  • + indicates one or more repeating characters
  • _ indicates special characters

Options

interface Options {
  data?: Data // Dictionary data
  placeholder?: string // Filter placeholder - default '***'
  placeholderMode?: 'repeat' | 'replace' // Placeholder mode to either replace with or repeat the placeholder - default 'replace'
  specialChars?: RegExp // Special chars to allow on start and/or end of a word - default /\d|[!@#$%^&*()[\];:'",.?\-_=+~`|]|a|(?:the)|(?:el)|(?:la)/
  spaceChars?: string[] // Pseudo space chars, a list of values for `_` symbol in a dictionary word string - default ['', '.', '-', ';', '|']
  confusables?: string[] // List of ids to apply transformations from `confusables` npm package - default ['en', 'es', 'de', 'ru_lat']
  maxCacheSize?: number // Max items to store in cache - default 100
  exclusions?: string[] // The list of exclusions
}

See Options API for more details.

Notes

  • Dictionary words with spaces won't work b/c they do not represent a single word

  • Dictionaries have to be improved over time

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
2.3.11,766latest

Version History

VersionDownloads (Last 7 Days)Published
2.3.11,766
2.3.00
2.2.1285
2.2.00
2.1.00
2.0.10
2.0.00
1.6.842
1.6.7206
1.6.60
1.6.50
1.6.40
1.6.20
1.6.00
1.5.30
1.5.20
1.5.10
1.5.00
1.4.00
1.3.80
1.3.70
1.3.60
1.3.51
1.3.41
1.3.31
1.3.20
1.3.11
1.3.01
1.2.101
1.2.91
1.2.81
1.2.71
1.2.61
1.2.51
1.2.40
1.2.31
1.2.21
1.2.10
1.2.00
1.1.60
1.1.51
1.1.41
1.1.30
1.1.21
1.1.10
1.1.01
1.0.71
1.0.61
1.0.50
1.0.41
1.0.31
1.0.20
1.0.12
1.0.01

Package Sidebar

Install

npm i bad-words-next

Weekly Downloads

2,323

Version

2.3.1

License

MIT

Unpacked Size

66.6 kB

Total Files

21

Last publish

Collaborators

  • alexzel