From 60d5b8a4106fec3b7bfd3049a163f79a24da867b Mon Sep 17 00:00:00 2001 From: Huajie Zhang Date: Thu, 14 Sep 2023 12:23:04 +0800 Subject: [PATCH] fix: remove external depedency for string similarity calculation (#9944) * fix: remove depedency for edit distance * test: ut --- packages/cli/package.json | 1 - packages/cli/src/commands/engine.ts | 7 +- packages/cli/src/utils.ts | 30 +++ packages/cli/tests/unit/utils.tests.ts | 26 ++ pnpm-lock.yaml | 355 ++++++++++++++++++++----- 5 files changed, 341 insertions(+), 78 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 35a75d39cb5..758f65243a7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -109,7 +109,6 @@ "figures": "^3.2.0", "fs-extra": "^9.1.0", "lodash": "^4.17.21", - "natural": "^6.7.2", "node-machine-id": "^1.1.12", "open": "^8.2.1", "semver": "^7.5.4", diff --git a/packages/cli/src/commands/engine.ts b/packages/cli/src/commands/engine.ts index 99b7e4aa33f..eb04687fd67 100644 --- a/packages/cli/src/commands/engine.ts +++ b/packages/cli/src/commands/engine.ts @@ -43,10 +43,9 @@ import { import CliTelemetry from "../telemetry/cliTelemetry"; import { TelemetryComponentType, TelemetryProperty } from "../telemetry/cliTelemetryEvents"; import UI from "../userInteraction"; -import { CliConfigOptions, UserSettings } from "../userSetttings"; -import { getSystemInputs } from "../utils"; +import { CliConfigOptions } from "../userSetttings"; +import { editDistance, getSystemInputs } from "../utils"; import { helper } from "./helper"; -import natural from "natural"; class CLIEngine { /** @@ -280,7 +279,7 @@ class CLIEngine { let mini = token.length; let mostSimilarCommand: CLICommand | undefined = undefined; for (const cmd of context.command.commands || []) { - const d = natural.LevenshteinDistance(token, cmd.name); + const d = editDistance(token, cmd.name); if (d < mini && d <= 2) { mini = d; mostSimilarCommand = cmd; diff --git a/packages/cli/src/utils.ts b/packages/cli/src/utils.ts index 6ca79e33d1a..c8390ca0340 100644 --- a/packages/cli/src/utils.ts +++ b/packages/cli/src/utils.ts @@ -235,3 +235,33 @@ export async function getTemplates(): Promise { }); return samples; } + +export function editDistance(s1: string, s2: string): number { + const len1 = s1.length; + const len2 = s2.length; + + // Create a 2D array to store the edit distances + const dp: number[][] = new Array(len1 + 1).fill(0).map(() => new Array(len2 + 1).fill(0)); + + // Initialize the first row and column + for (let i = 0; i <= len1; i++) { + dp[i][0] = i; + } + for (let j = 0; j <= len2; j++) { + dp[0][j] = j; + } + + // Calculate the edit distance using dynamic programming + for (let i = 1; i <= len1; i++) { + for (let j = 1; j <= len2; j++) { + const cost = s1[i - 1] === s2[j - 1] ? 0 : 1; + dp[i][j] = Math.min( + dp[i - 1][j] + 1, // Deletion + dp[i][j - 1] + 1, // Insertion + dp[i - 1][j - 1] + cost // Substitution + ); + } + } + + return dp[len1][len2]; +} diff --git a/packages/cli/tests/unit/utils.tests.ts b/packages/cli/tests/unit/utils.tests.ts index d607137ad79..55408d9b770 100644 --- a/packages/cli/tests/unit/utils.tests.ts +++ b/packages/cli/tests/unit/utils.tests.ts @@ -13,6 +13,7 @@ import activate from "../../src/activate"; import AzureAccountManager from "../../src/commonlib/azureLogin"; import { UserSettings } from "../../src/userSetttings"; import { + editDistance, flattenNodes, getColorizedString, getSettingsVersion, @@ -416,3 +417,28 @@ describe("activate", async () => { } }); }); + +describe("editDistance", async () => { + it("happy", async () => { + { + const d = editDistance("a", "b"); + expect(d).equals(1); + } + { + const d = editDistance("abc", "abd"); + expect(d).equals(1); + } + { + const d = editDistance("abc", "aabbc"); + expect(d).equals(2); + } + { + const d = editDistance("", "abc"); + expect(d).equals(3); + } + { + const d = editDistance("abc", ""); + expect(d).equals(3); + } + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d68697c164e..2ccf19728db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -295,9 +295,6 @@ importers: lodash: specifier: ^4.17.21 version: 4.17.21 - natural: - specifier: ^6.7.2 - version: 6.7.2 node-machine-id: specifier: ^1.1.12 version: 1.1.12 @@ -407,7 +404,7 @@ importers: version: 0.8.9(eslint@7.29.0) eslint-plugin-prettier: specifier: ^4.0.0 - version: 4.0.0(eslint-config-prettier@8.3.0)(eslint@7.29.0)(prettier@2.5.1) + version: 4.0.0(eslint@7.29.0)(prettier@2.5.1) html-webpack-plugin: specifier: ^5.3.1 version: 5.3.1(webpack@5.62.1) @@ -419,10 +416,10 @@ importers: version: 10.2.0 mocked-env: specifier: ^1.3.5 - version: 1.3.5(supports-color@9.4.0) + version: 1.3.5 nyc: specifier: ^15.1.0 - version: 15.1.0(supports-color@9.4.0) + version: 15.1.0 prettier: specifier: ^2.4.1 version: 2.5.1 @@ -2412,10 +2409,10 @@ packages: dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.5.0 - '@azure/core-client': 1.7.3(supports-color@9.4.0) + '@azure/core-client': 1.7.3 '@azure/core-lro': 2.5.4 '@azure/core-paging': 1.5.0 - '@azure/core-rest-pipeline': 1.12.0(supports-color@9.4.0) + '@azure/core-rest-pipeline': 1.12.0 tslib: 2.6.1 transitivePeerDependencies: - supports-color @@ -2435,6 +2432,20 @@ packages: '@azure/core-util': 1.4.0 tslib: 2.6.1 + /@azure/core-client@1.7.3: + resolution: {integrity: sha512-kleJ1iUTxcO32Y06dH9Pfi9K4U+Tlb111WXEnbt7R/ne+NLRwppZiTGJuTD5VVoxTMK5NTbEtm5t2vcdNCFe2g==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.5.0 + '@azure/core-rest-pipeline': 1.12.0 + '@azure/core-tracing': 1.0.1 + '@azure/core-util': 1.4.0 + '@azure/logger': 1.0.4 + tslib: 2.6.1 + transitivePeerDependencies: + - supports-color + /@azure/core-client@1.7.3(supports-color@9.4.0): resolution: {integrity: sha512-kleJ1iUTxcO32Y06dH9Pfi9K4U+Tlb111WXEnbt7R/ne+NLRwppZiTGJuTD5VVoxTMK5NTbEtm5t2vcdNCFe2g==} engines: {node: '>=14.0.0'} @@ -2497,6 +2508,22 @@ packages: dependencies: tslib: 2.6.1 + /@azure/core-rest-pipeline@1.12.0: + resolution: {integrity: sha512-+MnSB0vGZjszSzr5AW8z93/9fkDu2RLtWmAN8gskURq7EW2sSwqy8jZa0V26rjuBVkwhdA3Hw8z3VWoeBUOw+A==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.5.0 + '@azure/core-tracing': 1.0.1 + '@azure/core-util': 1.4.0 + '@azure/logger': 1.0.4 + form-data: 4.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + tslib: 2.6.1 + transitivePeerDependencies: + - supports-color + /@azure/core-rest-pipeline@1.12.0(supports-color@9.4.0): resolution: {integrity: sha512-+MnSB0vGZjszSzr5AW8z93/9fkDu2RLtWmAN8gskURq7EW2sSwqy8jZa0V26rjuBVkwhdA3Hw8z3VWoeBUOw+A==} engines: {node: '>=14.0.0'} @@ -2574,8 +2601,8 @@ packages: dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.5.0 - '@azure/core-client': 1.7.3(supports-color@9.4.0) - '@azure/core-rest-pipeline': 1.12.0(supports-color@9.4.0) + '@azure/core-client': 1.7.3 + '@azure/core-rest-pipeline': 1.12.0 '@azure/core-tracing': 1.0.1 '@azure/core-util': 1.4.0 '@azure/logger': 1.0.4 @@ -2718,6 +2745,28 @@ packages: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + /@babel/core@7.22.10: + resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.10 + '@babel/generator': 7.22.10 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) + '@babel/helpers': 7.22.10 + '@babel/parser': 7.22.10 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.10 + '@babel/types': 7.22.10 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + /@babel/core@7.22.10(supports-color@9.4.0): resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} engines: {node: '>=6.9.0'} @@ -2871,7 +2920,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10(supports-color@9.4.0) + '@babel/core': 7.22.10 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-module-imports': 7.22.5 '@babel/helper-simple-access': 7.22.5 @@ -2948,6 +2997,16 @@ packages: '@babel/template': 7.22.5 '@babel/types': 7.22.10 + /@babel/helpers@7.22.10: + resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.10 + '@babel/types': 7.22.10 + transitivePeerDependencies: + - supports-color + /@babel/helpers@7.22.10(supports-color@9.4.0): resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} engines: {node: '>=6.9.0'} @@ -4035,6 +4094,23 @@ packages: '@babel/parser': 7.22.10 '@babel/types': 7.22.10 + /@babel/traverse@7.22.10: + resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.10 + '@babel/generator': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.10 + '@babel/types': 7.22.10 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/traverse@7.22.10(supports-color@9.4.0): resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} engines: {node: '>=6.9.0'} @@ -4307,7 +4383,7 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.4(supports-color@8.1.1) espree: 7.3.1 globals: 13.20.0 ignore: 4.0.6 @@ -6070,7 +6146,7 @@ packages: nyc: '>=15' dependencies: '@istanbuljs/schema': 0.1.3 - nyc: 15.1.0(supports-color@9.4.0) + nyc: 15.1.0 dev: true /@istanbuljs/schema@0.1.3: @@ -8683,7 +8759,7 @@ packages: '@typescript-eslint/experimental-utils': 4.28.1(eslint@7.29.0)(typescript@4.5.5) '@typescript-eslint/parser': 4.28.1(eslint@7.29.0)(typescript@4.5.5) '@typescript-eslint/scope-manager': 4.28.1 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 7.29.0 functional-red-black-tree: 1.0.1 regexpp: 3.2.0 @@ -8907,7 +8983,7 @@ packages: '@types/json-schema': 7.0.12 '@typescript-eslint/scope-manager': 4.28.1 '@typescript-eslint/types': 4.28.1 - '@typescript-eslint/typescript-estree': 4.28.1(supports-color@9.4.0)(typescript@4.5.5) + '@typescript-eslint/typescript-estree': 4.28.1(typescript@4.5.5) eslint: 7.29.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@7.29.0) @@ -8997,8 +9073,8 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.28.1 '@typescript-eslint/types': 4.28.1 - '@typescript-eslint/typescript-estree': 4.28.1(supports-color@9.4.0)(typescript@4.5.5) - debug: 4.3.4(supports-color@9.4.0) + '@typescript-eslint/typescript-estree': 4.28.1(typescript@4.5.5) + debug: 4.3.4(supports-color@8.1.1) eslint: 7.29.0 typescript: 4.5.5 transitivePeerDependencies: @@ -9336,6 +9412,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@4.28.1(typescript@4.5.5): + resolution: {integrity: sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.28.1 + '@typescript-eslint/visitor-keys': 4.28.1 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.5.5) + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@4.28.1(typescript@5.0.4): resolution: {integrity: sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ==} engines: {node: ^10.12.0 || >=12.0.0} @@ -10388,13 +10485,13 @@ packages: resolution: {integrity: sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==} engines: {node: '>=6.0'} - /afinn-165-financialmarketnews@3.0.0: - resolution: {integrity: sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==} - dev: false - - /afinn-165@1.0.4: - resolution: {integrity: sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==} - dev: false + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color /agent-base@6.0.2(supports-color@9.4.0): resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -10578,13 +10675,6 @@ packages: engines: {node: '>=8'} dev: true - /apparatus@0.0.10: - resolution: {integrity: sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==} - engines: {node: '>=0.2.6'} - dependencies: - sylvester: 0.0.12 - dev: false - /append-transform@2.0.0: resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} engines: {node: '>=8'} @@ -11290,7 +11380,7 @@ packages: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9(supports-color@9.4.0) + debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 @@ -13013,6 +13103,16 @@ packages: resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} dev: false + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + /debug@2.6.9(supports-color@9.4.0): resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -13024,6 +13124,17 @@ packages: ms: 2.0.0 supports-color: 9.4.0 + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug@3.2.7(supports-color@9.4.0): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -13036,6 +13147,18 @@ packages: supports-color: 9.4.0 dev: true + /debug@4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.2(supports-color@9.4.0): resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} engines: {node: '>=6.0'} @@ -13073,7 +13196,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /debug@4.3.4(supports-color@9.4.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -13959,6 +14081,16 @@ packages: eslint-plugin-promise: 6.1.1(eslint@8.15.0) dev: true + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-import-resolver-node@0.3.9(supports-color@9.4.0): resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -13990,10 +14122,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.28.1(eslint@7.29.0)(typescript@5.0.4) - debug: 3.2.7(supports-color@9.4.0) + '@typescript-eslint/parser': 4.28.1(eslint@7.29.0)(typescript@4.5.5) + debug: 3.2.7 eslint: 7.29.0 - eslint-import-resolver-node: 0.3.9(supports-color@9.4.0) + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true @@ -14239,10 +14371,10 @@ packages: '@typescript-eslint/parser': 4.28.1(eslint@7.29.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 - debug: 2.6.9(supports-color@9.4.0) + debug: 2.6.9 doctrine: 2.1.0 eslint: 7.29.0 - eslint-import-resolver-node: 0.3.9(supports-color@9.4.0) + eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.28.1)(eslint-import-resolver-node@0.3.9)(eslint@7.29.0) has: 1.0.3 is-core-module: 2.13.0 @@ -14577,6 +14709,22 @@ packages: prettier-linter-helpers: 1.0.0 dev: true + /eslint-plugin-prettier@4.0.0(eslint@7.29.0)(prettier@2.5.1): + resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.29.0 + prettier: 2.5.1 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-prettier@4.0.0(eslint@8.15.0)(prettier@2.5.1): resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} engines: {node: '>=6.0.0'} @@ -14785,7 +14933,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 @@ -15192,7 +15340,7 @@ packages: content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 - debug: 2.6.9(supports-color@9.4.0) + debug: 2.6.9 depd: 2.0.0 encodeurl: 1.0.2 escape-html: 1.0.3 @@ -15466,7 +15614,7 @@ packages: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: - debug: 2.6.9(supports-color@9.4.0) + debug: 2.6.9 encodeurl: 1.0.2 escape-html: 1.0.3 on-finished: 2.4.1 @@ -16490,6 +16638,16 @@ packages: transitivePeerDependencies: - supports-color + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + /http-proxy-agent@5.0.0(supports-color@9.4.0): resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -16561,6 +16719,15 @@ packages: - supports-color dev: true + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + /https-proxy-agent@5.0.1(supports-color@9.4.0): resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -17344,6 +17511,18 @@ packages: - supports-color dev: true + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.22.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-instrument@4.0.3(supports-color@9.4.0): resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} @@ -17412,6 +17591,17 @@ packages: - supports-color dev: true + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-source-maps@4.0.1(supports-color@9.4.0): resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -18743,7 +18933,7 @@ packages: cli-truncate: 2.1.0 commander: 6.2.1 cosmiconfig: 7.1.0 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.4(supports-color@8.1.1) dedent: 0.7.0 enquirer: 2.4.1 execa: 4.1.0 @@ -19983,6 +20173,18 @@ packages: normalize-path: 2.1.1 dev: true + /mocked-env@1.3.5: + resolution: {integrity: sha512-GyYY6ynVOdEoRlaGpaq8UYwdWkvrsU2xRme9B+WPSuJcNjh17+3QIxSYU6zwee0SbehhV6f06VZ4ahjG+9zdrA==} + engines: {node: '>=6'} + dependencies: + check-more-types: 2.24.0 + debug: 4.3.2 + lazy-ass: 1.6.0 + ramda: 0.27.1 + transitivePeerDependencies: + - supports-color + dev: true + /mocked-env@1.3.5(supports-color@9.4.0): resolution: {integrity: sha512-GyYY6ynVOdEoRlaGpaq8UYwdWkvrsU2xRme9B+WPSuJcNjh17+3QIxSYU6zwee0SbehhV6f06VZ4ahjG+9zdrA==} engines: {node: '>=6'} @@ -20198,20 +20400,6 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /natural@6.7.2: - resolution: {integrity: sha512-5FiQBIx5VxwMzGiBeKNLjzl7c5ny/VP/uN6W1UjTrJGzN5vbenR2Y4/QdhLGSfgb6BjbrkDxl5M0QJUDu7dYIQ==} - engines: {node: '>=0.4.10'} - dependencies: - afinn-165: 1.0.4 - afinn-165-financialmarketnews: 3.0.0 - apparatus: 0.0.10 - safe-stable-stringify: 2.4.3 - stopwords-iso: 1.1.0 - sylvester: 0.0.12 - underscore: 1.13.6 - wordnet-db: 3.1.14 - dev: false - /ncp@2.0.0: resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} hasBin: true @@ -20813,6 +21001,42 @@ packages: - debug dev: true + /nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true + dependencies: + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + caching-transform: 4.0.0 + convert-source-map: 1.9.0 + decamelize: 1.2.0 + find-cache-dir: 3.3.2 + find-up: 4.1.0 + foreground-child: 2.0.0 + get-package-type: 0.1.0 + glob: 7.2.3 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-hook: 3.0.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-processinfo: 2.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + make-dir: 3.1.0 + node-preload: 0.2.1 + p-map: 3.0.0 + process-on-spawn: 1.0.0 + resolve-from: 5.0.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + spawn-wrap: 2.0.0 + test-exclude: 6.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - supports-color + dev: true + /nyc@15.1.0(supports-color@9.4.0): resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} engines: {node: '>=8.9'} @@ -23133,6 +23357,7 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} + dev: true /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -23302,7 +23527,7 @@ packages: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: - debug: 2.6.9(supports-color@9.4.0) + debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 encodeurl: 1.0.2 @@ -23912,11 +24137,6 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} - /stopwords-iso@1.1.0: - resolution: {integrity: sha512-I6GPS/E0zyieHehMRPQcqkiBMJKGgLta+1hREixhoLPqEA0AlVFiC43dl8uPpmkkeRdDMzYRWFWk5/l9x7nmNg==} - engines: {node: '>=0.10.0'} - dev: false - /stream-events@1.0.5: resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} dependencies: @@ -24219,7 +24439,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} @@ -24330,11 +24549,6 @@ packages: - encoding dev: false - /sylvester@0.0.12: - resolution: {integrity: sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw==} - engines: {node: '>=0.2.6'} - dev: false - /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true @@ -26485,11 +26699,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /wordnet-db@3.1.14: - resolution: {integrity: sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==} - engines: {node: '>=0.6.0'} - dev: false - /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}