Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

modern-ahocorasick

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

modern-ahocorasick - npm Package Compare versions

Comparing version 2.0.1 to 2.0.2

2

package.json
{
"name": "modern-ahocorasick",
"version": "2.0.1",
"version": "2.0.2",
"description": "modern-ahocorasick",

@@ -5,0 +5,0 @@ "type": "module",

@@ -12,3 +12,5 @@ # modern-ahocorasick

```sh
<npm/yarn/pnpm> i modern-ahocorasick
npm i modern-ahocorasick
yarn add modern-ahocorasick
pnpm i modern-ahocorasick
```

@@ -19,9 +21,9 @@

```ts
// cjs
const AhoCorasick = require('modern-ahocorasick');
// esm
import AhoCorasick from 'modern-ahocorasick'
// cjs
const AhoCorasick = require('modern-ahocorasick')
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc']);
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.');
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc'])
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.')

@@ -35,4 +37,121 @@ // [ [ 19, [ 'keyword1' ] ], [ 47, [ 'keyword2' ] ] ]

## API
### Constructor
#### `constructor(keywords: string[])`
Initializes the Aho-Corasick state machine with the provided `keywords`.
**Parameters**:
- `keywords`: An array of strings representing the keywords to search for.
**Example**:
```typescript
const keywords = ['he', 'she', 'his', 'hers']
const ac = new AhoCorasick(keywords)
```
---
### Methods
#### `search(str: string): [number, string[]][]`
Searches the input string `str` for occurrences of any of the keywords and returns a list of matches.
**Parameters**:
- `str`: The input string to search.
**Returns**:
- An array of tuples. Each tuple contains:
- The ending index of the match in the input string.
- An array of matched keywords at that position.
**Example**:
```typescript
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc'])
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.')
// [ [ 19, [ 'keyword1' ] ], [ 47, [ 'keyword2' ] ] ]
```
---
#### `match(str: string): boolean`
Checks if any keyword exists in the input string `str`.
**Parameters**:
- `str`: The input string to search.
**Returns**:
- `true` if any keyword is found.
- `false` otherwise.
**Example**:
```typescript
const ac = new AhoCorasick(['he', 'she', 'his', 'hers'])
console.log(ac.match('ushers')) // Output: true
console.log(ac.match('xyz')) // Output: false
```
---
### Internal Functionality
While the `_buildTables` method is not part of the public API, it is responsible for building the transition (`gotoFn`), output, and failure functions used by the Aho-Corasick algorithm.
---
## Examples
### Example 1: Basic Search
```typescript
const keywords = ['cat', 'bat', 'rat']
const ac = new AhoCorasick(keywords)
const text = 'the cat chased the rat while a bat flew by'
const matches = ac.search(text)
```
### Example 2: Check Match Presence
```typescript
const ac = new AhoCorasick(['abc', '123'])
console.log(ac.match('hello abc world')) // Output: true
console.log(ac.match('hello world')) // Output: false
```
---
### Example: Case-Insensitive Search
```typescript
const keywords = ['hello', 'world']
const ac = new AhoCorasick(keywords.map(k => k.toLowerCase()))
const text = 'Hello World'
const matches = ac.search(text.toLowerCase())
console.log(matches)
// Output: [
// [4, ["hello"]],
// [10, ["world"]]
// ]
```
This document serves as a complete guide for using the `AhoCorasick` class for multi-pattern string matching.
## License
[The MIT License](LICENSE)
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