refactor: apply new eslint rules

This commit is contained in:
Kim, Jimin 2023-07-02 13:48:44 +09:00
parent 4a7ced5550
commit e138285b7b
39 changed files with 173 additions and 179 deletions

View file

@ -1,24 +1,20 @@
import darkTheme from "@developomp-site/theme/dist/dark.json" import darkTheme from "@developomp-site/theme/dist/dark.json"
import lightTheme from "@developomp-site/theme/dist/light.json" import lightTheme from "@developomp-site/theme/dist/light.json"
import { useMeta, useTitle, useTitleTemplate } from "hoofd"
import { useContext, useEffect, useState } from "react" import { useContext, useEffect, useState } from "react"
import { Routes, Route } from "react-router-dom"
import styled, { ThemeProvider } from "styled-components"
import { useTitleTemplate, useTitle, useMeta } from "hoofd"
import { isIE } from "react-device-detect" import { isIE } from "react-device-detect"
import { Route, Routes } from "react-router-dom"
import styled, { ThemeProvider } from "styled-components"
import Loading from "./components/Loading"
import Header from "./components/Header"
import Footer from "./components/Footer" import Footer from "./components/Footer"
import Header from "./components/Header"
import Home from "./pages/Home" import Loading from "./components/Loading"
import Search from "./pages/Search"
import Page from "./pages/Page"
import NotFound from "./pages/NotFound"
import GlobalStyle from "./styles/globalStyle"
import { globalContext } from "./globalContext" import { globalContext } from "./globalContext"
import Home from "./pages/Home"
import NotFound from "./pages/NotFound"
import Page from "./pages/Page"
import Search from "./pages/Search"
import GlobalStyle from "./styles/globalStyle"
const IENotSupported = styled.p` const IENotSupported = styled.p`
margin: auto; margin: auto;

View file

