diff --git a/.github/add-headers.py b/.github/add-headers.py deleted file mode 100644 index ca5650d7b..000000000 --- a/.github/add-headers.py +++ /dev/null @@ -1,99 +0,0 @@ -import os - - -headers = { - "adblockvpnguide.md": [ - "Adblocking / Privacy", - "Adblocking, Privacy, VPN's, Proxies, Antivirus", - ], - "ai.md": [ - "Artificial Intelligence", - "Chat Bots, Text Generators, Image Generators, ChatGPT Tools", - ], - "android-iosguide.md": ["Android / iOS", "Apps, Jailbreaking, Android Emulators"], - "audiopiracyguide.md": [ - "Music / Podcasts / Radio", - "Stream Audio, Download Audio, Torrent Audio", - ], - "beginners-guide.md": ["Beginners Guide", "A Guide for Beginners to Piracy"], - "downloadpiracyguide.md": [ - "Downloading", - "Download Sites, Software Sites, Open Directories", - ], - "edupiracyguide.md": ["Educational", "Courses, Documentaries, Learning Resources"], - "gamingpiracyguide.md": [ - "Gaming / Emulation", - "Download Games, ROMs, Gaming Tools", - ], - "linuxguide.md": ["Linux / MacOS", "Apps, Software Sites, Gaming"], - "miscguide.md": ["Miscellaneous", "Extensions, Indexes, News, Health, Food, Fun"], - "nsfwpiracy.md": ["NSFW", "NSFW Indexes, Streaming, Downloading"], - "non-english.md": ["Non-English", "International Piracy Sites"], - "readingpiracyguide.md": [ - "Books / Comics / Manga", - "Books, Comics, Magazines, Newspapers", - ], - "gaming-tools.md": [ - "Gaming Tools", - "Gaming Optimization, Game Launchers, Multiplayer", - ], - "devtools.md": ["Developer Tools", "Git, Hosting, App Dev, Software Dev"], - "img-tools.md": ["Image Tools", "Image Editors, Generators, Compress"], - "audio-tools.md": [ - "Audio Tools", - "Audio Players, Audio Editors, Audio Downloaders", - ], - "system-tools.md": [ - "System Tools", - "System Tools, Hardware Tools, Windows ISOs, Customization", - ], - "file-tools.md": ["File Tools", "Download Managers, File Hosting, File Archivers"], - "video-tools.md": [ - "Video Tools", - "Video Players, Video Editors, Live Streaming, Animation", - ], - "text-tools.md": ["Text Tools", "Text Editors, Pastebins, Fonts, Translators"], - # "internet-tools.md": ["Internet Tools", "Browsers, Extensions, Search Engines"], - "social-media-tools.md": [ - "Social Media Tools", - "Discord Tools, Reddit Tools, YouTube Tools", - ], - "storage.md": ["Storage", "Sections too big to fit on main pages"], - "torrentpiracyguide.md": ["Torrenting", "Torrent Clients, Torrent Sites, Trackers"], - "videopiracyguide.md": [ - "Movies / TV / Anime", - "Stream Videos, Download Videos, Torrent Videos", - ], - "base64.md": ["Base64", "Base64 storage"], - "unsafesites.md": ["Unsafe Sites", "Unsafe/harmful sites to avoid."], -} - -title = '

' - -description = '

' - - -def getHeader(page: str): - data = headers[page] - header = "---\n" - header += f'title: "{data[0]}"\n' - header += f"description: {data[1]}\n" - header += "---\n" - header += f"{title}{data[0]}

\n" - header += f"{description}{data[1]}

\n\n" - return header - - -def main(): - files = os.listdir("docs/") - for file in files: - if file in headers: - with open(f"docs/{file}", "r", encoding="utf-8") as f: - content = f.read() - if not content.startswith("---"): - with open(f"docs/{file}", "w", encoding="utf-8") as f2: - header = getHeader(file) - f2.write(header + content) - - -main() diff --git a/.github/replace.py b/.github/replace.py deleted file mode 100644 index f2e86e7e4..000000000 --- a/.github/replace.py +++ /dev/null @@ -1,285 +0,0 @@ -import re -import os - - -def beginners_guide(text: str): - text = re.sub("\[TOC\]\n", "", text, flags=re.MULTILINE) - text = re.sub("\*\*Table of Contents\*\*\n\[TOC2\]\n", "", text, flags=re.MULTILINE) - text = re.sub( - "# -> \*\*\*Beginners Guide to Piracy\*\*\* <-\n", "", text, flags=re.MULTILINE - ) - text = re.sub(r"!!!note\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE) - text = re.sub(r"!!!info\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE) - text = re.sub( - r"!!!warning\s(.+?)\n", r":::warning\n\1\n:::\n", text, flags=re.MULTILINE - ) - text = re.sub(r">\s(.+?)\n", r"> \1\n\n", text, flags=re.MULTILINE) - text = re.sub( - "\*\*\[\^ Back to Top\]\(#beginners-guide-to-piracy\)\*\*", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub(r"!!!\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE) - text = re.sub("\n\*\*\[", "\n* **[", text, flags=re.MULTILINE) - text = re.sub(r">(.*)\n\n(.*)", r":::details \1\n\2\n:::", text, flags=re.MULTILINE) - return text - - -def individual(text: str): - # special cases of link not replaced correctly - text = re.sub( - "/storage/#encode--decode_urls", "/storage/#encode--decode-urls", text - ) - text = re.sub("/base64/#do-k-ument", "/base64/#do_k_ument", text) - text = re.sub("/devtools/#machine-learning2", "/devtools/#machine-learning-1", text) - text = re.sub("/linuxguide#software-sites2", "/linuxguide#software-sites-1", text) - text = re.sub("/linuxguide#software_sites", "/linuxguide#software-sites", text) - text = re.sub("/non-english#reading10", "/non-english#reading-9", text) - text = re.sub( - "/storage#satellite-.26amp.3B_street_view_maps", - "/storage#satellite-street-view-maps", - text, - ) - - # Base64-decoder script link - text = re.sub( - "(.+?) site or extension\.\n", - "Click on the texts to copy them decoded.\n", - text, - flags=re.MULTILINE, - ) - - return text - - -def general(text: str): - text = re.sub("\*\*\*\n\n", "", text, flags=re.MULTILINE) - text = re.sub("\*\*\*\n", "", text, flags=re.MULTILINE) - - text = re.sub("# ►", "##", text) - text = re.sub("## ▷", "###", text) - text = re.sub("####", "###", text) - - text = re.sub("⭐", ":star:", text) - text = re.sub("🌐", ":globe-with-meridians: ", text) - text = re.sub("↪️ ", ":repeat-button: ", text) - - text = re.sub( - r"^\*\*Note\*\* - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE - ) - text = re.sub( - r"^\* \*\*Note\*\* - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE - ) - text = re.sub(r"^Note - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE) - text = re.sub( - r"^\*\*Warning\*\* - (.+)$", r":::warning\n\1\n:::", text, flags=re.MULTILINE - ) - - text = re.sub(r"^\*\s([^*])", "- \\1", text, 0, re.MULTILINE) - return text - - -def remove_backtowiki_toc(text): - text = re.sub( - "\*\*\[◄◄ Back to Wiki Index\]\(https://www\.reddit\.com/r/FREEMEDIAHECKYEAH/wiki/index\)\*\*\n", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub( - "\*\*\[◄◄ Back to Wiki Index\]\(https://www\.reddit\.com/r/FREEMEDIAHECKYEAH/wiki/tools-index\)\*\*\n", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub( - r"\*\*\[Table of Contents\]\(https?:\/\/.*?ibb\.co.*\)\*\* - For mobile users\n", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub( - "\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub( - "\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\* \n\n", - "", - text, - flags=re.MULTILINE, - ) - text = re.sub( - "\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n", "", text, flags=re.MULTILINE - ) - text = re.sub( - "\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n", "", text, flags=re.MULTILINE - ) - text = re.sub("\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n", "", text, flags=re.MULTILINE) - return text - - -def replace_pages(text): - text = re.sub("https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/ai", "/ai", text) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/adblock-vpn-privacy", - "/adblockvpnguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/android", - "/android-iosguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/games", - "/gamingpiracyguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/reading", - "/readingpiracyguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/download", - "/downloadpiracyguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/torrent", - "/torrentpiracyguide", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/edu", "/edupiracyguide", text - ) - - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/system-tools", - "/system-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/file-tools", - "/file-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/internet-tools", - "/internet-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/social-media", - "/social-media-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/text-tools", - "/text-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/video-tools", - "/video-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/audio-tools", - "/audio-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/game-tools", - "/gaming-tools", - text, - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/video", - "/videopiracyguide", - text, - ) # This replace has to go after the /video-tools replace - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/audio", - "/audiopiracyguide", - text, - ) # This replace has to go after the /audio-tools replace - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/linux", "/linuxguide", text - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/non-eng", "/non-english", text - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/misc", "/miscguide", text - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/storage", "/storage", text - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/dev-tools", "/devtools", text - ) - text = re.sub( - "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/img-tools", "/img-tools", text - ) - - text = re.sub( - "https://github.com/nbats/FMHYedit/blob/main/base64.md#", "/base64/#", text - ) - - return text - - -def replace_underscore(text): - pattern = r"(/#[\w\-]+(?:_[\w]+)*)" - matches = re.findall(pattern, text) - for match in matches: - replacement = match.replace("_", "-") - text = text.replace(match, replacement) - return text - - -def reformat_subsections(text): - text = re.sub("/#wiki_", "/#", text) - text = re.sub("#wiki_", "/#", text) - text = re.sub(".25BA_", "", text) - text = re.sub(".25B7_", "", text) - text = re.sub("_.2F_", "-", text) - text = replace_underscore(text) - return text - - -def replace_urls(text): - text = remove_backtowiki_toc(text) - text = replace_pages(text) - text = reformat_subsections(text) - text = re.sub("/#", "#", text) - text = general(text) - text = individual(text) - return text - - -def main(): - files = os.listdir("docs") - for file in files: - if file.endswith(".md"): - with open(f"docs/{file}", "r", encoding="utf-8") as f: - content = f.read() - content = replace_urls(content) - if file == "beginners-guide.md": - content = beginners_guide(content) - with open(f"docs/{file}", "w", encoding="utf-8") as f2: - f2.write(content) - - -main() - -what = """ -![meow](https://files.catbox.moe/901c40.gif) -""" - -with open("docs/meow.md", "w", encoding="utf-8") as file: - file.write(what) diff --git a/.github/script.sh b/.github/script.sh deleted file mode 100644 index 078ea89ae..000000000 --- a/.github/script.sh +++ /dev/null @@ -1,6 +0,0 @@ -set -e - -python .github/replace.py -python .github/add-headers.py - -exit 0 diff --git a/.github/workflows/deploy-gh-pages.yml b/.github/workflows/deploy-gh-pages.yml index 2d8cc918d..9d436e2c1 100644 --- a/.github/workflows/deploy-gh-pages.yml +++ b/.github/workflows/deploy-gh-pages.yml @@ -30,14 +30,8 @@ jobs: cache: pnpm - name: Setup Pages uses: actions/configure-pages@v3 - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - name: Install dependencies run: pnpm install - - name: Preprocess files - run: bash .github/script.sh - name: Build with VitePress run: | pnpm docs:build diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 27a26ca26..c8493fab0 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,6 +1,7 @@ -import { defineConfig } from 'vitepress' -import UnoCSS from 'unocss/vite' import consola from 'consola' +import { basename } from 'pathe' +import UnoCSS from 'unocss/vite' +import { defineConfig } from 'vitepress' import { commitRef, feedback, @@ -9,9 +10,10 @@ import { sidebar, socialLinks } from './constants' -import { generateImages, generateMeta, generateFeed } from './hooks' +import { generateFeed, generateImages, generateMeta } from './hooks' +import { defs, emojiRender, movePlugin } from './markdown/emoji' import { toggleStarredPlugin } from './markdown/toggleStarred' -import { movePlugin, emojiRender, defs } from './markdown/emoji' +import { transformer } from './transformer' // @unocss-include @@ -55,6 +57,7 @@ export default defineConfig({ UnoCSS({ configFile: '../unocss.config.ts' }), + transformer(), { name: 'custom:adjust-order', configResolved(c) { @@ -64,6 +67,12 @@ export default defineConfig({ 'before', 'unocss:transformers:pre' ) + movePlugin( + c.plugins as any, + 'custom:transform-content', + 'before', + 'vitepress' + ) } } ], @@ -104,7 +113,10 @@ export default defineConfig({ { text: '📋 snowbin', link: 'https://pastes.fmhy.net' }, { text: '🔍 SearXNG', link: 'https://searx.fmhy.net/' }, { text: '🔍 Whoogle', link: 'https://whoogle.fmhy.net/' }, - { text: '🔗 Bookmarks', link: 'https://github.com/Rust1667/make-fmhy-bookmarks' } + { + text: '🔗 Bookmarks', + link: 'https://github.com/Rust1667/make-fmhy-bookmarks' + } ] } ], diff --git a/docs/.vitepress/transformer.ts b/docs/.vitepress/transformer.ts index e69de29bb..e99ea5e87 100644 --- a/docs/.vitepress/transformer.ts +++ b/docs/.vitepress/transformer.ts @@ -0,0 +1,352 @@ +import { basename } from 'pathe' +import type { Plugin } from 'vitepress' + +interface Header { + [key: string]: { title: string; description: string } +} + +const headers: Header = { + 'adblockvpnguide.md': { + title: 'Adblocking / Privacy', + description: "Adblocking, Privacy, VPN's, Proxies, Antivirus" + }, + 'ai.md': { + title: 'Artificial Intelligence', + description: 'Chat Bots, Text Generators, Image Generators, ChatGPT Tools' + }, + 'android-iosguide.md': { + title: 'Android / iOS', + description: 'Apps, Jailbreaking, Android Emulators' + }, + 'audiopiracyguide.md': { + title: 'Music / Podcasts / Radio', + description: 'Stream Audio, Download Audio, Torrent Audio' + }, + 'beginners-guide.md': { + title: 'Beginners Guide', + description: 'A Guide for Beginners to Piracy' + }, + 'downloadpiracyguide.md': { + title: 'Downloading', + description: 'Download Sites, Software Sites, Open Directories' + }, + 'edupiracyguide.md': { + title: 'Educational', + description: 'Courses, Documentaries, Learning Resources' + }, + 'gamingpiracyguide.md': { + title: 'Gaming / Emulation', + description: 'Download Games, ROMs, Gaming Tools' + }, + 'linuxguide.md': { + title: 'Linux / MacOS', + description: 'Apps, Software Sites, Gaming' + }, + 'miscguide.md': { + title: 'Miscellaneous', + description: 'Extensions, Indexes, News, Health, Food, Fun' + }, + 'nsfwpiracy.md': { + title: 'NSFW', + description: 'NSFW Indexes, Streaming, Downloading' + }, + 'non-english.md': { + title: 'Non-English', + description: 'International Piracy Sites' + }, + 'readingpiracyguide.md': { + title: 'Books / Comics / Manga', + description: 'Books, Comics, Magazines, Newspapers' + }, + 'gaming-tools.md': { + title: 'Gaming Tools', + description: 'Gaming Optimization, Game Launchers, Multiplayer' + }, + 'devtools.md': { + title: 'Developer Tools', + description: 'Git, Hosting, App Dev, Software Dev' + }, + 'img-tools.md': { + title: 'Image Tools', + description: 'Image Editors, Generators, Compress' + }, + 'audio-tools.md': { + title: 'Audio Tools', + description: 'Audio Players, Audio Editors, Audio Downloaders' + }, + 'system-tools.md': { + title: 'System Tools', + description: 'System Tools, Hardware Tools, Windows ISOs, Customization' + }, + 'file-tools.md': { + title: 'File Tools', + description: 'Download Managers, File Hosting, File Archivers' + }, + 'video-tools.md': { + title: 'Video Tools', + description: 'Video Players, Video Editors, Live Streaming, Animation' + }, + 'text-tools.md': { + title: 'Text Tools', + description: 'Text Editors, Pastebins, Fonts, Translators' + }, + 'internet-tools.md': { + title: 'Internet Tools', + description: 'Browsers, Extensions, Search Engines' + }, + 'social-media-tools.md': { + title: 'Social Media Tools', + description: 'Discord Tools, Reddit Tools, YouTube Tools' + }, + 'storage.md': { + title: 'Storage', + description: 'Sections too big to fit on main pages' + }, + 'torrentpiracyguide.md': { + title: 'Torrenting', + description: 'Torrent Clients, Torrent Sites, Trackers' + }, + 'videopiracyguide.md': { + title: 'Movies / TV / Anime', + description: 'Stream Videos, Download Videos, Torrent Videos' + }, + 'base64.md': { + title: 'Base64', + description: 'Base64 storage' + }, + 'unsafesites.md': { + title: 'Unsafe Sites', + description: 'Unsafe/harmful sites to avoid.' + } +} + +const excluded = ['readme.md', 'single-page', 'feedback.md', 'index.md'] + +export function transformer(): Plugin { + return { + name: 'custom:transform-content', + enforce: 'pre', + transform(code, id) { + const _id = basename(id) + + if ( + id.endsWith('.md') && + !excluded.includes(_id) && + // check if it's a post + !id.includes('posts') && + !id.includes('other') + ) { + const header = getHeader(id) + const contents = transform(code) + + if (_id === 'beginners-guide.md') { + const _contents = transformGuide(contents) + return header + _contents + } + return header + contents + } + } + } +} + +function getHeader(id: string) { + const title = + '

' + + const description = '

' + + const _id = basename(id) + const data = headers[_id] + let header = '---\n' + header += `title: "${data.title}"\n` + header += `description: ${data.description}\n` + header += '---\n' + header += `${title}${data.title}

\n` + header += `${description}${data.description}

\n\n` + return header +} + +function transformGuide(text: string): string { + const _text = text + .replace(/\[TOC\]\n/gm, '') + .replace(/\*\*Table of Contents\*\*\n\[TOC2\]\n/gm, '') + .replace(/# -> \*\*\*Beginners Guide to Piracy\*\*\* <-\n/gm, '') + .replace(/!!!note\s(.+?)\n/gm, '\n:::info\n$1\n:::\n') + .replace(/!!!info\s(.+?)\n/gm, '\n:::info\n$1\n:::\n') + .replace(/!!!warning\s(.+?)\n/gm, ':::warning\n$1\n:::\n') + .replace(/>\s(.+?)\n/gm, '> $1\n\n') + .replace(/\*\*\[\^ Back to Top\]\(#beginners-guide-to-piracy\)\*\*/gm, '') + .replace(/!!!\s(.+?)\n/gm, ':::info\n$1\n:::\n') + .replace(/\n\*\*\[/gm, '\n* **[') + .replace(/>(.*)\n\n(.*)/gm, ':::details $1\n$2\n:::') + return _text +} + +function replaceUnderscore(text: string): string { + const pattern = /\/#[\w\-]+(?:_[\w]+)*/g + const matches = text.match(pattern) || [] + for (const match of matches) { + const replacement = match.replace(/_/g, '-') + text = text.replace(match, replacement) + } + return text +} + +function transform(text: string): string { + let _text = text + .replace( + /\*\*\[◄◄ Back to Wiki Index\]\(https:\/\/www\.reddit\.com\/r\/FREEMEDIAHECKYEAH\/wiki\/index\)\*\*\n/gm, + '' + ) + .replace( + /\*\*\[◄◄ Back to Wiki Index\]\(https:\/\/www\.reddit\.com\/r\/FREEMEDIAHECKYEAH\/wiki\/tools-index\)\*\*\n/gm, + '' + ) + .replace( + /\*\*\[Table of Contents\]\(https?:\/\/.*?ibb\.co.*\)\*\* - For mobile users\n/gm, + '' + ) + .replace(/\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n/gm, '') + .replace(/\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\* \n\n/gm, '') + .replace(/\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n/gm, '') + .replace(/\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n/gm, '') + .replace(/\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n/gm, '') + .replace(/https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/ai/g, '/ai') + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/adblock-vpn-privacy/g, + '/adblockvpnguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/android/g, + '/android-iosguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/games/g, + '/gamingpiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/reading/g, + '/readingpiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/download/g, + '/downloadpiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/torrent/g, + '/torrentpiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/edu/g, + '/edupiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/system-tools/g, + '/system-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/file-tools/g, + '/file-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/internet-tools/g, + '/internet-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/social-media/g, + '/social-media-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/text-tools/g, + '/text-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/video-tools/g, + '/video-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/audio-tools/g, + '/audio-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/game-tools/g, + '/gaming-tools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/video/g, + '/videopiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/audio/g, + '/audiopiracyguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/linux/g, + '/linuxguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/non-eng/g, + '/non-english' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/misc/g, + '/miscguide' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/storage/g, + '/storage' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/dev-tools/g, + '/devtools' + ) + .replace( + /https:\/\/www.reddit.com\/r\/FREEMEDIAHECKYEAH\/wiki\/img-tools/g, + '/img-tools' + ) + .replace( + /https:\/\/github.com\/nbats\/FMHYedit\/blob\/main\/base64.md#/g, + '/base64/#' + ) + .replace(/\/#wiki_/g, '/#') + .replace(/#wiki_/g, '/#') + .replace(/.25BA_/g, '') + .replace(/.25B7_/g, '') + .replace(/_.2F_/g, '-') + + _text = replaceUnderscore(_text) + .replace(/\/#(\d)/g, '/#_$1') // Prefix headings starting with numbers + .replace(/#(\d)/g, '#_$1') // Prefix headings starting with numbers + .replace(/\/#/g, '#') + .replace(/\*\*\*\n\n/gm, '') + .replace(/\*\*\*\n/gm, '') + .replace(/# ►/g, '##') + .replace(/## ▷/g, '###') + .replace(/####/g, '###') + .replace(/⭐/g, ':star:') + .replace(/🌐/g, ':globe-with-meridians: ') + .replace(/↪ /g, ':repeat-button: ') + .replace(/^\*\*Note\*\* - (.+)$/gm, ':::tip\n$1\n:::') + .replace(/^\* \*\*Note\*\* - (.+)$/gm, ':::tip\n$1\n:::') + .replace(/^Note - (.+)$/gm, ':::tip\n$1\n:::') + .replace(/^\*\*Warning\*\* - (.+)$/gm, ':::warning\n$1\n:::') + .replace(/^\*\s([^*])/gm, '- $1') + .replace( + /\/storage\/#encode--decode_urls/g, + '/storage/#encode--decode-urls' + ) + .replace(/\/base64\/#do-k-ument/g, '/base64/#do_k_ument') + .replace(/\/devtools\/#machine-learning2/g, '/devtools/#machine-learning-1') + .replace(/\/linuxguide#software-sites2/g, '/linuxguide#software-sites-1') + .replace(/\/linuxguide#software_sites/g, '/linuxguide#software-sites') + .replace(/\/non-english#reading10/g, '/non-english#reading-9') + .replace( + /\/storage#satellite-.26amp.3B_street_view_maps/g, + '/storage#satellite-street-view-maps' + ) + .replace( + /(.+?) site or extension\.\n/gm, + 'Click on the texts to copy them decoded.\n' + ) + return _text +} diff --git a/package.json b/package.json index 1a54cdd94..03670a63a 100644 --- a/package.json +++ b/package.json @@ -44,5 +44,13 @@ "@types/nprogress": "^0.2.3", "prettier": "^3.3.3", "wrangler": "^3.68.0" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "@algolia/client-search", + "search-insights" + ] + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcb56af8b..bea388f55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4858,7 +4858,7 @@ snapshots: c12@1.5.1: dependencies: chokidar: 3.6.0 - defu: 6.1.3 + defu: 6.1.4 dotenv: 16.3.1 giget: 1.1.3 jiti: 1.20.0 @@ -5586,7 +5586,7 @@ snapshots: citty: 0.1.4 clipboardy: 3.0.0 consola: 3.2.3 - defu: 6.1.3 + defu: 6.1.4 get-port-please: 3.1.1 h3: 1.8.2 http-shutdown: 1.2.2 @@ -5595,7 +5595,7 @@ snapshots: node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.4.3 - ufo: 1.3.1 + ufo: 1.5.4 untun: 0.1.2 uqr: 0.1.2 @@ -5724,7 +5724,7 @@ snapshots: acorn: 8.11.0 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.1 + ufo: 1.5.4 mlly@1.5.0: dependencies: @@ -5883,8 +5883,8 @@ snapshots: ofetch@1.3.3: dependencies: destr: 2.0.2 - node-fetch-native: 1.4.1 - ufo: 1.3.1 + node-fetch-native: 1.6.4 + ufo: 1.5.4 ofetch@1.3.4: dependencies: @@ -6191,7 +6191,7 @@ snapshots: serve-placeholder@2.0.1: dependencies: - defu: 6.1.3 + defu: 6.1.4 serve-static@1.15.0: dependencies: @@ -6408,9 +6408,9 @@ snapshots: unenv@1.7.4: dependencies: consola: 3.2.3 - defu: 6.1.3 + defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.4.1 + node-fetch-native: 1.6.4 pathe: 1.1.2 unicode-trie@2.0.0: @@ -6483,9 +6483,9 @@ snapshots: listhen: 1.5.5 lru-cache: 10.0.1 mri: 1.2.0 - node-fetch-native: 1.4.1 + node-fetch-native: 1.6.4 ofetch: 1.3.3 - ufo: 1.3.1 + ufo: 1.5.4 transitivePeerDependencies: - supports-color