UNPKG

@orama/plugin-match-highlight

Version:

Orama plugin for search match highlighting

2 lines 2.25 kB
"use strict";var f=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var O=(t,e)=>{for(var s in e)f(t,s,{get:e[s],enumerable:!0})},W=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of k(e))!D.call(t,i)&&i!==s&&f(t,i,{get:()=>e[i],enumerable:!(r=x(e,i))||r.enumerable});return t};var P=t=>W(f({},"__esModule",{value:!0}),t);var z={};O(z,{afterInsert:()=>b,loadWithHighlight:()=>H,saveWithHighlight:()=>w,searchWithHighlight:()=>j});module.exports=P(z);var u=require("@orama/orama"),m=require("@orama/orama/internals");async function b(t,e){"positions"in t.data||Object.assign(t.data,{positions:{}}),await T(t,await t.documentsStore.get(t.data.docs,e),e)}var A=/[\p{L}0-9_'-]+/gimu;async function T(t,e,s,r="",i=t.schema){t.data.positions[s]=Object.create(null);for(let n of Object.keys(e)){let g=typeof e[n]=="object",p=typeof i[n]=="object",a=`${r}${String(n)}`;if(g&&n in i&&p&&T(t,e[n],s,a+".",i[n]),!(typeof e[n]=="string"&&n in i&&!p))continue;t.data.positions[s][a]=Object.create(null);let y=e[n],c;for(;(c=A.exec(y))!==null;){let h=c[0].toLowerCase(),l=`${t.tokenizer.language}:${h}`,o;t.tokenizer.normalizationCache.has(l)?o=t.tokenizer.normalizationCache.get(l):([o]=t.tokenizer.tokenize(h),t.tokenizer.normalizationCache.set(l,o)),Array.isArray(t.data.positions[s][a][o])||(t.data.positions[s][a][o]=[]);let d=c.index,R=c[0].length;t.data.positions[s][a][o].push({start:d,length:R})}}}async function j(t,e,s){let r=await(0,u.search)(t,e,s),i=t.tokenizer.tokenize(e.term??"",s),n=[];for(let g of r.hits){let p=Object.entries(t.data.positions[g.id]),a=[];for(let[y,c]of p){let h=[],l=Object.entries(c);for(let o of l){let[d]=o;for(let R of i)if(e.tolerance){if((0,m.boundedLevenshtein)(d,R,e.tolerance).isBounded){h.push(o);break}}else if(d.startsWith(R)){h.push(o);break}}a.push([y,Object.fromEntries(h)])}n.push(Object.assign(g,{positions:Object.fromEntries(a)}))}return r.hits=n,r}function w(t){return{...(0,u.save)(t),positions:t.data.positions}}function H(t,e){(0,u.load)(t,e),t.data.positions=e.positions}0&&(module.exports={afterInsert,loadWithHighlight,saveWithHighlight,searchWithHighlight}); //# sourceMappingURL=index.cjs.map