@ -1,3 +1,4 @@
import { type FC } from "react"
import styled from "styled-components" import styled from "styled-components"
import GithubLinkIcon from "../GithubLinkIcon" import GithubLinkIcon from "../GithubLinkIcon"
@ -28,7 +29,7 @@ const StyledFooterContainer = styled.div`
max-width: ${({ theme }) => theme.theme.maxDisplayWidth.desktop}; max-width: ${({ theme }) => theme.theme.maxDisplayWidth.desktop};
` `
export default () => { const Footer: FC = () => {
return ( return (
<StyledFooter> <StyledFooter>
<StyledFooterContainer> <StyledFooterContainer>
@ -41,3 +42,5 @@ export default () => {
</StyledFooter> </StyledFooter>
) )
} }
export default Footer

View file

@ -1,8 +1,7 @@
import { ReactNode } from "react"
import styled from "styled-components"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faGithub } from "@fortawesome/free-brands-svg-icons" import { faGithub } from "@fortawesome/free-brands-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import type { FC, ReactNode } from "react"
import styled from "styled-components"
const StyledGithubLink = styled.a<{ size?: string }>` const StyledGithubLink = styled.a<{ size?: string }>`
font-size: ${(props) => props.size || "2.5rem"}; font-size: ${(props) => props.size || "2.5rem"};
@ -20,7 +19,7 @@ interface Props {
children?: ReactNode children?: ReactNode
} }
export default ({ link, size, children }: Props) => { const GithubLinkIcon: FC<Props> = ({ link, size, children }) => {
return ( return (
<StyledGithubLink <StyledGithubLink
aria-label="GitHub repository" aria-label="GitHub repository"
@ -33,3 +32,5 @@ export default ({ link, size, children }: Props) => {
</StyledGithubLink> </StyledGithubLink>
) )
} }
export default GithubLinkIcon

View file

@ -1,7 +1,8 @@
import { type FC } from "react"
import styled from "styled-components" import styled from "styled-components"
import ThemeToggleButton from "./ThemeToggleButton"
import SearchButton from "./SearchButton" import SearchButton from "./SearchButton"
import ThemeToggleButton from "./ThemeToggleButton"
const RightButtons = styled.div` const RightButtons = styled.div`
display: flex; display: flex;
@ -9,7 +10,7 @@ const RightButtons = styled.div`
margin-left: auto; margin-left: auto;
` `
export default () => { const Buttons: FC = () => {
return ( return (
<RightButtons> <RightButtons>
<ThemeToggleButton /> <ThemeToggleButton />
@ -17,3 +18,5 @@ export default () => {
</RightButtons> </RightButtons>
) )
} }
export default Buttons

View file

@ -1,9 +1,9 @@
import { faSearch } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import ReactTooltip from "react-tooltip" import ReactTooltip from "react-tooltip"
import HeaderButton from "../HeaderButton" import HeaderButton from "../HeaderButton"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faSearch } from "@fortawesome/free-solid-svg-icons"
const SearchButton = () => { const SearchButton = () => {
return ( return (

View file

@ -1,10 +1,9 @@
import { faMoon, faSun } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { useContext } from "react" import { useContext } from "react"
import styled from "styled-components"
import { isMobile } from "react-device-detect" import { isMobile } from "react-device-detect"
import ReactTooltip from "react-tooltip" import ReactTooltip from "react-tooltip"
import styled from "styled-components"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faMoon, faSun } from "@fortawesome/free-solid-svg-icons"
import { ActionsEnum, globalContext } from "../../../globalContext" import { ActionsEnum, globalContext } from "../../../globalContext"
import { HeaderButtonCSS } from "../HeaderButton" import { HeaderButtonCSS } from "../HeaderButton"

View file

@ -1,14 +1,13 @@
import { type FC } from "react"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import styled from "styled-components" import styled from "styled-components"
import ReadProgress from "./ReadProgress"
import Nav from "./Nav"
import Sidebar from "../Sidebar" import Sidebar from "../Sidebar"
import Buttons from "./Buttons" import Buttons from "./Buttons"
import Nav from "./Nav"
import ReadProgress from "./ReadProgress"
const Header = styled.header` const StyledHeader = styled.header`
/* set z index to arbitrarily high value to prevent other components from drawing over it */ /* set z index to arbitrarily high value to prevent other components from drawing over it */
z-index: 9999; z-index: 9999;
@ -43,18 +42,25 @@ const Icon = styled.img`
margin: 1rem; margin: 1rem;
` `
export default () => { const Header: FC = () => {
return ( return (
<Header> <StyledHeader>
<Container> <Container>
<Link to="/" aria-label="homepage"> <Link to="/" aria-label="homepage">
<Icon width={40} height={40} src="/icon/icon_circle.svg" alt="logo" /> <Icon
width={40}
height={40}
src="/icon/icon_circle.svg"
alt="logo"
/>
</Link> </Link>
<Nav /> <Nav />
<Buttons /> <Buttons />
<Sidebar /> <Sidebar />
</Container> </Container>
<ReadProgress /> <ReadProgress />
</Header> </StyledHeader>
) )
} }
export default Header

View file

@ -1,11 +1,11 @@
import styled from "styled-components" import { type FC } from "react"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import styled from "styled-components"
import HeaderButton from "./HeaderButton"
import NavbarData from "../../data/NavbarData" import NavbarData from "../../data/NavbarData"
import HeaderButton from "./HeaderButton"
const Nav = styled.div` const StyledNav = styled.div`
display: flex; display: flex;
height: 100%; height: 100%;
@ -15,20 +15,22 @@ const Nav = styled.div`
} }
` `
export default () => { const Nav: FC = () => {
return ( return (
<Nav> <StyledNav>
{NavbarData.map(({ path, title }, index) => { {NavbarData.map(({ path, title }, index) => {
return path.at(0) === "/" ? ( return path.at(0) === "/" ? (
<Link key={index} to={path}> <Link key={index} to={path}>
<HeaderButton>{title}</HeaderButton> <HeaderButton>{title}</HeaderButton>
</Link> </Link>
) : ( ) : (
<a key={index} target="_blank" href={path}> <a key={index} target="_blank" href={path} rel="noreferrer">
<HeaderButton>{title}</HeaderButton> <HeaderButton>{title}</HeaderButton>
</a> </a>
) )
})} })}
</Nav> </StyledNav>
) )
} }
export default Nav

View file

@ -1,20 +1,18 @@
import styled from "styled-components"
import { Link } from "react-router-dom"
import { PostData } from "@developomp-site/blog-content/src/types/types" import { PostData } from "@developomp-site/blog-content/src/types/types"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { import {
faBook, faBook,
faCalendar, faCalendar,
faHourglass, faHourglass,
} from "@fortawesome/free-solid-svg-icons" } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { Link } from "react-router-dom"
import styled from "styled-components"
import MainContent from "./MainContent"
import Tag from "./Tag" import Tag from "./Tag"
import TagList from "./TagList" import TagList from "./TagList"
import MainContent from "./MainContent"
const PostCard = styled(MainContent)` const StyledPostCard = styled(MainContent)`
box-shadow: 0 4px 10px rgb(0 0 0 / 10%); box-shadow: 0 4px 10px rgb(0 0 0 / 10%);
text-align: left; text-align: left;
margin-bottom: 2rem; margin-bottom: 2rem;
@ -56,12 +54,12 @@ interface Props {
postData: PostCardData postData: PostCardData
} }
export default (props: Props) => { const PostCard = (props: Props) => {
const { postData } = props const { postData } = props
const { content_id, wordCount, date, readTime, title, tags } = postData const { content_id, wordCount, date, readTime, title, tags } = postData
return ( return (
<PostCard> <StyledPostCard>
<PostCardContainer to={content_id}> <PostCardContainer to={content_id}>
<Title> <Title>
{title || "No title"} {title || "No title"}
@ -94,6 +92,7 @@ export default (props: Props) => {
: "unknown length"} : "unknown length"}
</MetaContainer> </MetaContainer>
</PostCardContainer> </PostCardContainer>
</PostCard> </StyledPostCard>
) )
} }
export default PostCard

