PageSourceSearch

https://copier-accent.fr/assets/siteSearch-BBe3JBda.js

js copier-accent.fr collected 2026-10-02 01:54:44 UTC 2,492 bytes, 1 lines download raw bytes

1const e=e=>e.toLowerCase().replace(/œ/g,"oe").replace(/æ/g,"ae").normalize("NFD").replace(/[̀-ͯ]/g,"").replace(/[^\p{L}\p{N}+]+/gu," ").trim(),t=(e,t)=>{if(e===t)return!0;if(Math.abs(e.length-t.length)>1)return!1;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;return e.length===t.length?e.slice(r+1)===t.slice(r+1)||e[r]===t[r+1]&&e[r+1]===t[r]&&e.slice(r+2)===t.slice(r+2):e.length>t.length?e.slice(r+1)===t.slice(r):e.slice(r)===t.slice(r+1)},r=(t,r,l=!1)=>{const s=(t??[]).map(e).filter(Boolean);return{phrases:s,words:new Set(s.flatMap(e=>e.split(" "))),weight:r,allNames:l}},l=(e,r,l)=>{if(r.words.has(e))return 10*r.weight;let s=0;for(const a of r.words)e.length>=2&&(l||e.length>=3)&&a.startsWith(e)?s=Math.max(s,6*r.weight):e.length>=5&&a.length>=5&&t(e,a)&&(s=Math.max(s,3*r.weight));return s},s=(e,t)=>{let r=0;return t.phrases.forEach((l,s)=>{const a=t.allNames||0===s;l===e?r=Math.max(r,(a?40:8)*t.weight):a&&l.startsWith(e)&&(r=Math.max(r,12*t.weight))}),r},a={l:"letter",s:"symbol",e:"emoji"},n={letter:6,tool:5,emoji:4,symbol:4,guide:3,page:3,article:0},o=(t,o)=>{const h=t.map((e,t)=>({item:e,order:t,fields:{fr:r(e.fr,1),en:r(e.en,1),alias:r(e.a,1.4,!0)}})),i=o.map(e=>({page:e,title:r([e.t],1.2,!0),extra:r(e.w?[e.w]:[],.8)}));return(t,r,o={chars:48,pages:6})=>{const c=t.trim(),g=e(c);if(!g&&!c)return{chars:[],pages:[]};const f=g.split(" ").filter(Boolean),p=e=>e===r?1.5:1,m=[];for(const{item:e,order:n,fields:i}of h){const t=("en"===r?e.en[0]:void 0)??e.fr[0]??e.c,o=("en"===r?e.ue:void 0)??e.u;let h=0;if(c===e.c||c===e.c.replace(/️/g,""))h=1e3;else if(1===f.length&&1===f[0].length)e.b===f[0]&&(h=500-n/1e3);else if(f.length){let t=0,r=!0;f.forEach((e,s)=>{const a=s===f.length-1,n=Math.max(l(e,i.fr,a)*p("fr"),l(e,i.en,a)*p("en"),l(e,i.alias,a));(!n||1===e.length&&n<10)&&(r=!1),t+=n}),r&&(h=t+Math.max(s(g,i.fr)*p("fr"),s(g,i.en)*p("en"),s(g,i.alias))+("l"===e.k?5:0)-n/1e3)}h>0&&m.push({char:e.c,kind:a[e.k],name:t,url:o,score:h})}const u=[];if(f.length&&g.length>=2)for(const{page:e,title:a,extra:h}of i){if(e.l!==r)continue;let t=0,o=!0;f.forEach((e,r)=>{const s=r===f.length-1,n=e.length>=4||!s,i=n||a.words.has(e)||h.words.has(e)?Math.max(l(e,a,s&&n),l(e,h,s&&n)):0;(!i||1===e.length&&i<10)&&(o=!1),t+=i}),o&&u.push({title:e.t,url:e.u,kind:e.k,score:t+s(g,a)+n[e.k]})}return m.sort((e,t)=>t.score-e.score),u.sort((e,t)=>t.score-e.score),{chars:m.slice(0,o.chars),pages:u.slice(0,o.pages),total:m.length}}};export{o as createSearch,e as normalize};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.