Socket
Socket
Sign inDemoInstall

levenshtein-edit-distance

Package Overview
Dependencies
0
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.5 to 3.0.0

index.d.ts

52

cli.js
#!/usr/bin/env node
'use strict'
import fs from 'fs'
import {URL} from 'url'
import {levenshteinEditDistance} from './index.js'
var pack = require('./package.json')
var levenshtein = require('.')
/** @type {Object.<string, unknown>} */
var pack = JSON.parse(
String(fs.readFileSync(new URL('./package.json', import.meta.url)))
)
var argv = process.argv.slice(2)
var insensitives = ['--insensitive', '-i']
var insensitive = false
var pos = argv.indexOf('--insensitive')
insensitives.forEach(function(flag) {
var pos = argv.indexOf(flag)
if (pos !== -1) {
argv.splice(pos, 1)
insensitive = true
}
})
if (pos !== -1) {
argv.splice(pos, 1)
insensitive = true
}
if (argv.indexOf('--help') !== -1 || argv.indexOf('-h') !== -1) {
pos = argv.indexOf('-i')
if (pos !== -1) {
argv.splice(pos, 1)
insensitive = true
}
if (argv.includes('--help') || argv.includes('-h')) {
console.log(help())
} else if (argv.indexOf('--version') !== -1 || argv.indexOf('-v') !== -1) {
} else if (argv.includes('--version') || argv.includes('-v')) {
console.log(pack.version)

@@ -26,4 +33,4 @@ } else if (argv.length === 0) {

process.stdin.setEncoding('utf8')
process.stdin.on('data', function(data) {
getDistance(data.trim())
process.stdin.on('data', function (data) {
getDistance(String(data).trim())
})

@@ -59,9 +66,10 @@ } else {

/**
* @param {string} value
*/
function getDistance(value) {
var values = value
.split(',')
.join(' ')
.split(/\s+/)
var values = value.split(',').join(' ').split(/\s+/)
if (values.length === 2) {
// @ts-ignore yes, the length is 2.
console.log(distance(values))

@@ -74,4 +82,8 @@ } else {

/**
* @param {[string, string]} values
* @return {number}
*/
function distance(values) {
return levenshtein(values[0], values[1], insensitive)
return levenshteinEditDistance(values[0], values[1], insensitive)
}

@@ -1,16 +0,24 @@

'use strict'
module.exports = levenshtein
/** @type {Array.<number>} */
var codes = []
/** @type {Array.<number>} */
var cache = []
var codes = []
function levenshtein(value, other, insensitive) {
var length
var lengthOther
/**
* @param {string} value
* @param {string} other
* @param {boolean} [insensitive]
* @returns {number}
*/
export function levenshteinEditDistance(value, other, insensitive) {
/** @type {number} */
var code
/** @type {number} */
var result
/** @type {number} */
var distance
/** @type {number} */
var distanceOther
/** @type {number} */
var index
/** @type {number} */
var indexOther

@@ -22,11 +30,8 @@

length = value.length
lengthOther = other.length
if (length === 0) {
return lengthOther
if (value.length === 0) {
return other.length
}
if (lengthOther === 0) {
return length
if (other.length === 0) {
return value.length
}

@@ -41,3 +46,3 @@

while (index < length) {
while (index < value.length) {
codes[index] = value.charCodeAt(index)

@@ -49,3 +54,3 @@ cache[index] = ++index

while (indexOther < lengthOther) {
while (indexOther < other.length) {
code = other.charCodeAt(indexOther)

@@ -55,3 +60,3 @@ result = distance = indexOther++

while (++index < length) {
while (++index < value.length) {
distanceOther = code === codes[index] ? distance : distance + 1

@@ -58,0 +63,0 @@ distance = cache[index]

{
"name": "levenshtein-edit-distance",
"version": "2.0.5",
"version": "3.0.0",
"description": "Levenshtein edit distance. No cruft. Real fast.",

@@ -25,33 +25,32 @@ "license": "MIT",

],
"sideEffects": false,
"type": "module",
"bin": "cli.js",
"main": "index.js",
"types": "index.d.ts",
"files": [
"index.js",
"cli.js"
"cli.js",
"index.d.ts",
"index.js"
],
"dependencies": {},
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
"prettier": "^1.0.0",
"remark-cli": "^7.0.0",
"remark-preset-wooorm": "^6.0.0",
"tape": "^4.0.0",
"tinyify": "^2.0.0",
"xo": "^0.25.0"
"@types/tape": "^4.0.0",
"c8": "^7.0.0",
"prettier": "^2.0.0",
"remark-cli": "^9.0.0",
"remark-preset-wooorm": "^8.0.0",
"rimraf": "^3.0.0",
"tape": "^5.0.0",
"type-coverage": "^2.0.0",
"typescript": "^4.0.0",
"xo": "^0.38.0"
},
"scripts": {
"format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
"build-bundle": "browserify . -s levenshteinEditDistance -o levenshtein-edit-distance.js",
"build-mangle": "browserify . -s levenshteinEditDistance -p tinyify -o levenshtein-edit-distance.min.js",
"build": "npm run build-bundle && npm run build-mangle",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js",
"test": "npm run format && npm run build && npm run test-coverage"
"prepack": "npm run build && npm run format",
"build": "rimraf \"*.d.ts\" && tsc && type-coverage",
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
"test-api": "node test.js",
"test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node test.js",
"test": "npm run build && npm run format && npm run test-coverage"
},
"nyc": {
"check-coverage": true,
"lines": 100,
"functions": 100,
"branches": 100
},
"prettier": {

@@ -67,10 +66,7 @@ "tabWidth": 2,

"prettier": true,
"esnext": false,
"rules": {
"unicorn/prefer-includes": "off",
"no-multi-assign": "off"
},
"ignores": [
"levenshtein-edit-distance.js"
]
"no-multi-assign": "off",
"no-var": "off",
"prefer-arrow-callback": "off"
}
},

@@ -81,3 +77,8 @@ "remarkConfig": {

]
},
"typeCoverage": {
"atLeast": 100,
"detail": true,
"strict": true
}
}

@@ -14,2 +14,5 @@ # levenshtein-edit-distance

This package is ESM only: Node 12+ is needed to use it and it must be `import`ed
instead of `require`d.
[npm][]:

@@ -23,18 +26,21 @@

This package exports the following identifiers: `levenshteinEditDistance`.
There is no default export.
```js
var levenshtein = require('levenshtein-edit-distance')
import {levenshteinEditDistance} from 'levenshtein-edit-distance'
levenshtein('levenshtein', 'levenshtein') // => 0
levenshtein('sitting', 'kitten') // => 3
levenshtein('gumbo', 'gambol') // => 2
levenshtein('saturday', 'sunday') // => 3
levenshteinEditDistance('levenshtein', 'levenshtein') // => 0
levenshteinEditDistance('sitting', 'kitten') // => 3
levenshteinEditDistance('gumbo', 'gambol') // => 2
levenshteinEditDistance('saturday', 'sunday') // => 3
// Case sensitive!
levenshtein('DwAyNE', 'DUANE') !== levenshtein('dwayne', 'DuAnE') // => true
levenshteinEditDistance('DwAyNE', 'DUANE') !== levenshtein('dwayne', 'DuAnE') // => true
// Insensitive
levenshtein('DwAyNE', 'DUANE', true) === levenshtein('dwayne', 'DuAnE', true) // => true
levenshteinEditDistance('DwAyNE', 'DUANE', true) === levenshtein('dwayne', 'DuAnE', true) // => true
// Order insensitive
levenshtein('aarrgh', 'aargh') === levenshtein('aargh', 'aarrgh') // => true
levenshteinEditDistance('aarrgh', 'aargh') === levenshtein('aargh', 'aarrgh') // => true
```

@@ -93,5 +99,5 @@

[build-badge]: https://img.shields.io/travis/words/levenshtein-edit-distance.svg
[build-badge]: https://github.com/words/levenshtein-edit-distance/workflows/main/badge.svg
[build]: https://travis-ci.org/words/levenshtein-edit-distance
[build]: https://github.com/words/levenshtein-edit-distance/actions

@@ -98,0 +104,0 @@ [coverage-badge]: https://img.shields.io/codecov/c/github/words/levenshtein-edit-distance.svg

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc