Skip to content

Commit

Permalink
Update types
Browse files Browse the repository at this point in the history
  • Loading branch information
Princesseuh committed Sep 28, 2022
1 parent c02f425 commit f0a0927
Show file tree
Hide file tree
Showing 16 changed files with 41 additions and 38 deletions.
File renamed without changes.
6 changes: 3 additions & 3 deletions src/components/layout/MobileMenu.astro
@@ -1,12 +1,12 @@
---
import { headerMenu as globalMenu } from "$data/headerMenu"
import type { MarkdownInstance, WikiItemInstance } from "$data/shared"
import type { MDXInstance, WikiItemInstance } from "$data/shared"
import { getWikiItemsByCategory, postProcessWikiItem, WikiItem } from "$data/wiki"
import { wikiCategories, WikiCategory } from "$data/wikiCategories"
import Socials from "./Socials.astro"
let rawWikiItems: MarkdownInstance<WikiItem>[] = []
let wikiItems: MarkdownInstance<WikiItem>[] = []
let rawWikiItems: MDXInstance<WikiItem>[] = []
let wikiItems: MDXInstance<WikiItem>[] = []
const url = new URL(Astro.request.url)
const isWikiPage = url.pathname.startsWith("/wiki")
Expand Down
8 changes: 4 additions & 4 deletions src/data/shared.ts
@@ -1,6 +1,6 @@
// Trying to import those type in a .astro file creates a weird error so we re-export it from here
import type { MarkdownHeading } from "@astrojs/markdown-remark"
import type { GetStaticPaths, MarkdownInstance, Page } from "astro"
import type { GetStaticPaths, MDXInstance, Page } from "astro"
import type { WikiItem } from "./wiki"

