From 7d63a3025a87a3ba8dea1bb8644e0edb2fa1cfc6 Mon Sep 17 00:00:00 2001 From: taskylizard <75871323+taskylizard@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:04:10 +0000 Subject: [PATCH] fix(search): transform contents before indexing Resolves WEB-21 --- .gitignore | 1 + docs/.vitepress/config.mts | 2 +- docs/.vitepress/constants.ts | 20 ++++++++++++++++---- docs/.vitepress/theme/style.css | 4 ++++ docs/.vitepress/transformer.ts | 4 ++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index d67478582..29a87bf7a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ node_modules .env dist .eslintcache +docs/.vitepress/.temp diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index bc71fe761..6cc371a9e 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -27,7 +27,7 @@ export default defineConfig({ cleanUrls: true, appearance: 'dark', base: baseUrl, - srcExclude: ['readme.md', 'single-page'], + srcExclude: ['README.md', 'single-page'], ignoreDeadLinks: true, sitemap: { hostname: meta.hostname diff --git a/docs/.vitepress/constants.ts b/docs/.vitepress/constants.ts index bec4e3597..7029c71a5 100644 --- a/docs/.vitepress/constants.ts +++ b/docs/.vitepress/constants.ts @@ -1,4 +1,5 @@ import type { DefaultTheme } from 'vitepress' +import { transform, transformGuide } from './transformer' // @unocss-include export const meta = { @@ -8,16 +9,25 @@ export const meta = { keywords: ['stream', 'movies', 'gaming', 'reading', 'anime'] } -export const commitRef = process.env.CF_PAGES - ? `${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}` - : 'dev' + : 'dev' export const feedback = `Made with ❤` export const search: DefaultTheme.Config['search'] = { options: { + _render(src, env, md) { + let contents = src + // I do this as env.frontmatter is not available until I call `md.render` + if (contents.includes('Beginners Guide')) + contents = transformGuide(contents) + contents = transform(contents) + const html = md.render(contents, env) + return html + }, miniSearch: { options: { tokenize: (text) => text.split(/[\n\r #%*,=/:;?[\]{}()&]+/u), // simplified charset: removed [-_.@] and non-english chars (diacritics etc.) @@ -67,6 +77,8 @@ export const search: DefaultTheme.Config['search'] = { .map((t) => t.toLowerCase()) // Downrank posts if (documentId.match(/\/posts/)) return -5 + // Downrank /other + if (documentId.match(/\/other/)) return -5 // Uprate if term appears in titles. Add bonus for higher levels (i.e. lower index) const titleIndex = diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index 989c2b726..59398ac52 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -244,6 +244,10 @@ --icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+'); } +.note.custom-block { + --icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+'); +} + .tip.custom-block { --icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWxpZ2h0YnVsYiI+PHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIvPjxwYXRoIGQ9Ik05IDE4aDYiLz48cGF0aCBkPSJNMTAgMjJoNCIvPjwvc3ZnPg=='); } diff --git a/docs/.vitepress/transformer.ts b/docs/.vitepress/transformer.ts index e99ea5e87..2eb22ea5b 100644 --- a/docs/.vitepress/transformer.ts +++ b/docs/.vitepress/transformer.ts @@ -166,7 +166,7 @@ function getHeader(id: string) { return header } -function transformGuide(text: string): string { +export function transformGuide(text: string): string { const _text = text .replace(/\[TOC\]\n/gm, '') .replace(/\*\*Table of Contents\*\*\n\[TOC2\]\n/gm, '') @@ -192,7 +192,7 @@ function replaceUnderscore(text: string): string { return text } -function transform(text: string): string { +export function transform(text: string): string { let _text = text .replace( /\*\*\[◄◄ Back to Wiki Index\]\(https:\/\/www\.reddit\.com\/r\/FREEMEDIAHECKYEAH\/wiki\/index\)\*\*\n/gm,