[READ-ONLY] Mirror of https://github.com/FoxxMD/string-sameness. Compare the sameness of two strings foxxmd.github.io/string-sameness/
compare cosine-similarity dice-coefficient levenshtein-distance sameness string text typescript
0

Configure Feed

Select the types of activity you want to include in your feed.

Use tshy for proper commson/esm module exporting

FoxxMD (Oct 26, 2023, 11:51 AM EDT) e1f95c87 215caefe

+671 -62
+2
.gitignore
··· 1 1 **/src/**/*.map 2 2 **/src/**/*.js 3 + **/src/**/*.d.ts 3 4 node_modules/ 4 5 /.idea 5 6 /docs 7 + .tshy
dist/atomic.d.ts dist/esm/atomic.d.ts
dist/atomic.js dist/commonjs/atomic.js
+43
dist/commonjs/atomic.d.ts
··· 1 + export interface StringComparisonOptions { 2 + transforms?: ((str: string) => string)[]; 3 + strategies?: ComparisonStrategy[]; 4 + } 5 + export interface StringSamenessResult { 6 + strategies: { 7 + [key: string]: ComparisonStrategyResult; 8 + }; 9 + highScore: number; 10 + highScoreWeighted: number; 11 + } 12 + export interface ComparisonStrategyResultObject { 13 + /** 14 + * The normalized (0 to 100) score of this comparison 15 + * */ 16 + score: number; 17 + /** 18 + * The raw value returned by the comparison (not normalized) 19 + * */ 20 + rawScore?: number; 21 + [key: string]: any; 22 + } 23 + export interface ComparisonStrategyResult extends ComparisonStrategyResultObject { 24 + } 25 + export interface NamedComparisonStrategyObjectResult extends ComparisonStrategyResultObject { 26 + name: string; 27 + } 28 + export type ComparisonStrategyResultValue = number | ComparisonStrategyResultObject; 29 + export type StrategyFunc = (strA: string, strB: string) => ComparisonStrategyResultValue; 30 + export interface ComparisonStrategy { 31 + /** 32 + * The name of this strategy 33 + * */ 34 + name: string; 35 + /** 36 + * A function that accepts two string arguments and returns a number 37 + * */ 38 + strategy: StrategyFunc; 39 + /** 40 + * An optional function that accepts two string arguments and returns whether this strategy should be used 41 + * */ 42 + isValid?: (strA: string, strB: string) => boolean; 43 + }
+11
dist/commonjs/index.d.ts
··· 1 + import { StringComparisonOptions, StringSamenessResult } from "./atomic.js"; 2 + declare const defaultStrCompareTransformFuncs: ((str: string) => string)[]; 3 + declare const defaultStrategies: import("./atomic.js").ComparisonStrategy[]; 4 + declare const stringSameness: (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 5 + declare const createStringSameness: (defaults: StringComparisonOptions) => (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 6 + declare const strategies: { 7 + diceStrategy: import("./atomic.js").ComparisonStrategy; 8 + levenStrategy: import("./atomic.js").ComparisonStrategy; 9 + cosineStrategy: import("./atomic.js").ComparisonStrategy; 10 + }; 11 + export { StringSamenessResult, StringComparisonOptions, stringSameness, createStringSameness, defaultStrategies, strategies, defaultStrCompareTransformFuncs };
+3
dist/commonjs/matchingStrategies/cosineSimilarity.d.ts
··· 1 + import { ComparisonStrategy } from "../atomic.js"; 2 + export declare const calculateCosineSimilarity: (strA: string, strB: string) => number; 3 + export declare const cosineStrategy: ComparisonStrategy;
+3
dist/commonjs/matchingStrategies/diceSimilarity.d.ts
··· 1 + import { ComparisonStrategy } from "../atomic.js"; 2 + export declare const calculateDiceSimilarity: (valA: string, valB: string) => number; 3 + export declare const diceStrategy: ComparisonStrategy;
+5
dist/commonjs/matchingStrategies/index.d.ts
··· 1 + import { levenStrategy } from "./levenSimilarity.js"; 2 + import { cosineStrategy } from "./cosineSimilarity.js"; 3 + import { diceStrategy } from "./diceSimilarity.js"; 4 + import { ComparisonStrategy, ComparisonStrategyResultValue, ComparisonStrategyResultObject, StrategyFunc } from '../atomic.js'; 5 + export { levenStrategy, cosineStrategy, diceStrategy, ComparisonStrategy, ComparisonStrategyResultObject, ComparisonStrategyResultValue, StrategyFunc };
+9
dist/commonjs/matchingStrategies/index.js
··· 1 + "use strict"; 2 + Object.defineProperty(exports, "__esModule", { value: true }); 3 + exports.diceStrategy = exports.cosineStrategy = exports.levenStrategy = void 0; 4 + const levenSimilarity_js_1 = require("./levenSimilarity.js"); 5 + Object.defineProperty(exports, "levenStrategy", { enumerable: true, get: function () { return levenSimilarity_js_1.levenStrategy; } }); 6 + const cosineSimilarity_js_1 = require("./cosineSimilarity.js"); 7 + Object.defineProperty(exports, "cosineStrategy", { enumerable: true, get: function () { return cosineSimilarity_js_1.cosineStrategy; } }); 8 + const diceSimilarity_js_1 = require("./diceSimilarity.js"); 9 + Object.defineProperty(exports, "diceStrategy", { enumerable: true, get: function () { return diceSimilarity_js_1.diceStrategy; } });
+3
dist/commonjs/matchingStrategies/levenSimilarity.d.ts
··· 1 + import { ComparisonStrategy } from "../atomic.js"; 2 + export declare const calculateLevenSimilarity: (valA: string, valB: string) => number[]; 3 + export declare const levenStrategy: ComparisonStrategy;
+3
dist/commonjs/package.json
··· 1 + { 2 + "type": "commonjs" 3 + }
+1
dist/esm/atomic.js
··· 1 + export {};
+11
dist/esm/index.d.ts
··· 1 + import { StringComparisonOptions, StringSamenessResult } from "./atomic.js"; 2 + declare const defaultStrCompareTransformFuncs: ((str: string) => string)[]; 3 + declare const defaultStrategies: import("./atomic.js").ComparisonStrategy[]; 4 + declare const stringSameness: (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 5 + declare const createStringSameness: (defaults: StringComparisonOptions) => (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 6 + declare const strategies: { 7 + diceStrategy: import("./atomic.js").ComparisonStrategy; 8 + levenStrategy: import("./atomic.js").ComparisonStrategy; 9 + cosineStrategy: import("./atomic.js").ComparisonStrategy; 10 + }; 11 + export { StringSamenessResult, StringComparisonOptions, stringSameness, createStringSameness, defaultStrategies, strategies, defaultStrCompareTransformFuncs };
+67
dist/esm/index.js
··· 1 + import { cosineStrategy, levenStrategy, diceStrategy } from "./matchingStrategies/index.js"; 2 + const sentenceLengthWeight = (length) => { 3 + // thanks jordan :') 4 + // constants are black magic 5 + return (Math.log(length) / 0.20) - 5; 6 + }; 7 + const defaultStrCompareTransformFuncs = [ 8 + // lower case to remove case sensitivity 9 + (str) => str.toLocaleLowerCase(), 10 + // remove excess whitespace 11 + (str) => str.trim(), 12 + // remove non-alphanumeric characters so that differences in punctuation don't subtract from comparison score 13 + (str) => str.replace(/[^A-Za-z0-9 ]/g, ""), 14 + // replace all instances of 2 or more whitespace with one whitespace 15 + (str) => str.replace(/\s{2,}|\n/g, " ") 16 + ]; 17 + const defaultStrategies = [ 18 + diceStrategy, 19 + levenStrategy, 20 + cosineStrategy 21 + ]; 22 + const stringSameness = (valA, valB, options) => { 23 + const { transforms = defaultStrCompareTransformFuncs, strategies = defaultStrategies, } = options || {}; 24 + const cleanA = transforms.reduce((acc, curr) => curr(acc), valA); 25 + const cleanB = transforms.reduce((acc, curr) => curr(acc), valB); 26 + const shortest = cleanA.length > cleanB.length ? cleanB : cleanA; 27 + const stratResults = []; 28 + for (const strat of strategies) { 29 + if (strat.isValid !== undefined && !strat.isValid(cleanA, cleanB)) { 30 + continue; 31 + } 32 + const res = strat.strategy(cleanA, cleanB); 33 + const resObj = typeof res === 'number' ? { score: res } : res; 34 + stratResults.push({ 35 + ...resObj, 36 + name: strat.name 37 + }); 38 + } 39 + // use shortest sentence for weight 40 + const weightScore = sentenceLengthWeight(shortest.length); 41 + // take average score 42 + const highScore = stratResults.reduce((acc, curr) => acc + curr.score, 0) / stratResults.length; 43 + // weight score can be a max of 15 44 + const highScoreWeighted = highScore + Math.min(weightScore, 15); 45 + const stratObj = stratResults.reduce((acc, curr) => { 46 + const { name, score, ...rest } = curr; 47 + acc[curr.name] = { 48 + ...rest, 49 + score, 50 + }; 51 + return acc; 52 + }, {}); 53 + return { 54 + strategies: stratObj, 55 + highScore, 56 + highScoreWeighted, 57 + }; 58 + }; 59 + const createStringSameness = (defaults) => { 60 + return (valA, valB, options = {}) => stringSameness(valA, valB, { ...defaults, ...options }); 61 + }; 62 + const strategies = { 63 + diceStrategy, 64 + levenStrategy, 65 + cosineStrategy 66 + }; 67 + export { stringSameness, createStringSameness, defaultStrategies, strategies, defaultStrCompareTransformFuncs };
+12
dist/esm/matchingStrategies/diceSimilarity.js
··· 1 + import stringSimilarity from 'string-similarity'; 2 + export const calculateDiceSimilarity = (valA, valB) => stringSimilarity.compareTwoStrings(valA, valB); 3 + export const diceStrategy = { 4 + name: 'dice', 5 + strategy: (valA, valB) => { 6 + const res = calculateDiceSimilarity(valA, valB); 7 + return { 8 + score: res * 100, 9 + rawScore: res 10 + }; 11 + } 12 + };
+5
dist/esm/matchingStrategies/index.d.ts
··· 1 + import { levenStrategy } from "./levenSimilarity.js"; 2 + import { cosineStrategy } from "./cosineSimilarity.js"; 3 + import { diceStrategy } from "./diceSimilarity.js"; 4 + import { ComparisonStrategy, ComparisonStrategyResultValue, ComparisonStrategyResultObject, StrategyFunc } from '../atomic.js'; 5 + export { levenStrategy, cosineStrategy, diceStrategy, ComparisonStrategy, ComparisonStrategyResultObject, ComparisonStrategyResultValue, StrategyFunc };
+4
dist/esm/matchingStrategies/index.js
··· 1 + import { levenStrategy } from "./levenSimilarity.js"; 2 + import { cosineStrategy } from "./cosineSimilarity.js"; 3 + import { diceStrategy } from "./diceSimilarity.js"; 4 + export { levenStrategy, cosineStrategy, diceStrategy };
+28
dist/esm/matchingStrategies/levenSimilarity.js
··· 1 + import leven from "leven"; 2 + export const calculateLevenSimilarity = (valA, valB) => { 3 + let longer; 4 + let shorter; 5 + if (valA.length > valB.length) { 6 + longer = valA; 7 + shorter = valB; 8 + } 9 + else { 10 + longer = valB; 11 + shorter = valA; 12 + } 13 + const distance = leven(longer, shorter); 14 + const diff = (distance / longer.length) * 100; 15 + return [distance, 100 - diff]; 16 + }; 17 + const stratFunc = (valA, valB) => { 18 + const res = calculateLevenSimilarity(valA, valB); 19 + return { 20 + rawScore: res[0], 21 + distance: res[0], 22 + score: res[1] 23 + }; 24 + }; 25 + export const levenStrategy = { 26 + name: 'leven', 27 + strategy: stratFunc 28 + };
+3
dist/esm/package.json
··· 1 + { 2 + "type": "module" 3 + }
-6
dist/index.d.ts
··· 1 - import { StringComparisonOptions, StringSamenessResult } from "./atomic"; 2 - declare const defaultStrCompareTransformFuncs: ((str: string) => string)[]; 3 - declare const defaultStrategies: import("./atomic").ComparisonStrategy[]; 4 - declare const stringSameness: (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 5 - declare const createStringSameness: (defaults: StringComparisonOptions) => (valA: string, valB: string, options?: StringComparisonOptions) => StringSamenessResult; 6 - export { StringSamenessResult, StringComparisonOptions, stringSameness, createStringSameness, defaultStrategies, defaultStrCompareTransformFuncs };
+11 -5
dist/index.js dist/commonjs/index.js
··· 1 1 "use strict"; 2 2 Object.defineProperty(exports, "__esModule", { value: true }); 3 - exports.defaultStrCompareTransformFuncs = exports.defaultStrategies = exports.createStringSameness = exports.stringSameness = void 0; 4 - const matchingStrategies_1 = require("./matchingStrategies"); 3 + exports.defaultStrCompareTransformFuncs = exports.strategies = exports.defaultStrategies = exports.createStringSameness = exports.stringSameness = void 0; 4 + const index_js_1 = require("./matchingStrategies/index.js"); 5 5 const sentenceLengthWeight = (length) => { 6 6 // thanks jordan :') 7 7 // constants are black magic ··· 19 19 ]; 20 20 exports.defaultStrCompareTransformFuncs = defaultStrCompareTransformFuncs; 21 21 const defaultStrategies = [ 22 - matchingStrategies_1.diceStrategy, 23 - matchingStrategies_1.levenStrategy, 24 - matchingStrategies_1.cosineStrategy 22 + index_js_1.diceStrategy, 23 + index_js_1.levenStrategy, 24 + index_js_1.cosineStrategy 25 25 ]; 26 26 exports.defaultStrategies = defaultStrategies; 27 27 const stringSameness = (valA, valB, options) => { ··· 66 66 return (valA, valB, options = {}) => stringSameness(valA, valB, { ...defaults, ...options }); 67 67 }; 68 68 exports.createStringSameness = createStringSameness; 69 + const strategies = { 70 + diceStrategy: index_js_1.diceStrategy, 71 + levenStrategy: index_js_1.levenStrategy, 72 + cosineStrategy: index_js_1.cosineStrategy 73 + }; 74 + exports.strategies = strategies;
-2
dist/matchingStrategies/CosineSimilarity.d.ts
··· 1 - declare const calculateCosineSimilarity: (strA: string, strB: string) => number; 2 - export default calculateCosineSimilarity;
+11 -4
dist/matchingStrategies/CosineSimilarity.js dist/esm/matchingStrategies/cosineSimilarity.js
··· 1 - "use strict"; 2 1 // reproduced from https://github.com/sumn2u/string-comparison/blob/master/jscosine.js 3 2 // https://sumn2u.medium.com/string-similarity-comparision-in-js-with-examples-4bae35f13968 4 - Object.defineProperty(exports, "__esModule", { value: true }); 5 3 function termFreqMap(str) { 6 4 var words = str.split(' '); 7 5 var termFreq = {}; ··· 39 37 function cosineSimilarity(vecA, vecB) { 40 38 return vecDotProduct(vecA, vecB) / (vecMagnitude(vecA) * vecMagnitude(vecB)); 41 39 } 42 - const calculateCosineSimilarity = function textCosineSimilarity(strA, strB) { 40 + export const calculateCosineSimilarity = (strA, strB) => { 43 41 var termFreqA = termFreqMap(strA); 44 42 var termFreqB = termFreqMap(strB); 45 43 var dict = {}; ··· 49 47 var termFreqVecB = termFreqMapToVector(termFreqB, dict); 50 48 return cosineSimilarity(termFreqVecA, termFreqVecB); 51 49 }; 52 - exports.default = calculateCosineSimilarity; 50 + export const cosineStrategy = { 51 + name: 'cosine', 52 + strategy: (valA, valB) => { 53 + const res = calculateCosineSimilarity(valA, valB); 54 + return { 55 + score: res * 100, 56 + rawScore: res 57 + }; 58 + } 59 + };
+1 -1
dist/matchingStrategies/cosineSimilarity.d.ts dist/esm/matchingStrategies/cosineSimilarity.d.ts
··· 1 - import { ComparisonStrategy } from "../atomic"; 1 + import { ComparisonStrategy } from "../atomic.js"; 2 2 export declare const calculateCosineSimilarity: (strA: string, strB: string) => number; 3 3 export declare const cosineStrategy: ComparisonStrategy;
dist/matchingStrategies/cosineSimilarity.js dist/commonjs/matchingStrategies/cosineSimilarity.js
+1 -1
dist/matchingStrategies/diceSimilarity.d.ts dist/esm/matchingStrategies/diceSimilarity.d.ts
··· 1 - import { ComparisonStrategy } from "../atomic"; 1 + import { ComparisonStrategy } from "../atomic.js"; 2 2 export declare const calculateDiceSimilarity: (valA: string, valB: string) => number; 3 3 export declare const diceStrategy: ComparisonStrategy;
dist/matchingStrategies/diceSimilarity.js dist/commonjs/matchingStrategies/diceSimilarity.js
-5
dist/matchingStrategies/index.d.ts
··· 1 - import { levenStrategy } from "./levenSimilarity"; 2 - import { cosineStrategy } from "./cosineSimilarity"; 3 - import { diceStrategy } from "./diceSimilarity"; 4 - import { ComparisonStrategy, ComparisonStrategyResultValue, ComparisonStrategyResultObject, StrategyFunc } from '../atomic'; 5 - export { levenStrategy, cosineStrategy, diceStrategy, ComparisonStrategy, ComparisonStrategyResultObject, ComparisonStrategyResultValue, StrategyFunc };
-9
dist/matchingStrategies/index.js
··· 1 - "use strict"; 2 - Object.defineProperty(exports, "__esModule", { value: true }); 3 - exports.diceStrategy = exports.cosineStrategy = exports.levenStrategy = void 0; 4 - const levenSimilarity_1 = require("./levenSimilarity"); 5 - Object.defineProperty(exports, "levenStrategy", { enumerable: true, get: function () { return levenSimilarity_1.levenStrategy; } }); 6 - const cosineSimilarity_1 = require("./cosineSimilarity"); 7 - Object.defineProperty(exports, "cosineStrategy", { enumerable: true, get: function () { return cosineSimilarity_1.cosineStrategy; } }); 8 - const diceSimilarity_1 = require("./diceSimilarity"); 9 - Object.defineProperty(exports, "diceStrategy", { enumerable: true, get: function () { return diceSimilarity_1.diceStrategy; } });
+1 -1
dist/matchingStrategies/levenSimilarity.d.ts dist/esm/matchingStrategies/levenSimilarity.d.ts
··· 1 - import { ComparisonStrategy } from "../atomic"; 1 + import { ComparisonStrategy } from "../atomic.js"; 2 2 export declare const calculateLevenSimilarity: (valA: string, valB: string) => number[]; 3 3 export declare const levenStrategy: ComparisonStrategy;
dist/matchingStrategies/levenSimilarity.js dist/commonjs/matchingStrategies/levenSimilarity.js
+25 -10
package.json
··· 10 10 "node": ">=18.0.0", 11 11 "npm": ">=9.3.0" 12 12 }, 13 - "main": "dist/index.js", 14 - "types": "dist/index.d.ts", 13 + "main": "./dist/commonjs/index.js", 14 + "types": "./dist/commonjs/index.d.ts", 15 15 "files": [ 16 - "/dist" 16 + "dist" 17 17 ], 18 18 "scripts": { 19 19 "typedoc": "typedoc", 20 - "build": "tsc" 20 + "build": "tsc", 21 + "prepare": "tshy" 21 22 }, 22 23 "exports": { 23 - ".": "./dist/index.js", 24 - "./strategies": "./dist/matchingStrategies/index.js", 25 - "./strategies/cosine": "./dist/matchingStrategies/cosineSimilarity.js", 26 - "./strategies/leven": "./dist/matchingStrategies/levenSimilarity.js", 27 - "./strategies/deice": "./dist/matchingStrategies/diceSimilarity.js" 24 + "./package.json": "./package.json", 25 + ".": { 26 + "import": { 27 + "types": "./dist/esm/index.d.ts", 28 + "default": "./dist/esm/index.js" 29 + }, 30 + "require": { 31 + "types": "./dist/commonjs/index.d.ts", 32 + "default": "./dist/commonjs/index.js" 33 + } 34 + } 28 35 }, 29 36 "devDependencies": { 30 37 "@tsconfig/node16": "^1.0.3", 31 38 "@types/string-similarity": "^4.0.0", 39 + "tshy": "^1.7.0", 32 40 "typedoc": "^0.23.28", 33 41 "typescript": "^4.9.5" 34 42 }, 35 43 "dependencies": { 36 44 "leven": "^3.0.0", 37 45 "string-similarity": "^4.0.4" 38 - } 46 + }, 47 + "tshy": { 48 + "exports": { 49 + "./package.json": "./package.json", 50 + ".": "./src/index.js" 51 + } 52 + }, 53 + "type": "module" 39 54 }
+9 -2
src/index.ts
··· 1 - import {cosineStrategy, levenStrategy, diceStrategy} from "./matchingStrategies"; 1 + import {cosineStrategy, levenStrategy, diceStrategy} from "./matchingStrategies/index.js"; 2 2 import { 3 3 ComparisonStrategyResult, 4 4 NamedComparisonStrategyObjectResult, 5 5 StringComparisonOptions, 6 6 StringSamenessResult 7 - } from "./atomic"; 7 + } from "./atomic.js"; 8 8 9 9 const sentenceLengthWeight = (length: number) => { 10 10 // thanks jordan :') ··· 81 81 return (valA: string, valB: string, options: StringComparisonOptions = {}) => stringSameness(valA, valB, {...defaults, ...options}); 82 82 } 83 83 84 + const strategies = { 85 + diceStrategy, 86 + levenStrategy, 87 + cosineStrategy 88 + }; 89 + 84 90 export { 85 91 StringSamenessResult, 86 92 StringComparisonOptions, 87 93 stringSameness, 88 94 createStringSameness, 89 95 defaultStrategies, 96 + strategies, 90 97 defaultStrCompareTransformFuncs 91 98 }
+3 -3
src/matchingStrategies/cosineSimilarity.d.ts
··· 1 - declare const calculateCosineSimilarity: (strA: string, strB: string) => number; 2 - export default calculateCosineSimilarity; 3 - //# sourceMappingURL=CosineSimilarity.d.ts.map 1 + import { ComparisonStrategy } from "../atomic.js"; 2 + export declare const calculateCosineSimilarity: (strA: string, strB: string) => number; 3 + export declare const cosineStrategy: ComparisonStrategy;
+1 -1
src/matchingStrategies/cosineSimilarity.ts
··· 1 1 // reproduced from https://github.com/sumn2u/string-comparison/blob/master/jscosine.js 2 2 // https://sumn2u.medium.com/string-similarity-comparision-in-js-with-examples-4bae35f13968 3 3 4 - import {ComparisonStrategy} from "../atomic"; 4 + import {ComparisonStrategy} from "../atomic.js"; 5 5 6 6 interface StrMap { 7 7 [key: string]: number
+1 -1
src/matchingStrategies/diceSimilarity.ts
··· 1 1 import stringSimilarity from 'string-similarity'; 2 - import {ComparisonStrategy} from "../atomic"; 2 + import {ComparisonStrategy} from "../atomic.js"; 3 3 4 4 export const calculateDiceSimilarity = (valA: string, valB: string) => stringSimilarity.compareTwoStrings(valA, valB); 5 5 export const diceStrategy: ComparisonStrategy = {
+4 -4
src/matchingStrategies/index.ts
··· 1 - import {levenStrategy} from "./levenSimilarity"; 2 - import {cosineStrategy} from "./cosineSimilarity"; 3 - import {diceStrategy} from "./diceSimilarity"; 4 - import {ComparisonStrategy, ComparisonStrategyResultValue, ComparisonStrategyResultObject, StrategyFunc} from '../atomic'; 1 + import {levenStrategy} from "./levenSimilarity.js"; 2 + import {cosineStrategy} from "./cosineSimilarity.js"; 3 + import {diceStrategy} from "./diceSimilarity.js"; 4 + import {ComparisonStrategy, ComparisonStrategyResultValue, ComparisonStrategyResultObject, StrategyFunc} from '../atomic.js'; 5 5 6 6 export { 7 7 levenStrategy,
+3 -3
src/matchingStrategies/levenSimilarity.d.ts
··· 1 - declare const levenSimilarity: (valA: string, valB: string) => number[]; 2 - export default levenSimilarity; 3 - //# sourceMappingURL=levenSimilarity.d.ts.map 1 + import { ComparisonStrategy } from "../atomic.js"; 2 + export declare const calculateLevenSimilarity: (valA: string, valB: string) => number[]; 3 + export declare const levenStrategy: ComparisonStrategy;
+1 -1
src/matchingStrategies/levenSimilarity.ts
··· 1 1 import leven from "leven"; 2 - import {ComparisonStrategy} from "../atomic"; 2 + import {ComparisonStrategy} from "../atomic.js"; 3 3 4 4 export const calculateLevenSimilarity = (valA: string, valB: string) => { 5 5 let longer: string;
+7 -3
tsconfig.json
··· 1 1 { 2 - "extends": "@tsconfig/node16/tsconfig.json", 3 2 "compilerOptions": { 4 - "module": "commonjs", 3 + "module": "nodenext", 4 + "moduleResolution": "nodenext", 5 + "target": "es2022", 5 6 "declaration": true, 6 - "outDir": "./dist" 7 + "strict": true, 8 + "esModuleInterop": true, 9 + "skipLibCheck": true, 10 + "forceConsistentCasingInFileNames": true 7 11 }, 8 12 "typeRoots": [ 9 13 "./src/types.d.ts"
+379
yarn.lock
··· 2 2 # yarn lockfile v1 3 3 4 4 5 + "@isaacs/cliui@^8.0.2": 6 + version "8.0.2" 7 + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 8 + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 9 + dependencies: 10 + string-width "^5.1.2" 11 + string-width-cjs "npm:string-width@^4.2.0" 12 + strip-ansi "^7.0.1" 13 + strip-ansi-cjs "npm:strip-ansi@^6.0.1" 14 + wrap-ansi "^8.1.0" 15 + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 16 + 17 + "@pkgjs/parseargs@^0.11.0": 18 + version "0.11.0" 19 + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 20 + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 21 + 5 22 "@tsconfig/node16@^1.0.3": 6 23 version "1.0.3" 7 24 resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" ··· 12 29 resolved "https://registry.yarnpkg.com/@types/string-similarity/-/string-similarity-4.0.0.tgz#8cc03d5d1baad2b74530fe6c7d849d5768d391ad" 13 30 integrity sha512-dMS4S07fbtY1AILG/RhuwmptmzK1Ql8scmAebOTJ/8iBtK/KI17NwGwKzu1uipjj8Kk+3mfPxum56kKZE93mzQ== 14 31 32 + ansi-regex@^5.0.1: 33 + version "5.0.1" 34 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 35 + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 36 + 37 + ansi-regex@^6.0.1: 38 + version "6.0.1" 39 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 40 + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 41 + 15 42 ansi-sequence-parser@^1.1.0: 16 43 version "1.1.0" 17 44 resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz#4d790f31236ac20366b23b3916b789e1bde39aed" 18 45 integrity sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ== 19 46 47 + ansi-styles@^4.0.0: 48 + version "4.3.0" 49 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 50 + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 51 + dependencies: 52 + color-convert "^2.0.1" 53 + 54 + ansi-styles@^6.1.0: 55 + version "6.2.1" 56 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 57 + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 58 + 59 + anymatch@~3.1.2: 60 + version "3.1.3" 61 + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 62 + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 63 + dependencies: 64 + normalize-path "^3.0.0" 65 + picomatch "^2.0.4" 66 + 20 67 balanced-match@^1.0.0: 21 68 version "1.0.2" 22 69 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 23 70 integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 24 71 72 + binary-extensions@^2.0.0: 73 + version "2.2.0" 74 + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 75 + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 76 + 25 77 brace-expansion@^2.0.1: 26 78 version "2.0.1" 27 79 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" ··· 29 81 dependencies: 30 82 balanced-match "^1.0.0" 31 83 84 + braces@~3.0.2: 85 + version "3.0.2" 86 + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 87 + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 88 + dependencies: 89 + fill-range "^7.0.1" 90 + 91 + chalk@^5.3.0: 92 + version "5.3.0" 93 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" 94 + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== 95 + 96 + chokidar@^3.5.3: 97 + version "3.5.3" 98 + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 99 + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 100 + dependencies: 101 + anymatch "~3.1.2" 102 + braces "~3.0.2" 103 + glob-parent "~5.1.2" 104 + is-binary-path "~2.1.0" 105 + is-glob "~4.0.1" 106 + normalize-path "~3.0.0" 107 + readdirp "~3.6.0" 108 + optionalDependencies: 109 + fsevents "~2.3.2" 110 + 111 + color-convert@^2.0.1: 112 + version "2.0.1" 113 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 114 + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 115 + dependencies: 116 + color-name "~1.1.4" 117 + 118 + color-name@~1.1.4: 119 + version "1.1.4" 120 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 121 + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 122 + 123 + cross-spawn@^7.0.0: 124 + version "7.0.3" 125 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 126 + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 127 + dependencies: 128 + path-key "^3.1.0" 129 + shebang-command "^2.0.0" 130 + which "^2.0.1" 131 + 132 + eastasianwidth@^0.2.0: 133 + version "0.2.0" 134 + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 135 + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 136 + 137 + emoji-regex@^8.0.0: 138 + version "8.0.0" 139 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 140 + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 141 + 142 + emoji-regex@^9.2.2: 143 + version "9.2.2" 144 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 145 + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 146 + 147 + fill-range@^7.0.1: 148 + version "7.0.1" 149 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 150 + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 151 + dependencies: 152 + to-regex-range "^5.0.1" 153 + 154 + foreground-child@^3.1.0, foreground-child@^3.1.1: 155 + version "3.1.1" 156 + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 157 + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 158 + dependencies: 159 + cross-spawn "^7.0.0" 160 + signal-exit "^4.0.1" 161 + 162 + fsevents@~2.3.2: 163 + version "2.3.3" 164 + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 165 + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 166 + 167 + glob-parent@~5.1.2: 168 + version "5.1.2" 169 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 170 + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 171 + dependencies: 172 + is-glob "^4.0.1" 173 + 174 + glob@^10.2.6, glob@^10.3.3, glob@^10.3.7: 175 + version "10.3.10" 176 + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" 177 + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== 178 + dependencies: 179 + foreground-child "^3.1.0" 180 + jackspeak "^2.3.5" 181 + minimatch "^9.0.1" 182 + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 183 + path-scurry "^1.10.1" 184 + 185 + is-binary-path@~2.1.0: 186 + version "2.1.0" 187 + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 188 + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 189 + dependencies: 190 + binary-extensions "^2.0.0" 191 + 192 + is-extglob@^2.1.1: 193 + version "2.1.1" 194 + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 195 + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 196 + 197 + is-fullwidth-code-point@^3.0.0: 198 + version "3.0.0" 199 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 200 + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 201 + 202 + is-glob@^4.0.1, is-glob@~4.0.1: 203 + version "4.0.3" 204 + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 205 + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 206 + dependencies: 207 + is-extglob "^2.1.1" 208 + 209 + is-number@^7.0.0: 210 + version "7.0.0" 211 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 212 + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 213 + 214 + isexe@^2.0.0: 215 + version "2.0.0" 216 + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 217 + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 218 + 219 + jackspeak@^2.3.5: 220 + version "2.3.6" 221 + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" 222 + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== 223 + dependencies: 224 + "@isaacs/cliui" "^8.0.2" 225 + optionalDependencies: 226 + "@pkgjs/parseargs" "^0.11.0" 227 + 32 228 jsonc-parser@^3.2.0: 33 229 version "3.2.0" 34 230 resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" ··· 39 235 resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 40 236 integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 41 237 238 + "lru-cache@^9.1.1 || ^10.0.0": 239 + version "10.0.1" 240 + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" 241 + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== 242 + 42 243 lunr@^2.3.9: 43 244 version "2.3.9" 44 245 resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" ··· 56 257 dependencies: 57 258 brace-expansion "^2.0.1" 58 259 260 + minimatch@^9.0.1: 261 + version "9.0.3" 262 + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 263 + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 264 + dependencies: 265 + brace-expansion "^2.0.1" 266 + 267 + "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": 268 + version "7.0.4" 269 + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" 270 + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== 271 + 272 + mkdirp@^3.0.1: 273 + version "3.0.1" 274 + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" 275 + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== 276 + 277 + normalize-path@^3.0.0, normalize-path@~3.0.0: 278 + version "3.0.0" 279 + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 280 + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 281 + 282 + path-key@^3.1.0: 283 + version "3.1.1" 284 + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 285 + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 286 + 287 + path-scurry@^1.10.1, path-scurry@^1.9.2: 288 + version "1.10.1" 289 + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" 290 + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== 291 + dependencies: 292 + lru-cache "^9.1.1 || ^10.0.0" 293 + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 294 + 295 + picomatch@^2.0.4, picomatch@^2.2.1: 296 + version "2.3.1" 297 + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 298 + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 299 + 300 + readdirp@~3.6.0: 301 + version "3.6.0" 302 + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 303 + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 304 + dependencies: 305 + picomatch "^2.2.1" 306 + 307 + resolve-import@^1.4.4: 308 + version "1.4.4" 309 + resolved "https://registry.yarnpkg.com/resolve-import/-/resolve-import-1.4.4.tgz#f7c91c02792cd6abe8ef0801112df935a1f665a6" 310 + integrity sha512-+IccDyUypl5rHv25216cXu2m30flEoetrG8p4qDH3RsP53cytedI58Pz+pjCU4PAbxPOQgFkgmxTJLKI9tgf/g== 311 + dependencies: 312 + glob "^10.3.3" 313 + walk-up-path "^3.0.1" 314 + 315 + rimraf@^5.0.1: 316 + version "5.0.5" 317 + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" 318 + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== 319 + dependencies: 320 + glob "^10.3.7" 321 + 322 + shebang-command@^2.0.0: 323 + version "2.0.0" 324 + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 325 + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 326 + dependencies: 327 + shebang-regex "^3.0.0" 328 + 329 + shebang-regex@^3.0.0: 330 + version "3.0.0" 331 + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 332 + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 333 + 59 334 shiki@^0.14.1: 60 335 version "0.14.1" 61 336 resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.1.tgz#9fbe082d0a8aa2ad63df4fbf2ee11ec924aa7ee1" ··· 65 340 jsonc-parser "^3.2.0" 66 341 vscode-oniguruma "^1.7.0" 67 342 vscode-textmate "^8.0.0" 343 + 344 + signal-exit@^4.0.1: 345 + version "4.1.0" 346 + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 347 + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 68 348 69 349 string-similarity@^4.0.4: 70 350 version "4.0.4" 71 351 resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b" 72 352 integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ== 73 353 354 + "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: 355 + version "4.2.3" 356 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 357 + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 358 + dependencies: 359 + emoji-regex "^8.0.0" 360 + is-fullwidth-code-point "^3.0.0" 361 + strip-ansi "^6.0.1" 362 + 363 + string-width@^5.0.1, string-width@^5.1.2: 364 + version "5.1.2" 365 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 366 + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 367 + dependencies: 368 + eastasianwidth "^0.2.0" 369 + emoji-regex "^9.2.2" 370 + strip-ansi "^7.0.1" 371 + 372 + "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: 373 + version "6.0.1" 374 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 375 + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 376 + dependencies: 377 + ansi-regex "^5.0.1" 378 + 379 + strip-ansi@^7.0.1: 380 + version "7.1.0" 381 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 382 + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 383 + dependencies: 384 + ansi-regex "^6.0.1" 385 + 386 + sync-content@^1.0.2: 387 + version "1.0.2" 388 + resolved "https://registry.yarnpkg.com/sync-content/-/sync-content-1.0.2.tgz#c76bca03e7d4c5a1ec3e5024f85144a7b592640d" 389 + integrity sha512-znd3rYiiSxU3WteWyS9a6FXkTA/Wjk8WQsOyzHbineeL837dLn3DA4MRhsIX3qGcxDMH6+uuFV4axztssk7wEQ== 390 + dependencies: 391 + glob "^10.2.6" 392 + mkdirp "^3.0.1" 393 + path-scurry "^1.9.2" 394 + rimraf "^5.0.1" 395 + 396 + to-regex-range@^5.0.1: 397 + version "5.0.1" 398 + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 399 + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 400 + dependencies: 401 + is-number "^7.0.0" 402 + 403 + tshy@^1.7.0: 404 + version "1.7.0" 405 + resolved "https://registry.yarnpkg.com/tshy/-/tshy-1.7.0.tgz#c463b2ea87ff65b28d33312e65722ae74ec58306" 406 + integrity sha512-ioFoMasVNtcOGkJACDpmo+C6xZfRqamimeK0hL2uyS0l7DliiCwAKJj8/x0LVlvdGvCoqkhOHfKpEPjHeI9U8Q== 407 + dependencies: 408 + chalk "^5.3.0" 409 + chokidar "^3.5.3" 410 + foreground-child "^3.1.1" 411 + mkdirp "^3.0.1" 412 + resolve-import "^1.4.4" 413 + rimraf "^5.0.1" 414 + sync-content "^1.0.2" 415 + typescript "5.2" 416 + walk-up-path "^3.0.1" 417 + 74 418 typedoc@^0.23.28: 75 419 version "0.23.28" 76 420 resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.28.tgz#3ce9c36ef1c273fa849d2dea18651855100d3ccd" ··· 81 425 minimatch "^7.1.3" 82 426 shiki "^0.14.1" 83 427 428 + typescript@5.2: 429 + version "5.2.2" 430 + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" 431 + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== 432 + 84 433 typescript@^4.9.5: 85 434 version "4.9.5" 86 435 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" ··· 95 444 version "8.0.0" 96 445 resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" 97 446 integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== 447 + 448 + walk-up-path@^3.0.1: 449 + version "3.0.1" 450 + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" 451 + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== 452 + 453 + which@^2.0.1: 454 + version "2.0.2" 455 + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 456 + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 457 + dependencies: 458 + isexe "^2.0.0" 459 + 460 + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 461 + version "7.0.0" 462 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 463 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 464 + dependencies: 465 + ansi-styles "^4.0.0" 466 + string-width "^4.1.0" 467 + strip-ansi "^6.0.0" 468 + 469 + wrap-ansi@^8.1.0: 470 + version "8.1.0" 471 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 472 + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 473 + dependencies: 474 + ansi-styles "^6.1.0" 475 + string-width "^5.0.1" 476 + strip-ansi "^7.0.1"