| import { json } from "@sveltejs/kit"; | |
| export const prerender = true; | |
| function removeMarkdown(markdown) { | |
| return markdown | |
| .replace(/^#{1,6}\s+/gm, "") | |
| .replace(/(\*\*|__)(.*?)\1/g, "$2") | |
| .replace(/(\*|_)(.*?)\1/g, "$2") | |
| .replace(/~~(.*?)~~/g, "$1") | |
| .replace(/`([^`]+)`/g, "$1") | |
| .replace(/```[\s\S]*?```/g, "") | |
| .replace(/!\[.*?\]\(.*?\)/g, "") | |
| .replace(/\[(.*?)\]\(.*?\)/g, "$1") | |
| .replace(/^>\s+/gm, "") | |
| .replace(/^---$/gm, "") | |
| .replace(/^\s*[-+*]\s+/gm, "") | |
| .replace(/^\s*\d+\.\s+/gm, "") | |
| .replace(/\n{2,}/g, "\n") | |
| .trim(); | |
| } | |
| export async function GET() { | |
| const gradio_doc_paths = import.meta.glob( | |
| "/src/lib/templates/gradio/**/*.svx" | |
| ); | |
| const gradio_doc_pages = await Promise.all( | |
| Object.entries(gradio_doc_paths).map(async ([path, content]) => { | |
| content = await content(); | |
| content = content.default.render().html; | |
| let match = content.match(/<h1[^>]*>(.*?)<\/h1>/i); | |
| let title = ""; | |
| if (match && match[1]) { | |
| title = match[1]; | |
| } | |
| path = path.split("/").slice(-1)[0]; | |
| path = path.match(/(?:\d{2}_)?(.+)/i)[1]; | |
| path = "/main/docs/gradio/" + path.split(".svx")[0]; | |
| return { | |
| title: title, | |
| slug: path, | |
| content: content.replaceAll(/<[^>]*>?/gm, ""), | |
| type: "DOCS" | |
| }; | |
| }) | |
| ); | |
| const client_doc_paths = import.meta.glob( | |
| "/src/lib/templates/python-client/**/*.svx" | |
| ); | |
| const client_doc_pages = await Promise.all( | |
| Object.entries(client_doc_paths).map(async ([path, content]) => { | |
| content = await content(); | |
| content = content.default.render().html; | |
| let match = content.match(/<h1[^>]*>(.*?)<\/h1>/i); | |
| let title = ""; | |
| if (match && match[1]) { | |
| title = match[1]; | |
| } | |
| path = path.split("/").slice(-1)[0]; | |
| path = path.match(/(?:\d{2}_)?(.+)/i)[1]; | |
| path = "/main/docs/python-client/" + path.split(".svx")[0]; | |
| return { | |
| title: title, | |
| slug: path, | |
| content: content.replaceAll(/<[^>]*>?/gm, ""), | |
| type: "DOCS" | |
| }; | |
| }) | |
| ); | |
| const guide_paths = import.meta.glob("/src/lib/json/guides/*.json"); | |
| delete guide_paths["/src/lib/json/guides/guides_by_category.json"]; | |
| delete guide_paths["/src/lib/json/guides/guide_names.json"]; | |
| const guide_pages = await Promise.all( | |
| Object.entries(guide_paths).map(async ([path, content]) => { | |
| content = await content(); | |
| content = content.default.guide; | |
| return { | |
| title: content.pretty_name, | |
| slug: content.url, | |
| content: removeMarkdown(content.content.replaceAll(/<[^>]*>?/gm, "")), | |
| type: "GUIDE" | |
| }; | |
| }) | |
| ); | |
| const jsons_path = import.meta.glob("/src/lib/json/docs.json"); | |
| const jsons_content = await jsons_path["/src/lib/json/docs.json"](); | |
| const js_client_page = { | |
| title: "JavaScript Client Library", | |
| slug: "/docs/js-client", | |
| content: removeMarkdown(jsons_content.default.js_client), | |
| type: "DOCS" | |
| }; | |
| const js_components = jsons_content.default.js; | |
| const js_pages = await Promise.all( | |
| Object.entries(js_components).map(async ([name, content]) => { | |
| return { | |
| title: name, | |
| slug: "/docs/js/" + name, | |
| content: removeMarkdown(content.replaceAll(/<[^>]*>?/gm, "")), | |
| type: "DOCS" | |
| }; | |
| }) | |
| ); | |
| let all_pages = gradio_doc_pages | |
| .concat(client_doc_pages) | |
| .concat(guide_pages) | |
| .concat([js_client_page]) | |
| .concat(js_pages); | |
| return json(all_pages); | |
| } | |