@coffeeandfun/google-profanity-words
Version:
Real profanity words banned by Google, extracted from their hidden API before shutdown. Now available as an easy-to-use Node.js library for content filtering.
223 lines (139 loc) β’ 5.39 kB
Markdown

# β Google Profanity Words
> A fun and developer-friendly profanity detection library brought to you by [Coffee & Fun LLC](https://coffeeandfun.com) βπ
> Built and maintained with love by [Robert James Gabriel](https://github.com/robertgabriel) π»β¨
[](https://www.npmjs.com/package/@coffeeandfun/google-profanity-words) [](https://github.com/@coffeeandfun/google-profanity-words)
## π Whatβs This?
**Google Profanity Words** is a Node.js library that helps you detect and filter out naughty language (in multiple languages!) from your apps or content. Whether youβre building a chat app, a comment section, or a gameβthis oneβs your profanity-slaying sidekick.
Made by devs for devs. Maintained by Robert at Coffee & Fun ββ€οΈ
## β¨ Features
- π **Multilingual support** β English and Spanish out of the box. More coming soon!
- π **Monthly updates** β Stay fresh with the latest no-no words
- π‘ **Easy to use API** β Straightforward methods, async/await friendly
- π¬ **Tested with Jest** β Fully covered and ready for production
- β‘ **Tiny & Fast** β Minimal deps = speedy installs and performance
## π¦ Install Me
```bash
npm install @coffeeandfun/google-profanity-words
```
## β‘ Quickstart Guide
```javascript
import { ProfanityEngine } from '@coffeeandfun/google-profanity-words';
// Default is English
const profanity = new ProfanityEngine();
// EspaΓ±ol? You got it.
const profanityES = new ProfanityEngine({ language: 'es' });
// Check a single word
const isBad = await profanity.search('example');
// Or check a full sentence
const hasCurses = await profanity.hasCurseWords('This is a test sentence');
console.log(isBad, hasCurses); // true / false
```
## π API Docs (But Make It Chill)
### π οΈ `new ProfanityEngine(options?)`
Create a new profanity detector engine!
```javascript
const profanity = new ProfanityEngine(); // Defaults to English
```
Or choose a specific language:
```javascript
const spanishProfanity = new ProfanityEngine({ language: 'es' });
```
#### Options:
- `language` (string, optional):
- `'en'` = English (default)
- `'es'` = Spanish
- If a language isnβt available, it falls back to English.
### π `search(word)`
Check a single word to see if it's naughty.
```javascript
const isProfane = await profanity.search('heck');
console.log(isProfane); // true or false
```
### π¬ `hasCurseWords(sentence)`
Check a full sentence or phrase for profanity.
```javascript
const result = await profanity.hasCurseWords('You silly goose');
console.log(result); // probably false, unless goose is banned now πͺΏ
```
### π `all()`
Get the full list of bad words in the current language.
```javascript
const badWords = await profanity.all();
console.log(badWords); // ['word1', 'word2', 'etc']
```
### π‘ Real Talk: Edge Cases
- Empty strings? We gotchu. Returns `false`.
- `search()` and `hasCurseWords()` are **case-insensitive**.
- Special characters and punctuation? No problem.
## π§ͺ Testing with Jest
We've got testing covered like whipped cream on a latte βπ
Run the default test suite:
```bash
npm test
```
Or use more specific Jest commands:
```bash
# Watch mode (great for dev workflow)
npx jest --watch
# Run tests in a specific file
npx jest path/to/your/file.test.js
# Run coverage report
npx jest --coverage
# Run with verbose output (get all the juicy details)
npx jest --verbose
```
Tests are located in the `/__tests__/` directory and use the real profanity files, so you know itβs legit πβ
## π Example Use Cases
### β
Filter User Input
```js
async function filterInput(input) {
if (await profanity.hasCurseWords(input)) {
return 'β οΈ Whoa there! Language, please.';
}
return input;
}
```
### π Multi-language Setup
```js
const en = new ProfanityEngine({ language: 'en' });
const es = new ProfanityEngine({ language: 'es' });
const englishResult = await en.search('bad');
const spanishResult = await es.search('malo');
```
## π Want to Contribute?
We love open source buddies π
### Add a New Language
1. Fork it π΄
2. Add a file to `/data/` named like `fr.txt` for French
3. Fill it with one profane word per line
4. Push & open a pull request!
## π Who Made This?
Built by [Robert James Gabriel](https://github.com/robertgabriel) and the good people at **Coffee & Fun LLC**. We make dev tools with accessibility, coffee, and good vibes in mind.
> Wanna support? Send a coffee our way or just spread the word! βπ
## π§‘ License
[MIT](https://opensource.org/licenses/MIT) β because sharing is caring.
## π¬ Support & Community
- π [Report Bugs](https://github.com/coffeeandfun/google-profanity-words/issues)
- π‘ [Join Discussions](https://github.com/coffeeandfun/google-profanity-words/discussions)
- π¬ Email: [support@coffeeandfun.com](mailto:hellow@coffeeandfun.com)
Made with β, code, and a sprinkle of magic at Coffee & Fun LLC π
## AI Usage
Calude AI was used to help with this read me & adding extra Jest tests.