From a4bdd66b65f7ee098589ec72be529aa0b88dbd96 Mon Sep 17 00:00:00 2001 From: Piotr Bulawa Date: Thu, 28 Sep 2023 09:06:04 +0200 Subject: [PATCH] SNOW-913627: Replace string-similarity with fastest-levenshtein (#652) --- lib/connection/connection_config.js | 10 +++------- package.json | 2 +- test/integration/testConnection.js | 11 ++++------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/connection/connection_config.js b/lib/connection/connection_config.js index 526f95a74..5e355cdfc 100644 --- a/lib/connection/connection_config.js +++ b/lib/connection/connection_config.js @@ -10,7 +10,7 @@ const ErrorCodes = Errors.codes; const NativeTypes = require('./result/data_types').NativeTypes; const GlobalConfig = require('../global_config'); const authenticationTypes = require('../authentication/authentication').authenticationTypes; -const stringSimilarity = require("string-similarity"); +const levenshtein = require('fastest-levenshtein'); const RowMode = require('./../constants/row_mode'); const WAIT_FOR_BROWSER_ACTION_TIMEOUT = 120000; const DEFAULT_PARAMS = @@ -484,12 +484,8 @@ function ConnectionConfig(options, validateCredentials, qaMode, clientInfo) { if (!DEFAULT_PARAMS.includes(key)) { - var matches = stringSimilarity.findBestMatch(key, DEFAULT_PARAMS); - console.error(`"${key}" is an unknown connection parameter`); - if (matches.bestMatchIndex > 0) - { - console.error(`Did you mean "${matches.bestMatch.target}"`); - } + const result = levenshtein.closest(key, DEFAULT_PARAMS); + console.error(`"${key}" is an unknown connection parameter. Did you mean "${result}"?`); } } } diff --git a/package.json b/package.json index 75c2bd18b..bb0c2309f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "expand-tilde": "^2.0.2", "extend": "^3.0.2", "fast-xml-parser": "^4.2.5", + "fastest-levenshtein": "^1.0.16", "generic-pool": "^3.8.2", "glob": "^7.1.6", "https-proxy-agent": "^5.0.1", @@ -31,7 +32,6 @@ "open": "^7.3.1", "python-struct": "^1.1.3", "simple-lru-cache": "^0.0.2", - "string-similarity": "^4.0.4", "tmp": "^0.2.1", "uuid": "^8.3.2", "winston": "^3.1.0" diff --git a/test/integration/testConnection.js b/test/integration/testConnection.js index aa8c978f6..e75c0c5bb 100644 --- a/test/integration/testConnection.js +++ b/test/integration/testConnection.js @@ -134,8 +134,7 @@ describe("Connection test - validate default parameters", function () { }); }); assert.deepEqual(output, [ - '"waerhouse" is an unknown connection parameter\n', - 'Did you mean "warehouse"\n', + '"waerhouse" is an unknown connection parameter. Did you mean "warehouse"?\n', ]); }); @@ -162,7 +161,7 @@ describe("Connection test - validate default parameters", function () { validateDefaultParameters: true, }); }); - assert.deepEqual(output, ['"db" is an unknown connection parameter\n']); + assert.deepEqual(output, ['"db" is an unknown connection parameter. Did you mean "host"?\n']); }); it('Invalid "database" parameter', function () { @@ -176,8 +175,7 @@ describe("Connection test - validate default parameters", function () { }); }); assert.deepEqual(output, [ - '"datbse" is an unknown connection parameter\n', - 'Did you mean "database"\n', + '"datbse" is an unknown connection parameter. Did you mean "database"?\n', ]); }); @@ -205,8 +203,7 @@ describe("Connection test - validate default parameters", function () { }); }); assert.deepEqual(output, [ - '"shcema" is an unknown connection parameter\n', - 'Did you mean "schema"\n', + '"shcema" is an unknown connection parameter. Did you mean "schema"?\n', ]); }); });