View file

@ -1,15 +1,13 @@
import { useCallback, useState } from "react"
import styled from "styled-components"
import ReactTooltip from "react-tooltip"
import { isMobile } from "react-device-detect"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faEllipsisV, faTimes } from "@fortawesome/free-solid-svg-icons" import { faEllipsisV, faTimes } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import SubMenu from "./SubMenu" import { useCallback, useState } from "react"
import { isMobile } from "react-device-detect"
import ReactTooltip from "react-tooltip"
import styled from "styled-components"
import NavbarData from "../../data/NavbarData" import NavbarData from "../../data/NavbarData"
import { HeaderButtonCSS } from "../Header/HeaderButton" import { HeaderButtonCSS } from "../Header/HeaderButton"
import SubMenu from "./SubMenu"
const SidebarOpenButton = styled.div` const SidebarOpenButton = styled.div`
${HeaderButtonCSS} ${HeaderButtonCSS}

View file

@ -2,12 +2,11 @@
* @file Submenu item for sidebar * @file Submenu item for sidebar
*/ */
import type { Item } from "../../data/NavbarData"
import { useCallback, useState } from "react" import { useCallback, useState } from "react"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import styled, { css } from "styled-components" import styled, { css } from "styled-components"
import type { Item } from "../../data/NavbarData"
import button from "../../styles/button" import button from "../../styles/button"
const sharedStyle = css` const sharedStyle = css`

View file

@ -1,10 +1,9 @@
import { MouseEvent } from "react"
import styled from "styled-components"
import { faHashtag } from "@fortawesome/free-solid-svg-icons" import { faHashtag } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import type { FC, MouseEvent } from "react"
import styled from "styled-components"
const Tag = styled.div` const StyledTag = styled.div`
text-align: center; text-align: center;
margin-right: 0.8rem; margin-right: 0.8rem;
@ -18,10 +17,12 @@ interface Props {
onClick?: (event: MouseEvent<never>) => void onClick?: (event: MouseEvent<never>) => void
} }
export default (props: Props) => { const Tag: FC<Props> = (props) => {
return ( return (
<Tag onClick={props.onClick || undefined}> <StyledTag onClick={props.onClick || undefined}>
<FontAwesomeIcon icon={faHashtag} /> &nbsp;{props.text} <FontAwesomeIcon icon={faHashtag} /> &nbsp;{props.text}
</Tag> </StyledTag>
) )
} }
export default Tag

View file

