cmpstr 3.0.2 → 3.0.3
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/dist/CmpStr.esm.js +17 -3
- 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 +17 -3
- 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 +11 -1
- package/dist/cjs/CmpStr.cjs.map +1 -1
- package/dist/cjs/CmpStrAsync.cjs +11 -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/DamerauLevenshtein.cjs +1 -1
- package/dist/cjs/metric/DiceSorensen.cjs +1 -1
- package/dist/cjs/metric/Hamming.cjs +1 -1
- package/dist/cjs/metric/Jaccard.cjs +1 -1
- package/dist/cjs/metric/JaroWinkler.cjs +1 -1
- package/dist/cjs/metric/LCS.cjs +1 -1
- package/dist/cjs/metric/Levenshtein.cjs +1 -1
- package/dist/cjs/metric/Metric.cjs +2 -2
- package/dist/cjs/metric/NeedlemanWunsch.cjs +1 -1
- package/dist/cjs/metric/SmithWaterman.cjs +1 -1
- package/dist/cjs/metric/qGram.cjs +1 -1
- package/dist/cjs/phonetic/Caverphone.cjs +1 -1
- package/dist/cjs/phonetic/Cologne.cjs +1 -1
- package/dist/cjs/phonetic/Metaphone.cjs +1 -1
- package/dist/cjs/phonetic/Phonetic.cjs +1 -1
- package/dist/cjs/phonetic/Soundex.cjs +1 -1
- package/dist/cjs/utils/DeepMerge.cjs +1 -1
- package/dist/cjs/utils/DiffChecker.cjs +1 -1
- package/dist/cjs/utils/Filter.cjs +1 -1
- package/dist/cjs/utils/HashTable.cjs +1 -1
- package/dist/cjs/utils/Normalizer.cjs +1 -1
- package/dist/cjs/utils/Pool.cjs +1 -1
- package/dist/cjs/utils/Profiler.cjs +1 -1
- package/dist/cjs/utils/Registry.cjs +2 -2
- package/dist/cjs/utils/Registry.cjs.map +1 -1
- package/dist/cjs/utils/TextAnalyzer.cjs +1 -1
- package/dist/esm/CmpStr.mjs +11 -1
- package/dist/esm/CmpStr.mjs.map +1 -1
- package/dist/esm/CmpStrAsync.mjs +11 -1
- package/dist/esm/CmpStrAsync.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/metric/Cosine.mjs +1 -1
- package/dist/esm/metric/DamerauLevenshtein.mjs +1 -1
- package/dist/esm/metric/DiceSorensen.mjs +1 -1
- package/dist/esm/metric/Hamming.mjs +1 -1
- package/dist/esm/metric/Jaccard.mjs +1 -1
- package/dist/esm/metric/JaroWinkler.mjs +1 -1
- package/dist/esm/metric/LCS.mjs +1 -1
- package/dist/esm/metric/Levenshtein.mjs +1 -1
- package/dist/esm/metric/Metric.mjs +2 -2
- package/dist/esm/metric/NeedlemanWunsch.mjs +1 -1
- package/dist/esm/metric/SmithWaterman.mjs +1 -1
- package/dist/esm/metric/qGram.mjs +1 -1
- package/dist/esm/phonetic/Caverphone.mjs +1 -1
- package/dist/esm/phonetic/Cologne.mjs +1 -1
- package/dist/esm/phonetic/Metaphone.mjs +1 -1
- package/dist/esm/phonetic/Phonetic.mjs +1 -1
- package/dist/esm/phonetic/Soundex.mjs +1 -1
- package/dist/esm/utils/DeepMerge.mjs +1 -1
- package/dist/esm/utils/DiffChecker.mjs +1 -1
- package/dist/esm/utils/Filter.mjs +1 -1
- package/dist/esm/utils/HashTable.mjs +1 -1
- package/dist/esm/utils/Normalizer.mjs +1 -1
- package/dist/esm/utils/Pool.mjs +1 -1
- package/dist/esm/utils/Profiler.mjs +1 -1
- package/dist/esm/utils/Registry.mjs +2 -2
- package/dist/esm/utils/Registry.mjs.map +1 -1
- package/dist/esm/utils/TextAnalyzer.mjs +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/utils/Types.d.ts +1 -0
- package/package.json +4 -4
package/dist/CmpStr.esm.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CmpStr v3.0.
|
|
2
|
+
* CmpStr v3.0.3 build-462b952-250813
|
|
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 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};
|
|
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}>`,{cause:e})}}(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);if(a.safeEmpty&&(Array.isArray(o)&&0===o.length||Array.isArray(c)&&0===c.length||""===o||""===c))return[];const 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);if(a.safeEmpty&&(Array.isArray(o)&&0===o.length||Array.isArray(c)&&0===c.length||""===o||""===c))return[];const 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/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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"}
|
|
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","cause","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","safeEmpty","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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"}
|
package/dist/CmpStr.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CmpStr v3.0.
|
|
2
|
+
* CmpStr v3.0.3 build-462b952-250813
|
|
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
|
|
@@ -1773,7 +1773,9 @@
|
|
|
1773
1773
|
return new cls(...args);
|
|
1774
1774
|
}
|
|
1775
1775
|
catch (err) {
|
|
1776
|
-
throw new Error(`Cannot instantiate class <${cls}
|
|
1776
|
+
throw new Error(`Cannot instantiate class <${cls}>`, {
|
|
1777
|
+
cause: err
|
|
1778
|
+
});
|
|
1777
1779
|
}
|
|
1778
1780
|
}
|
|
1779
1781
|
|
|
@@ -1871,7 +1873,7 @@
|
|
|
1871
1873
|
this.b = Array.isArray(b) ? b : [b];
|
|
1872
1874
|
// Validate inputs: ensure they are not empty
|
|
1873
1875
|
if (this.a.length === 0 || this.b.length === 0)
|
|
1874
|
-
throw new Error(`
|
|
1876
|
+
throw new Error(`Inputs <a> and <b> must not be empty`);
|
|
1875
1877
|
// Set options
|
|
1876
1878
|
this.options = opt;
|
|
1877
1879
|
this.symmetric = symmetric;
|
|
@@ -4482,6 +4484,12 @@
|
|
|
4482
4484
|
// Prepare the input
|
|
4483
4485
|
const A = skip ? a : this.prepare(a, resolved);
|
|
4484
4486
|
const B = skip ? b : this.prepare(b, resolved);
|
|
4487
|
+
// If the inputs are empty and safeEmpty is enabled, return an empty array
|
|
4488
|
+
if (resolved.safeEmpty && ((Array.isArray(A) && A.length === 0) ||
|
|
4489
|
+
(Array.isArray(B) && B.length === 0) ||
|
|
4490
|
+
A === '' || B === '')) {
|
|
4491
|
+
return [];
|
|
4492
|
+
}
|
|
4485
4493
|
// Get the metric class
|
|
4486
4494
|
const metric = factory.metric(resolved.metric, A, B, resolved.opt);
|
|
4487
4495
|
// Pass the original inputs to the metric
|
|
@@ -4912,6 +4920,12 @@
|
|
|
4912
4920
|
// Prepare the input
|
|
4913
4921
|
const A = skip ? a : await this.prepareAsync(a, resolved);
|
|
4914
4922
|
const B = skip ? b : await this.prepareAsync(b, resolved);
|
|
4923
|
+
// If the inputs are empty and safeEmpty is enabled, return an empty array
|
|
4924
|
+
if (resolved.safeEmpty && ((Array.isArray(A) && A.length === 0) ||
|
|
4925
|
+
(Array.isArray(B) && B.length === 0) ||
|
|
4926
|
+
A === '' || B === '')) {
|
|
4927
|
+
return [];
|
|
4928
|
+
}
|
|
4915
4929
|
// Get the metric class
|
|
4916
4930
|
const metric = factory.metric(resolved.metric, A, B, resolved.opt);
|
|
4917
4931
|
// Pass the original inputs to the metric
|