summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/blog-query.ts
diff options
context:
space:
mode:
authorKha Nguyen <hi@khanguyen.com>2025-07-24 17:04:27 -0500
committerKha Nguyen <hi@khanguyen.com>2025-07-24 17:04:27 -0500
commit8e737d87e0accbf1d433f4c8b1e8e0f125849799 (patch)
tree386560ac1449991da1ab6d43637e82046a725e71 /apps/web/src/lib/blog-query.ts
parent1ccacf6bb5db579cf6f343d9de57bce92d296f5f (diff)
downloadopencut-8e737d87e0accbf1d433f4c8b1e8e0f125849799.tar.gz
Revert "merge main"
This reverts commit 1ccacf6bb5db579cf6f343d9de57bce92d296f5f.
Diffstat (limited to 'apps/web/src/lib/blog-query.ts')
-rw-r--r--apps/web/src/lib/blog-query.ts87
1 files changed, 39 insertions, 48 deletions
diff --git a/apps/web/src/lib/blog-query.ts b/apps/web/src/lib/blog-query.ts
index 5cba0cf3..430f58bf 100644
--- a/apps/web/src/lib/blog-query.ts
+++ b/apps/web/src/lib/blog-query.ts
@@ -1,10 +1,4 @@
-import type {
- MarbleAuthorList,
- MarbleCategoryList,
- MarblePost,
- MarblePostList,
- MarbleTagList,
-} from "@/types/post";
+import type { MarbleAuthorList, MarbleCategoryList, MarblePost, MarblePostList, MarbleTagList } from '@/types/post';
import { unified } from "unified";
import rehypeParse from "rehype-parse";
import rehypeStringify from "rehype-stringify";
@@ -12,53 +6,50 @@ import rehypeSlug from "rehype-slug";
import rehypeAutolinkHeadings from "rehype-autolink-headings";
import rehypeSanitize from "rehype-sanitize";
-const url =
- process.env.NEXT_PUBLIC_MARBLE_API_URL ?? "https://api.marblecms.com";
+const url = process.env.NEXT_PUBLIC_MARBLE_API_URL ?? "https://api.marblecms.com";
const key = process.env.MARBLE_WORKSPACE_KEY ?? "cmd4iw9mm0006l804kwqv0k46";
async function fetchFromMarble<T>(endpoint: string): Promise<T> {
- try {
- const response = await fetch(`${url}/${key}/${endpoint}`);
- if (!response.ok) {
- throw new Error(
- `Failed to fetch ${endpoint}: ${response.status} ${response.statusText}`
- );
+ try {
+ const response = await fetch(`${url}/${key}/${endpoint}`);
+ if (!response.ok) {
+ throw new Error(`Failed to fetch ${endpoint}: ${response.status} ${response.statusText}`);
+ }
+ return await response.json() as T;
+ } catch (error) {
+ console.error(`Error fetching ${endpoint}:`, error);
+ throw error;
}
- return (await response.json()) as T;
- } catch (error) {
- console.error(`Error fetching ${endpoint}:`, error);
- throw error;
}
-}
-
-export async function getPosts() {
- return fetchFromMarble<MarblePostList>("posts");
-}
-
-export async function getTags() {
- return fetchFromMarble<MarbleTagList>("tags");
-}
-
-export async function getSinglePost(slug: string) {
- return fetchFromMarble<MarblePost>(`posts/${slug}`);
-}
-
-export async function getCategories() {
- return fetchFromMarble<MarbleCategoryList>("categories");
-}
-
-export async function getAuthors() {
- return fetchFromMarble<MarbleAuthorList>("authors");
-}
+
+ export async function getPosts() {
+ return fetchFromMarble<MarblePostList>('posts');
+ }
+
+ export async function getTags() {
+ return fetchFromMarble<MarbleTagList>('tags');
+ }
+
+ export async function getSinglePost(slug: string) {
+ return fetchFromMarble<MarblePost>(`posts/${slug}`);
+ }
+
+ export async function getCategories() {
+ return fetchFromMarble<MarbleCategoryList>('categories');
+ }
+
+ export async function getAuthors() {
+ return fetchFromMarble<MarbleAuthorList>('authors');
+ }
export async function processHtmlContent(html: string): Promise<string> {
- const processor = unified()
- .use(rehypeSanitize)
- .use(rehypeParse, { fragment: true })
- .use(rehypeSlug)
- .use(rehypeAutolinkHeadings, { behavior: "append" })
- .use(rehypeStringify);
+ const processor = unified()
+ .use(rehypeSanitize)
+ .use(rehypeParse, { fragment: true })
+ .use(rehypeSlug)
+ .use(rehypeAutolinkHeadings, { behavior: "append" })
+ .use(rehypeStringify);
- const file = await processor.process(html);
- return String(file);
+ const file = await processor.process(html);
+ return String(file);
}