cmpstr 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +43 -40
- package/dist/CmpStr.esm.js +946 -921
- package/dist/CmpStr.esm.js.map +1 -1
- package/dist/CmpStr.esm.min.js +2 -2
- package/dist/CmpStr.esm.min.js.map +1 -1
- package/dist/CmpStr.umd.js +935 -896
- package/dist/CmpStr.umd.js.map +1 -1
- package/dist/CmpStr.umd.min.js +2 -2
- package/dist/CmpStr.umd.min.js.map +1 -1
- package/dist/cjs/CmpStr.cjs +26 -44
- package/dist/cjs/CmpStr.cjs.map +1 -1
- package/dist/cjs/CmpStrAsync.cjs +10 -5
- package/dist/cjs/CmpStrAsync.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/metric/Cosine.cjs +21 -21
- package/dist/cjs/metric/Cosine.cjs.map +1 -1
- package/dist/cjs/metric/DamerauLevenshtein.cjs +31 -29
- package/dist/cjs/metric/DamerauLevenshtein.cjs.map +1 -1
- package/dist/cjs/metric/DiceSorensen.cjs +16 -13
- package/dist/cjs/metric/DiceSorensen.cjs.map +1 -1
- package/dist/cjs/metric/Hamming.cjs +2 -2
- package/dist/cjs/metric/Hamming.cjs.map +1 -1
- package/dist/cjs/metric/Jaccard.cjs +16 -13
- package/dist/cjs/metric/Jaccard.cjs.map +1 -1
- package/dist/cjs/metric/JaroWinkler.cjs +45 -43
- package/dist/cjs/metric/JaroWinkler.cjs.map +1 -1
- package/dist/cjs/metric/LCS.cjs +21 -18
- package/dist/cjs/metric/LCS.cjs.map +1 -1
- package/dist/cjs/metric/Levenshtein.cjs +21 -18
- package/dist/cjs/metric/Levenshtein.cjs.map +1 -1
- package/dist/cjs/metric/Metric.cjs +18 -31
- package/dist/cjs/metric/Metric.cjs.map +1 -1
- package/dist/cjs/metric/NeedlemanWunsch.cjs +27 -24
- package/dist/cjs/metric/NeedlemanWunsch.cjs.map +1 -1
- package/dist/cjs/metric/{qGram.cjs → QGram.cjs} +18 -15
- package/dist/cjs/metric/QGram.cjs.map +1 -0
- package/dist/cjs/metric/SmithWaterman.cjs +27 -24
- package/dist/cjs/metric/SmithWaterman.cjs.map +1 -1
- package/dist/cjs/phonetic/Caverphone.cjs +5 -8
- package/dist/cjs/phonetic/Caverphone.cjs.map +1 -1
- package/dist/cjs/phonetic/Cologne.cjs +1 -1
- package/dist/cjs/phonetic/Cologne.cjs.map +1 -1
- package/dist/cjs/phonetic/Metaphone.cjs +6 -3
- package/dist/cjs/phonetic/Metaphone.cjs.map +1 -1
- package/dist/cjs/phonetic/Phonetic.cjs +23 -16
- package/dist/cjs/phonetic/Phonetic.cjs.map +1 -1
- package/dist/cjs/phonetic/Soundex.cjs +1 -1
- package/dist/cjs/phonetic/Soundex.cjs.map +1 -1
- package/dist/cjs/root.cjs +3 -2
- package/dist/cjs/root.cjs.map +1 -1
- package/dist/cjs/utils/DeepMerge.cjs +73 -42
- package/dist/cjs/utils/DeepMerge.cjs.map +1 -1
- package/dist/cjs/utils/DiffChecker.cjs +33 -45
- package/dist/cjs/utils/DiffChecker.cjs.map +1 -1
- package/dist/cjs/utils/Filter.cjs +40 -46
- package/dist/cjs/utils/Filter.cjs.map +1 -1
- package/dist/cjs/utils/HashTable.cjs +23 -32
- package/dist/cjs/utils/HashTable.cjs.map +1 -1
- package/dist/cjs/utils/Normalizer.cjs +32 -21
- package/dist/cjs/utils/Normalizer.cjs.map +1 -1
- package/dist/cjs/utils/Pool.cjs +21 -26
- package/dist/cjs/utils/Pool.cjs.map +1 -1
- package/dist/cjs/utils/Profiler.cjs +40 -53
- package/dist/cjs/utils/Profiler.cjs.map +1 -1
- package/dist/cjs/utils/Registry.cjs +6 -4
- package/dist/cjs/utils/Registry.cjs.map +1 -1
- package/dist/cjs/utils/StructuredData.cjs +47 -37
- package/dist/cjs/utils/StructuredData.cjs.map +1 -1
- package/dist/cjs/utils/TextAnalyzer.cjs +76 -56
- package/dist/cjs/utils/TextAnalyzer.cjs.map +1 -1
- package/dist/esm/CmpStr.mjs +21 -44
- package/dist/esm/CmpStr.mjs.map +1 -1
- package/dist/esm/CmpStrAsync.mjs +5 -5
- package/dist/esm/CmpStrAsync.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/metric/Cosine.mjs +21 -21
- package/dist/esm/metric/Cosine.mjs.map +1 -1
- package/dist/esm/metric/DamerauLevenshtein.mjs +31 -29
- package/dist/esm/metric/DamerauLevenshtein.mjs.map +1 -1
- package/dist/esm/metric/DiceSorensen.mjs +16 -13
- package/dist/esm/metric/DiceSorensen.mjs.map +1 -1
- package/dist/esm/metric/Hamming.mjs +2 -2
- package/dist/esm/metric/Hamming.mjs.map +1 -1
- package/dist/esm/metric/Jaccard.mjs +16 -13
- package/dist/esm/metric/Jaccard.mjs.map +1 -1
- package/dist/esm/metric/JaroWinkler.mjs +45 -43
- package/dist/esm/metric/JaroWinkler.mjs.map +1 -1
- package/dist/esm/metric/LCS.mjs +21 -18
- package/dist/esm/metric/LCS.mjs.map +1 -1
- package/dist/esm/metric/Levenshtein.mjs +21 -18
- package/dist/esm/metric/Levenshtein.mjs.map +1 -1
- package/dist/esm/metric/Metric.mjs +19 -32
- package/dist/esm/metric/Metric.mjs.map +1 -1
- package/dist/esm/metric/NeedlemanWunsch.mjs +27 -24
- package/dist/esm/metric/NeedlemanWunsch.mjs.map +1 -1
- package/dist/esm/metric/QGram.mjs +38 -0
- package/dist/esm/metric/QGram.mjs.map +1 -0
- package/dist/esm/metric/SmithWaterman.mjs +27 -24
- package/dist/esm/metric/SmithWaterman.mjs.map +1 -1
- package/dist/esm/phonetic/Caverphone.mjs +5 -8
- package/dist/esm/phonetic/Caverphone.mjs.map +1 -1
- package/dist/esm/phonetic/Cologne.mjs +1 -1
- package/dist/esm/phonetic/Cologne.mjs.map +1 -1
- package/dist/esm/phonetic/Metaphone.mjs +6 -3
- package/dist/esm/phonetic/Metaphone.mjs.map +1 -1
- package/dist/esm/phonetic/Phonetic.mjs +24 -17
- package/dist/esm/phonetic/Phonetic.mjs.map +1 -1
- package/dist/esm/phonetic/Soundex.mjs +1 -1
- package/dist/esm/phonetic/Soundex.mjs.map +1 -1
- package/dist/esm/root.mjs +3 -3
- package/dist/esm/utils/DeepMerge.mjs +73 -42
- package/dist/esm/utils/DeepMerge.mjs.map +1 -1
- package/dist/esm/utils/DiffChecker.mjs +33 -45
- package/dist/esm/utils/DiffChecker.mjs.map +1 -1
- package/dist/esm/utils/Filter.mjs +40 -46
- package/dist/esm/utils/Filter.mjs.map +1 -1
- package/dist/esm/utils/HashTable.mjs +23 -33
- package/dist/esm/utils/HashTable.mjs.map +1 -1
- package/dist/esm/utils/Normalizer.mjs +32 -21
- package/dist/esm/utils/Normalizer.mjs.map +1 -1
- package/dist/esm/utils/Pool.mjs +21 -26
- package/dist/esm/utils/Pool.mjs.map +1 -1
- package/dist/esm/utils/Profiler.mjs +40 -53
- package/dist/esm/utils/Profiler.mjs.map +1 -1
- package/dist/esm/utils/Registry.mjs +6 -4
- package/dist/esm/utils/Registry.mjs.map +1 -1
- package/dist/esm/utils/StructuredData.mjs +47 -37
- package/dist/esm/utils/StructuredData.mjs.map +1 -1
- package/dist/esm/utils/TextAnalyzer.mjs +76 -56
- package/dist/esm/utils/TextAnalyzer.mjs.map +1 -1
- package/dist/types/CmpStr.d.ts +56 -55
- package/dist/types/CmpStrAsync.d.ts +45 -45
- package/dist/types/index.d.ts +2 -2
- package/dist/types/metric/Cosine.d.ts +7 -5
- package/dist/types/metric/DamerauLevenshtein.d.ts +4 -2
- package/dist/types/metric/DiceSorensen.d.ts +5 -3
- package/dist/types/metric/Hamming.d.ts +4 -2
- package/dist/types/metric/Jaccard.d.ts +3 -1
- package/dist/types/metric/JaroWinkler.d.ts +4 -2
- package/dist/types/metric/LCS.d.ts +3 -1
- package/dist/types/metric/Levenshtein.d.ts +4 -2
- package/dist/types/metric/Metric.d.ts +23 -21
- package/dist/types/metric/NeedlemanWunsch.d.ts +4 -2
- package/dist/types/metric/{qGram.d.ts → QGram.d.ts} +5 -3
- package/dist/types/metric/SmithWaterman.d.ts +4 -2
- package/dist/types/metric/index.d.ts +2 -2
- package/dist/types/phonetic/Caverphone.d.ts +5 -2
- package/dist/types/phonetic/Cologne.d.ts +1 -0
- package/dist/types/phonetic/Metaphone.d.ts +3 -0
- package/dist/types/phonetic/Phonetic.d.ts +14 -10
- package/dist/types/phonetic/Soundex.d.ts +1 -0
- package/dist/types/phonetic/index.d.ts +1 -1
- package/dist/types/root.d.ts +7 -7
- package/dist/types/utils/DeepMerge.d.ts +4 -3
- package/dist/types/utils/DiffChecker.d.ts +9 -7
- package/dist/types/utils/Filter.d.ts +22 -8
- package/dist/types/utils/HashTable.d.ts +44 -10
- package/dist/types/utils/Normalizer.d.ts +13 -4
- package/dist/types/utils/Pool.d.ts +5 -3
- package/dist/types/utils/Profiler.d.ts +30 -15
- package/dist/types/utils/Registry.d.ts +11 -8
- package/dist/types/utils/StructuredData.d.ts +44 -32
- package/dist/types/utils/TextAnalyzer.d.ts +38 -14
- package/dist/types/utils/Types.d.ts +104 -14
- package/package.json +8 -3
- package/dist/cjs/metric/qGram.cjs.map +0 -1
- package/dist/esm/metric/qGram.mjs +0 -35
- package/dist/esm/metric/qGram.mjs.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2023-
|
|
3
|
+
Copyright (c) 2023-2026 Paul Köhler (komed3)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,58 +1,59 @@
|
|
|
1
|
-
# CmpStr
|
|
2
|
-
|
|
3
|
-
[](LICENSE)
|
|
4
|
+
[](https://github.com/komed3/cmpstr/wiki)
|
|
5
|
+
[](https://www.typescriptlang.org)
|
|
6
|
+
[](https://npmjs.com/package/cmpstr)
|
|
7
|
+
[](https://bundlephobia.com/package/cmpstr)
|
|
8
|
+
[](https://npm-stat.com/charts.html?package=cmpstr)
|
|
9
|
+
[](https://github.com/komed3/cmpstr/actions/workflows/build.yml)
|
|
10
|
+
[](https://github.com/komed3/cmpstr/wiki/Installation-&-Setup#import-in-your-project)
|
|
11
|
+
[](https://github.com/komed3/cmpstr/wiki/Installation-&-Setup#browser)
|
|
12
|
+
|
|
13
|
+
[](https://ko-fi.com/W7W21SQV2Q)
|
|
14
|
+
|
|
15
|
+
**CmpStr** is a modern TypeScript library for advanced string comparison, similarity measurement, phonetic indexing, and text analysis. It provides a comprehensive collection of established algorithms such as Levenshtein, Dice–Sørensen, Jaro-Winkler, LCS, q-Gram, and more.
|
|
16
|
+
|
|
17
|
+
The library is dependency-free, fully typed, and designed with extensibility in mind. Custom metrics, phonetic mappings, normalization filters, and processing pipelines can be integrated without modifying the core. CmpStr offers a unified, consistent API for single comparisons, batch processing, and pairwise matching across synchronous and asynchronous workflows.
|
|
18
|
+
|
|
19
|
+
Originally released in 2023 with a minimal feature set, CmpStr was fundamentally redesigned in 2025 to support a broader range of algorithms, scalable processing, and more demanding real-world use cases. The current version emphasizes determinism, performance, and architectural clarity while remaining approachable for everyday usage.
|
|
20
|
+
|
|
21
|
+
## Key Features
|
|
22
|
+
|
|
23
|
+
* Unified API for string similarity, distance measurement, and matching
|
|
24
|
+
* Modular metric system with built-in support for 11 different metrics
|
|
25
|
+
* Integrated phonetic algorithms (e.g. Soundex, Metaphone) with a configurable registry
|
|
26
|
+
* Configurable normalization and filtering pipeline for consistent input processing
|
|
27
|
+
* Single, batch, and pairwise comparisons with structured, type-safe results
|
|
28
|
+
* Phonetic-aware search and comparison
|
|
29
|
+
* Structured data comparison via property extraction
|
|
30
|
+
* Utilities for text structure and readability analysis (e.g. syllables, word statistics)
|
|
31
|
+
* Diffing utilities with CLI-friendly output formats
|
|
32
|
+
* TypeScript-native design with full type declarations
|
|
33
|
+
* Optional asynchronous APIs for scalable, non-blocking workloads
|
|
34
|
+
* Extensible architecture for custom algorithms, processors, and filters
|
|
33
35
|
|
|
34
36
|
## Getting Started
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
Install CmpStr using npm:
|
|
37
39
|
|
|
38
40
|
```sh
|
|
39
41
|
npm install cmpstr
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
Minimal
|
|
44
|
+
### Minimal Example
|
|
43
45
|
|
|
44
46
|
```ts
|
|
45
47
|
import { CmpStr } from 'cmpstr';
|
|
46
48
|
|
|
47
49
|
const cmp = CmpStr.create().setMetric( 'levenshtein' ).setFlags( 'i' );
|
|
48
|
-
|
|
49
50
|
const result = cmp.test( [ 'hello', 'hola' ], 'Hallo' );
|
|
50
51
|
|
|
51
52
|
console.log( result );
|
|
52
53
|
// { source: 'hello', target: 'Hallo', match: 0.8 }
|
|
53
54
|
```
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
### Asynchronous Usage
|
|
56
57
|
|
|
57
58
|
```ts
|
|
58
59
|
import { CmpStrAsync } from 'cmpstr';
|
|
@@ -69,14 +70,16 @@ console.log( result );
|
|
|
69
70
|
// [ 'Meyer', 'Meier' ]
|
|
70
71
|
```
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
*Try it online with [OneCompiler](https://onecompiler.com/nodejs/43qr6trny).*
|
|
73
74
|
|
|
74
75
|
## CLI Tool
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
CmpStr can also be used directly from the command line via **[cmpstr-cli](https://npmjs.com/package/cmpstr-cli)**. The CLI exposes many of the library’s features for interactive use, scripting, and automated processing, making it suitable for data cleaning, analysis, and batch workflows.
|
|
77
78
|
|
|
78
79
|
## Documentation
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
Comprehensive documentation, API references, and advanced usage examples are available in the [GitHub Wiki](https://github.com/komed3/cmpstr/wiki).
|
|
82
|
+
|
|
83
|
+
## License
|
|
81
84
|
|
|
82
|
-
|
|
85
|
+
MIT License © 2023–2026 Paul Köhler (komed3)
|