cmpstr 2.0.2 → 3.0.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.
Files changed (172) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +75 -499
  3. package/dist/CmpStr.esm.js +4863 -0
  4. package/dist/CmpStr.esm.js.map +1 -0
  5. package/dist/CmpStr.esm.min.js +8 -0
  6. package/dist/CmpStr.esm.min.js.map +1 -0
  7. package/dist/CmpStr.umd.js +4875 -0
  8. package/dist/CmpStr.umd.js.map +1 -0
  9. package/dist/CmpStr.umd.min.js +8 -0
  10. package/dist/CmpStr.umd.min.js.map +1 -0
  11. package/dist/cjs/CmpStr.js +663 -0
  12. package/dist/cjs/CmpStr.js.map +1 -0
  13. package/dist/cjs/CmpStrAsync.js +336 -0
  14. package/dist/cjs/CmpStrAsync.js.map +1 -0
  15. package/dist/cjs/index.js +15 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/metric/Cosine.js +101 -0
  18. package/dist/cjs/metric/Cosine.js.map +1 -0
  19. package/dist/cjs/metric/DamerauLevenshtein.js +110 -0
  20. package/dist/cjs/metric/DamerauLevenshtein.js.map +1 -0
  21. package/dist/cjs/metric/DiceSorensen.js +91 -0
  22. package/dist/cjs/metric/DiceSorensen.js.map +1 -0
  23. package/dist/cjs/metric/Hamming.js +82 -0
  24. package/dist/cjs/metric/Hamming.js.map +1 -0
  25. package/dist/cjs/metric/Jaccard.js +76 -0
  26. package/dist/cjs/metric/Jaccard.js.map +1 -0
  27. package/dist/cjs/metric/JaroWinkler.js +114 -0
  28. package/dist/cjs/metric/JaroWinkler.js.map +1 -0
  29. package/dist/cjs/metric/LCS.js +89 -0
  30. package/dist/cjs/metric/LCS.js.map +1 -0
  31. package/dist/cjs/metric/Levenshtein.js +94 -0
  32. package/dist/cjs/metric/Levenshtein.js.map +1 -0
  33. package/dist/cjs/metric/Metric.js +445 -0
  34. package/dist/cjs/metric/Metric.js.map +1 -0
  35. package/dist/cjs/metric/NeedlemanWunsch.js +95 -0
  36. package/dist/cjs/metric/NeedlemanWunsch.js.map +1 -0
  37. package/dist/cjs/metric/SmithWaterman.js +98 -0
  38. package/dist/cjs/metric/SmithWaterman.js.map +1 -0
  39. package/dist/cjs/metric/qGram.js +91 -0
  40. package/dist/cjs/metric/qGram.js.map +1 -0
  41. package/dist/cjs/phonetic/Cologne.js +112 -0
  42. package/dist/cjs/phonetic/Cologne.js.map +1 -0
  43. package/dist/cjs/phonetic/Metaphone.js +172 -0
  44. package/dist/cjs/phonetic/Metaphone.js.map +1 -0
  45. package/dist/cjs/phonetic/Phonetic.js +413 -0
  46. package/dist/cjs/phonetic/Phonetic.js.map +1 -0
  47. package/dist/cjs/phonetic/Soundex.js +135 -0
  48. package/dist/cjs/phonetic/Soundex.js.map +1 -0
  49. package/dist/cjs/utils/DeepMerge.js +144 -0
  50. package/dist/cjs/utils/DeepMerge.js.map +1 -0
  51. package/dist/cjs/utils/DiffChecker.js +500 -0
  52. package/dist/cjs/utils/DiffChecker.js.map +1 -0
  53. package/dist/cjs/utils/Filter.js +189 -0
  54. package/dist/cjs/utils/Filter.js.map +1 -0
  55. package/dist/cjs/utils/HashTable.js +175 -0
  56. package/dist/cjs/utils/HashTable.js.map +1 -0
  57. package/dist/cjs/utils/Normalizer.js +144 -0
  58. package/dist/cjs/utils/Normalizer.js.map +1 -0
  59. package/dist/cjs/utils/Pool.js +196 -0
  60. package/dist/cjs/utils/Pool.js.map +1 -0
  61. package/dist/cjs/utils/Profiler.js +229 -0
  62. package/dist/cjs/utils/Profiler.js.map +1 -0
  63. package/dist/cjs/utils/Registry.js +148 -0
  64. package/dist/cjs/utils/Registry.js.map +1 -0
  65. package/dist/cjs/utils/TextAnalyzer.js +358 -0
  66. package/dist/cjs/utils/TextAnalyzer.js.map +1 -0
  67. package/dist/esm/CmpStr.js +662 -0
  68. package/dist/esm/CmpStr.js.map +1 -0
  69. package/dist/esm/CmpStrAsync.js +331 -0
  70. package/dist/esm/CmpStrAsync.js.map +1 -0
  71. package/dist/esm/index.js +7 -0
  72. package/dist/esm/index.js.map +1 -0
  73. package/dist/esm/metric/Cosine.js +99 -0
  74. package/dist/esm/metric/Cosine.js.map +1 -0
  75. package/dist/esm/metric/DamerauLevenshtein.js +108 -0
  76. package/dist/esm/metric/DamerauLevenshtein.js.map +1 -0
  77. package/dist/esm/metric/DiceSorensen.js +89 -0
  78. package/dist/esm/metric/DiceSorensen.js.map +1 -0
  79. package/dist/esm/metric/Hamming.js +77 -0
  80. package/dist/esm/metric/Hamming.js.map +1 -0
  81. package/dist/esm/metric/Jaccard.js +74 -0
  82. package/dist/esm/metric/Jaccard.js.map +1 -0
  83. package/dist/esm/metric/JaroWinkler.js +112 -0
  84. package/dist/esm/metric/JaroWinkler.js.map +1 -0
  85. package/dist/esm/metric/LCS.js +87 -0
  86. package/dist/esm/metric/LCS.js.map +1 -0
  87. package/dist/esm/metric/Levenshtein.js +92 -0
  88. package/dist/esm/metric/Levenshtein.js.map +1 -0
  89. package/dist/esm/metric/Metric.js +442 -0
  90. package/dist/esm/metric/Metric.js.map +1 -0
  91. package/dist/esm/metric/NeedlemanWunsch.js +93 -0
  92. package/dist/esm/metric/NeedlemanWunsch.js.map +1 -0
  93. package/dist/esm/metric/SmithWaterman.js +96 -0
  94. package/dist/esm/metric/SmithWaterman.js.map +1 -0
  95. package/dist/esm/metric/qGram.js +89 -0
  96. package/dist/esm/metric/qGram.js.map +1 -0
  97. package/dist/esm/phonetic/Cologne.js +114 -0
  98. package/dist/esm/phonetic/Cologne.js.map +1 -0
  99. package/dist/esm/phonetic/Metaphone.js +174 -0
  100. package/dist/esm/phonetic/Metaphone.js.map +1 -0
  101. package/dist/esm/phonetic/Phonetic.js +409 -0
  102. package/dist/esm/phonetic/Phonetic.js.map +1 -0
  103. package/dist/esm/phonetic/Soundex.js +137 -0
  104. package/dist/esm/phonetic/Soundex.js.map +1 -0
  105. package/dist/esm/utils/DeepMerge.js +139 -0
  106. package/dist/esm/utils/DeepMerge.js.map +1 -0
  107. package/dist/esm/utils/DiffChecker.js +498 -0
  108. package/dist/esm/utils/DiffChecker.js.map +1 -0
  109. package/dist/esm/utils/Filter.js +187 -0
  110. package/dist/esm/utils/Filter.js.map +1 -0
  111. package/dist/esm/utils/HashTable.js +173 -0
  112. package/dist/esm/utils/HashTable.js.map +1 -0
  113. package/dist/esm/utils/Normalizer.js +142 -0
  114. package/dist/esm/utils/Normalizer.js.map +1 -0
  115. package/dist/esm/utils/Pool.js +194 -0
  116. package/dist/esm/utils/Pool.js.map +1 -0
  117. package/dist/esm/utils/Profiler.js +227 -0
  118. package/dist/esm/utils/Profiler.js.map +1 -0
  119. package/dist/esm/utils/Registry.js +142 -0
  120. package/dist/esm/utils/Registry.js.map +1 -0
  121. package/dist/esm/utils/TextAnalyzer.js +356 -0
  122. package/dist/esm/utils/TextAnalyzer.js.map +1 -0
  123. package/dist/types/CmpStr.d.ts +472 -0
  124. package/dist/types/CmpStrAsync.d.ts +233 -0
  125. package/dist/types/index.d.ts +51 -0
  126. package/dist/types/metric/Cosine.d.ts +57 -0
  127. package/dist/types/metric/DamerauLevenshtein.d.ts +50 -0
  128. package/dist/types/metric/DiceSorensen.d.ts +57 -0
  129. package/dist/types/metric/Hamming.d.ts +49 -0
  130. package/dist/types/metric/Jaccard.d.ts +48 -0
  131. package/dist/types/metric/JaroWinkler.d.ts +50 -0
  132. package/dist/types/metric/LCS.d.ts +50 -0
  133. package/dist/types/metric/Levenshtein.d.ts +50 -0
  134. package/dist/types/metric/Metric.d.ts +261 -0
  135. package/dist/types/metric/NeedlemanWunsch.d.ts +47 -0
  136. package/dist/types/metric/SmithWaterman.d.ts +48 -0
  137. package/dist/types/metric/index.d.ts +41 -0
  138. package/dist/types/metric/qGram.d.ts +56 -0
  139. package/dist/types/phonetic/Cologne.d.ts +46 -0
  140. package/dist/types/phonetic/Metaphone.d.ts +50 -0
  141. package/dist/types/phonetic/Phonetic.d.ts +189 -0
  142. package/dist/types/phonetic/Soundex.d.ts +49 -0
  143. package/dist/types/phonetic/index.d.ts +30 -0
  144. package/dist/types/utils/DeepMerge.d.ts +70 -0
  145. package/dist/types/utils/DiffChecker.d.ts +137 -0
  146. package/dist/types/utils/Filter.d.ts +97 -0
  147. package/dist/types/utils/HashTable.d.ts +86 -0
  148. package/dist/types/utils/Normalizer.d.ts +76 -0
  149. package/dist/types/utils/Pool.d.ts +63 -0
  150. package/dist/types/utils/Profiler.d.ts +129 -0
  151. package/dist/types/utils/Registry.d.ts +57 -0
  152. package/dist/types/utils/TextAnalyzer.d.ts +199 -0
  153. package/dist/types/utils/Types.d.ts +313 -0
  154. package/package.json +62 -49
  155. package/src/CmpStr.d.ts +0 -70
  156. package/src/CmpStr.js +0 -912
  157. package/src/CmpStrAsync.d.ts +0 -19
  158. package/src/CmpStrAsync.js +0 -204
  159. package/src/algorithms/cosine.js +0 -86
  160. package/src/algorithms/damerau.js +0 -78
  161. package/src/algorithms/dice.js +0 -65
  162. package/src/algorithms/hamming.js +0 -44
  163. package/src/algorithms/jaccard.js +0 -34
  164. package/src/algorithms/jaroWinkler.js +0 -106
  165. package/src/algorithms/lcs.js +0 -58
  166. package/src/algorithms/levenshtein.js +0 -70
  167. package/src/algorithms/needlemanWunsch.js +0 -72
  168. package/src/algorithms/qGram.js +0 -63
  169. package/src/algorithms/smithWaterman.js +0 -78
  170. package/src/algorithms/soundex.js +0 -152
  171. package/src/index.d.ts +0 -3
  172. package/src/index.js +0 -47
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffChecker.js","sources":["../../../src/utils/DiffChecker.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ // CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
2
+ /**
3
+ * Filter Utility
4
+ * src/utils/Filter.ts
5
+ *
6
+ * This module provides a Filter class that allows for the management and application of
7
+ * filters to strings based on hooks. Filters can be added, removed, paused, resumed, and
8
+ * applied to input strings. Each filter has an id, a function, a priority, and options
9
+ * for activation and overrideability.
10
+ *
11
+ * @module Utils/Filter
12
+ * @author Paul Köhler (komed3)
13
+ * @license MIT
14
+ */
15
+ /**
16
+ * The Filter class provides a way to manage and apply filters to strings based on hooks.
17
+ */
18
+ class Filter {
19
+ /**
20
+ * A static map to hold all filters.
21
+ * The key is the hook name, and the value is an array of FilterEntry objects.
22
+ */
23
+ static filters = new Map();
24
+ /**
25
+ * Finds a filter by its hook and id.
26
+ *
27
+ * @param {string} hook - The name of the hook
28
+ * @param {string} id - The id of the filter
29
+ * @returns {FilterEntry|undefined} - The FilterEntry if found, otherwise undefined
30
+ */
31
+ static find(hook, id) {
32
+ return Filter.filters.get(hook)?.find((f) => f.id === id);
33
+ }
34
+ /**
35
+ * Adds a filter to the specified hook.
36
+ *
37
+ * @param {string} hook - The name of the hook
38
+ * @param {string} id - The id of the filter
39
+ * @param {FilterFn} fn - The filter function
40
+ * @param {FilterOptions} [opt] - Additional options for the filter
41
+ * @returns {boolean} - Returns true if the filter was added, false if it was not added due to override restrictions
42
+ */
43
+ static add(hook, id, fn, opt = {}) {
44
+ const { priority = 10, active = true, overrideable = true } = opt;
45
+ // Check if the filter already exists
46
+ const filter = Filter.filters.get(hook) ?? [];
47
+ const index = filter.findIndex((f) => f.id === id);
48
+ // If the filter already exists and is not overrideable, return false
49
+ if (index >= 0) {
50
+ const f = filter[index];
51
+ if (!f.overrideable) return false;
52
+ filter.splice(index, 1);
53
+ }
54
+ // Add the new filter entry
55
+ filter.push({ id, fn, priority, active, overrideable });
56
+ // Sort the filters by priority
57
+ filter.sort((a, b) => a.priority - b.priority);
58
+ // Update the filters map
59
+ Filter.filters.set(hook, filter);
60
+ return true;
61
+ }
62
+ /**
63
+ * Removes a filter by its hook and id.
64
+ *
65
+ * @param {string} hook - The name of the hook
66
+ * @param {string} id - The id of the filter
67
+ * @returns {boolean} - Returns true if the filter was removed, false if it was not found
68
+ */
69
+ static remove(hook, id) {
70
+ // Get the filter array for the specified hook
71
+ const filter = Filter.filters.get(hook);
72
+ // If the filter array does not exist, return false
73
+ if (!filter) return false;
74
+ // Find the index of the filter with the specified id
75
+ const index = filter.findIndex((f) => f.id === id);
76
+ // If the filter is found, remove it and return true
77
+ if (index >= 0) {
78
+ filter.splice(index, 1);
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ /**
84
+ * Pauses a filter by its hook and id.
85
+ *
86
+ * @param {string} hook - The name of the hook
87
+ * @param {string} id - The id of the filter
88
+ * @returns {boolean} - Returns true if the filter was paused, false if it was not found
89
+ */
90
+ static pause(hook, id) {
91
+ // Find the filter entry by hook and id
92
+ const f = Filter.find(hook, id);
93
+ if (!f) return false;
94
+ // Set the active property to false to pause the filter
95
+ f.active = false;
96
+ return true;
97
+ }
98
+ /**
99
+ * Resumes a filter by its hook and id.
100
+ *
101
+ * @param {string} hook - The name of the hook
102
+ * @param {string} id - The id of the filter
103
+ * @returns {boolean} - Returns true if the filter was resumed, false if it was not found
104
+ */
105
+ static resume(hook, id) {
106
+ // Find the filter entry by hook and id
107
+ const f = Filter.find(hook, id);
108
+ if (!f) return false;
109
+ // Set the active property to true to resume the filter
110
+ f.active = true;
111
+ return true;
112
+ }
113
+ /**
114
+ * Lists all filters for a given hook.
115
+ *
116
+ * @param {string} hook - The name of the hook
117
+ * @param {boolean} active - If true, only list active filters
118
+ * @returns {string[]} - An array of filter ids
119
+ */
120
+ static list(hook, active = false) {
121
+ // Get the filter array for the specified hook
122
+ const filter = Filter.filters.get(hook) ?? [];
123
+ const list = [];
124
+ // If active is true, filter the entries based on their active status
125
+ for (const f of filter) if (!active || f.active) list.push(f.id);
126
+ return list;
127
+ }
128
+ /**
129
+ * Applies all active filters for a given hook to the input string(s).
130
+ *
131
+ * @param {string} hook - The name of the hook
132
+ * @param {string|string[]} input - The input string(s) to be filtered
133
+ * @returns {string|string[]} - The filtered string(s)
134
+ */
135
+ static apply(hook, input) {
136
+ // Get the filter array for the specified hook
137
+ const filter = Filter.filters.get(hook);
138
+ // If no filters are found for the hook or if no filters are active, return the input unchanged
139
+ if (!filter || filter.every((f) => !f.active)) return input;
140
+ // Apply each active filter function to the given string
141
+ const applyOne = (s) => {
142
+ for (const f of filter) if (f.active) s = f.fn(s);
143
+ return s;
144
+ };
145
+ // If the input is an array, apply the filter to each element, otherwise just once
146
+ return Array.isArray(input) ? input.map(applyOne) : applyOne(input);
147
+ }
148
+ /**
149
+ * Applies all active filters for a given hook to the input string(s) asynchronously.
150
+ * Each filter function may return a Promise or a plain string; all are awaited in order.
151
+ *
152
+ * @param {string} hook - The name of the hook
153
+ * @param {string|string[]} input - The input string(s) to be filtered
154
+ * @returns {Promise<string|string[]>} - The filtered string(s)
155
+ */
156
+ static async applyAsync(hook, input) {
157
+ // Get the filter array for the specified hook
158
+ const filter = Filter.filters.get(hook);
159
+ // If no filters are found for the hook or if no filters are active, return the input unchanged
160
+ if (!filter || filter.every((f) => !f.active)) return input;
161
+ // Apply each active filter function to the given string
162
+ // Support both sync and async filter functions
163
+ const applyOne = async (s) => {
164
+ for (const f of filter) if (f.active) s = await Promise.resolve(f.fn(s));
165
+ return s;
166
+ };
167
+ // If the input is an array, apply the filter to each element, otherwise just once
168
+ // Use Promise.all to handle multiple promises if input is an array
169
+ return Array.isArray(input)
170
+ ? Promise.all(input.map(applyOne))
171
+ : applyOne(input);
172
+ }
173
+ /**
174
+ * Clears all filters or filters for a specific hook.
175
+ *
176
+ * @param {string} [hook] - Optional name of the hook to clear filters for
177
+ */
178
+ static clear(hook) {
179
+ // If a specific hook is provided, delete its filters
180
+ if (hook) Filter.filters.delete(hook);
181
+ // If no hook is provided, clear all filters
182
+ else Filter.filters.clear();
183
+ }
184
+ }
185
+
186
+ export { Filter };
187
+ //# sourceMappingURL=Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter.js","sources":["../../../src/utils/Filter.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ // CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
2
+ /**
3
+ * Hash Table Utility
4
+ * src/utils/HashTable.ts
5
+ *
6
+ * @see https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function
7
+ * @see https://en.wikipedia.org/wiki/Hash_table
8
+ *
9
+ * This module implements an instantiable hash table/cache using the FNV-1a hash algorithm.
10
+ * It allows for multiple independent caches (e.g. for metrics, normalization, etc.) with
11
+ * type safety and high performance. The FNV-1a algorithm is factored out into its own
12
+ * static utility class to avoid code duplication and memory overhead.
13
+ *
14
+ * The key() method supports any number of string arguments, enabling flexible cache keys
15
+ * for different use cases (e.g. normalization, metrics, etc.).
16
+ *
17
+ * @module Utils/HashTable
18
+ * @author Paul Köhler (komed3)
19
+ * @license MIT
20
+ */
21
+ /**
22
+ * Hasher Utility
23
+ * Static class for FNV-1a hash calculation.
24
+ */
25
+ class Hasher {
26
+ // Constants for the FNV-1a hash algorithm
27
+ static FNV_PRIME = 0x01000193;
28
+ static HASH_OFFSET = 0x811c9dc5;
29
+ /**
30
+ * Computes a hash value for a given string using the FNV-1a algorithm.
31
+ * Processes the string in chunks of 4 characters for better performance.
32
+ *
33
+ * @param {string} str - The string to hash
34
+ * @return {number} - The computed hash value as an unsigned 32-bit integer
35
+ */
36
+ static fnv1a(str) {
37
+ const len = str.length;
38
+ let hash = this.HASH_OFFSET;
39
+ // Process 4 characters at a time for better performance
40
+ const chunks = Math.floor(len / 4);
41
+ for (let i = 0; i < chunks; i++) {
42
+ const pos = i * 4;
43
+ // Combine 4 chars into a single number for faster processing
44
+ const chunk =
45
+ str.charCodeAt(pos) |
46
+ (str.charCodeAt(pos + 1) << 8) |
47
+ (str.charCodeAt(pos + 2) << 16) |
48
+ (str.charCodeAt(pos + 3) << 24);
49
+ hash ^= chunk;
50
+ hash *= this.FNV_PRIME;
51
+ }
52
+ // Handle remaining characters
53
+ const remaining = len % 4;
54
+ if (remaining > 0) {
55
+ const pos = chunks * 4;
56
+ for (let i = 0; i < remaining; i++) {
57
+ hash ^= str.charCodeAt(pos + i);
58
+ hash *= this.FNV_PRIME;
59
+ }
60
+ }
61
+ // Final mixing to improve distribution
62
+ hash ^= hash >>> 16;
63
+ hash *= 0x85ebca6b;
64
+ hash ^= hash >>> 13;
65
+ hash *= 0xc2b2ae35;
66
+ hash ^= hash >>> 16;
67
+ // Convert to unsigned 32-bit integer
68
+ return hash >>> 0;
69
+ }
70
+ }
71
+ /**
72
+ * HashTable class implements an instantiable hash table/cache.
73
+ * Allows for multiple independent caches with type safety and high performance.
74
+ *
75
+ * @template K - The type of the label for the key (e.g. string, MetricName, …)
76
+ * @template T - The type of value to be stored in the hash table (e.g. MetricCompute, string, …)
77
+ */
78
+ class HashTable {
79
+ // The max. length of a string to hash, which is set to 2048 characters.
80
+ static MAX_LEN = 2048;
81
+ // The max. size of the hash table, which is set to 10,000.
82
+ static TABLE_SIZE = 10_000;
83
+ /**
84
+ * The internal map to store entries.
85
+ * The key is a string generated from the label and any number of hashed strings.
86
+ * The value is of type T.
87
+ */
88
+ table = new Map();
89
+ /**
90
+ * Generates a unique hash key for any number of string arguments.
91
+ * The key is in the format "label-H1-H2-H3-..."
92
+ *
93
+ * @param {K} label - Label for this key (e.g. metric name, normalization flags, …)
94
+ * @param {string[]} strs - Array of strings to hash (e.g. input, params, …)
95
+ * @param {boolean} [sorted=false] - Whether to sort the hashes before creating the key
96
+ * @returns {string|false} - A unique hash key or false if any string is too long
97
+ */
98
+ key(label, strs, sorted = false) {
99
+ // Return false if any string exceeds the maximum length
100
+ for (const str of strs) {
101
+ if (str.length > HashTable.MAX_LEN) return false;
102
+ }
103
+ // Hash all strings
104
+ const hashes = strs.map((s) => Hasher.fnv1a(s));
105
+ // Sort them in ascending order
106
+ if (sorted) hashes.sort();
107
+ // Build key: label-H1-H2-H3-...
108
+ return [label, ...hashes].join('-');
109
+ }
110
+ /**
111
+ * Checks if a key exists in the hash table.
112
+ *
113
+ * @param {string} key - The key to check
114
+ * @returns {boolean} - True if the key exists, false otherwise
115
+ */
116
+ has(key) {
117
+ return this.table.has(key);
118
+ }
119
+ /**
120
+ * Retrieves the entry from the hash table by its key.
121
+ *
122
+ * @param {string} key - The key to look up
123
+ * @returns {T|undefined} - The entry if found, undefined otherwise
124
+ */
125
+ get(key) {
126
+ return this.table.get(key);
127
+ }
128
+ /**
129
+ * Adds an entry to the hash table.
130
+ *
131
+ * @param {string} key - The hashed key for the entry
132
+ * @param {T} entry - The entry itself to add
133
+ * @param {boolean} [update=true] - Whether to update the entry if it already exists
134
+ * @returns {boolean} - True if added successfully, false if the table is full
135
+ */
136
+ set(key, entry, update = true) {
137
+ // If the table is not full and the key does not exist or update is true, add the entry
138
+ if (
139
+ this.table.size < HashTable.TABLE_SIZE &&
140
+ (update || !this.table.has(key))
141
+ ) {
142
+ this.table.set(key, entry);
143
+ return true;
144
+ }
145
+ return false;
146
+ }
147
+ /**
148
+ * Deletes an entry from the hash table by its key.
149
+ *
150
+ * @param {string} key - The key of the entry to delete
151
+ */
152
+ delete(key) {
153
+ this.table.delete(key);
154
+ }
155
+ /**
156
+ * Clears the hash table.
157
+ * This method removes all entries from the hash table.
158
+ */
159
+ clear() {
160
+ this.table.clear();
161
+ }
162
+ /**
163
+ * Returns the current size of the hash table.
164
+ *
165
+ * @returns {number} - The number of entries in the hash table
166
+ */
167
+ size() {
168
+ return this.table.size;
169
+ }
170
+ }
171
+
172
+ export { HashTable };
173
+ //# sourceMappingURL=HashTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HashTable.js","sources":["../../../src/utils/HashTable.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ // CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
2
+ import { HashTable } from './HashTable.js';
3
+
4
+ /**
5
+ * Normalizer Utility
6
+ * src/utils/Normalizer.ts
7
+ *
8
+ * @see https://en.wikipedia.org/wiki/Text_normalization
9
+ * @see https://en.wikipedia.org/wiki/Unicode_equivalence
10
+ *
11
+ * This module provides a Normalizer class that allows for string normalization based
12
+ * on various flags. It uses a pipeline of normalization functions that can be reused
13
+ * and cached for efficiency. The Normalizer can handle both single strings and arrays
14
+ * of strings, and supports synchronous and asynchronous normalization.
15
+ *
16
+ * Supported flags:
17
+ * 'd' :: Normalize to NFD (Normalization Form Decomposed)
18
+ * 'u' :: Normalize to NFC (Normalization Form Composed)
19
+ * 'x' :: Normalize to NFKC (Normalization Form Compatibility Composed)
20
+ * 'w' :: Collapse whitespace
21
+ * 't' :: Remove leading and trailing whitespace
22
+ * 'r' :: Remove double characters
23
+ * 's' :: Remove punctuation / special characters
24
+ * 'k' :: Remove non-letter characters
25
+ * 'n' :: Remove non-number characters
26
+ * 'i' :: Case insensitive (convert to lowercase)
27
+ *
28
+ * @module Utils/Normalizer
29
+ * @author Paul Köhler (komed3)
30
+ * @license MIT
31
+ */
32
+ /**
33
+ * The Normalizer class providing methods to normalize strings based on various flags.
34
+ */
35
+ class Normalizer {
36
+ /**
37
+ * A map that holds normalization functions based on the flags.
38
+ * This allows for reusing normalization logic without recomputing it.
39
+ */
40
+ static pipeline = new Map();
41
+ /**
42
+ * A cache to store normalized strings based on the flags and input.
43
+ * This helps avoid recomputing normalization for the same input and flags.
44
+ */
45
+ static cache = new HashTable();
46
+ /**
47
+ * Returns a normalization function based on the provided flags.
48
+ * The flags are a string of characters that define the normalization steps.
49
+ *
50
+ * @param {NormalizeFlags} flags - A string of characters representing the normalization steps
51
+ * @returns {NormalizerFn} - A function that normalizes a string based on the provided flags
52
+ */
53
+ static getPipeline(flags) {
54
+ // Return the cached pipeline if it exists
55
+ if (Normalizer.pipeline.has(flags)) return Normalizer.pipeline.get(flags);
56
+ // Define the normalization steps based on the flags
57
+ const steps = [];
58
+ // Normalize to NFD (Normalization Form Decomposed)
59
+ if (flags.includes('d')) steps.push((str) => str.normalize('NFD'));
60
+ // Normalize to NFC (Normalization Form Composed)
61
+ if (flags.includes('u')) steps.push((str) => str.normalize('NFC'));
62
+ // Normalize to NFKC (Normalization Form Compatibility Composed)
63
+ if (flags.includes('x')) steps.push((str) => str.normalize('NFKC'));
64
+ // Collapse whitespace
65
+ if (flags.includes('w')) steps.push((str) => str.replace(/\s+/g, ' '));
66
+ // Remove leading and trailing whitespace
67
+ if (flags.includes('t')) steps.push((str) => str.trim());
68
+ // Remove double characters
69
+ if (flags.includes('r')) steps.push((str) => str.replace(/(.)\1+/g, '$1'));
70
+ // Remove punctuation / special characters
71
+ if (flags.includes('s'))
72
+ steps.push((str) => str.replace(/[^\p{L}\p{N}\s]/gu, ''));
73
+ // Remove non-letter characters
74
+ if (flags.includes('k')) steps.push((str) => str.replace(/[^\p{L}]/gu, ''));
75
+ // Remove non-number characters
76
+ if (flags.includes('n')) steps.push((str) => str.replace(/\p{N}/gu, ''));
77
+ // Case insensitive
78
+ if (flags.includes('i')) steps.push((str) => str.toLowerCase());
79
+ // Build the normalization function from the steps
80
+ const compiled = (input) => {
81
+ let res = input;
82
+ for (const step of steps) res = step(res);
83
+ return res;
84
+ };
85
+ // Cache the compiled function for the given flags
86
+ Normalizer.pipeline.set(flags, compiled);
87
+ // Return the compiled normalization function
88
+ return compiled;
89
+ }
90
+ /**
91
+ * Normalizes the input string or array of strings based on the provided flags.
92
+ * The flags are a string of characters that define the normalization steps.
93
+ *
94
+ * @param {string|string[]} input - The string or array of strings to normalize
95
+ * @param {NormalizeFlags} flags - A string of characters representing the normalization steps
96
+ * @returns {string|string[]} - The normalized string(s)
97
+ */
98
+ static normalize(input, flags) {
99
+ // If input is an array, normalize each string in the array
100
+ if (Array.isArray(input))
101
+ return input.map((s) => Normalizer.normalize(s, flags));
102
+ // If input or flags are not provided, return the input as is
103
+ if (!flags || typeof flags !== 'string' || !input) return input;
104
+ // Generate a cache key based on the flags and input
105
+ const key = Normalizer.cache.key(flags, [input]);
106
+ // If the key exists in the cache, return the cached result
107
+ if (key && Normalizer.cache.has(key)) return Normalizer.cache.get(key);
108
+ // Normalize the input using the pipeline for the given flags
109
+ const res = Normalizer.getPipeline(flags)(input);
110
+ // If a key was generated, store the result in the cache
111
+ if (key) Normalizer.cache.set(key, res);
112
+ // Return the normalized result
113
+ return res;
114
+ }
115
+ /**
116
+ * Asynchronously normalizes the input string or array of strings based on the
117
+ * provided flags. This method is useful for handling large inputs or when
118
+ * normalization needs to be done in a non-blocking way.
119
+ *
120
+ * @param {string|string[]} input - The string or array of strings to normalize
121
+ * @param {NormalizeFlags} flags - A string of characters representing the normalization steps
122
+ * @returns {Promise<string|string[]>} - A promise that resolves to the normalized string(s)
123
+ */
124
+ static async normalizeAsync(input, flags) {
125
+ return await (Array.isArray(input)
126
+ ? // If input is an array, normalize each string in the array asynchronously
127
+ Promise.all(input.map((s) => Normalizer.normalize(s, flags)))
128
+ : // If input is a single string, normalize it asynchronously
129
+ Promise.resolve(Normalizer.normalize(input, flags)));
130
+ }
131
+ /**
132
+ * Clears the normalization pipeline and cache.
133
+ * This is useful for resetting the state of the Normalizer.
134
+ */
135
+ static clear() {
136
+ Normalizer.pipeline.clear();
137
+ Normalizer.cache.clear();
138
+ }
139
+ }
140
+
141
+ export { Normalizer };
142
+ //# sourceMappingURL=Normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Normalizer.js","sources":["../../../src/utils/Normalizer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}