interface BaseFrontmatter {
Expand All @@ -9,15 +9,15 @@ interface BaseFrontmatter {
url: URL
}

// HACK: Using MarkdownInstance<WikiItem> directly inside the template leads to an error due to an issue in Astro
// HACK: Using MDXInstance<WikiItem> directly inside the template leads to an error due to an issue in Astro
// See: https://github.com/withastro/astro/issues/3793
type WikiItemInstance = MarkdownInstance<WikiItem>
type WikiItemInstance = MDXInstance<WikiItem>

export type {
BaseFrontmatter,
Page,
GetStaticPaths,
WikiItemInstance,
MarkdownInstance,
MDXInstance,
MarkdownHeading,
}
10 changes: 5 additions & 5 deletions src/data/wiki.ts
@@ -1,5 +1,5 @@
import { getBaseSiteURL, getSlugFromFile } from "$utils"
import type { MarkdownInstance } from "astro"
import type { MDXInstance } from "astro"
import { execSync } from "child_process"
import type { BaseFrontmatter } from "./shared"

Expand Down Expand Up @@ -68,16 +68,16 @@ function postProcessWikiItem(wikiItem: WikiItem, file: string): WikiItem {
}

function getWikiItemsByCategory(
wikiItems: MarkdownInstance<WikiItem>[],
wikiItems: MDXInstance<WikiItem>[],
key: string,
): MarkdownInstance<WikiItem>[] {
): MDXInstance<WikiItem>[] {
return wikiItems
.filter((wikiItem: MarkdownInstance<WikiItem>) => {
.filter((wikiItem: MDXInstance<WikiItem>) => {
return (
wikiItem.frontmatter.navigation.category === key && !wikiItem.frontmatter.navigation.hidden
)
})
.sort((a: MarkdownInstance<WikiItem>, b: MarkdownInstance<WikiItem>) => {
.sort((a: MDXInstance<WikiItem>, b: MDXInstance<WikiItem>) => {
return a.frontmatter.navigation.order - b.frontmatter.navigation.order
})
}
Expand Down
4 changes: 2 additions & 2 deletions src/layouts/ArticleLayout.astro
Expand Up @@ -2,10 +2,10 @@
import BaseLayout from "$layouts/BaseLayout.astro"
import ContentHeader from "$components/shared/ContentHeader.astro"
import type { Article } from "$data/articles"
import type { MarkdownInstance } from "$data/shared"
import type { MDXInstance } from "$data/shared"
export interface Props {
article: MarkdownInstance<Article>
article: MDXInstance<Article>
}
const { article } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/layouts/ArticleListLayout.astro
Expand Up @@ -3,10 +3,10 @@ import BaseLayout from "$layouts/BaseLayout.astro"
import ArticlePreview from "$components/shared/ArticlePreview.astro"
import ArticleListAside from "$components/articleList/ArticleListAside.astro"
import type { Article } from "$data/articles"
import type { MarkdownInstance, Page } from "$data/shared"
import type { MDXInstance, Page } from "$data/shared"
export interface Props {
page: Page<MarkdownInstance<Article>>
page: Page<MDXInstance<Article>>
title: string
}
Expand Down
4 changes: 2 additions & 2 deletions src/layouts/ProjectLayout.astro
@@ -1,11 +1,11 @@
---
import ContentHeader from "$components/shared/ContentHeader.astro"
import type { Project } from "$data/projects"
import type { MarkdownInstance } from "$data/shared"
import type { MDXInstance } from "$data/shared"
import BaseLayout from "./BaseLayout.astro"
export interface Props {
project: MarkdownInstance<Project>
project: MDXInstance<Project>
}
const { project } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/layouts/WikiLayout.astro
Expand Up @@ -5,10 +5,10 @@ import ContentHeader from "$components/shared/ContentHeader.astro"
import WikiTOC from "$components/wiki/WikiTOC.astro"
import { readableDate } from "$utils"
import type { WikiItem } from "$data/wiki"
import type { MarkdownInstance } from "$data/shared"
import type { MDXInstance } from "astro"
export interface Props {
wikiItem: MarkdownInstance<WikiItem>
wikiItem: MDXInstance<WikiItem>
}
const { wikiItem } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/pages/article/[slug].astro
Expand Up @@ -3,7 +3,7 @@
// as the paginated article list is or they'll conflict, so this means our articles URL are `/article/${slug}` instead
// of `/articles/${slug}` (with a s), once that issue is fixed, we'll be able to put it back in the right place
import { Article, postProcessArticle } from "$data/articles"
import type { GetStaticPaths, MarkdownInstance } from "$data/shared"
import type { GetStaticPaths, MDXInstance } from "$data/shared"
import ArticleLayout from "$layouts/ArticleLayout.astro"
import { getSlugFromFile } from "$utils"
Expand All @@ -20,7 +20,7 @@ export const getStaticPaths: GetStaticPaths = async () => {
}
export interface Props {
article: MarkdownInstance<Article>
article: MDXInstance<Article>
}
const { article } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/pages/articles/[...page].astro
@@ -1,6 +1,6 @@
---
import { Article, postProcessArticle } from "$data/articles"
import type { GetStaticPaths, MarkdownInstance, Page } from "$data/shared"
import type { GetStaticPaths, MDXInstance, Page } from "$data/shared"
import ArticleListLayout from "$layouts/ArticleListLayout.astro"
export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
Expand All @@ -18,7 +18,7 @@ export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
}
export interface Props {
page: Page<MarkdownInstance<Article>>
page: Page<MDXInstance<Article>>
}
const { page } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/pages/articles/tags/[tag]/[...page].astro
@@ -1,6 +1,6 @@
---
import { Article, postProcessArticle } from "$data/articles"
import type { GetStaticPaths, MarkdownInstance, Page } from "$data/shared"
import type { GetStaticPaths, MDXInstance, Page } from "$data/shared"
import ArticleListLayout from "$layouts/ArticleListLayout.astro"
export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
Expand All @@ -25,7 +25,7 @@ export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
}
export interface Props {
page: Page<MarkdownInstance<Article>>
page: Page<MDXInstance<Article>>
}
const { page } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/pages/articles/years/[year]/[...page].astro
@@ -1,6 +1,6 @@
---
import { Article, postProcessArticle } from "$data/articles"
import type { GetStaticPaths, MarkdownInstance, Page } from "$data/shared"
import type { GetStaticPaths, MDXInstance, Page } from "$data/shared"
import ArticleListLayout from "$layouts/ArticleListLayout.astro"
export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
Expand All @@ -26,7 +26,7 @@ export const getStaticPaths: GetStaticPaths = async ({ paginate }) => {
}
export interface Props {
page: Page<MarkdownInstance<Article>>
page: Page<MDXInstance<Article>>
}
const { page } = Astro.props
Expand Down
4 changes: 2 additions & 2 deletions src/pages/projects.astro
@@ -1,6 +1,6 @@
---
import { postProcessProject, Project, ProjectType } from "$data/projects"
import type { MarkdownInstance } from "$data/shared"
import type { MDXInstance } from "$data/shared"
import BaseLayout from "$layouts/BaseLayout.astro"
const rawProjects = await Astro.glob<Project>("/content/projects/**/*.mdx")
Expand All @@ -12,7 +12,7 @@ const projects = rawProjects.map((project) => ({
// Create an object with sub-objects corresponding to the different types of projects that exist
// The cool part about this: it's 100% automated based on types and content, we'll practically never have to touch this
type ProjectList = {
[projectType in ProjectType]?: MarkdownInstance<Project>[]
[projectType in ProjectType]?: MDXInstance<Project>[]
}
const projectsPerType: ProjectList = {}
Expand Down
4 changes: 2 additions & 2 deletions src/pages/projects/[type]/[slug].astro
@@ -1,6 +1,6 @@
---
import { postProcessProject, Project } from "$data/projects"
import type { GetStaticPaths, MarkdownInstance } from "$data/shared"
import type { GetStaticPaths, MDXInstance } from "$data/shared"
import ProjectLayout from "$layouts/ProjectLayout.astro"
export const getStaticPaths: GetStaticPaths = async () => {
Expand All @@ -21,7 +21,7 @@ export const getStaticPaths: GetStaticPaths = async () => {
}
export interface Props {
project: MarkdownInstance<Project>
project: MDXInstance<Project>
}
const { project } = Astro.props
Expand Down
11 changes: 7 additions & 4 deletions src/pages/wiki.astro
@@ -1,13 +1,16 @@
---
import WikiLayout from "$layouts/WikiLayout.astro"
import { postProcessWikiItem, WikiItem } from "$data/wiki"
import type { MarkdownInstance } from "$data/shared"
import type { MDXInstance } from "astro"
const rawWikiIndex = (await import("/content/wiki/index.md")) as MarkdownInstance<WikiItem>
const rawWikiIndex = await import("/content/wiki/index.mdx")
const wikiIndex: MarkdownInstance<WikiItem> = {
const wikiIndex: MDXInstance<WikiItem> = {
...rawWikiIndex,
frontmatter: postProcessWikiItem(rawWikiIndex.frontmatter, rawWikiIndex.file),
frontmatter: postProcessWikiItem(rawWikiIndex.frontmatter as WikiItem, rawWikiIndex.file),
// HACK: Seems like the types are different between an Astro.glob import and a direct import?
getHeaders: () => undefined,
default: () => undefined as never,
}
---

Expand Down
4 changes: 2 additions & 2 deletions src/pages/wiki/[category]/[slug].astro
@@ -1,5 +1,5 @@
---
import type { GetStaticPaths, MarkdownInstance } from "$data/shared"
import type { GetStaticPaths, MDXInstance } from "$data/shared"
import { postProcessWikiItem, WikiItem } from "$data/wiki"
import WikiLayout from "$layouts/WikiLayout.astro"
Expand All @@ -19,7 +19,7 @@ export const getStaticPaths: GetStaticPaths = async () => {
}
export interface Props {
wikiItem: MarkdownInstance<WikiItem>
wikiItem: MDXInstance<WikiItem>
}
const { wikiItem } = Astro.props
Expand Down

0 comments on commit f0a0927

Please sign in to comment.