cmpstr 3.0.1 → 3.0.2
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/README.md +7 -1
- package/dist/CmpStr.esm.js +242 -24
- 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 +242 -24
- 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 +2 -1
- package/dist/cjs/CmpStr.cjs.map +1 -1
- package/dist/cjs/CmpStrAsync.cjs +1 -1
- package/dist/cjs/CmpStrAsync.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/metric/Cosine.cjs +1 -1
- package/dist/cjs/metric/Cosine.cjs.map +1 -1
- package/dist/cjs/metric/DamerauLevenshtein.cjs +1 -1
- package/dist/cjs/metric/DamerauLevenshtein.cjs.map +1 -1
- package/dist/cjs/metric/DiceSorensen.cjs +1 -1
- 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 +1 -1
- package/dist/cjs/metric/Jaccard.cjs.map +1 -1
- package/dist/cjs/metric/JaroWinkler.cjs +1 -1
- package/dist/cjs/metric/JaroWinkler.cjs.map +1 -1
- package/dist/cjs/metric/LCS.cjs +1 -1
- package/dist/cjs/metric/LCS.cjs.map +1 -1
- package/dist/cjs/metric/Levenshtein.cjs +1 -1
- package/dist/cjs/metric/Levenshtein.cjs.map +1 -1
- package/dist/cjs/metric/Metric.cjs +5 -5
- package/dist/cjs/metric/Metric.cjs.map +1 -1
- package/dist/cjs/metric/NeedlemanWunsch.cjs +1 -1
- package/dist/cjs/metric/NeedlemanWunsch.cjs.map +1 -1
- package/dist/cjs/metric/SmithWaterman.cjs +1 -1
- package/dist/cjs/metric/SmithWaterman.cjs.map +1 -1
- package/dist/cjs/metric/qGram.cjs +1 -1
- package/dist/cjs/metric/qGram.cjs.map +1 -1
- package/dist/cjs/phonetic/Caverphone.cjs +199 -0
- package/dist/cjs/phonetic/Caverphone.cjs.map +1 -0
- package/dist/cjs/phonetic/Cologne.cjs +1 -1
- package/dist/cjs/phonetic/Cologne.cjs.map +1 -1
- package/dist/cjs/phonetic/Metaphone.cjs +1 -1
- package/dist/cjs/phonetic/Metaphone.cjs.map +1 -1
- package/dist/cjs/phonetic/Phonetic.cjs +50 -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/utils/DeepMerge.cjs +2 -2
- package/dist/cjs/utils/DeepMerge.cjs.map +1 -1
- package/dist/cjs/utils/DiffChecker.cjs +10 -10
- package/dist/cjs/utils/DiffChecker.cjs.map +1 -1
- package/dist/cjs/utils/Filter.cjs +1 -1
- package/dist/cjs/utils/Filter.cjs.map +1 -1
- package/dist/cjs/utils/HashTable.cjs +1 -1
- package/dist/cjs/utils/HashTable.cjs.map +1 -1
- package/dist/cjs/utils/Normalizer.cjs +1 -1
- package/dist/cjs/utils/Normalizer.cjs.map +1 -1
- package/dist/cjs/utils/Pool.cjs +1 -1
- package/dist/cjs/utils/Pool.cjs.map +1 -1
- package/dist/cjs/utils/Profiler.cjs +3 -3
- package/dist/cjs/utils/Profiler.cjs.map +1 -1
- package/dist/cjs/utils/Registry.cjs +7 -7
- package/dist/cjs/utils/Registry.cjs.map +1 -1
- package/dist/cjs/utils/TextAnalyzer.cjs +2 -2
- package/dist/cjs/utils/TextAnalyzer.cjs.map +1 -1
- package/dist/esm/{CmpStr.js → CmpStr.mjs} +26 -25
- package/dist/esm/CmpStr.mjs.map +1 -0
- package/dist/esm/{CmpStrAsync.js → CmpStrAsync.mjs} +6 -6
- package/dist/esm/CmpStrAsync.mjs.map +1 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/metric/{Cosine.js → Cosine.mjs} +4 -4
- package/dist/esm/metric/Cosine.mjs.map +1 -0
- package/dist/esm/metric/{DamerauLevenshtein.js → DamerauLevenshtein.mjs} +4 -4
- package/dist/esm/metric/DamerauLevenshtein.mjs.map +1 -0
- package/dist/esm/metric/{DiceSorensen.js → DiceSorensen.mjs} +4 -4
- package/dist/esm/metric/DiceSorensen.mjs.map +1 -0
- package/dist/esm/metric/{Hamming.js → Hamming.mjs} +4 -4
- package/dist/esm/metric/Hamming.mjs.map +1 -0
- package/dist/esm/metric/{Jaccard.js → Jaccard.mjs} +4 -4
- package/dist/esm/metric/Jaccard.mjs.map +1 -0
- package/dist/esm/metric/{JaroWinkler.js → JaroWinkler.mjs} +4 -4
- package/dist/esm/metric/JaroWinkler.mjs.map +1 -0
- package/dist/esm/metric/{LCS.js → LCS.mjs} +4 -4
- package/dist/esm/metric/LCS.mjs.map +1 -0
- package/dist/esm/metric/{Levenshtein.js → Levenshtein.mjs} +4 -4
- package/dist/esm/metric/Levenshtein.mjs.map +1 -0
- package/dist/esm/metric/{Metric.js → Metric.mjs} +9 -9
- package/dist/esm/metric/Metric.mjs.map +1 -0
- package/dist/esm/metric/{NeedlemanWunsch.js → NeedlemanWunsch.mjs} +4 -4
- package/dist/esm/metric/NeedlemanWunsch.mjs.map +1 -0
- package/dist/esm/metric/{SmithWaterman.js → SmithWaterman.mjs} +4 -4
- package/dist/esm/metric/SmithWaterman.mjs.map +1 -0
- package/dist/esm/metric/{qGram.js → qGram.mjs} +4 -4
- package/dist/esm/metric/qGram.mjs.map +1 -0
- package/dist/esm/phonetic/Caverphone.mjs +201 -0
- package/dist/esm/phonetic/Caverphone.mjs.map +1 -0
- package/dist/esm/phonetic/{Cologne.js → Cologne.mjs} +3 -3
- package/dist/esm/phonetic/Cologne.mjs.map +1 -0
- package/dist/esm/phonetic/{Metaphone.js → Metaphone.mjs} +3 -3
- package/dist/esm/phonetic/Metaphone.mjs.map +1 -0
- package/dist/esm/phonetic/{Phonetic.js → Phonetic.mjs} +52 -21
- package/dist/esm/phonetic/Phonetic.mjs.map +1 -0
- package/dist/esm/phonetic/{Soundex.js → Soundex.mjs} +3 -3
- package/dist/esm/phonetic/Soundex.mjs.map +1 -0
- package/dist/esm/utils/{DeepMerge.js → DeepMerge.mjs} +3 -3
- package/dist/esm/utils/DeepMerge.mjs.map +1 -0
- package/dist/esm/utils/{DiffChecker.js → DiffChecker.mjs} +11 -11
- package/dist/esm/utils/DiffChecker.mjs.map +1 -0
- package/dist/esm/utils/{Filter.js → Filter.mjs} +2 -2
- package/dist/esm/utils/Filter.mjs.map +1 -0
- package/dist/esm/utils/{HashTable.js → HashTable.mjs} +2 -2
- package/dist/esm/utils/HashTable.mjs.map +1 -0
- package/dist/esm/utils/{Normalizer.js → Normalizer.mjs} +3 -3
- package/dist/esm/utils/Normalizer.mjs.map +1 -0
- package/dist/esm/utils/{Pool.js → Pool.mjs} +2 -2
- package/dist/esm/utils/Pool.mjs.map +1 -0
- package/dist/esm/utils/{Profiler.js → Profiler.mjs} +4 -4
- package/dist/esm/utils/Profiler.mjs.map +1 -0
- package/dist/esm/utils/{Registry.js → Registry.mjs} +8 -8
- package/dist/esm/utils/Registry.mjs.map +1 -0
- package/dist/esm/utils/{TextAnalyzer.js → TextAnalyzer.mjs} +3 -3
- package/dist/esm/utils/TextAnalyzer.mjs.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/phonetic/Caverphone.d.ts +55 -0
- package/dist/types/phonetic/Phonetic.d.ts +14 -2
- package/dist/types/phonetic/index.d.ts +1 -0
- package/dist/types/utils/Types.d.ts +11 -0
- package/package.json +14 -12
- package/dist/esm/CmpStr.js.map +0 -1
- package/dist/esm/CmpStrAsync.js.map +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/metric/Cosine.js.map +0 -1
- package/dist/esm/metric/DamerauLevenshtein.js.map +0 -1
- package/dist/esm/metric/DiceSorensen.js.map +0 -1
- package/dist/esm/metric/Hamming.js.map +0 -1
- package/dist/esm/metric/Jaccard.js.map +0 -1
- package/dist/esm/metric/JaroWinkler.js.map +0 -1
- package/dist/esm/metric/LCS.js.map +0 -1
- package/dist/esm/metric/Levenshtein.js.map +0 -1
- package/dist/esm/metric/Metric.js.map +0 -1
- package/dist/esm/metric/NeedlemanWunsch.js.map +0 -1
- package/dist/esm/metric/SmithWaterman.js.map +0 -1
- package/dist/esm/metric/qGram.js.map +0 -1
- package/dist/esm/phonetic/Cologne.js.map +0 -1
- package/dist/esm/phonetic/Metaphone.js.map +0 -1
- package/dist/esm/phonetic/Phonetic.js.map +0 -1
- package/dist/esm/phonetic/Soundex.js.map +0 -1
- package/dist/esm/utils/DeepMerge.js.map +0 -1
- package/dist/esm/utils/DiffChecker.js.map +0 -1
- package/dist/esm/utils/Filter.js.map +0 -1
- package/dist/esm/utils/HashTable.js.map +0 -1
- package/dist/esm/utils/Normalizer.js.map +0 -1
- package/dist/esm/utils/Pool.js.map +0 -1
- package/dist/esm/utils/Profiler.js.map +0 -1
- package/dist/esm/utils/Registry.js.map +0 -1
- package/dist/esm/utils/TextAnalyzer.js.map +0 -1
package/dist/CmpStr.esm.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CmpStr v3.0.
|
|
2
|
+
* CmpStr v3.0.2 build-522ae69-250720
|
|
3
3
|
* This is a lightweight, fast and well performing library for calculating string similarity.
|
|
4
4
|
* (c) 2023-2025 Paul Köhler @komed3 / MIT License
|
|
5
5
|
* Visit https://github.com/komed3/cmpstr and https://npmjs.org/package/cmpstr
|
|
6
6
|
*/
|
|
7
|
-
const t=t=>t.replace(/\[(\d+)]/g,".$1").split(".").map((t=>/^\d+$/.test(t)?+t:t));function e(s,r,i){if(""===r)return i;const[n,...o]=t(r);if(void 0!==s&&("object"!=typeof s||null===s))throw Error(`cannot set property <${n}> of <${JSON.stringify(s)}>`);return Object.assign(s??("number"==typeof n?[]:Object.create(null)),{[n]:e(s?.[n],o.join("."),i)})}function s(t=Object.create(null),e=Object.create(null),r=!1){return Object.keys(e).forEach((i=>{const n=e[i];(r||void 0!==n)&&"__proto__"!==i&&"constructor"!==i&&(t[i]="object"!=typeof n||Array.isArray(n)?n:s("object"!=typeof t[i]||Array.isArray(t[i])?Object.create(null):t[i],n))})),t}class r{static ENV;static instance;store=new Set;totalTime=0;totalMem=0;active;static detectEnv(){"undefined"!=typeof process?r.ENV="nodejs":"undefined"!=typeof performance?r.ENV="browser":r.ENV="unknown"}static getInstance(t){return r.ENV||r.detectEnv(),r.instance||(r.instance=new r(t)),r.instance}constructor(t){this.active=t??!1}now(){switch(r.ENV){case"nodejs":return Number(process.hrtime.bigint())/1e6;case"browser":return performance.now();default:return Date.now()}}mem(){switch(r.ENV){case"nodejs":return process.memoryUsage().heapUsed;case"browser":return performance.memory?.usedJSHeapSize??0;default:return 0}}enable(){this.active=!0}disable(){this.active=!1}clear(){this.store.clear(),this.totalTime=0,this.totalMem=0}run(t,e={}){if(!this.active)return t();const s=this.now(),r=this.mem(),i=t(),n=this.now()-s,o=this.mem()-r;return this.store.add({time:n,mem:o,res:i,meta:e}),this.totalTime+=n,this.totalMem+=o,i}async runAsync(t,e={}){if(!this.active)return await t();const s=this.now(),r=this.mem(),i=await t(),n=this.now()-s,o=this.mem()-r;return this.store.add({time:n,mem:o,res:i,meta:e}),this.totalTime+=n,this.totalMem+=o,i}getAll(){return[...this.store]}getLast(){return this.getAll().pop()}getTotal(){return{time:this.totalTime,mem:this.totalMem}}services={enable:this.enable.bind(this),disable:this.disable.bind(this),clear:this.clear.bind(this),report:this.getAll.bind(this),last:this.getLast.bind(this),total:this.getTotal.bind(this)}}class i{text;words=[];sentences=[];charFrequency=new Map;wordHistogram=new Map;syllableCache=new Map;constructor(t){this.text=t.trim(),this.tokenize(),this.computeFrequencies()}tokenize(){this.words=[],this.sentences=[];const t=this.text,e=/\p{L}+/gu;let s;for(;null!==(s=e.exec(t));)this.words.push(s[0].toLowerCase());this.sentences=t.split(/(?<=[.!?])\s+/).filter(Boolean)}computeFrequencies(){for(const t of this.text)this.charFrequency.set(t,(this.charFrequency.get(t)??0)+1);for(const t of this.words)this.wordHistogram.set(t,(this.wordHistogram.get(t)??0)+1)}estimateSyllables(t){if(this.syllableCache.has(t))return this.syllableCache.get(t);const e=t.toLowerCase().replace(/[^a-zäöüß]/g,"").match(/[aeiouyäöü]+/g),s=e?e.length:1;return this.syllableCache.set(t,s),s}getLength(){return this.text.length}getWordCount(){return this.words.length}getSentenceCount(){return this.sentences.length}getAvgWordLength(){let t=0;for(const e of this.words)t+=e.length;return this.words.length?t/this.words.length:0}getAvgSentenceLength(){return this.sentences.length?this.words.length/this.sentences.length:0}getWordHistogram(){return Object.fromEntries(this.wordHistogram)}getMostCommonWords(t=5){return[...this.wordHistogram.entries()].sort(((t,e)=>e[1]-t[1])).slice(0,t).map((t=>t[0]))}getHapaxLegomena(){return[...this.wordHistogram.entries()].filter((([,t])=>1===t)).map((t=>t[0]))}hasNumbers(){return/\d/.test(this.text)}getUpperCaseRatio(){let t=0,e=0;for(let s=0,r=this.text.length;s<r;s++){const r=this.text[s];/[A-Za-zÄÖÜäöüß]/.test(r)&&(e++,/[A-ZÄÖÜ]/.test(r)&&t++)}return e?t/e:0}getCharFrequency(){return Object.fromEntries(this.charFrequency)}getUnicodeStats(){const t={};for(const[e,s]of this.charFrequency){const r=e.charCodeAt(0).toString(16).padStart(4,"0").toUpperCase();t[r]=(t[r]??0)+s}return t}getLongWordRatio(t=7){let e=0;for(const s of this.words)s.length>=t&&e++;return this.words.length?e/this.words.length:0}getShortWordRatio(t=3){let e=0;for(const s of this.words)s.length<=t&&e++;return this.words.length?e/this.words.length:0}getSyllablesCount(){let t=0;for(const e of this.words)t+=this.estimateSyllables(e);return t}getMonosyllabicWordCount(){let t=0;for(const e of this.words)1===this.estimateSyllables(e)&&t++;return t}getMinSyllablesWordCount(t){let e=0;for(const s of this.words)this.estimateSyllables(s)>=t&&e++;return e}getMaxSyllablesWordCount(t){let e=0;for(const s of this.words)this.estimateSyllables(s)<=t&&e++;return e}getHonoresR(){return 100*Math.log(this.words.length)/(1-this.getHapaxLegomena().length/(this.wordHistogram.size??1))}getReadingTime(t=200){return Math.max(1,this.words.length/(t??1))}getReadabilityScore(t="flesch"){const e=this.words.length||1,s=e/(this.sentences.length||1),r=(this.getSyllablesCount()||1)/e;switch(t){case"flesch":return 206.835-1.015*s-84.6*r;case"fleschde":return 180-s-58.5*r;case"kincaid":return.39*s+11.8*r-15.59}}getLIXScore(){const t=this.words.length||1;return t/(this.sentences.length||1)+this.getLongWordRatio()*t/t*100}getWSTFScore(){const t=this.words.length||1,e=this.getMinSyllablesWordCount(3)/t*100,s=this.getAvgSentenceLength(),r=100*this.getLongWordRatio();return[.1935*e+.1672*s+.1297*r-this.getMonosyllabicWordCount()/t*100*.0327-.875,.2007*e+.1682*s+.1373*r-2.779,.2963*e+.1905*s-1.1144,.2744*e+.2656*s-1.693]}}class n{a;b;options;entries=[];grouped=[];diffRun=!1;constructor(t,e,s={}){this.a=t,this.b=e,this.options={mode:"word",caseInsensitive:!1,contextLines:1,groupedLines:!0,expandLines:!1,showChangeMagnitude:!0,maxMagnitudeSymbols:5,lineBreak:"\n",...s},this.computeDiff()}text2lines(){const t=this.a.trim().split(/\r?\n/),e=this.b.trim().split(/\r?\n/);return{linesA:t,linesB:e,maxLen:Math.max(t.length,e.length)}}tokenize(t){const{mode:e}=this.options;switch(e){case"line":return[t];case"word":return t.split(/\s+/)}}concat(t){const{mode:e}=this.options;return t.join("word"===e?" ":"")}computeDiff(){if(!this.diffRun){const{linesA:t,linesB:e,maxLen:s}=this.text2lines();for(let r=0;r<s;r++){const s=t[r]||"",i=e[r]||"";this.lineDiff(s,i,r)}this.findGroups(),this.diffRun=!0}}lineDiff(t,e,s){const{mode:r,caseInsensitive:i}=this.options,n=Math.max(t.length,e.length);let o=t,a=e;i&&(o=t.toLowerCase(),a=e.toLowerCase());let c=[],h=0,l=0;if("line"===r)o!==a&&(c.push({posA:0,posB:0,del:t,ins:e,size:e.length-t.length}),h=t.length,l=e.length);else{c=this.preciseDiff(t,o,e,a);for(const t of c)h+=t.del.length,l+=t.ins.length}c.length&&this.entries.push({line:s,diffs:c,delSize:h,insSize:l,baseLen:n,totalSize:l-h,magnitude:this.magnitude(h,l,n)})}preciseDiff(t,e,s,r){const i=t=>t.reduce(((e,s,r)=>(e.push(r?e[r-1]+t[r-1].length+1:0),e)),[]),n=this.tokenize(t),o=this.tokenize(s),a=this.tokenize(e),c=this.tokenize(r),h=a.length,l=c.length,u=i(n),p=i(o),d=[];let m=0,g=0;for(;m<h&&g<l;)if(a[m]===c[g]){let t=1;for(;m+t<h&&g+t<l&&a[m+t]===c[g+t];)t++;d.push({ai:m,bi:g,len:t}),m+=t,g+=t}else{let t=!1;for(let e=1;e<=3&&!t;e++)m+e<h&&a[m+e]===c[g]?(d.push({ai:m+e,bi:g,len:1}),m+=e+1,g+=1,t=!0):g+e<l&&a[m]===c[g+e]&&(d.push({ai:m,bi:g+e,len:1}),m+=1,g+=e+1,t=!0);t||(m++,g++)}const f=[];let y=0,w=0;for(const t of d){if(y<t.ai||w<t.bi){const e=n.slice(y,t.ai),s=o.slice(w,t.bi);f.push({posA:u[y]??0,posB:p[w]??0,del:this.concat(e),ins:this.concat(s),size:s.join("").length-e.join("").length})}y=t.ai+t.len,w=t.bi+t.len}if(y<h||w<l){const t=n.slice(y),e=o.slice(w);f.push({posA:u[y]??0,posB:p[w]??0,del:this.concat(t),ins:this.concat(e),size:e.join("").length-t.join("").length})}return f.filter((t=>t.del.length>0||t.ins.length>0))}findGroups(){const{contextLines:t}=this.options,e=(t,e,s)=>{const[r,i,n,o]=["delSize","insSize","totalSize","baseLen"].map((e=>t.reduce(((t,s)=>t+s[e]),0)));this.grouped.push({start:e,end:s,delSize:r,insSize:i,totalSize:n,line:t[0].line,entries:t,magnitude:this.magnitude(r,i,o)})};let s=[],r=0,i=0;for(const n of this.entries){const o=Math.max(0,n.line-t),a=n.line+t;!s.length||o<=i+1?(s.length||(r=o),i=Math.max(i,a),s.push(n)):(e(s,r,i),s=[n],r=o,i=a)}s.length&&e(s,r,i)}magnitude(t,e,s){const{maxMagnitudeSymbols:r}=this.options,i=t+e;if(0===i||0===s)return"";const n=Math.min(r,Math.max(Math.round(i/s*r),1)),o=Math.round(e/i*n),a=n-o;return"+".repeat(o)+"-".repeat(a)}output(t){const{mode:e,contextLines:s,groupedLines:r,expandLines:i,showChangeMagnitude:n,lineBreak:o}=this.options,{linesA:a,linesB:c,maxLen:h}=this.text2lines(),l=Math.max(4,h.toString().length),u=(e,s)=>t?`[${s}m${e}[0m`:e,p=e=>t?`[37;42m${e}[32;49m`:`+[${e}]`,d=(t,e,s,r)=>{r&&m(r);for(let r=t;r<=e;r++)g(r,s??r);y.push("")},m=t=>{var e;y.push(`${" ".repeat(l)} ${e=`@@ -${t.line+1},${t.delSize} +${t.line+1},${t.insSize} @@`,u(e,"36")} ${n?(t=>u(t,"33"))(t.magnitude):""}`)},g=(t,e)=>{if(a[t]||c[t]){const r=this.entries.find((e=>e.line===t)),i=(t+1).toString().padStart(l," ");r&&e===t?(y.push(`${i} ${s=`- ${f(a[t],r.diffs,"del")}`,u(s,"31")}`),y.push(`${" ".repeat(l)} ${(t=>u(t,"32"))(`+ ${f(c[t],r.diffs,"ins")}`)}`)):y.push(`${i} ${(t=>u(t,"90"))(a[t])}`)}var s},f=(s,r,i)=>{if(!r.length||"line"===e)return s;let n="",o=0;for(const e of r){const r="del"===i?e.posA:e.posB,c="del"===i?e.del:e.ins;c&&(r>o&&(n+=s.slice(o,r)),n+="del"===i?(a=c,t?`[37;41m${a}[31;49m`:`-[${a}]`):p(c),o=r+c.length)}var a;return n+s.slice(o)};let y=[""];switch(!0){case i:d(0,h);break;case r:for(const t of this.grouped)d(t.start,t.end,void 0,t);break;default:for(const t of this.entries)d(t.line-s,t.line+s,t.line,t)}return y.join(o)}getStructuredDiff(){return this.entries}getGroupedDiff(){return this.grouped}getASCIIDiff(){return this.output(!1)}getCLIDiff(){return this.output(!0)}}class o{static FNV_PRIME=16777619;static HASH_OFFSET=2166136261;static fnv1a(t){const e=t.length;let s=this.HASH_OFFSET;const r=Math.floor(e/4);for(let e=0;e<r;e++){const r=4*e;s^=t.charCodeAt(r)|t.charCodeAt(r+1)<<8|t.charCodeAt(r+2)<<16|t.charCodeAt(r+3)<<24,s*=this.FNV_PRIME}const i=e%4;if(i>0){const e=4*r;for(let r=0;r<i;r++)s^=t.charCodeAt(e+r),s*=this.FNV_PRIME}return s^=s>>>16,s*=2246822507,s^=s>>>13,s*=3266489909,s^=s>>>16,s>>>0}}class a{static MAX_LEN=2048;static TABLE_SIZE=1e4;table=new Map;key(t,e,s=!1){for(const t of e)if(t.length>a.MAX_LEN)return!1;const r=e.map((t=>o.fnv1a(t)));return s&&r.sort(),[t,...r].join("-")}has(t){return this.table.has(t)}get(t){return this.table.get(t)}set(t,e,s=!0){return!(!(this.table.size<a.TABLE_SIZE)||!s&&this.table.has(t)||(this.table.set(t,e),0))}delete(t){this.table.delete(t)}clear(){this.table.clear()}size(){return this.table.size}}class c{static pipeline=new Map;static cache=new a;static getPipeline(t){if(c.pipeline.has(t))return c.pipeline.get(t);const e=[];t.includes("d")&&e.push((t=>t.normalize("NFD"))),t.includes("u")&&e.push((t=>t.normalize("NFC"))),t.includes("x")&&e.push((t=>t.normalize("NFKC"))),t.includes("w")&&e.push((t=>t.replace(/\s+/g," "))),t.includes("t")&&e.push((t=>t.trim())),t.includes("r")&&e.push((t=>t.replace(/(.)\1+/g,"$1"))),t.includes("s")&&e.push((t=>t.replace(/[^\p{L}\p{N}\s]/gu,""))),t.includes("k")&&e.push((t=>t.replace(/[^\p{L}]/gu,""))),t.includes("n")&&e.push((t=>t.replace(/\p{N}/gu,""))),t.includes("i")&&e.push((t=>t.toLowerCase()));const s=t=>{let s=t;for(const t of e)s=t(s);return s};return c.pipeline.set(t,s),s}static normalize(t,e){if(Array.isArray(t))return t.map((t=>c.normalize(t,e)));if(!e||"string"!=typeof e||!t)return t;const s=c.cache.key(e,[t]);if(s&&c.cache.has(s))return c.cache.get(s);const r=c.getPipeline(e)(t);return s&&c.cache.set(s,r),r}static async normalizeAsync(t,e){return await(Array.isArray(t)?Promise.all(t.map((t=>c.normalize(t,e)))):Promise.resolve(c.normalize(t,e)))}static clear(){c.pipeline.clear(),c.cache.clear()}}class h{static filters=new Map;static find(t,e){return h.filters.get(t)?.find((t=>t.id===e))}static add(t,e,s,r={}){const{priority:i=10,active:n=!0,overrideable:o=!0}=r,a=h.filters.get(t)??[],c=a.findIndex((t=>t.id===e));if(c>=0){if(!a[c].overrideable)return!1;a.splice(c,1)}return a.push({id:e,fn:s,priority:i,active:n,overrideable:o}),a.sort(((t,e)=>t.priority-e.priority)),h.filters.set(t,a),!0}static remove(t,e){const s=h.filters.get(t);if(!s)return!1;const r=s.findIndex((t=>t.id===e));return r>=0&&(s.splice(r,1),!0)}static pause(t,e){const s=h.find(t,e);return!!s&&(s.active=!1,!0)}static resume(t,e){const s=h.find(t,e);return!!s&&(s.active=!0,!0)}static list(t,e=!1){const s=h.filters.get(t)??[],r=[];for(const t of s)e&&!t.active||r.push(t.id);return r}static apply(t,e){const s=h.filters.get(t);if(!s||s.every((t=>!t.active)))return e;const r=t=>{for(const e of s)e.active&&(t=e.fn(t));return t};return Array.isArray(e)?e.map(r):r(e)}static async applyAsync(t,e){const s=h.filters.get(t);if(!s||s.every((t=>!t.active)))return e;const r=async t=>{for(const e of s)e.active&&(t=await Promise.resolve(e.fn(t)));return t};return Array.isArray(e)?Promise.all(e.map(r)):r(e)}static clear(t){t?h.filters.delete(t):h.filters.clear()}}const l=Object.create(null),u=Object.create(null);function p(t,e){if(t in l||t in u)throw new Error(`registry <${t}> already exists / overwriting is forbidden`);const s=Object.create(null),r={add(r,i,n=!1){if(!(i.prototype instanceof e))throw new TypeError(`class must extend <${t}>`);if(!n&&r in s)throw new Error(`entry <${r}> already exists / use <update=true> to overwrite`);s[r]=i},remove(t){delete s[t]},has:t=>t in s,list:()=>Object.keys(s),get(e){if(!(e in s))throw new Error(`class <${e}> not registered for <${t}>`);return s[e]}};return l[t]=r,u[t]=(e,...s)=>function(t,e,...s){e=function(t,e){if(!(t in l))throw new ReferenceError(`registry <${t}> does not exist`);return"string"==typeof e?l[t]?.get(e):e}(t,e);try{return new e(...s)}catch(t){throw new Error(`cannot instantiate class <${e}>`)}}(t,e,...s),r}const d=r.getInstance();class m{static cache=new a;metric;a;b;origA=[];origB=[];options;symmetric;results;static clear(){this.cache.clear()}static swap(t,e,s,r){return s>r?[e,t,r,s]:[t,e,s,r]}static clamp(t){return Math.max(0,Math.min(1,t))}constructor(t,e,s,r={},i=!1){if(this.metric=t,this.a=Array.isArray(e)?e:[e],this.b=Array.isArray(s)?s:[s],0===this.a.length||0===this.b.length)throw new Error("inputs <a> and <b> must not be empty");this.options=r,this.symmetric=i}preCompute(t,e,s,r){return t===e?{res:1}:0==s||0==r||s<2&&r<2?{res:0}:void 0}compute(t,e,s,r,i){throw new Error("method compute() must be overridden in a subclass")}runSingle(t,e){let s=String(this.a[t]),r=s,i=String(this.b[e]),n=i,o=r.length,a=n.length,c=this.preCompute(r,n,o,a);return c||(c=d.run((()=>{const t=m.cache.key(this.metric,[r,n],this.symmetric);return m.cache.get(t||"")??(()=>{this.symmetric&&([r,n,o,a]=m.swap(r,n,o,a));const e=this.compute(r,n,o,a,Math.max(o,a));return t&&m.cache.set(t,e),e})()}))),{metric:this.metric,a:this.origA[t]??s,b:this.origB[e]??i,...c}}async runSingleAsync(t,e){return Promise.resolve(this.runSingle(t,e))}runBatch(){const t=[];for(let e=0;e<this.a.length;e++)for(let s=0;s<this.b.length;s++)t.push(this.runSingle(e,s));this.results=t}async runBatchAsync(){const t=[];for(let e=0;e<this.a.length;e++)for(let s=0;s<this.b.length;s++)t.push(await this.runSingleAsync(e,s));this.results=t}runPairwise(){const t=[];for(let e=0;e<this.a.length;e++)t.push(this.runSingle(e,e));this.results=t}async runPairwiseAsync(){const t=[];for(let e=0;e<this.a.length;e++)t.push(await this.runSingleAsync(e,e));this.results=t}setOriginal(t,e){return t&&(this.origA=Array.isArray(t)?t:[t]),e&&(this.origB=Array.isArray(e)?e:[e]),this}isBatch(){return this.a.length>1||this.b.length>1}isSingle(){return!this.isBatch()}isPairwise(t=!1){return!(!this.isBatch()||this.a.length!==this.b.length)||!t&&(()=>{throw new Error("mode <pairwise> requires arrays of equal length")})()}isSymmetrical(){return this.symmetric}whichMode(t){return t??this.options?.mode??"default"}clear(){this.results=void 0}run(t,e=!0){switch(e&&this.clear(),this.whichMode(t)){case"default":if(this.isSingle()){this.results=this.runSingle(0,0);break}case"batch":this.runBatch();break;case"single":this.results=this.runSingle(0,0);break;case"pairwise":this.isPairwise()&&this.runPairwise();break;default:throw new Error(`unsupported mode <${t}>`)}}async runAsync(t,e=!0){switch(e&&this.clear(),this.whichMode(t)){case"default":if(this.isSingle()){this.results=await this.runSingleAsync(0,0);break}case"batch":await this.runBatchAsync();break;case"single":this.results=await this.runSingleAsync(0,0);break;case"pairwise":this.isPairwise()&&await this.runPairwiseAsync();break;default:throw new Error(`unsupported async mode <${t}>`)}}getMetricName(){return this.metric}getResults(){if(void 0===this.results)throw new Error("run() must be called before getResult()");return this.results}}const g=p("metric",m);class f{maxSize;buffers=[];pointer=0;constructor(t){this.maxSize=t}acquire(t,e){const s=this.buffers.length;for(let r=0;r<s;r++){const i=(this.pointer+r)%s,n=this.buffers[i];if(n.size>=t)return this.pointer=(i+1)%s,e||n.size===t?n:null}return null}release(t){this.buffers.length<this.maxSize?this.buffers.push(t):(this.buffers[this.pointer]=t,this.pointer=(this.pointer+1)%this.maxSize)}clear(){this.buffers=[],this.pointer=0}}class y{static CONFIG={uint16:{type:"uint16",maxSize:32,maxItemSize:2048,allowOversize:!0},"number[]":{type:"number[]",maxSize:16,maxItemSize:1024,allowOversize:!1},set:{type:"set",maxSize:8,maxItemSize:0,allowOversize:!1},map:{type:"map",maxSize:8,maxItemSize:0,allowOversize:!1}};static POOLS={uint16:new f(32),"number[]":new f(16),set:new f(8),map:new f(8)};static allocate(t,e){switch(t){case"uint16":return new Uint16Array(e);case"number[]":return new Array(e).fill(0);case"set":return new Set;case"map":return new Map}}static acquire(t,e){const s=this.CONFIG[t];if(e>s.maxItemSize)return this.allocate(t,e);const r=this.POOLS[t].acquire(e,s.allowOversize);return r?"uint16"===t?r.buffer.subarray(0,e):r.buffer:this.allocate(t,e)}static acquireMany(t,e){return e.map((e=>this.acquire(t,e)))}static release(t,e,s){s<=this.CONFIG[t].maxItemSize&&this.POOLS[t].release({buffer:e,size:s})}}g.add("cosine",class extends m{constructor(t,e,s={}){super("cosine",t,e,s,!0)}_termFreq(t,e){const s=t.split(e),r=y.acquire("map",s.length);for(const t of s)r.set(t,(r.get(t)||0)+1);return r}compute(t,e){const{delimiter:s=" "}=this.options,r=this._termFreq(t,s),i=this._termFreq(e,s);let n=0,o=0,a=0;for(const[t,e]of r)n+=e*(i.get(t)||0),o+=e*e;for(const t of i.values())a+=t*t;return o=Math.sqrt(o),a=Math.sqrt(a),y.release("map",r,r.size),y.release("map",i,i.size),{res:o&&a?m.clamp(n/(o*a)):0,raw:{dotProduct:n,magnitudeA:o,magnitudeB:a}}}}),g.add("damerau",class extends m{constructor(t,e,s={}){super("damerau",t,e,s,!0)}compute(t,e,s,r,i){const n=s+1,[o,a,c]=y.acquireMany("uint16",[n,n,n]);for(let t=0;t<=s;t++)a[t]=t;for(let i=1;i<=r;i++){c[0]=i;const r=e.charCodeAt(i-1);for(let n=1;n<=s;n++){const s=t.charCodeAt(n-1),h=s===r?0:1;let l=Math.min(c[n-1]+1,a[n]+1,a[n-1]+h);n>1&&i>1&&s===e.charCodeAt(i-2)&&r===t.charCodeAt(n-2)&&(l=Math.min(l,o[n-2]+h)),c[n]=l}o.set(a),a.set(c)}const h=a[s];return y.release("uint16",o,n),y.release("uint16",a,n),y.release("uint16",c,n),{res:0===i?1:m.clamp(1-h/i),raw:{dist:h,maxLen:i}}}}),g.add("dice",class extends m{constructor(t,e,s={}){super("dice",t,e,s,!0)}_bigrams(t){const e=t.length-1,s=y.acquire("set",e);for(let r=0;r<e;r++)s.add(t.substring(r,r+2));return s}compute(t,e){const s=this._bigrams(t),r=this._bigrams(e);let i=0;for(const t of s)r.has(t)&&i++;const n=s.size,o=r.size,a=n+o;return y.release("set",s,n),y.release("set",r,o),{res:0===a?1:m.clamp(2*i/a),raw:{intersection:i,size:a}}}}),g.add("hamming",class extends m{constructor(t,e,s={}){super("hamming",t,e,s,!0)}compute(t,e,s,r,i){if(s!==r){if(void 0===this.options.pad)throw new Error(`strings must be of equal length for Hamming Distance, a=${s} and b=${r} given, use option.pad for automatic adjustment`);s<i&&(t=t.padEnd(i,this.options.pad)),r<i&&(e=e.padEnd(i,this.options.pad)),s=r=i}let n=0;for(let s=0;s<t.length;s++)t[s]!==e[s]&&n++;return{res:0===s?1:m.clamp(1-n/s),raw:{dist:n}}}}),g.add("jaccard",class extends m{constructor(t,e,s={}){super("jaccard",t,e,s,!0)}compute(t,e,s,r){const[i,n]=y.acquireMany("set",[s,r]);for(const e of t)i.add(e);for(const t of e)n.add(t);let o=0;for(const t of i)n.has(t)&&o++;const a=i.size+n.size-o;return y.release("set",i,s),y.release("set",n,r),{res:0===a?1:m.clamp(o/a),raw:{intersection:o,union:a}}}}),g.add("jaroWinkler",class extends m{constructor(t,e,s={}){super("jaro-winkler",t,e,s,!0)}compute(t,e,s,r){const i=Math.max(0,Math.floor(r/2)-1),n=y.acquire("uint16",s),o=y.acquire("uint16",r);for(let t=0;t<s;t++)n[t]=0;for(let t=0;t<r;t++)o[t]=0;let a=0;for(let c=0;c<s;c++){const s=Math.max(0,c-i),h=Math.min(c+i+1,r);for(let r=s;r<h;r++)if(!o[r]&&t[c]===e[r]){n[c]=1,o[r]=1,a++;break}}let c=0,h=0,l=0,u=0;if(a>0){let i=0;for(let r=0;r<s;r++)if(n[r]){for(;!o[i];)i++;t[r]!==e[i]&&c++,i++}c/=2,h=(a/s+a/r+(a-c)/a)/3;for(let i=0;i<Math.min(4,s,r)&&t[i]===e[i];i++)l++;u=h+.1*l*(1-h)}return y.release("uint16",n,s),y.release("uint16",o,r),{res:m.clamp(u),raw:{matchWindow:i,matches:a,transpos:c,jaro:h,prefix:l}}}}),g.add("lcs",class extends m{constructor(t,e,s={}){super("lcs",t,e,s,!0)}compute(t,e,s,r,i){const n=s+1,[o,a]=y.acquireMany("uint16",[n,n]);for(let t=0;t<=s;t++)o[t]=0;for(let i=1;i<=r;i++){a[0]=0;const r=e.charCodeAt(i-1);for(let e=1;e<=s;e++)t.charCodeAt(e-1)===r?a[e]=o[e-1]+1:a[e]=Math.max(o[e],a[e-1]);o.set(a)}const c=o[s];return y.release("uint16",o,n),y.release("uint16",a,n),{res:0===i?1:m.clamp(c/i),raw:{lcs:c,maxLen:i}}}}),g.add("levenshtein",class extends m{constructor(t,e,s={}){super("levenshtein",t,e,s,!0)}compute(t,e,s,r,i){const n=s+1,[o,a]=y.acquireMany("uint16",[n,n]);for(let t=0;t<=s;t++)o[t]=t;for(let i=1;i<=r;i++){a[0]=i;const r=e.charCodeAt(i-1);for(let e=1;e<=s;e++){const s=t.charCodeAt(e-1)===r?0:1;a[e]=Math.min(a[e-1]+1,o[e]+1,o[e-1]+s)}o.set(a)}const c=o[s];return y.release("uint16",o,n),y.release("uint16",a,n),{res:0===i?1:m.clamp(1-c/i),raw:{dist:c,maxLen:i}}}}),g.add("needlemanWunsch",class extends m{constructor(t,e,s={}){super("needlemanWunsch",t,e,s,!0)}compute(t,e,s,r,i){const{match:n=1,mismatch:o=-1,gap:a=-1}=this.options,c=s+1,[h,l]=y.acquireMany("uint16",[c,c]);h[0]=0;for(let t=1;t<=s;t++)h[t]=h[t-1]+a;for(let i=1;i<=r;i++){l[0]=h[0]+a;const r=e.charCodeAt(i-1);for(let e=1;e<=s;e++){const s=t.charCodeAt(e-1)===r?n:o;l[e]=Math.max(h[e-1]+s,h[e]+a,l[e-1]+a)}h.set(l)}const u=h[s];y.release("uint16",h,c),y.release("uint16",l,c);const p=i*n;return{res:0===p?0:m.clamp(u/p),raw:{score:u,denum:p}}}}),g.add("qGram",class extends m{constructor(t,e,s={}){super("qgram",t,e,s,!0)}_qGrams(t,e){const s=Math.max(0,t.length-e+1),r=y.acquire("set",s);for(let i=0;i<s;i++)r.add(t.slice(i,i+e));return r}compute(t,e){const{q:s=2}=this.options,r=this._qGrams(t,s),i=this._qGrams(e,s);let n=0;for(const t of r)i.has(t)&&n++;const o=r.size,a=i.size,c=Math.max(o,a);return y.release("set",r,o),y.release("set",i,a),{res:0===c?1:m.clamp(n/c),raw:{intersection:n,size:c}}}}),g.add("smithWaterman",class extends m{constructor(t,e,s={}){super("smithWaterman",t,e,s,!0)}compute(t,e,s,r){const{match:i=2,mismatch:n=-1,gap:o=-2}=this.options,a=s+1,[c,h]=y.acquireMany("uint16",[a,a]);for(let t=0;t<=s;t++)c[t]=0;let l=0;for(let a=1;a<=r;a++){h[0]=0;const r=e.charCodeAt(a-1);for(let e=1;e<=s;e++){const s=t.charCodeAt(e-1)===r?i:n;h[e]=Math.max(0,c[e-1]+s,c[e]+o,h[e-1]+o),h[e]>l&&(l=h[e])}c.set(h)}y.release("uint16",c,a),y.release("uint16",h,a);const u=Math.min(s*i,r*i);return{res:0===u?0:m.clamp(l/u),raw:{score:l,denum:u}}}});const w=r.getInstance();class b{static cache=new a;static default;algo;options;map;static clear(){this.cache.clear()}constructor(t,e={}){this.options=s(this.constructor.default??{},e);const r=A.get(t,this.options.map);if(void 0===r)throw new Error(`requested mapping <${this.options.map}> is not declared`);this.algo=t,this.map=r}applyRules(t,e,s,r){const{ruleset:i=[]}=this.map;if(!i||!i.length)return;const n=s[e-1]||"",o=s[e-2]||"",a=s[e+1]||"",c=s[e+2]||"";for(const h of i)if((!h.char||h.char===t)&&("start"!==h.position||0===e)&&!("middle"===h.position&&e>0&&e<r)&&("end"!==h.position||e===r)&&(!h.prev||h.prev.includes(n))&&(!h.prevNot||!h.prevNot.includes(n))&&(!h.prev2||h.prev2.includes(o))&&(!h.prev2Not||!h.prev2Not.includes(o))&&(!h.next||h.next.includes(a))&&(!h.nextNot||!h.nextNot.includes(a))&&(!h.next2||h.next2.includes(c))&&(!h.next2Not||!h.next2Not.includes(c))&&(!h.leading||h.leading.includes(s.slice(0,h.leading.length).join("")))&&(!h.trailing||h.trailing.includes(s.slice(-h.trailing.length).join("")))&&(!h.match||h.match.every(((t,r)=>s[e+r]===t))))return h.code}encode(t){const{map:e={},ignore:s=[]}=this.map,r=this.word2Chars(t),i=r.length;let n="",o=null;for(let t=0;t<i;t++){const a=r[t];if(s.includes(a))continue;const c=this.mapChar(a,t,r,i,o,e);if(void 0!==c&&(n+=c,o=c,this.exitEarly(n,t)))break}return this.adjustCode(n,r)}mapChar(t,e,s,r,i,n){const{dedupe:o=!0}=this.options,a=this.applyRules(t,e,s,r)??n[t]??void 0;return o&&a===i?void 0:a}equalLen(t){const{length:e=-1,pad:s="0"}=this.options;return-1===e?t:(t+s.repeat(e)).slice(0,e)}word2Chars(t){return t.toLowerCase().split("")}exitEarly(t,e){const{length:s=-1}=this.options;return s>0&&t.length>=s}adjustCode(t,e){return t}loop(t){const e=[];for(const s of t){const t=b.cache.key(this.algo,[s]),r=b.cache.get(t||"")??(()=>{const e=this.encode(s);return t&&b.cache.set(t,e),e})();r&&r.length&&e.push(this.equalLen(r))}return e}async loopAsync(t){const e=[];for(const s of t){const t=await Promise.resolve(this.encode(s));t&&t.length&&e.push(this.equalLen(t))}return e}getAlgoName(){return this.algo}getIndex(t){const{delimiter:e=" "}=this.options;return w.run((()=>this.loop(t.split(e).filter(Boolean)).filter(Boolean)))}async getIndexAsync(t){const{delimiter:e=" "}=this.options;return(await w.runAsync((async()=>await this.loopAsync(t.split(e).filter(Boolean))))).filter(Boolean)}}const x=p("phonetic",b),A=(()=>{const t=Object.create(null),e=e=>t[e]||=Object.create(null);return{add(t,s,r,i=!1){const n=e(t);if(!i&&s in n)throw new Error(`entry <${s}> already exists / use <update=true> to overwrite`);n[s]=r},remove(t,s){delete e(t)[s]},has:(t,s)=>s in e(t),get:(t,s)=>e(t)[s],list:t=>Object.keys(e(t))}})();x.add("cologne",class extends b{static default={map:"default",delimiter:" ",length:-1,dedupe:!0};constructor(t={}){super("cologne",t)}adjustCode(t){return t.slice(0,1)+t.slice(1).replaceAll("0","")}}),A.add("cologne","default",{map:{a:"0","ä":"0",e:"0",i:"0",j:"0",o:"0","ö":"0",u:"0","ü":"0",y:"0",b:"1",p:"1",d:"2",t:"2",f:"3",v:"3",w:"3",g:"4",k:"4",q:"4",l:"5",m:"6",n:"6",r:"7",c:"8",s:"8","ß":"8",z:"8",x:"48"},ignore:["h"],ruleset:[{char:"p",next:["h"],code:"3"},{char:"c",position:"start",next:["a","h","k","l","o","q","r","u","x"],code:"4"},{char:"c",next:["a","h","k","o","q","u","x"],prevNot:["s","z"],code:"4"},{char:"d",next:["c","s","z"],code:"8"},{char:"t",next:["c","s","z"],code:"8"},{char:"x",prev:["c","k","q"],code:"8"}]}),x.add("metaphone",class extends b{static default={map:"en90",delimiter:" ",length:-1,pad:"",dedupe:!1};constructor(t={}){super("metaphone",t)}encode(t){return t=t.replace(/([A-BD-Z])\1+/gi,((t,e)=>"C"===e?t:e)),super.encode(t)}adjustCode(t){return t.slice(0,1)+t.slice(1).replace(/[AEIOU]/g,"")}}),A.add("metaphone","en90",{map:{a:"A",b:"B",c:"K",d:"T",e:"E",f:"F",g:"K",h:"H",i:"I",j:"J",k:"K",l:"L",m:"M",n:"N",o:"O",p:"P",q:"K",r:"R",s:"S",t:"T",u:"U",v:"F",w:"W",x:"KS",y:"Y",z:"S"},ruleset:[{char:"a",position:"start",next:["e"],code:""},{char:"g",position:"start",next:["n"],code:""},{char:"k",position:"start",next:["n"],code:""},{char:"p",position:"start",next:["n"],code:""},{char:"w",position:"start",next:["r"],code:""},{char:"b",position:"end",prev:["m"],code:""},{char:"c",next:["h"],prevNot:["s"],code:"X"},{char:"c",next:["i"],next2:["a"],code:"X"},{char:"c",next:["e","i","y"],code:"S"},{char:"d",next:["g"],next2:["e","i","y"],code:"J"},{char:"g",next:["h"],next2Not:["","a","e","i","o","u"],code:""},{char:"g",trailing:"n",code:""},{char:"g",trailing:"ned",code:""},{char:"g",next:["e","i","y"],prevNot:["g"],code:"J"},{char:"h",prev:["a","e","i","o","u"],nextNot:["a","e","i","o","u"],code:""},{char:"h",prev:["c","g","p","s","t"],code:""},{char:"k",prev:["c"],code:""},{char:"p",next:["h"],code:"F"},{char:"s",next:["h"],code:"X"},{char:"s",next:["i"],next2:["a","o"],code:"X"},{char:"t",next:["i"],next2:["a","o"],code:"X"},{char:"t",next:["h"],code:"0"},{char:"t",next:["c"],next2:["h"],code:""},{char:"w",nextNot:["a","e","i","o","u"],code:""},{char:"h",leading:"w",code:""},{char:"x",position:"start",code:"S"},{char:"y",nextNot:["a","e","i","o","u"],code:""}]}),x.add("soundex",class extends b{static default={map:"en",delimiter:" ",length:4,pad:"0",dedupe:!0};constructor(t={}){super("soundex",t)}adjustCode(t,e){return e[0].toUpperCase()+t.slice(1).replaceAll("0","")}}),A.add("soundex","en",{map:{a:"0",e:"0",h:"0",i:"0",o:"0",u:"0",w:"0",y:"0",b:"1",f:"1",p:"1",v:"1",c:"2",g:"2",j:"2",k:"2",q:"2",s:"2",x:"2",z:"2",d:"3",t:"3",l:"4",m:"5",n:"5",r:"6"}}),A.add("soundex","de",{map:{a:"0","ä":"0",e:"0",h:"0",i:"0",j:"0",o:"0","ö":"0",u:"0","ü":"0",y:"0",b:"1",f:"1",p:"1",v:"1",w:"1",c:"2",g:"2",k:"2",q:"2",s:"2","ß":"2",x:"2",z:"2",d:"3",t:"3",l:"4",m:"5",n:"5",r:"6"},ruleset:[{char:"c",next:["h"],code:"7"}]});const v=r.getInstance();class S{static filter={add:h.add,remove:h.remove,pause:h.pause,resume:h.resume,list:h.list,clear:h.clear};static metric={add:g.add,remove:g.remove,has:g.has,list:g.list};static phonetic={add:x.add,remove:x.remove,has:x.has,list:x.list,map:{add:A.add,remove:A.remove,has:A.has,list:A.list}};static profiler=v.services;static clearCache={normalizer:c.clear,metric:m.clear,phonetic:b.clear};static analyze(t){return new i(t)}static diff(t,e,s){return new n(t,e,s)}static create(t){return new S(t)}options=Object.create(null);constructor(t){t&&("string"==typeof t?this.setSerializedOptions(t):this.setOptions(t))}assert(t,e){switch(t){case"metric":if(!S.metric.has(e))throw new Error("CmpStr <metric> must be set, call .setMetric(), use CmpStr.metric.list() for available metrics");break;case"phonetic":if(!S.phonetic.has(e))throw new Error("CmpStr <phonetic> must be set, call .setPhonetic(), use CmpStr.phonetic.list() for available phonetic algorithms");break;default:throw new Error(`Cmpstr condition <${t}> unknown`)}}assertMany(...t){for(const[e,s]of t)this.assert(e,s)}resolveOptions(t){return s({...this.options??Object.create(null)},t)}normalize(t,e){return c.normalize(t,e??this.options.flags??"")}filter(t,e){return h.apply(e,t)}prepare(t,e){const{flags:s,processors:r}=e??this.options;return s?.length&&(t=this.normalize(t,s)),t=this.filter(t,"input"),r?.phonetic&&(t=this.index(t,r.phonetic)),t}postProcess(t,e){return e?.removeZero&&Array.isArray(t)&&(t=t.filter((t=>t.res>0))),t}index(t,{algo:e,opt:s}){this.assert("phonetic",e);const r=u.phonetic(e,s),i=s?.delimiter??" ";return Array.isArray(t)?t.map((t=>r.getIndex(t).join(i))):r.getIndex(t).join(i)}compute(t,e,s,r,i,n){const o=this.resolveOptions(s);this.assert("metric",o.metric);const a=n?t:this.prepare(t,o),c=n?e:this.prepare(e,o),h=u.metric(o.metric,a,c,o.opt);"prep"!==o.output&&h.setOriginal(t,e),h.run(r);const l=this.postProcess(h.getResults(),o);return this.output(l,i??o.raw)}output(t,e){return e??this.options.raw?t:Array.isArray(t)?t.map((t=>({source:t.a,target:t.b,match:t.res}))):{source:t.a,target:t.b,match:t.res}}clone(){return Object.assign(Object.create(Object.getPrototypeOf(this)),this)}reset(){for(const t in this.options)delete this.options[t];return this}setOptions(t){return this.options=t,this}mergeOptions(t){return s(this.options,t),this}setSerializedOptions(t){return this.options=JSON.parse(t),this}setOption(t,s){return e(this.options,t,s),this}rmvOption(e){return function(e,s,r=!1){const i=(t,e,s=0)=>{const n=e[s];if(!t||"object"!=typeof t)return!1;if(s===e.length-1)return delete t[n];if(!i(t[n],e,s+1))return!1;if(!r){const e=t[n];"object"==typeof e&&(Array.isArray(e)&&e.every((t=>null==t))||!Array.isArray(e)&&0===Object.keys(e).length)&&delete t[n]}return!0};i(e,t(s))}(this.options,e),this}setRaw(t){return this.setOption("raw",t)}setMetric(t){return this.setOption("metric",t)}setFlags(t){return this.setOption("flags",t)}rmvFlags(){return this.rmvOption("flags")}setProcessors(t){return this.setOption("processors",t)}rmvProcessors(){return this.rmvOption("processors")}getOptions(){return this.options}getSerializedOptions(){return JSON.stringify(this.options)}getOption(e){return function(e,s){return t(s).reduce(((t,e)=>t?.[e]??void 0),e)}(this.options,e)}test(t,e,s){return this.compute(t,e,s,"single")}compare(t,e,s){return this.compute(t,e,s,"single",!0).res}batchTest(t,e,s){return this.compute(t,e,s,"batch")}batchSorted(t,e,s="desc",r){return this.output(this.compute(t,e,r,"batch",!0).sort(((t,e)=>"asc"===s?t.res-e.res:e.res-t.res)),r?.raw??this.options.raw)}pairs(t,e,s){return this.compute(t,e,s,"pairwise")}match(t,e,s,r){return this.output(this.compute(t,e,r,"batch",!0).filter((t=>t.res>=s)).sort(((t,e)=>e.res-t.res)),r?.raw??this.options.raw)}closest(t,e,s=1,r){return this.batchSorted(t,e,"desc",r).slice(0,s)}furthest(t,e,s=1,r){return this.batchSorted(t,e,"asc",r).slice(0,s)}search(t,e,s,r){const i=this.resolveOptions({flags:s,processors:r}),n=this.prepare(t,i),o=this.prepare(e,i);return e.filter(((t,e)=>o[e].includes(n)))}matrix(t,e){return(t=this.prepare(t,this.resolveOptions(e))).map((e=>this.compute(e,t,void 0,"batch",!0,!0).map((t=>t.res??0))))}phoneticIndex(t,e,s){const{algo:r,opt:i}=this.options.processors?.phonetic??{};return this.index(t,{algo:e??r,opt:s??i})}}class z extends S{static create(t){return new z(t)}constructor(t){super(t)}async normalizeAsync(t,e){return c.normalizeAsync(t,e??this.options.flags??"")}async filterAsync(t,e){return h.applyAsync(e,t)}async prepareAsync(t,e){const{flags:s,processors:r}=e??this.options;return s?.length&&(t=await this.normalizeAsync(t,s)),t=await this.filterAsync(t,"input"),r?.phonetic&&(t=await this.indexAsync(t,r.phonetic)),t}async indexAsync(t,{algo:e,opt:s}){this.assert("phonetic",e);const r=u.phonetic(e,s),i=s?.delimiter??" ";return Array.isArray(t)?Promise.all(t.map((t=>r.getIndexAsync(t).then((t=>t.join(i)))))):r.getIndexAsync(t).then((t=>t.join(i)))}async computeAsync(t,e,s,r,i,n){const o=this.resolveOptions(s);this.assert("metric",o.metric);const a=n?t:await this.prepareAsync(t,o),c=n?e:await this.prepareAsync(e,o),h=u.metric(o.metric,a,c,o.opt);"prep"!==o.output&&h.setOriginal(t,e),await h.runAsync(r);const l=this.postProcess(h.getResults(),o);return this.output(l,i??o.raw)}async testAsync(t,e,s){return this.computeAsync(t,e,s,"single")}async compareAsync(t,e,s){return(await this.computeAsync(t,e,s,"single",!0)).res}async batchTestAsync(t,e,s){return this.computeAsync(t,e,s,"batch")}async batchSortedAsync(t,e,s="desc",r){const i=await this.computeAsync(t,e,r,"batch",!0);return this.output(i.sort(((t,e)=>"asc"===s?t.res-e.res:e.res-t.res)),r?.raw??this.options.raw)}async pairsAsync(t,e,s){return this.computeAsync(t,e,s,"pairwise")}async matchAsync(t,e,s,r){const i=await this.computeAsync(t,e,r,"batch",!0);return this.output(i.filter((t=>t.res>=s)).sort(((t,e)=>e.res-t.res)),r?.raw??this.options.raw)}async closestAsync(t,e,s=1,r){return(await this.batchSortedAsync(t,e,"desc",r)).slice(0,s)}async furthestAsync(t,e,s=1,r){return(await this.batchSortedAsync(t,e,"asc",r)).slice(0,s)}async searchAsync(t,e,s,r){const i=this.resolveOptions({flags:s,processors:r}),n=await this.prepareAsync(t,i),o=await this.prepareAsync(e,i);return e.filter(((t,e)=>o[e].includes(n)))}async matrixAsync(t,e){return t=await this.prepareAsync(t,this.resolveOptions(e)),Promise.all(t.map((async e=>await this.computeAsync(e,t,void 0,"batch",!0,!0).then((t=>t.map((t=>t.res??0)))))))}async phoneticIndexAsync(t,e,s){const{algo:r,opt:i}=this.options.processors?.phonetic??{};return this.indexAsync(t,{algo:e??r,opt:s??i})}}export{S as CmpStr,z as CmpStrAsync,n as DiffChecker,c as Normalizer,i as TextAnalyzer};
|
|
7
|
+
const e=e=>e.replace(/\[(\d+)]/g,".$1").split(".").map(e=>/^\d+$/.test(e)?+e:e);function t(r,s,n){if(""===s)return n;const[i,...a]=e(s);if(void 0!==r&&("object"!=typeof r||null===r))throw Error(`Cannot set property <${i}> of <${JSON.stringify(r)}>`);return Object.assign(r??("number"==typeof i?[]:Object.create(null)),{[i]:t(r?.[i],a.join("."),n)})}function r(e=Object.create(null),t=Object.create(null),s=!1){return Object.keys(t).forEach(n=>{const i=t[n];(s||void 0!==i)&&"__proto__"!==n&&"constructor"!==n&&(e[n]="object"!=typeof i||Array.isArray(i)?i:r("object"!=typeof e[n]||Array.isArray(e[n])?Object.create(null):e[n],i))}),e}class s{static ENV;static instance;store=new Set;totalTime=0;totalMem=0;active;static detectEnv(){"undefined"!=typeof process?s.ENV="nodejs":"undefined"!=typeof performance?s.ENV="browser":s.ENV="unknown"}static getInstance(e){return s.ENV||s.detectEnv(),s.instance||(s.instance=new s(e)),s.instance}constructor(e){this.active=e??!1}now(){switch(s.ENV){case"nodejs":return Number(process.hrtime.bigint())/1e6;case"browser":return performance.now();default:return Date.now()}}mem(){switch(s.ENV){case"nodejs":return process.memoryUsage().heapUsed;case"browser":return performance.memory?.usedJSHeapSize??0;default:return 0}}enable(){this.active=!0}disable(){this.active=!1}clear(){this.store.clear(),this.totalTime=0,this.totalMem=0}run(e,t={}){if(!this.active)return e();const r=this.now(),s=this.mem(),n=e(),i=this.now()-r,a=this.mem()-s;return this.store.add({time:i,mem:a,res:n,meta:t}),this.totalTime+=i,this.totalMem+=a,n}async runAsync(e,t={}){if(!this.active)return await e();const r=this.now(),s=this.mem(),n=await e(),i=this.now()-r,a=this.mem()-s;return this.store.add({time:i,mem:a,res:n,meta:t}),this.totalTime+=i,this.totalMem+=a,n}getAll(){return[...this.store]}getLast(){return this.getAll().pop()}getTotal(){return{time:this.totalTime,mem:this.totalMem}}services={enable:this.enable.bind(this),disable:this.disable.bind(this),clear:this.clear.bind(this),report:this.getAll.bind(this),last:this.getLast.bind(this),total:this.getTotal.bind(this)}}class n{text;words=[];sentences=[];charFrequency=new Map;wordHistogram=new Map;syllableCache=new Map;constructor(e){this.text=e.trim(),this.tokenize(),this.computeFrequencies()}tokenize(){this.words=[],this.sentences=[];const e=this.text,t=/\p{L}+/gu;let r;for(;null!==(r=t.exec(e));)this.words.push(r[0].toLowerCase());this.sentences=e.split(/(?<=[.!?])\s+/).filter(Boolean)}computeFrequencies(){for(const e of this.text)this.charFrequency.set(e,(this.charFrequency.get(e)??0)+1);for(const e of this.words)this.wordHistogram.set(e,(this.wordHistogram.get(e)??0)+1)}estimateSyllables(e){if(this.syllableCache.has(e))return this.syllableCache.get(e);const t=e.toLowerCase().replace(/[^a-zäöüß]/g,"").match(/[aeiouyäöü]+/g),r=t?t.length:1;return this.syllableCache.set(e,r),r}getLength(){return this.text.length}getWordCount(){return this.words.length}getSentenceCount(){return this.sentences.length}getAvgWordLength(){let e=0;for(const t of this.words)e+=t.length;return this.words.length?e/this.words.length:0}getAvgSentenceLength(){return this.sentences.length?this.words.length/this.sentences.length:0}getWordHistogram(){return Object.fromEntries(this.wordHistogram)}getMostCommonWords(e=5){return[...this.wordHistogram.entries()].sort((e,t)=>t[1]-e[1]).slice(0,e).map(e=>e[0])}getHapaxLegomena(){return[...this.wordHistogram.entries()].filter(([,e])=>1===e).map(e=>e[0])}hasNumbers(){return/\d/.test(this.text)}getUpperCaseRatio(){let e=0,t=0;for(let r=0,s=this.text.length;r<s;r++){const s=this.text[r];/[A-Za-zÄÖÜäöüß]/.test(s)&&(t++,/[A-ZÄÖÜ]/.test(s)&&e++)}return t?e/t:0}getCharFrequency(){return Object.fromEntries(this.charFrequency)}getUnicodeStats(){const e={};for(const[t,r]of this.charFrequency){const s=t.charCodeAt(0).toString(16).padStart(4,"0").toUpperCase();e[s]=(e[s]??0)+r}return e}getLongWordRatio(e=7){let t=0;for(const r of this.words)r.length>=e&&t++;return this.words.length?t/this.words.length:0}getShortWordRatio(e=3){let t=0;for(const r of this.words)r.length<=e&&t++;return this.words.length?t/this.words.length:0}getSyllablesCount(){let e=0;for(const t of this.words)e+=this.estimateSyllables(t);return e}getMonosyllabicWordCount(){let e=0;for(const t of this.words)1===this.estimateSyllables(t)&&e++;return e}getMinSyllablesWordCount(e){let t=0;for(const r of this.words)this.estimateSyllables(r)>=e&&t++;return t}getMaxSyllablesWordCount(e){let t=0;for(const r of this.words)this.estimateSyllables(r)<=e&&t++;return t}getHonoresR(){return 100*Math.log(this.words.length)/(1-this.getHapaxLegomena().length/(this.wordHistogram.size??1))}getReadingTime(e=200){return Math.max(1,this.words.length/(e??1))}getReadabilityScore(e="flesch"){const t=this.words.length||1,r=t/(this.sentences.length||1),s=(this.getSyllablesCount()||1)/t;switch(e){case"flesch":return 206.835-1.015*r-84.6*s;case"fleschde":return 180-r-58.5*s;case"kincaid":return.39*r+11.8*s-15.59}}getLIXScore(){const e=this.words.length||1;return e/(this.sentences.length||1)+this.getLongWordRatio()*e/e*100}getWSTFScore(){const e=this.words.length||1,t=this.getMinSyllablesWordCount(3)/e*100,r=this.getAvgSentenceLength(),s=100*this.getLongWordRatio();return[.1935*t+.1672*r+.1297*s-this.getMonosyllabicWordCount()/e*100*.0327-.875,.2007*t+.1682*r+.1373*s-2.779,.2963*t+.1905*r-1.1144,.2744*t+.2656*r-1.693]}}class i{a;b;options;entries=[];grouped=[];diffRun=!1;constructor(e,t,r={}){this.a=e,this.b=t,this.options={mode:"word",caseInsensitive:!1,contextLines:1,groupedLines:!0,expandLines:!1,showChangeMagnitude:!0,maxMagnitudeSymbols:5,lineBreak:"\n",...r},this.computeDiff()}text2lines(){const e=this.a.trim().split(/\r?\n/),t=this.b.trim().split(/\r?\n/);return{linesA:e,linesB:t,maxLen:Math.max(e.length,t.length)}}tokenize(e){const{mode:t}=this.options;switch(t){case"line":return[e];case"word":return e.split(/\s+/)}}concat(e){const{mode:t}=this.options;return e.join("word"===t?" ":"")}computeDiff(){if(!this.diffRun){const{linesA:e,linesB:t,maxLen:r}=this.text2lines();for(let s=0;s<r;s++){const r=e[s]||"",n=t[s]||"";this.lineDiff(r,n,s)}this.findGroups(),this.diffRun=!0}}lineDiff(e,t,r){const{mode:s,caseInsensitive:n}=this.options,i=Math.max(e.length,t.length);let a=e,o=t;n&&(a=e.toLowerCase(),o=t.toLowerCase());let c=[],l=0,h=0;if("line"===s)a!==o&&(c.push({posA:0,posB:0,del:e,ins:t,size:t.length-e.length}),l=e.length,h=t.length);else{c=this.preciseDiff(e,a,t,o);for(const e of c)l+=e.del.length,h+=e.ins.length}c.length&&this.entries.push({line:r,diffs:c,delSize:l,insSize:h,baseLen:i,totalSize:h-l,magnitude:this.magnitude(l,h,i)})}preciseDiff(e,t,r,s){const n=e=>e.reduce((t,r,s)=>(t.push(s?t[s-1]+e[s-1].length+1:0),t),[]),i=this.tokenize(e),a=this.tokenize(r),o=this.tokenize(t),c=this.tokenize(s),l=o.length,h=c.length,p=n(i),u=n(a),d=[];let g=0,m=0;for(;g<l&&m<h;)if(o[g]===c[m]){let e=1;for(;g+e<l&&m+e<h&&o[g+e]===c[m+e];)e++;d.push({ai:g,bi:m,len:e}),g+=e,m+=e}else{let e=!1;for(let t=1;t<=3&&!e;t++)g+t<l&&o[g+t]===c[m]?(d.push({ai:g+t,bi:m,len:1}),g+=t+1,m+=1,e=!0):m+t<h&&o[g]===c[m+t]&&(d.push({ai:g,bi:m+t,len:1}),g+=1,m+=t+1,e=!0);e||(g++,m++)}const f=[];let y=0,w=0;for(const e of d){if(y<e.ai||w<e.bi){const t=i.slice(y,e.ai),r=a.slice(w,e.bi);f.push({posA:p[y]??0,posB:u[w]??0,del:this.concat(t),ins:this.concat(r),size:r.join("").length-t.join("").length})}y=e.ai+e.len,w=e.bi+e.len}if(y<l||w<h){const e=i.slice(y),t=a.slice(w);f.push({posA:p[y]??0,posB:u[w]??0,del:this.concat(e),ins:this.concat(t),size:t.join("").length-e.join("").length})}return f.filter(e=>e.del.length>0||e.ins.length>0)}findGroups(){const{contextLines:e}=this.options,t=(e,t,r)=>{const[s,n,i,a]=["delSize","insSize","totalSize","baseLen"].map(t=>e.reduce((e,r)=>e+r[t],0));this.grouped.push({start:t,end:r,delSize:s,insSize:n,totalSize:i,line:e[0].line,entries:e,magnitude:this.magnitude(s,n,a)})};let r=[],s=0,n=0;for(const i of this.entries){const a=Math.max(0,i.line-e),o=i.line+e;!r.length||a<=n+1?(r.length||(s=a),n=Math.max(n,o),r.push(i)):(t(r,s,n),r=[i],s=a,n=o)}r.length&&t(r,s,n)}magnitude(e,t,r){const{maxMagnitudeSymbols:s}=this.options,n=e+t;if(0===n||0===r)return"";const i=Math.min(s,Math.max(Math.round(n/r*s),1)),a=Math.round(t/n*i),o=i-a;return"+".repeat(a)+"-".repeat(o)}output(e){const{mode:t,contextLines:r,groupedLines:s,expandLines:n,showChangeMagnitude:i,lineBreak:a}=this.options,{linesA:o,linesB:c,maxLen:l}=this.text2lines(),h=Math.max(4,l.toString().length),p=(t,r)=>e?`[${r}m${t}[0m`:t,u=t=>e?`[37;41m${t}[31;49m`:`-[${t}]`,d=t=>e?`[37;42m${t}[32;49m`:`+[${t}]`,g=(e,t,r,s)=>{s&&m(s);for(let s=e;s<=t;s++)f(s,r??s);w.push("")},m=e=>{var t;w.push(`${" ".repeat(h)} ${t=`@@ -${e.line+1},${e.delSize} +${e.line+1},${e.insSize} @@`,p(t,"36")} ${i?(e=>p(e,"33"))(e.magnitude):""}`)},f=(e,t)=>{if(o[e]||c[e]){const s=this.entries.find(t=>t.line===e),n=(e+1).toString().padStart(h," ");s&&t===e?(w.push(`${n} ${r=`- ${y(o[e],s.diffs,"del")}`,p(r,"31")}`),w.push(`${" ".repeat(h)} ${(e=>p(e,"32"))(`+ ${y(c[e],s.diffs,"ins")}`)}`)):w.push(`${n} ${(e=>p(e,"90"))(o[e])}`)}var r},y=(e,r,s)=>{if(!r.length||"line"===t)return e;let n="",i=0;for(const t of r){const r="del"===s?t.posA:t.posB,a="del"===s?t.del:t.ins;a&&(r>i&&(n+=e.slice(i,r)),n+="del"===s?u(a):d(a),i=r+a.length)}return n+e.slice(i)};let w=[""];switch(!0){case n:g(0,l);break;case s:for(const e of this.grouped)g(e.start,e.end,void 0,e);break;default:for(const e of this.entries)g(e.line-r,e.line+r,e.line,e)}return w.join(a)}getStructuredDiff(){return this.entries}getGroupedDiff(){return this.grouped}getASCIIDiff(){return this.output(!1)}getCLIDiff(){return this.output(!0)}}class a{static FNV_PRIME=16777619;static HASH_OFFSET=2166136261;static fnv1a(e){const t=e.length;let r=this.HASH_OFFSET;const s=Math.floor(t/4);for(let t=0;t<s;t++){const s=4*t;r^=e.charCodeAt(s)|e.charCodeAt(s+1)<<8|e.charCodeAt(s+2)<<16|e.charCodeAt(s+3)<<24,r*=this.FNV_PRIME}const n=t%4;if(n>0){const t=4*s;for(let s=0;s<n;s++)r^=e.charCodeAt(t+s),r*=this.FNV_PRIME}return r^=r>>>16,r*=2246822507,r^=r>>>13,r*=3266489909,r^=r>>>16,r>>>0}}class o{static MAX_LEN=2048;static TABLE_SIZE=1e4;table=new Map;key(e,t,r=!1){for(const e of t)if(e.length>o.MAX_LEN)return!1;const s=t.map(e=>a.fnv1a(e));return r&&s.sort(),[e,...s].join("-")}has(e){return this.table.has(e)}get(e){return this.table.get(e)}set(e,t,r=!0){return!(!(this.table.size<o.TABLE_SIZE)||!r&&this.table.has(e)||(this.table.set(e,t),0))}delete(e){this.table.delete(e)}clear(){this.table.clear()}size(){return this.table.size}}class c{static pipeline=new Map;static cache=new o;static getPipeline(e){if(c.pipeline.has(e))return c.pipeline.get(e);const t=[];e.includes("d")&&t.push(e=>e.normalize("NFD")),e.includes("u")&&t.push(e=>e.normalize("NFC")),e.includes("x")&&t.push(e=>e.normalize("NFKC")),e.includes("w")&&t.push(e=>e.replace(/\s+/g," ")),e.includes("t")&&t.push(e=>e.trim()),e.includes("r")&&t.push(e=>e.replace(/(.)\1+/g,"$1")),e.includes("s")&&t.push(e=>e.replace(/[^\p{L}\p{N}\s]/gu,"")),e.includes("k")&&t.push(e=>e.replace(/[^\p{L}]/gu,"")),e.includes("n")&&t.push(e=>e.replace(/\p{N}/gu,"")),e.includes("i")&&t.push(e=>e.toLowerCase());const r=e=>{let r=e;for(const e of t)r=e(r);return r};return c.pipeline.set(e,r),r}static normalize(e,t){if(Array.isArray(e))return e.map(e=>c.normalize(e,t));if(!t||"string"!=typeof t||!e)return e;const r=c.cache.key(t,[e]);if(r&&c.cache.has(r))return c.cache.get(r);const s=c.getPipeline(t)(e);return r&&c.cache.set(r,s),s}static async normalizeAsync(e,t){return await(Array.isArray(e)?Promise.all(e.map(e=>c.normalize(e,t))):Promise.resolve(c.normalize(e,t)))}static clear(){c.pipeline.clear(),c.cache.clear()}}class l{static filters=new Map;static find(e,t){return l.filters.get(e)?.find(e=>e.id===t)}static add(e,t,r,s={}){const{priority:n=10,active:i=!0,overrideable:a=!0}=s,o=l.filters.get(e)??[],c=o.findIndex(e=>e.id===t);if(c>=0){if(!o[c].overrideable)return!1;o.splice(c,1)}return o.push({id:t,fn:r,priority:n,active:i,overrideable:a}),o.sort((e,t)=>e.priority-t.priority),l.filters.set(e,o),!0}static remove(e,t){const r=l.filters.get(e);if(!r)return!1;const s=r.findIndex(e=>e.id===t);return s>=0&&(r.splice(s,1),!0)}static pause(e,t){const r=l.find(e,t);return!!r&&(r.active=!1,!0)}static resume(e,t){const r=l.find(e,t);return!!r&&(r.active=!0,!0)}static list(e,t=!1){const r=l.filters.get(e)??[],s=[];for(const e of r)t&&!e.active||s.push(e.id);return s}static apply(e,t){const r=l.filters.get(e);if(!r||r.every(e=>!e.active))return t;const s=e=>{for(const t of r)t.active&&(e=t.fn(e));return e};return Array.isArray(t)?t.map(s):s(t)}static async applyAsync(e,t){const r=l.filters.get(e);if(!r||r.every(e=>!e.active))return t;const s=async e=>{for(const t of r)t.active&&(e=await Promise.resolve(t.fn(e)));return e};return Array.isArray(t)?Promise.all(t.map(s)):s(t)}static clear(e){e?l.filters.delete(e):l.filters.clear()}}const h=Object.create(null),p=Object.create(null);function u(e,t){if(e in h||e in p)throw new Error(`Registry <${e}> already exists / overwriting is forbidden`);const r=Object.create(null),s={add(s,n,i=!1){if(!(n.prototype instanceof t))throw new TypeError(`Class must extend <${e}>`);if(!i&&s in r)throw new Error(`Entry <${s}> already exists / use <update=true> to overwrite`);r[s]=n},remove(e){delete r[e]},has:e=>e in r,list:()=>Object.keys(r),get(t){if(!(t in r))throw new Error(`Class <${t}> not registered for <${e}>`);return r[t]}};return h[e]=s,p[e]=(t,...r)=>function(e,t,...r){t=function(e,t){if(!(e in h))throw new ReferenceError(`Registry <${e}> does not exist`);return"string"==typeof t?h[e]?.get(t):t}(e,t);try{return new t(...r)}catch(e){throw new Error(`Cannot instantiate class <${t}>`)}}(e,t,...r),s}const d=s.getInstance();class g{static cache=new o;metric;a;b;origA=[];origB=[];options;symmetric;results;static clear(){this.cache.clear()}static swap(e,t,r,s){return r>s?[t,e,s,r]:[e,t,r,s]}static clamp(e){return Math.max(0,Math.min(1,e))}constructor(e,t,r,s={},n=!1){if(this.metric=e,this.a=Array.isArray(t)?t:[t],this.b=Array.isArray(r)?r:[r],0===this.a.length||0===this.b.length)throw new Error("inputs <a> and <b> must not be empty");this.options=s,this.symmetric=n}preCompute(e,t,r,s){return e===t?{res:1}:0==r||0==s||r<2&&s<2?{res:0}:void 0}compute(e,t,r,s,n){throw new Error("Method compute() must be overridden in a subclass")}runSingle(e,t){let r=String(this.a[e]),s=r,n=String(this.b[t]),i=n,a=s.length,o=i.length,c=this.preCompute(s,i,a,o);return c||(c=d.run(()=>{const e=g.cache.key(this.metric,[s,i],this.symmetric);return g.cache.get(e||"")??(()=>{this.symmetric&&([s,i,a,o]=g.swap(s,i,a,o));const t=this.compute(s,i,a,o,Math.max(a,o));return e&&g.cache.set(e,t),t})()})),{metric:this.metric,a:this.origA[e]??r,b:this.origB[t]??n,...c}}async runSingleAsync(e,t){return Promise.resolve(this.runSingle(e,t))}runBatch(){const e=[];for(let t=0;t<this.a.length;t++)for(let r=0;r<this.b.length;r++)e.push(this.runSingle(t,r));this.results=e}async runBatchAsync(){const e=[];for(let t=0;t<this.a.length;t++)for(let r=0;r<this.b.length;r++)e.push(await this.runSingleAsync(t,r));this.results=e}runPairwise(){const e=[];for(let t=0;t<this.a.length;t++)e.push(this.runSingle(t,t));this.results=e}async runPairwiseAsync(){const e=[];for(let t=0;t<this.a.length;t++)e.push(await this.runSingleAsync(t,t));this.results=e}setOriginal(e,t){return e&&(this.origA=Array.isArray(e)?e:[e]),t&&(this.origB=Array.isArray(t)?t:[t]),this}isBatch(){return this.a.length>1||this.b.length>1}isSingle(){return!this.isBatch()}isPairwise(e=!1){return!(!this.isBatch()||this.a.length!==this.b.length)||!e&&(()=>{throw new Error("Mode <pairwise> requires arrays of equal length")})()}isSymmetrical(){return this.symmetric}whichMode(e){return e??this.options?.mode??"default"}clear(){this.results=void 0}run(e,t=!0){switch(t&&this.clear(),this.whichMode(e)){case"default":if(this.isSingle()){this.results=this.runSingle(0,0);break}case"batch":this.runBatch();break;case"single":this.results=this.runSingle(0,0);break;case"pairwise":this.isPairwise()&&this.runPairwise();break;default:throw new Error(`Unsupported mode <${e}>`)}}async runAsync(e,t=!0){switch(t&&this.clear(),this.whichMode(e)){case"default":if(this.isSingle()){this.results=await this.runSingleAsync(0,0);break}case"batch":await this.runBatchAsync();break;case"single":this.results=await this.runSingleAsync(0,0);break;case"pairwise":this.isPairwise()&&await this.runPairwiseAsync();break;default:throw new Error(`Unsupported async mode <${e}>`)}}getMetricName(){return this.metric}getResults(){if(void 0===this.results)throw new Error("run() must be called before getResult()");return this.results}}const m=u("metric",g);class f{maxSize;buffers=[];pointer=0;constructor(e){this.maxSize=e}acquire(e,t){const r=this.buffers.length;for(let s=0;s<r;s++){const n=(this.pointer+s)%r,i=this.buffers[n];if(i.size>=e)return this.pointer=(n+1)%r,t||i.size===e?i:null}return null}release(e){this.buffers.length<this.maxSize?this.buffers.push(e):(this.buffers[this.pointer]=e,this.pointer=(this.pointer+1)%this.maxSize)}clear(){this.buffers=[],this.pointer=0}}class y{static CONFIG={uint16:{type:"uint16",maxSize:32,maxItemSize:2048,allowOversize:!0},"number[]":{type:"number[]",maxSize:16,maxItemSize:1024,allowOversize:!1},set:{type:"set",maxSize:8,maxItemSize:0,allowOversize:!1},map:{type:"map",maxSize:8,maxItemSize:0,allowOversize:!1}};static POOLS={uint16:new f(32),"number[]":new f(16),set:new f(8),map:new f(8)};static allocate(e,t){switch(e){case"uint16":return new Uint16Array(t);case"number[]":return new Array(t).fill(0);case"set":return new Set;case"map":return new Map}}static acquire(e,t){const r=this.CONFIG[e];if(t>r.maxItemSize)return this.allocate(e,t);const s=this.POOLS[e].acquire(t,r.allowOversize);return s?"uint16"===e?s.buffer.subarray(0,t):s.buffer:this.allocate(e,t)}static acquireMany(e,t){return t.map(t=>this.acquire(e,t))}static release(e,t,r){r<=this.CONFIG[e].maxItemSize&&this.POOLS[e].release({buffer:t,size:r})}}m.add("cosine",class extends g{constructor(e,t,r={}){super("cosine",e,t,r,!0)}_termFreq(e,t){const r=e.split(t),s=y.acquire("map",r.length);for(const e of r)s.set(e,(s.get(e)||0)+1);return s}compute(e,t){const{delimiter:r=" "}=this.options,s=this._termFreq(e,r),n=this._termFreq(t,r);let i=0,a=0,o=0;for(const[e,t]of s)i+=t*(n.get(e)||0),a+=t*t;for(const e of n.values())o+=e*e;return a=Math.sqrt(a),o=Math.sqrt(o),y.release("map",s,s.size),y.release("map",n,n.size),{res:a&&o?g.clamp(i/(a*o)):0,raw:{dotProduct:i,magnitudeA:a,magnitudeB:o}}}}),m.add("damerau",class extends g{constructor(e,t,r={}){super("damerau",e,t,r,!0)}compute(e,t,r,s,n){const i=r+1,[a,o,c]=y.acquireMany("uint16",[i,i,i]);for(let e=0;e<=r;e++)o[e]=e;for(let n=1;n<=s;n++){c[0]=n;const s=t.charCodeAt(n-1);for(let i=1;i<=r;i++){const r=e.charCodeAt(i-1),l=r===s?0:1;let h=Math.min(c[i-1]+1,o[i]+1,o[i-1]+l);i>1&&n>1&&r===t.charCodeAt(n-2)&&s===e.charCodeAt(i-2)&&(h=Math.min(h,a[i-2]+l)),c[i]=h}a.set(o),o.set(c)}const l=o[r];return y.release("uint16",a,i),y.release("uint16",o,i),y.release("uint16",c,i),{res:0===n?1:g.clamp(1-l/n),raw:{dist:l,maxLen:n}}}}),m.add("dice",class extends g{constructor(e,t,r={}){super("dice",e,t,r,!0)}_bigrams(e){const t=e.length-1,r=y.acquire("set",t);for(let s=0;s<t;s++)r.add(e.substring(s,s+2));return r}compute(e,t){const r=this._bigrams(e),s=this._bigrams(t);let n=0;for(const e of r)s.has(e)&&n++;const i=r.size,a=s.size,o=i+a;return y.release("set",r,i),y.release("set",s,a),{res:0===o?1:g.clamp(2*n/o),raw:{intersection:n,size:o}}}}),m.add("hamming",class extends g{constructor(e,t,r={}){super("hamming",e,t,r,!0)}compute(e,t,r,s,n){if(r!==s){if(void 0===this.options.pad)throw new Error(`Strings must be of equal length for Hamming Distance, a=${r} and b=${s} given, use option.pad for automatic adjustment`);r<n&&(e=e.padEnd(n,this.options.pad)),s<n&&(t=t.padEnd(n,this.options.pad)),r=s=n}let i=0;for(let r=0;r<e.length;r++)e[r]!==t[r]&&i++;return{res:0===r?1:g.clamp(1-i/r),raw:{dist:i}}}}),m.add("jaccard",class extends g{constructor(e,t,r={}){super("jaccard",e,t,r,!0)}compute(e,t,r,s){const[n,i]=y.acquireMany("set",[r,s]);for(const t of e)n.add(t);for(const e of t)i.add(e);let a=0;for(const e of n)i.has(e)&&a++;const o=n.size+i.size-a;return y.release("set",n,r),y.release("set",i,s),{res:0===o?1:g.clamp(a/o),raw:{intersection:a,union:o}}}}),m.add("jaroWinkler",class extends g{constructor(e,t,r={}){super("jaro-winkler",e,t,r,!0)}compute(e,t,r,s){const n=Math.max(0,Math.floor(s/2)-1),i=y.acquire("uint16",r),a=y.acquire("uint16",s);for(let e=0;e<r;e++)i[e]=0;for(let e=0;e<s;e++)a[e]=0;let o=0;for(let c=0;c<r;c++){const r=Math.max(0,c-n),l=Math.min(c+n+1,s);for(let s=r;s<l;s++)if(!a[s]&&e[c]===t[s]){i[c]=1,a[s]=1,o++;break}}let c=0,l=0,h=0,p=0;if(o>0){let n=0;for(let s=0;s<r;s++)if(i[s]){for(;!a[n];)n++;e[s]!==t[n]&&c++,n++}c/=2,l=(o/r+o/s+(o-c)/o)/3;for(let n=0;n<Math.min(4,r,s)&&e[n]===t[n];n++)h++;p=l+.1*h*(1-l)}return y.release("uint16",i,r),y.release("uint16",a,s),{res:g.clamp(p),raw:{matchWindow:n,matches:o,transpos:c,jaro:l,prefix:h}}}}),m.add("lcs",class extends g{constructor(e,t,r={}){super("lcs",e,t,r,!0)}compute(e,t,r,s,n){const i=r+1,[a,o]=y.acquireMany("uint16",[i,i]);for(let e=0;e<=r;e++)a[e]=0;for(let n=1;n<=s;n++){o[0]=0;const s=t.charCodeAt(n-1);for(let t=1;t<=r;t++)e.charCodeAt(t-1)===s?o[t]=a[t-1]+1:o[t]=Math.max(a[t],o[t-1]);a.set(o)}const c=a[r];return y.release("uint16",a,i),y.release("uint16",o,i),{res:0===n?1:g.clamp(c/n),raw:{lcs:c,maxLen:n}}}}),m.add("levenshtein",class extends g{constructor(e,t,r={}){super("levenshtein",e,t,r,!0)}compute(e,t,r,s,n){const i=r+1,[a,o]=y.acquireMany("uint16",[i,i]);for(let e=0;e<=r;e++)a[e]=e;for(let n=1;n<=s;n++){o[0]=n;const s=t.charCodeAt(n-1);for(let t=1;t<=r;t++){const r=e.charCodeAt(t-1)===s?0:1;o[t]=Math.min(o[t-1]+1,a[t]+1,a[t-1]+r)}a.set(o)}const c=a[r];return y.release("uint16",a,i),y.release("uint16",o,i),{res:0===n?1:g.clamp(1-c/n),raw:{dist:c,maxLen:n}}}}),m.add("needlemanWunsch",class extends g{constructor(e,t,r={}){super("needlemanWunsch",e,t,r,!0)}compute(e,t,r,s,n){const{match:i=1,mismatch:a=-1,gap:o=-1}=this.options,c=r+1,[l,h]=y.acquireMany("uint16",[c,c]);l[0]=0;for(let e=1;e<=r;e++)l[e]=l[e-1]+o;for(let n=1;n<=s;n++){h[0]=l[0]+o;const s=t.charCodeAt(n-1);for(let t=1;t<=r;t++){const r=e.charCodeAt(t-1)===s?i:a;h[t]=Math.max(l[t-1]+r,l[t]+o,h[t-1]+o)}l.set(h)}const p=l[r];y.release("uint16",l,c),y.release("uint16",h,c);const u=n*i;return{res:0===u?0:g.clamp(p/u),raw:{score:p,denum:u}}}}),m.add("qGram",class extends g{constructor(e,t,r={}){super("qgram",e,t,r,!0)}_qGrams(e,t){const r=Math.max(0,e.length-t+1),s=y.acquire("set",r);for(let n=0;n<r;n++)s.add(e.slice(n,n+t));return s}compute(e,t){const{q:r=2}=this.options,s=this._qGrams(e,r),n=this._qGrams(t,r);let i=0;for(const e of s)n.has(e)&&i++;const a=s.size,o=n.size,c=Math.max(a,o);return y.release("set",s,a),y.release("set",n,o),{res:0===c?1:g.clamp(i/c),raw:{intersection:i,size:c}}}}),m.add("smithWaterman",class extends g{constructor(e,t,r={}){super("smithWaterman",e,t,r,!0)}compute(e,t,r,s){const{match:n=2,mismatch:i=-1,gap:a=-2}=this.options,o=r+1,[c,l]=y.acquireMany("uint16",[o,o]);for(let e=0;e<=r;e++)c[e]=0;let h=0;for(let o=1;o<=s;o++){l[0]=0;const s=t.charCodeAt(o-1);for(let t=1;t<=r;t++){const r=e.charCodeAt(t-1)===s?n:i;l[t]=Math.max(0,c[t-1]+r,c[t]+a,l[t-1]+a),l[t]>h&&(h=l[t])}c.set(l)}y.release("uint16",c,o),y.release("uint16",l,o);const p=Math.min(r*n,s*n);return{res:0===p?0:g.clamp(h/p),raw:{score:h,denum:p}}}});const w=s.getInstance();class b{static cache=new o;static default;algo;options;map;static clear(){this.cache.clear()}constructor(e,t={}){const s=this.constructor.default??{},n=t.map??s.map;if(!n)throw new Error("No mapping specified for phonetic algorithm");const i=A.get(e,n);if(void 0===i)throw new Error(`Requested mapping <${n}> is not declared`);this.options=r(r(s,i.options??{}),t),this.algo=e,this.map=i}applyPattern(e){const{patterns:t=[]}=this.map;if(!t||!t.length)return e;for(const{pattern:r,replace:s,all:n=!1}of t)e=e[n?"replaceAll":"replace"](r,s);return e}applyRules(e,t,r,s){const{ruleset:n=[]}=this.map;if(!n||!n.length)return;const i=r[t-1]||"",a=r[t-2]||"",o=r[t+1]||"",c=r[t+2]||"";for(const l of n)if((!l.char||l.char===e)&&("start"!==l.position||0===t)&&!("middle"===l.position&&t>0&&t<s)&&("end"!==l.position||t===s)&&(!l.prev||l.prev.includes(i))&&(!l.prevNot||!l.prevNot.includes(i))&&(!l.prev2||l.prev2.includes(a))&&(!l.prev2Not||!l.prev2Not.includes(a))&&(!l.next||l.next.includes(o))&&(!l.nextNot||!l.nextNot.includes(o))&&(!l.next2||l.next2.includes(c))&&(!l.next2Not||!l.next2Not.includes(c))&&(!l.leading||l.leading.includes(r.slice(0,l.leading.length).join("")))&&(!l.trailing||l.trailing.includes(r.slice(-l.trailing.length).join("")))&&(!l.match||l.match.every((e,s)=>r[t+s]===e)))return l.code}encode(e){const{map:t={},ignore:r=[]}=this.map;e=this.applyPattern(e);const s=this.word2Chars(e),n=s.length;let i="",a=null;for(let e=0;e<n;e++){const o=s[e];if(r.includes(o))continue;const c=this.mapChar(o,e,s,n,a,t);if(void 0!==c&&(i+=c,a=c,this.exitEarly(i,e)))break}return this.adjustCode(i,s)}mapChar(e,t,r,s,n,i){const{dedupe:a=!0,fallback:o}=this.options,c=this.applyRules(e,t,r,s)??i[e]??o;return a&&c===n?void 0:c}equalLen(e){const{length:t=-1,pad:r="0"}=this.options;return-1===t?e:(e+r.repeat(t)).slice(0,t)}word2Chars(e){return e.toLowerCase().split("")}exitEarly(e,t){const{length:r=-1}=this.options;return r>0&&e.length>=r}adjustCode(e,t){return e}loop(e){const t=[];for(const r of e){const e=b.cache.key(this.algo,[r]),s=b.cache.get(e||"")??(()=>{const t=this.encode(r);return e&&b.cache.set(e,t),t})();s&&s.length&&t.push(this.equalLen(s))}return t}async loopAsync(e){const t=[];for(const r of e){const e=await Promise.resolve(this.encode(r));e&&e.length&&t.push(this.equalLen(e))}return t}getAlgoName(){return this.algo}getIndex(e){const{delimiter:t=" "}=this.options;return w.run(()=>this.loop(e.split(t).filter(Boolean)).filter(Boolean))}async getIndexAsync(e){const{delimiter:t=" "}=this.options;return(await w.runAsync(async()=>await this.loopAsync(e.split(t).filter(Boolean)))).filter(Boolean)}}const x=u("phonetic",b),A=(()=>{const e=Object.create(null),t=t=>e[t]||=Object.create(null);return{add(e,r,s,n=!1){const i=t(e);if(!n&&r in i)throw new Error(`Entry <${r}> already exists / use <update=true> to overwrite`);i[r]=s},remove(e,r){delete t(e)[r]},has:(e,r)=>r in t(e),get:(e,r)=>t(e)[r],list:e=>Object.keys(t(e))}})();x.add("caverphone",class extends b{static default={map:"en2",delimiter:" ",length:-1,pad:"",dedupe:!1};constructor(e={}){super("caverphone",e)}encode(e){return e=e.replace(/[^A-Z]/gi,"").toLowerCase(),super.encode(e)}mapChar(e){return e}adjustCode(e){return e.toUpperCase()}}),A.add("caverphone","en1",{options:{length:6,pad:"1"},map:{},patterns:[{pattern:/^(c|r|t|en)ough/,replace:"$1ou2f"},{pattern:/^gn/,replace:"2n"},{pattern:/mb$/,replace:"m2"},{pattern:/cq/g,replace:"2q"},{pattern:/c(e|i|y)/g,replace:"s$1"},{pattern:/tch/g,replace:"2ch"},{pattern:/[cqx]/g,replace:"k"},{pattern:/v/g,replace:"f"},{pattern:/dg/g,replace:"2g"},{pattern:/ti(a|o)/g,replace:"si$1"},{pattern:/d/g,replace:"t"},{pattern:/ph/g,replace:"fh"},{pattern:/b/g,replace:"p"},{pattern:/sh/g,replace:"s2"},{pattern:/z/g,replace:"s"},{pattern:/^[aeiou]/,replace:"A"},{pattern:/[aeiou]/g,replace:"3"},{pattern:/3gh3/g,replace:"3kh3"},{pattern:/gh/g,replace:"22"},{pattern:/g/g,replace:"k"},{pattern:/s+/g,replace:"S"},{pattern:/t+/g,replace:"T"},{pattern:/p+/g,replace:"P"},{pattern:/k+/g,replace:"K"},{pattern:/f+/g,replace:"F"},{pattern:/m+/g,replace:"M"},{pattern:/n+/g,replace:"N"},{pattern:/j/g,replace:"y"},{pattern:/l3/g,replace:"L3"},{pattern:/r3/g,replace:"R3"},{pattern:/w3/g,replace:"W3"},{pattern:/y3/g,replace:"Y3"},{pattern:/ly/g,replace:"Ly"},{pattern:/ry/g,replace:"Ry"},{pattern:/wy/g,replace:"Wy"},{pattern:/wh3/g,replace:"Wh3"},{pattern:/why/g,replace:"Why"},{pattern:/^h/,replace:"A"},{pattern:/[hlrwy23]/g,replace:""}]}),A.add("caverphone","en2",{options:{length:10,pad:"1"},map:{},patterns:[{pattern:/e$/,replace:""},{pattern:/^(c|r|t|en|tr)ough/,replace:"$1ou2f"},{pattern:/^gn/,replace:"2n"},{pattern:/mb$/,replace:"m2"},{pattern:/cq/g,replace:"2q"},{pattern:/c(e|i|y)/g,replace:"s$1"},{pattern:/tch/g,replace:"2ch"},{pattern:/[cqx]/g,replace:"k"},{pattern:/v/g,replace:"f"},{pattern:/dg/g,replace:"2g"},{pattern:/ti(a|o)/g,replace:"si$1"},{pattern:/d/g,replace:"t"},{pattern:/ph/g,replace:"fh"},{pattern:/b/g,replace:"p"},{pattern:/sh/g,replace:"s2"},{pattern:/z/g,replace:"s"},{pattern:/^[aeiou]/,replace:"A"},{pattern:/[aeiou]/g,replace:"3"},{pattern:/j/g,replace:"y"},{pattern:/^y3/,replace:"Y3"},{pattern:/^y/,replace:"A"},{pattern:/y/g,replace:"3"},{pattern:/3gh3/g,replace:"3kh3"},{pattern:/gh/g,replace:"22"},{pattern:/g/g,replace:"k"},{pattern:/s+/g,replace:"S"},{pattern:/t+/g,replace:"T"},{pattern:/p+/g,replace:"P"},{pattern:/k+/g,replace:"K"},{pattern:/f+/g,replace:"F"},{pattern:/m+/g,replace:"M"},{pattern:/n+/g,replace:"N"},{pattern:/l3/g,replace:"L3"},{pattern:/r3/g,replace:"R3"},{pattern:/w3/g,replace:"W3"},{pattern:/wh3/g,replace:"Wh3"},{pattern:/[lrw]$/,replace:"3"},{pattern:/^h/,replace:"A"},{pattern:/3$/,replace:"A"},{pattern:/[hlrw23]/g,replace:""}]}),x.add("cologne",class extends b{static default={map:"default",delimiter:" ",length:-1,dedupe:!0};constructor(e={}){super("cologne",e)}adjustCode(e){return e.slice(0,1)+e.slice(1).replaceAll("0","")}}),A.add("cologne","default",{map:{a:"0","ä":"0",e:"0",i:"0",j:"0",o:"0","ö":"0",u:"0","ü":"0",y:"0",b:"1",p:"1",d:"2",t:"2",f:"3",v:"3",w:"3",g:"4",k:"4",q:"4",l:"5",m:"6",n:"6",r:"7",c:"8",s:"8","ß":"8",z:"8",x:"48"},ignore:["h"],ruleset:[{char:"p",next:["h"],code:"3"},{char:"c",position:"start",next:["a","h","k","l","o","q","r","u","x"],code:"4"},{char:"c",next:["a","h","k","o","q","u","x"],prevNot:["s","z"],code:"4"},{char:"d",next:["c","s","z"],code:"8"},{char:"t",next:["c","s","z"],code:"8"},{char:"x",prev:["c","k","q"],code:"8"}]}),x.add("metaphone",class extends b{static default={map:"en90",delimiter:" ",length:-1,pad:"",dedupe:!1};constructor(e={}){super("metaphone",e)}encode(e){return e=e.replace(/([A-BD-Z])\1+/gi,(e,t)=>"C"===t?e:t),super.encode(e)}adjustCode(e){return e.slice(0,1)+e.slice(1).replace(/[AEIOU]/g,"")}}),A.add("metaphone","en90",{map:{a:"A",b:"B",c:"K",d:"T",e:"E",f:"F",g:"K",h:"H",i:"I",j:"J",k:"K",l:"L",m:"M",n:"N",o:"O",p:"P",q:"K",r:"R",s:"S",t:"T",u:"U",v:"F",w:"W",x:"KS",y:"Y",z:"S"},ruleset:[{char:"a",position:"start",next:["e"],code:""},{char:"g",position:"start",next:["n"],code:""},{char:"k",position:"start",next:["n"],code:""},{char:"p",position:"start",next:["n"],code:""},{char:"w",position:"start",next:["r"],code:""},{char:"b",position:"end",prev:["m"],code:""},{char:"c",next:["h"],prevNot:["s"],code:"X"},{char:"c",next:["i"],next2:["a"],code:"X"},{char:"c",next:["e","i","y"],code:"S"},{char:"d",next:["g"],next2:["e","i","y"],code:"J"},{char:"g",next:["h"],next2Not:["","a","e","i","o","u"],code:""},{char:"g",trailing:"n",code:""},{char:"g",trailing:"ned",code:""},{char:"g",next:["e","i","y"],prevNot:["g"],code:"J"},{char:"h",prev:["a","e","i","o","u"],nextNot:["a","e","i","o","u"],code:""},{char:"h",prev:["c","g","p","s","t"],code:""},{char:"k",prev:["c"],code:""},{char:"p",next:["h"],code:"F"},{char:"s",next:["h"],code:"X"},{char:"s",next:["i"],next2:["a","o"],code:"X"},{char:"t",next:["i"],next2:["a","o"],code:"X"},{char:"t",next:["h"],code:"0"},{char:"t",next:["c"],next2:["h"],code:""},{char:"w",nextNot:["a","e","i","o","u"],code:""},{char:"h",leading:"w",code:""},{char:"x",position:"start",code:"S"},{char:"y",nextNot:["a","e","i","o","u"],code:""}]}),x.add("soundex",class extends b{static default={map:"en",delimiter:" ",length:4,pad:"0",dedupe:!0};constructor(e={}){super("soundex",e)}adjustCode(e,t){return t[0].toUpperCase()+e.slice(1).replaceAll("0","")}}),A.add("soundex","en",{map:{a:"0",e:"0",h:"0",i:"0",o:"0",u:"0",w:"0",y:"0",b:"1",f:"1",p:"1",v:"1",c:"2",g:"2",j:"2",k:"2",q:"2",s:"2",x:"2",z:"2",d:"3",t:"3",l:"4",m:"5",n:"5",r:"6"}}),A.add("soundex","de",{map:{a:"0","ä":"0",e:"0",h:"0",i:"0",j:"0",o:"0","ö":"0",u:"0","ü":"0",y:"0",b:"1",f:"1",p:"1",v:"1",w:"1",c:"2",g:"2",k:"2",q:"2",s:"2","ß":"2",x:"2",z:"2",d:"3",t:"3",l:"4",m:"5",n:"5",r:"6"},ruleset:[{char:"c",next:["h"],code:"7"}]});const v=s.getInstance();class S{static filter={add:l.add,remove:l.remove,pause:l.pause,resume:l.resume,list:l.list,clear:l.clear};static metric={add:m.add,remove:m.remove,has:m.has,list:m.list};static phonetic={add:x.add,remove:x.remove,has:x.has,list:x.list,map:{add:A.add,remove:A.remove,has:A.has,list:A.list}};static profiler=v.services;static clearCache={normalizer:c.clear,metric:g.clear,phonetic:b.clear};static analyze(e){return new n(e)}static diff(e,t,r){return new i(e,t,r)}static create(e){return new S(e)}options=Object.create(null);constructor(e){e&&("string"==typeof e?this.setSerializedOptions(e):this.setOptions(e))}assert(e,t){switch(e){case"metric":if(!S.metric.has(t))throw new Error("CmpStr <metric> must be set, call .setMetric(), use CmpStr.metric.list() for available metrics");break;case"phonetic":if(!S.phonetic.has(t))throw new Error("CmpStr <phonetic> must be set, call .setPhonetic(), use CmpStr.phonetic.list() for available phonetic algorithms");break;default:throw new Error(`Cmpstr condition <${e}> unknown`)}}assertMany(...e){for(const[t,r]of e)this.assert(t,r)}resolveOptions(e){return r({...this.options??Object.create(null)},e)}normalize(e,t){return c.normalize(e,t??this.options.flags??"")}filter(e,t){return l.apply(t,e)}prepare(e,t){const{flags:r,processors:s}=t??this.options;return r?.length&&(e=this.normalize(e,r)),e=this.filter(e,"input"),s?.phonetic&&(e=this.index(e,s.phonetic)),e}postProcess(e,t){return t?.removeZero&&Array.isArray(e)&&(e=e.filter(e=>e.res>0)),e}index(e,{algo:t,opt:r}){this.assert("phonetic",t);const s=p.phonetic(t,r),n=r?.delimiter??" ";return Array.isArray(e)?e.map(e=>s.getIndex(e).join(n)):s.getIndex(e).join(n)}compute(e,t,r,s,n,i){const a=this.resolveOptions(r);this.assert("metric",a.metric);const o=i?e:this.prepare(e,a),c=i?t:this.prepare(t,a),l=p.metric(a.metric,o,c,a.opt);"prep"!==a.output&&l.setOriginal(e,t),l.run(s);const h=this.postProcess(l.getResults(),a);return this.output(h,n??a.raw)}output(e,t){return t??this.options.raw?e:Array.isArray(e)?e.map(e=>({source:e.a,target:e.b,match:e.res})):{source:e.a,target:e.b,match:e.res}}clone(){return Object.assign(Object.create(Object.getPrototypeOf(this)),this)}reset(){for(const e in this.options)delete this.options[e];return this}setOptions(e){return this.options=e,this}mergeOptions(e){return r(this.options,e),this}setSerializedOptions(e){return this.options=JSON.parse(e),this}setOption(e,r){return t(this.options,e,r),this}rmvOption(t){return function(t,r,s=!1){const n=(e,t,r=0)=>{const i=t[r];if(!e||"object"!=typeof e)return!1;if(r===t.length-1)return delete e[i];if(!n(e[i],t,r+1))return!1;if(!s){const t=e[i];"object"==typeof t&&(Array.isArray(t)&&t.every(e=>null==e)||!Array.isArray(t)&&0===Object.keys(t).length)&&delete e[i]}return!0};n(t,e(r))}(this.options,t),this}setRaw(e){return this.setOption("raw",e)}setMetric(e){return this.setOption("metric",e)}setFlags(e){return this.setOption("flags",e)}rmvFlags(){return this.rmvOption("flags")}setProcessors(e){return this.setOption("processors",e)}rmvProcessors(){return this.rmvOption("processors")}getOptions(){return this.options}getSerializedOptions(){return JSON.stringify(this.options)}getOption(t){return function(t,r){return e(r).reduce((e,t)=>e?.[t]??void 0,t)}(this.options,t)}test(e,t,r){return this.compute(e,t,r,"single")}compare(e,t,r){return this.compute(e,t,r,"single",!0).res}batchTest(e,t,r){return this.compute(e,t,r,"batch")}batchSorted(e,t,r="desc",s){return this.output(this.compute(e,t,s,"batch",!0).sort((e,t)=>"asc"===r?e.res-t.res:t.res-e.res),s?.raw??this.options.raw)}pairs(e,t,r){return this.compute(e,t,r,"pairwise")}match(e,t,r,s){return this.output(this.compute(e,t,s,"batch",!0).filter(e=>e.res>=r).sort((e,t)=>t.res-e.res),s?.raw??this.options.raw)}closest(e,t,r=1,s){return this.batchSorted(e,t,"desc",s).slice(0,r)}furthest(e,t,r=1,s){return this.batchSorted(e,t,"asc",s).slice(0,r)}search(e,t,r,s){const n=this.resolveOptions({flags:r,processors:s}),i=this.prepare(e,n),a=this.prepare(t,n);return t.filter((e,t)=>a[t].includes(i))}matrix(e,t){return(e=this.prepare(e,this.resolveOptions(t))).map(t=>this.compute(t,e,void 0,"batch",!0,!0).map(e=>e.res??0))}phoneticIndex(e,t,r){const{algo:s,opt:n}=this.options.processors?.phonetic??{};return this.index(e,{algo:t??s,opt:r??n})}}class z extends S{static create(e){return new z(e)}constructor(e){super(e)}async normalizeAsync(e,t){return c.normalizeAsync(e,t??this.options.flags??"")}async filterAsync(e,t){return l.applyAsync(t,e)}async prepareAsync(e,t){const{flags:r,processors:s}=t??this.options;return r?.length&&(e=await this.normalizeAsync(e,r)),e=await this.filterAsync(e,"input"),s?.phonetic&&(e=await this.indexAsync(e,s.phonetic)),e}async indexAsync(e,{algo:t,opt:r}){this.assert("phonetic",t);const s=p.phonetic(t,r),n=r?.delimiter??" ";return Array.isArray(e)?Promise.all(e.map(e=>s.getIndexAsync(e).then(e=>e.join(n)))):s.getIndexAsync(e).then(e=>e.join(n))}async computeAsync(e,t,r,s,n,i){const a=this.resolveOptions(r);this.assert("metric",a.metric);const o=i?e:await this.prepareAsync(e,a),c=i?t:await this.prepareAsync(t,a),l=p.metric(a.metric,o,c,a.opt);"prep"!==a.output&&l.setOriginal(e,t),await l.runAsync(s);const h=this.postProcess(l.getResults(),a);return this.output(h,n??a.raw)}async testAsync(e,t,r){return this.computeAsync(e,t,r,"single")}async compareAsync(e,t,r){return(await this.computeAsync(e,t,r,"single",!0)).res}async batchTestAsync(e,t,r){return this.computeAsync(e,t,r,"batch")}async batchSortedAsync(e,t,r="desc",s){const n=await this.computeAsync(e,t,s,"batch",!0);return this.output(n.sort((e,t)=>"asc"===r?e.res-t.res:t.res-e.res),s?.raw??this.options.raw)}async pairsAsync(e,t,r){return this.computeAsync(e,t,r,"pairwise")}async matchAsync(e,t,r,s){const n=await this.computeAsync(e,t,s,"batch",!0);return this.output(n.filter(e=>e.res>=r).sort((e,t)=>t.res-e.res),s?.raw??this.options.raw)}async closestAsync(e,t,r=1,s){return(await this.batchSortedAsync(e,t,"desc",s)).slice(0,r)}async furthestAsync(e,t,r=1,s){return(await this.batchSortedAsync(e,t,"asc",s)).slice(0,r)}async searchAsync(e,t,r,s){const n=this.resolveOptions({flags:r,processors:s}),i=await this.prepareAsync(e,n),a=await this.prepareAsync(t,n);return t.filter((e,t)=>a[t].includes(i))}async matrixAsync(e,t){return e=await this.prepareAsync(e,this.resolveOptions(t)),Promise.all(e.map(async t=>await this.computeAsync(t,e,void 0,"batch",!0,!0).then(e=>e.map(e=>e.res??0))))}async phoneticIndexAsync(e,t,r){const{algo:s,opt:n}=this.options.processors?.phonetic??{};return this.indexAsync(e,{algo:t??s,opt:r??n})}}export{S as CmpStr,z as CmpStrAsync,i as DiffChecker,c as Normalizer,n as TextAnalyzer};
|
|
8
8
|
//# sourceMappingURL=CmpStr.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmpStr.esm.min.js","sources":["../src/utils/DeepMerge.ts","../src/utils/Profiler.ts","../src/utils/TextAnalyzer.ts","../src/utils/DiffChecker.ts","../src/utils/HashTable.ts","../src/utils/Normalizer.ts","../src/utils/Filter.ts","../src/utils/Registry.ts","../src/metric/Metric.ts","../src/utils/Pool.ts","../src/metric/Cosine.ts","../src/metric/DamerauLevenshtein.ts","../src/metric/DiceSorensen.ts","../src/metric/Hamming.ts","../src/metric/Jaccard.ts","../src/metric/JaroWinkler.ts","../src/metric/LCS.ts","../src/metric/Levenshtein.ts","../src/metric/NeedlemanWunsch.ts","../src/metric/qGram.ts","../src/metric/SmithWaterman.ts","../src/phonetic/Phonetic.ts","../src/phonetic/Cologne.ts","../src/phonetic/Metaphone.ts","../src/phonetic/Soundex.ts","../src/CmpStr.ts","../src/CmpStrAsync.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["parse","p","replace","split","map","s","test","set","t","path","value","k","r","undefined","Error","JSON","stringify","Object","assign","create","join","merge","o","mergeUndefined","keys","forEach","val","Array","isArray","Profiler","static","store","Set","totalTime","totalMem","active","detectEnv","process","ENV","performance","getInstance","enable","instance","constructor","this","now","Number","hrtime","bigint","Date","mem","memoryUsage","heapUsed","memory","usedJSHeapSize","disable","clear","run","fn","meta","startTime","startMem","res","deltaTime","deltaMem","add","time","runAsync","getAll","getLast","pop","getTotal","services","bind","report","last","total","TextAnalyzer","text","words","sentences","charFrequency","Map","wordHistogram","syllableCache","input","trim","tokenize","computeFrequencies","wordRegex","match","exec","push","toLowerCase","filter","Boolean","char","get","word","estimateSyllables","has","matches","count","length","getLength","getWordCount","getSentenceCount","getAvgWordLength","totalLen","w","getAvgSentenceLength","getWordHistogram","fromEntries","getMostCommonWords","limit","entries","sort","a","b","slice","e","getHapaxLegomena","c","hasNumbers","getUpperCaseRatio","upper","letters","i","len","getCharFrequency","getUnicodeStats","result","block","charCodeAt","toString","padStart","toUpperCase","getLongWordRatio","long","getShortWordRatio","short","getSyllablesCount","getMonosyllabicWordCount","getMinSyllablesWordCount","min","getMaxSyllablesWordCount","max","getHonoresR","Math","log","size","getReadingTime","wpm","getReadabilityScore","metric","asl","asw","getLIXScore","getWSTFScore","h","l","DiffChecker","options","grouped","diffRun","opt","mode","caseInsensitive","contextLines","groupedLines","expandLines","showChangeMagnitude","maxMagnitudeSymbols","lineBreak","computeDiff","text2lines","linesA","linesB","maxLen","concat","lineDiff","findGroups","line","baseLen","A","B","diffs","delSize","insSize","posA","posB","del","ins","preciseDiff","d","totalSize","magnitude","posIndex","reduce","_","origA","origB","tokenA","tokenB","lenA","lenB","posArrA","posArrB","ai","bi","found","offset","j","m","delArr","insArr","addGroup","group","start","end","sum","entry","magLen","round","plus","minus","repeat","output","cli","linePad","highlight","ansi","forced","headerEntry","header","out","ye","find","lineNo","mark","gn","gy","type","idx","pos","getStructuredDiff","getGroupedDiff","getASCIIDiff","getCLIDiff","Hasher","fnv1a","str","hash","HASH_OFFSET","chunks","floor","FNV_PRIME","remaining","HashTable","table","key","label","strs","sorted","MAX_LEN","hashes","update","TABLE_SIZE","delete","Normalizer","getPipeline","flags","pipeline","steps","includes","normalize","compiled","step","cache","normalizeAsync","Promise","all","resolve","Filter","hook","id","filters","f","priority","overrideable","index","findIndex","splice","remove","pause","resume","list","apply","every","applyOne","applyAsync","async","registry","factory","Registry","reg","ctor","classes","service","name","cls","prototype","TypeError","args","ReferenceError","resolveCls","err","profiler","Metric","symmetric","results","swap","n","clamp","preCompute","compute","runSingle","String","runSingleAsync","runBatch","runBatchAsync","runPairwise","runPairwiseAsync","setOriginal","isBatch","isSingle","isPairwise","safe","isSymmetrical","whichMode","getMetricName","getResults","MetricRegistry","RingPool","maxSize","buffers","pointer","acquire","minSize","allowOversize","item","release","Pool","uint16","maxItemSize","allocate","Uint16Array","fill","CONFIG","POOLS","buffer","subarray","acquireMany","sizes","super","_termFreq","delimiter","terms","freq","term","termsA","termsB","dotProduct","magnitudeA","magnitudeB","freqA","freqB","values","sqrt","raw","prev","curr","cb","ca","cost","dist","_bigrams","bigrams","substring","setA","setB","intersection","bigram","sizeA","sizeB","pad","padEnd","union","matchWindow","matchA","matchB","transpos","jaro","prefix","lcs","mismatch","gap","score","denum","_qGrams","q","grams","gram","maxScore","Phonetic","algo","default","PhoneticMappingRegistry","applyRules","chars","charLen","ruleset","prev2","next","next2","rule","position","prevNot","prev2Not","nextNot","next2Not","leading","trailing","code","encode","ignore","word2Chars","lastCode","mapped","mapChar","exitEarly","adjustCode","dedupe","equalLen","loop","loopAsync","getAlgoName","getIndex","getIndexAsync","PhoneticRegistry","mappings","maps","replaceAll","u","y","v","g","z","x","CmpStr","normalizer","phonetic","analyze","diff","setSerializedOptions","setOptions","assert","cond","assertMany","resolveOptions","DeepMerge.merge","prepare","processors","postProcess","removeZero","skip","resolved","source","target","clone","getPrototypeOf","reset","mergeOptions","setOption","DeepMerge.set","rmvOption","preserveEmpty","DeepMerge.rmv","setRaw","setMetric","setFlags","rmvFlags","setProcessors","rmvProcessors","getOptions","getSerializedOptions","getOption","DeepMerge.get","compare","batchTest","batchSorted","dir","pairs","threshold","closest","furthest","search","needle","haystack","hstk","matrix","phoneticIndex","CmpStrAsync","filterAsync","prepareAsync","indexAsync","then","computeAsync","testAsync","compareAsync","batchTestAsync","batchSortedAsync","pairsAsync","matchAsync","closestAsync","furthestAsync","searchAsync","matrixAsync","phoneticIndexAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CmpStr.esm.min.js","sources":["../src/utils/DeepMerge.ts","../src/utils/Profiler.ts","../src/utils/TextAnalyzer.ts","../src/utils/DiffChecker.ts","../src/utils/HashTable.ts","../src/utils/Normalizer.ts","../src/utils/Filter.ts","../src/utils/Registry.ts","../src/metric/Metric.ts","../src/utils/Pool.ts","../src/metric/Cosine.ts","../src/metric/DamerauLevenshtein.ts","../src/metric/DiceSorensen.ts","../src/metric/Hamming.ts","../src/metric/Jaccard.ts","../src/metric/JaroWinkler.ts","../src/metric/LCS.ts","../src/metric/Levenshtein.ts","../src/metric/NeedlemanWunsch.ts","../src/metric/qGram.ts","../src/metric/SmithWaterman.ts","../src/phonetic/Phonetic.ts","../src/phonetic/Caverphone.ts","../src/phonetic/Cologne.ts","../src/phonetic/Metaphone.ts","../src/phonetic/Soundex.ts","../src/CmpStr.ts","../src/CmpStrAsync.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["parse","p","replace","split","map","s","test","set","t","path","value","k","r","undefined","Error","JSON","stringify","Object","assign","create","join","merge","o","mergeUndefined","keys","forEach","val","Array","isArray","Profiler","static","store","Set","totalTime","totalMem","active","detectEnv","process","ENV","performance","getInstance","enable","instance","constructor","this","now","Number","hrtime","bigint","Date","mem","memoryUsage","heapUsed","memory","usedJSHeapSize","disable","clear","run","fn","meta","startTime","startMem","res","deltaTime","deltaMem","add","time","runAsync","getAll","getLast","pop","getTotal","services","bind","report","last","total","TextAnalyzer","text","words","sentences","charFrequency","Map","wordHistogram","syllableCache","input","trim","tokenize","computeFrequencies","wordRegex","match","exec","push","toLowerCase","filter","Boolean","char","get","word","estimateSyllables","has","matches","count","length","getLength","getWordCount","getSentenceCount","getAvgWordLength","totalLen","w","getAvgSentenceLength","getWordHistogram","fromEntries","getMostCommonWords","limit","entries","sort","a","b","slice","e","getHapaxLegomena","c","hasNumbers","getUpperCaseRatio","upper","letters","i","len","getCharFrequency","getUnicodeStats","result","block","charCodeAt","toString","padStart","toUpperCase","getLongWordRatio","long","getShortWordRatio","short","getSyllablesCount","getMonosyllabicWordCount","getMinSyllablesWordCount","min","getMaxSyllablesWordCount","max","getHonoresR","Math","log","size","getReadingTime","wpm","getReadabilityScore","metric","asl","asw","getLIXScore","getWSTFScore","h","l","DiffChecker","options","grouped","diffRun","opt","mode","caseInsensitive","contextLines","groupedLines","expandLines","showChangeMagnitude","maxMagnitudeSymbols","lineBreak","computeDiff","text2lines","linesA","linesB","maxLen","concat","lineDiff","findGroups","line","baseLen","A","B","diffs","delSize","insSize","posA","posB","del","ins","preciseDiff","d","totalSize","magnitude","posIndex","reduce","_","origA","origB","tokenA","tokenB","lenA","lenB","posArrA","posArrB","ai","bi","found","offset","j","m","delArr","insArr","addGroup","group","start","end","sum","entry","magLen","round","plus","minus","repeat","output","cli","linePad","highlight","ansi","forced","headerEntry","header","out","ye","find","lineNo","mark","gn","gy","type","idx","pos","getStructuredDiff","getGroupedDiff","getASCIIDiff","getCLIDiff","Hasher","fnv1a","str","hash","HASH_OFFSET","chunks","floor","FNV_PRIME","remaining","HashTable","table","key","label","strs","sorted","MAX_LEN","hashes","update","TABLE_SIZE","delete","Normalizer","getPipeline","flags","pipeline","steps","includes","normalize","compiled","step","cache","normalizeAsync","Promise","all","resolve","Filter","hook","id","filters","f","priority","overrideable","index","findIndex","splice","remove","pause","resume","list","apply","every","applyOne","applyAsync","async","registry","factory","Registry","reg","ctor","classes","service","name","cls","prototype","TypeError","args","ReferenceError","resolveCls","err","profiler","Metric","symmetric","results","swap","n","clamp","preCompute","compute","runSingle","String","runSingleAsync","runBatch","runBatchAsync","runPairwise","runPairwiseAsync","setOriginal","isBatch","isSingle","isPairwise","safe","isSymmetrical","whichMode","getMetricName","getResults","MetricRegistry","RingPool","maxSize","buffers","pointer","acquire","minSize","allowOversize","item","release","Pool","uint16","maxItemSize","allocate","Uint16Array","fill","CONFIG","POOLS","buffer","subarray","acquireMany","sizes","super","_termFreq","delimiter","terms","freq","term","termsA","termsB","dotProduct","magnitudeA","magnitudeB","freqA","freqB","values","sqrt","raw","prev","curr","cb","ca","cost","dist","_bigrams","bigrams","substring","setA","setB","intersection","bigram","sizeA","sizeB","pad","padEnd","union","matchWindow","matchA","matchB","transpos","jaro","prefix","lcs","mismatch","gap","score","denum","_qGrams","q","grams","gram","maxScore","Phonetic","algo","defaults","default","mapId","PhoneticMappingRegistry","applyPattern","patterns","pattern","applyRules","chars","charLen","ruleset","prev2","next","next2","rule","position","prevNot","prev2Not","nextNot","next2Not","leading","trailing","code","encode","ignore","word2Chars","lastCode","mapped","mapChar","exitEarly","adjustCode","dedupe","fallback","equalLen","loop","loopAsync","getAlgoName","getIndex","getIndexAsync","PhoneticRegistry","mappings","maps","replaceAll","u","y","v","g","z","x","CmpStr","normalizer","phonetic","analyze","diff","setSerializedOptions","setOptions","assert","cond","assertMany","resolveOptions","DeepMerge.merge","prepare","processors","postProcess","removeZero","skip","resolved","source","target","clone","getPrototypeOf","reset","mergeOptions","setOption","DeepMerge.set","rmvOption","preserveEmpty","DeepMerge.rmv","setRaw","setMetric","setFlags","rmvFlags","setProcessors","rmvProcessors","getOptions","getSerializedOptions","getOption","DeepMerge.get","compare","batchTest","batchSorted","dir","pairs","threshold","closest","furthest","search","needle","haystack","hstk","matrix","phoneticIndex","CmpStrAsync","filterAsync","prepareAsync","indexAsync","then","computeAsync","testAsync","compareAsync","batchTestAsync","batchSortedAsync","pairsAsync","matchAsync","closestAsync","furthestAsync","searchAsync","matrixAsync","phoneticIndexAsync"],"mappings":"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"}
|