@ -1,9 +1,9 @@
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { import {
faFileLines, faFileLines,
faUser, faUser,
faUserTie, faUserTie,
} from "@fortawesome/free-solid-svg-icons" } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
// item from sidebar data // item from sidebar data
export type Item = { export type Item = {

View file

@ -1,10 +1,9 @@
import type { Dispatch, ReactNode, ReactElement } from "react"
import type { Theme } from "@developomp-site/theme" import type { Theme } from "@developomp-site/theme"
import darkTheme from "@developomp-site/theme/dist/dark.json" import darkTheme from "@developomp-site/theme/dist/dark.json"
import lightTheme from "@developomp-site/theme/dist/light.json" import lightTheme from "@developomp-site/theme/dist/light.json"
import { createContext, useEffect, useReducer } from "react"
import storage from "local-storage-fallback" import storage from "local-storage-fallback"
import type { Dispatch, ReactElement, ReactNode } from "react"
import { createContext, useEffect, useReducer } from "react"
export type SiteTheme = "dark" | "light" export type SiteTheme = "dark" | "light"

View file

@ -4,9 +4,9 @@ import "@fontsource/source-code-pro"
import { createRoot } from "react-dom/client" import { createRoot } from "react-dom/client"
import { BrowserRouter } from "react-router-dom" import { BrowserRouter } from "react-router-dom"
import { GlobalStore } from "./globalContext"
import App from "./App" import App from "./App"
import { GlobalStore } from "./globalContext"
const container = document.getElementById("root") as HTMLElement const container = document.getElementById("root") as HTMLElement
const root = createRoot(container) const root = createRoot(container)

View file

@ -3,14 +3,13 @@
* show posts in recent order * show posts in recent order
*/ */
import { useCallback, useEffect, useState } from "react" import { useMeta, useTitle } from "hoofd"
import { useTitle, useMeta } from "hoofd" import { type FC, useCallback, useEffect, useState } from "react"
import styled from "styled-components" import styled from "styled-components"
import PostCard from "../../components/PostCard" import PostCard from "../../components/PostCard"
import ShowMoreButton from "./ShowMoreButton"
import contentMap from "../../contentMap" import contentMap from "../../contentMap"
import ShowMoreButton from "./ShowMoreButton"
const PostList = styled.div` const PostList = styled.div`
flex-direction: column; flex-direction: column;
@ -20,7 +19,7 @@ const PostList = styled.div`
color: ${({ theme }) => theme.theme.color.text.default}; color: ${({ theme }) => theme.theme.color.text.default};
` `
export default () => { const Home: FC = () => {
const [howMany, setHowMany] = useState(5) const [howMany, setHowMany] = useState(5)
const [postsLength, setPostsLength] = useState(0) const [postsLength, setPostsLength] = useState(0)
const [postCards, setPostCards] = useState<JSX.Element[]>([]) const [postCards, setPostCards] = useState<JSX.Element[]>([])
@ -81,3 +80,5 @@ export default () => {
</> </>
) )
} }
export default Home

View file

@ -1,3 +1,4 @@
import { type FC } from "react"
import styled from "styled-components" import styled from "styled-components"
import buttonStyle from "../../styles/button" import buttonStyle from "../../styles/button"
@ -13,6 +14,8 @@ interface Props {
action(): void action(): void
} }
export default (props: Props) => { const ShowMoreButton: FC<Props> = (props) => {
return <Button onClick={props.action}>Show more posts</Button> return <Button onClick={props.action}>Show more posts</Button>
} }
export default ShowMoreButton

View file

@ -1,5 +1,5 @@
import { useMeta, useTitle } from "hoofd"
import styled from "styled-components" import styled from "styled-components"
import { useTitle, useMeta } from "hoofd"
import MainContent from "../components/MainContent" import MainContent from "../components/MainContent"

View file

@ -1,13 +1,12 @@
import styled from "styled-components" import { PageData } from "@developomp-site/blog-content/src/types/types"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { import {
faBook, faBook,
faCalendar, faCalendar,
faFile, faFile,
faHourglass, faHourglass,
} from "@fortawesome/free-solid-svg-icons" } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { PageData } from "@developomp-site/blog-content/src/types/types" import styled from "styled-components"
const StyledMetaContainer = styled.div` const StyledMetaContainer = styled.div`
color: ${({ theme }) => theme.theme.color.text.gray}; color: ${({ theme }) => theme.theme.color.text.gray};

View file

@ -1,16 +1,16 @@
import { useState, useEffect } from "react" import type { PageData } from "@developomp-site/blog-content/src/types/types"
import { useTitle, useMeta } from "hoofd" import { useMeta, useTitle } from "hoofd"
import { useEffect, useState } from "react"
import { useLocation } from "react-router-dom" import { useLocation } from "react-router-dom"
import styled from "styled-components" import styled from "styled-components"
import Loading from "../../components/Loading"
import MainContent from "../../components/MainContent" import MainContent from "../../components/MainContent"
import PostCard from "../../components/PostCard" import PostCard from "../../components/PostCard"
import Loading from "../../components/Loading"
import TagList from "../../components/TagList"
import Tag from "../../components/Tag" import Tag from "../../components/Tag"
import TagList from "../../components/TagList"
import contentMap from "../../contentMap"
import NotFound from "../NotFound" import NotFound from "../NotFound"
import SeriesControlButtons from "./SeriesControlButtons"
import { import {
categorizePageType, categorizePageType,
fetchContent, fetchContent,
@ -18,12 +18,9 @@ import {
parsePageData, parsePageData,
} from "./helper" } from "./helper"
import Meta from "./Meta" import Meta from "./Meta"
import SeriesControlButtons from "./SeriesControlButtons"
import Toc from "./Toc" import Toc from "./Toc"
import type { PageData } from "@developomp-site/blog-content/src/types/types"
import contentMap from "../../contentMap"
const StyledTitle = styled.h1` const StyledTitle = styled.h1`
margin-bottom: 1rem; margin-bottom: 1rem;

View file

@ -1,12 +1,11 @@
import styled from "styled-components"
import { Link } from "react-router-dom"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { import {
faArrowLeft, faArrowLeft,
faArrowRight, faArrowRight,
faListUl, faListUl,
} from "@fortawesome/free-solid-svg-icons" } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { Link } from "react-router-dom"
import styled from "styled-components"
import buttonStyle from "../../styles/button" import buttonStyle from "../../styles/button"

View file

@ -1,9 +1,8 @@
import { faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import storage from "local-storage-fallback"
import { useEffect, useState } from "react" import { useEffect, useState } from "react"
import { Collapse } from "react-collapse" import { Collapse } from "react-collapse"
import storage from "local-storage-fallback"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
import { faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons"
import styled from "styled-components" import styled from "styled-components"
const StyledTocToggleButton = styled.button` const StyledTocToggleButton = styled.button`

View file

@ -1,5 +1,4 @@
import portfolio from "@developomp-site/blog-content/dist/portfolio.json" import portfolio from "@developomp-site/blog-content/dist/portfolio.json"
import type { PageData } from "@developomp-site/blog-content/src/types/types" import type { PageData } from "@developomp-site/blog-content/src/types/types"
import contentMap from "../../contentMap" import contentMap from "../../contentMap"

View file

@ -1,26 +1,22 @@
import { useCallback, useEffect, useState } from "react"
import styled from "styled-components"
import { useSearchParams } from "react-router-dom"
import { useTitle, useMeta } from "hoofd"
import { Range } from "react-date-range"
import elasticlunr from "elasticlunr" // search engine
import searchData from "@developomp-site/blog-content/dist/search.json"
import Loading from "../../components/Loading"
import PostCard from "../../components/PostCard"
import MainContent from "../../components/MainContent"
import SearchBar from "./SearchBar"
import TagSelect, { TagsData } from "./TagSelect"
import { ClearDateButton, DateRangeControl, StyledDateRange } from "./DateRange"
import contentMap from "../../contentMap"
import "react-date-range/dist/styles.css" import "react-date-range/dist/styles.css"
import "react-date-range/dist/theme/default.css" import "react-date-range/dist/theme/default.css"
import searchData from "@developomp-site/blog-content/dist/search.json"
import elasticlunr from "elasticlunr" // search engine
import { useMeta, useTitle } from "hoofd"
import { useCallback, useEffect, useState } from "react"
import { Range } from "react-date-range"
import { useSearchParams } from "react-router-dom"
import styled from "styled-components"
import Loading from "../../components/Loading"
import MainContent from "../../components/MainContent"
import PostCard from "../../components/PostCard"
import contentMap from "../../contentMap"
import { ClearDateButton, DateRangeControl, StyledDateRange } from "./DateRange"
import SearchBar from "./SearchBar"
import TagSelect, { TagsData } from "./TagSelect"
const searchIndex = elasticlunr.Index.load(searchData as never) const searchIndex = elasticlunr.Index.load(searchData as never)
export interface SearchParams { export interface SearchParams {

View file

@ -1,6 +1,6 @@
import { useContext } from "react" import { useContext } from "react"
import styled from "styled-components"
import Select from "react-select" import Select from "react-select"
import styled from "styled-components"
import contentMap from "../../contentMap" import contentMap from "../../contentMap"
import { globalContext } from "../../globalContext" import { globalContext } from "../../globalContext"

View file

@ -1,17 +1,18 @@
import { createGlobalStyle, css } from "styled-components"
import "katex/dist/katex.min.css" import "katex/dist/katex.min.css"
import { createGlobalStyle, css } from "styled-components"
import anchorCSS from "./anchor" import anchorCSS from "./anchor"
import scrollbarCSS from "./scrollbar" import blockquoteCSS from "./blockQuote"
import checkbox from "./checkbox" import checkbox from "./checkbox"
import codeCSS from "./code" import codeCSS from "./code"
import kbdCSS from "./kbd"
import tableCSS from "./table"
import blockquoteCSS from "./blockQuote"
import hrCSS from "./hr"
import headerCSS from "./header" import headerCSS from "./header"
import markCSS from "./mark" import hrCSS from "./hr"
import katexCSS from "./katex" import katexCSS from "./katex"
import kbdCSS from "./kbd"
import markCSS from "./mark"
import scrollbarCSS from "./scrollbar"
import tableCSS from "./table"
const globalCSS = css` const globalCSS = css`
body { body {

View file

@ -1,5 +1,7 @@
import "styled-components" import "styled-components"
import type { Theme } from "@developomp-site/theme" import type { Theme } from "@developomp-site/theme"
import { SiteTheme } from "../src/globalContext" import { SiteTheme } from "../src/globalContext"
declare module "styled-components" { declare module "styled-components" {

View file

@ -9,10 +9,9 @@
import fs from "fs" import fs from "fs"
import { mapFilePath, markdownPath, portfolioFilePath } from "./config" import { mapFilePath, markdownPath, portfolioFilePath } from "./config"
import postProcess from "./postProcess"
import { recursiveParse } from "./recursiveParse" import { recursiveParse } from "./recursiveParse"
import { saveIndex } from "./searchIndex" import { saveIndex } from "./searchIndex"
import postProcess from "./postProcess"
import { ContentMap, ParseMode, PortfolioData, SeriesMap } from "./types/types" import { ContentMap, ParseMode, PortfolioData, SeriesMap } from "./types/types"
export const contentMap: ContentMap = { export const contentMap: ContentMap = {

View file

@ -1,25 +1,23 @@
import "katex/contrib/mhchem" // chemical formula
import matter from "gray-matter"
import hljs from "highlight.js" // code block syntax highlighting
import { JSDOM } from "jsdom" // HTML DOM parsing
import katex from "katex" // rendering mathematical expression
import markdownIt from "markdown-it" // rendering markdown import markdownIt from "markdown-it" // rendering markdown
import markdownItTexMath from "markdown-it-texmath" // rendering mathematical expression
import markdownItAnchor from "markdown-it-anchor" // markdown anchor import markdownItAnchor from "markdown-it-anchor" // markdown anchor
import markdownItTaskCheckbox from "markdown-it-task-checkbox" // a TODO list checkboxes import markdownItFootnote from "markdown-it-footnote" // markdown footnote
import highlightLines from "markdown-it-highlight-lines" // highlighting specific lines in code blocks
import markDownItMark from "markdown-it-mark" // text highlighting import markDownItMark from "markdown-it-mark" // text highlighting
import markdownItSub from "markdown-it-sub" // markdown subscript import markdownItSub from "markdown-it-sub" // markdown subscript
import markdownItSup from "markdown-it-sup" // markdown superscript import markdownItSup from "markdown-it-sup" // markdown superscript
import markdownItFootnote from "markdown-it-footnote" // markdown footnote import markdownItTaskCheckbox from "markdown-it-task-checkbox" // a TODO list checkboxes
import markdownItTexMath from "markdown-it-texmath" // rendering mathematical expression
import highlightLines from "markdown-it-highlight-lines" // highlighting specific lines in code blocks
import slugify from "slugify"
import matter from "gray-matter"
import toc from "markdown-toc" // table of contents generation import toc from "markdown-toc" // table of contents generation
import hljs from "highlight.js" // code block syntax highlighting import slugify from "slugify"
import katex from "katex" // rendering mathematical expression
import "katex/contrib/mhchem" // chemical formula
import { JSDOM } from "jsdom" // HTML DOM parsing
import { nthIndex } from "./util"
import { MarkdownData, ParseMode } from "./types/types" import { MarkdownData, ParseMode } from "./types/types"
import { nthIndex } from "./util"
const slugifyIt = (s: string) => slugify(s, { lower: true, strict: true }) const slugifyIt = (s: string) => slugify(s, { lower: true, strict: true })

View file

@ -1,14 +1,12 @@
import ejs from "ejs" import ejs from "ejs"
import { optimize } from "svgo" import { readFileSync } from "fs"
import { readFileSync, writeFileSync } from "fs"
import icons from "simple-icons/icons" import icons from "simple-icons/icons"
import { optimize } from "svgo"
import tinycolor from "tinycolor2" import tinycolor from "tinycolor2"
import { contentMap, seriesMap } from "." import { contentMap, seriesMap } from "."
import { Badge } from "./types/types"
import skills from "./portfolio/skills.json" import skills from "./portfolio/skills.json"
import { Badge } from "./types/types"
import { writeToFile } from "./util" import { writeToFile } from "./util"
export default function postProcess() { export default function postProcess() {
@ -124,6 +122,7 @@ function parseBadge(badgeRaw: string): Badge {
const words = badgeRaw.split(" ") const words = badgeRaw.split(" ")
const slug = words[0] const slug = words[0]
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
const icon = icons["si" + slug[0].toUpperCase() + slug.slice(1)] const icon = icons["si" + slug[0].toUpperCase() + slug.slice(1)]

View file

@ -1,15 +1,13 @@
import fs from "fs" import fs from "fs"
import readTimeEstimate from "read-time-estimate" // post read time estimation import readTimeEstimate from "read-time-estimate" // post read time estimation
import { path2FileOrFolderName, path2URL } from "../util"
import parseMarkdown from "../parseMarkdown" import parseMarkdown from "../parseMarkdown"
import { ParseMode } from "../types/types"
import { path2FileOrFolderName, path2URL } from "../util"
import parsePost from "./parsePost" import parsePost from "./parsePost"
import parseProjects from "./parseProjects"
import parseSeries from "./parseSeries" import parseSeries from "./parseSeries"
import parseUnsearchable from "./parseUnsearchable" import parseUnsearchable from "./parseUnsearchable"
import parseProjects from "./parseProjects"
import { ParseMode } from "../types/types"
/** /**
* Data that's passed from {@link parseFile} to other function * Data that's passed from {@link parseFile} to other function

View file

@ -1,11 +1,10 @@
import { contentMap } from ".."
import { contentDirectoryPath } from "../config" import { contentDirectoryPath } from "../config"
import { generateToc } from "../parseMarkdown" import { generateToc } from "../parseMarkdown"
import { addDocument } from "../searchIndex" import { addDocument } from "../searchIndex"
import { writeToFile } from "../util"
import { contentMap } from ".."
import { DataToPass } from "."
import { PostData } from "../types/types" import { PostData } from "../types/types"
import { writeToFile } from "../util"
import { DataToPass } from "."
export default function parsePost(data: DataToPass): void { export default function parsePost(data: DataToPass): void {
const { const {

View file

@ -1,11 +1,11 @@
import tinycolor from "tinycolor2"
import icons from "simple-icons/icons"
import { SimpleIcon } from "simple-icons" import { SimpleIcon } from "simple-icons"
import icons from "simple-icons/icons"
import tinycolor from "tinycolor2"
import { portfolioData } from ".."
import { contentDirectoryPath, iconsDirectoryPath } from "../config" import { contentDirectoryPath, iconsDirectoryPath } from "../config"
import { generateToc } from "../parseMarkdown" import { generateToc } from "../parseMarkdown"
import { writeToFile } from "../util" import { writeToFile } from "../util"
import { portfolioData } from ".."
import { DataToPass } from "." import { DataToPass } from "."
export default function parseProjects(data: DataToPass): void { export default function parseProjects(data: DataToPass): void {
@ -15,6 +15,7 @@ export default function parseProjects(data: DataToPass): void {
;(markdownData.badges as string[]).forEach((slug) => { ;(markdownData.badges as string[]).forEach((slug) => {
// todo: handle cases when icon is not on simple-icons // todo: handle cases when icon is not on simple-icons
const icon: SimpleIcon = const icon: SimpleIcon =
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
icons["si" + slug[0].toUpperCase() + slug.slice(1)] icons["si" + slug[0].toUpperCase() + slug.slice(1)]

View file

@ -1,11 +1,10 @@
import { contentMap, seriesMap } from ".."
import { contentDirectoryPath } from "../config" import { contentDirectoryPath } from "../config"
import { generateToc } from "../parseMarkdown" import { generateToc } from "../parseMarkdown"
import { addDocument } from "../searchIndex" import { addDocument } from "../searchIndex"
import { writeToFile } from "../util"
import { contentMap, seriesMap } from ".."
import { DataToPass } from "."
import { PostData } from "../types/types" import { PostData } from "../types/types"
import { writeToFile } from "../util"
import { DataToPass } from "."
export default function parseSeries(data: DataToPass): void { export default function parseSeries(data: DataToPass): void {
const { const {

View file

@ -1,7 +1,7 @@
import { contentMap } from ".."
import { contentDirectoryPath } from "../config" import { contentDirectoryPath } from "../config"
import { addDocument } from "../searchIndex" import { addDocument } from "../searchIndex"
import { writeToFile } from "../util" import { writeToFile } from "../util"
import { contentMap } from ".."
import { DataToPass } from "." import { DataToPass } from "."
export default function parseUnsearchable(data: DataToPass): void { export default function parseUnsearchable(data: DataToPass): void {

View file

@ -2,8 +2,8 @@
* @file generate index for searching * @file generate index for searching
*/ */
import fs from "fs"
import elasticlunr from "elasticlunr" import elasticlunr from "elasticlunr"
import fs from "fs"
import { searchIndexFilePath } from "./config" import { searchIndexFilePath } from "./config"

View file

@ -1,4 +1,4 @@
import { writeFileSync, mkdirSync, existsSync } from "fs" import { existsSync, mkdirSync, writeFileSync } from "fs"
import dark from "./src/dark" import dark from "./src/dark"
import light from "./src/light" import light from "./src/light"

View file

@ -1,7 +1,7 @@
import type { Theme } from "../.."
import { readFileSync } from "fs" import { readFileSync } from "fs"
import type { Theme } from "../.."
export default { export default {
font: { font: {
sansSerif: "'Noto Sans KR', sans-serif", // https://fonts.google.com/noto/specimen/Noto+Sans+KR sansSerif: "'Noto Sans KR', sans-serif", // https://fonts.google.com/noto/specimen/Noto+Sans+KR

View file

@ -1,9 +1,8 @@
import type { Theme } from "../.."
import { readFileSync } from "fs" import { readFileSync } from "fs"
import merge from "merge-deep" import merge from "merge-deep"
import { DeepPartial } from "utility-types" import { DeepPartial } from "utility-types"
import type { Theme } from "../.."
import BaseTheme from "../dark" import BaseTheme from "../dark"
export default merge<Theme, DeepPartial<Theme>>(BaseTheme, { export default merge<Theme, DeepPartial<Theme>>(BaseTheme, {