1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-09-14 01:55:31 -04:00

some very minor refactoring/fixing

This commit is contained in:
2021-12-31 08:48:56 -05:00
parent 831f8ffe4c
commit 11d245ad66
19 changed files with 32 additions and 49 deletions

View File

@@ -2,6 +2,9 @@
"editor.tabSize": 2, "editor.tabSize": 2,
"editor.insertSpaces": true, "editor.insertSpaces": true,
"editor.rulers": [120], "editor.rulers": [120],
"files.associations": {
"*.mdx": "markdown"
},
"files.eol": "\n", "files.eol": "\n",
"files.insertFinalNewline": true, "files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true, "files.trimTrailingWhitespace": true,

View File

@@ -1,8 +1,6 @@
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import copy from "copy-to-clipboard"; import copy from "copy-to-clipboard";
import trimNewlines from "trim-newlines"; import trimNewlines from "trim-newlines";
// react components:
import { CopyIcon, CheckIcon } from "@primer/octicons-react"; import { CopyIcon, CheckIcon } from "@primer/octicons-react";
import styles from "./CopyButton.module.scss"; import styles from "./CopyButton.module.scss";

View File

@@ -2,7 +2,7 @@ import useSWR from "swr";
import { fetcher } from "../../lib/fetcher"; import { fetcher } from "../../lib/fetcher";
import Loading from "../loading/Loading"; import Loading from "../loading/Loading";
export default function Counter({ slug }) { export default function Hits({ slug }) {
// start fetching repos from API immediately // start fetching repos from API immediately
const { data, error } = useSWR(`/api/hits/?slug=${encodeURIComponent(slug)}`, fetcher, { const { data, error } = useSWR(`/api/hits/?slug=${encodeURIComponent(slug)}`, fetcher, {
// avoid double (or more) counting views // avoid double (or more) counting views

View File

@@ -2,7 +2,7 @@ import Link from "next/link";
import Image from "next/image"; import Image from "next/image";
import TweetEmbed from "react-tweet-embed"; import TweetEmbed from "react-tweet-embed";
import Gist from "react-gist"; import Gist from "react-gist";
import getNodeText from "../lib/getNodeText"; import getNodeText from "../lib/get-node-text";
import Video from "./video/FullPageVideo"; import Video from "./video/FullPageVideo";
import CopyButton from "./clipboard/CopyButton"; import CopyButton from "./clipboard/CopyButton";
import { MarkGithubIcon } from "@primer/octicons-react"; import { MarkGithubIcon } from "@primer/octicons-react";

View File

@@ -18,5 +18,7 @@ export default function List({ allNotes }) {
); );
}); });
return <>{sections.reverse()}</>; const reversed = sections.reverse();
return <>{reversed}</>;
} }

View File

@@ -6,7 +6,7 @@ type Props = {
title: unknown; title: unknown;
}; };
export default function Content({ title }: Props) { export default function PageTitle({ title }: Props) {
const router = useRouter(); const router = useRouter();
return ( return (

View File

@@ -1,6 +1,4 @@
import { intlFormat, formatDistanceToNowStrict, parseISO } from "date-fns"; import { intlFormat, formatDistanceToNowStrict, parseISO } from "date-fns";
// react components:
import { StarIcon, RepoForkedIcon } from "@primer/octicons-react"; import { StarIcon, RepoForkedIcon } from "@primer/octicons-react";
import styles from "./RepositoryCard.module.scss"; import styles from "./RepositoryCard.module.scss";

View File

@@ -4,14 +4,12 @@ import matter from "gray-matter";
export const NOTES_PATH = path.join(process.cwd(), "notes"); export const NOTES_PATH = path.join(process.cwd(), "notes");
export function getNoteSlugs() { export const getNoteSlugs = () => fs.readdirSync(NOTES_PATH);
return fs.readdirSync(NOTES_PATH);
}
// Return all md(x) files in NOTES_PATH // Return all md(x) files in NOTES_PATH
export const notePaths = getNoteSlugs().filter((path) => /\.mdx?$/.test(path)); export const notePaths = getNoteSlugs().filter((notePath) => /\.mdx?$/.test(notePath));
export function getNoteBySlug(slug, fields = []) { export const getNoteBySlug = (slug, fields = []) => {
const realSlug = slug.replace(/\.mdx$/, ""); const realSlug = slug.replace(/\.mdx$/, "");
const fullPath = path.join(NOTES_PATH, `${realSlug}.mdx`); const fullPath = path.join(NOTES_PATH, `${realSlug}.mdx`);
const fileContents = fs.readFileSync(fullPath, "utf8"); const fileContents = fs.readFileSync(fullPath, "utf8");
@@ -34,13 +32,10 @@ export function getNoteBySlug(slug, fields = []) {
}); });
return items; return items;
} };
export function getAllNotes(fields = []) { export const getAllNotes = (fields = []) =>
const slugs = getNoteSlugs(); getNoteSlugs()
const notes = slugs
.map((slug) => getNoteBySlug(slug, fields)) .map((slug) => getNoteBySlug(slug, fields))
// sort notes by date in descending order // sort notes by date in descending order
.sort((note1: any, note2: any) => (note1.date > note2.date ? -1 : 1)); .sort((note1: any, note2: any) => (note1.date > note2.date ? -1 : 1));
return notes;
}

View File

@@ -7,6 +7,10 @@ const withBundleAnalyzer = require("@next/bundle-analyzer")({
}); });
module.exports = withBundleAnalyzer({ module.exports = withBundleAnalyzer({
i18n: {
locales: ["en-us"],
defaultLocale: "en-us",
},
swcMinify: true, swcMinify: true,
reactStrictMode: true, reactStrictMode: true,
trailingSlash: true, trailingSlash: true,

View File

@@ -1,13 +1,10 @@
// @ts-nocheck
// ^ type checking causes a bunch of issues in DefaultSeo, BE CAREFUL
import { useEffect } from "react"; import { useEffect } from "react";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import Script from "next/script"; import Script from "next/script";
import type { AppProps } from "next/app";
import { DefaultSeo, SocialProfileJsonLd } from "next-seo"; import { DefaultSeo, SocialProfileJsonLd } from "next-seo";
import * as Fathom from "fathom-client"; import * as Fathom from "fathom-client";
import * as config from "../lib/config"; import * as config from "../lib/config";
import type { AppProps } from "next/app";
import meJpg from "../public/static/images/me.jpg"; import meJpg from "../public/static/images/me.jpg";
import faviconIco from "../public/static/images/favicon.ico"; import faviconIco from "../public/static/images/favicon.ico";
@@ -41,6 +38,7 @@ export default function App({ Component, pageProps }: AppProps) {
return ( return (
<> <>
{/* @ts-ignore */}
<DefaultSeo <DefaultSeo
defaultTitle={`${config.siteName} ${config.shortDescription}`} defaultTitle={`${config.siteName} ${config.shortDescription}`}
titleTemplate={`%s ${config.siteName}`} titleTemplate={`%s ${config.siteName}`}

View File

@@ -1,15 +0,0 @@
import Document, { Html, Head, Main, NextScript } from "next/document";
export default class MyDocument extends Document {
render() {
return (
<Html lang="en-us">
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}

View File

@@ -1,5 +1,5 @@
import { getAllNotes } from "../lib/parseNotes"; import { getAllNotes } from "../lib/parse-notes";
import { buildFeed } from "../lib/buildFeed"; import { buildFeed } from "../lib/build-feed";
import type { GetServerSideProps } from "next"; import type { GetServerSideProps } from "next";
export const getServerSideProps: GetServerSideProps = async (context) => { export const getServerSideProps: GetServerSideProps = async (context) => {

View File

@@ -1,5 +1,5 @@
import { getAllNotes } from "../lib/parseNotes"; import { getAllNotes } from "../lib/parse-notes";
import { buildFeed } from "../lib/buildFeed"; import { buildFeed } from "../lib/build-feed";
import type { GetServerSideProps } from "next"; import type { GetServerSideProps } from "next";
export const getServerSideProps: GetServerSideProps = async (context) => { export const getServerSideProps: GetServerSideProps = async (context) => {

View File

@@ -8,7 +8,7 @@ import Layout from "../../components/Layout";
import Container from "../../components/Container"; import Container from "../../components/Container";
import Content from "../../components/Content"; import Content from "../../components/Content";
import Meta from "../../components/notes/Meta"; import Meta from "../../components/notes/Meta";
import { notePaths, NOTES_PATH } from "../../lib/parseNotes"; import { notePaths, NOTES_PATH } from "../../lib/parse-notes";
import mdxComponents from "../../components/mdxComponents"; import mdxComponents from "../../components/mdxComponents";
import * as config from "../../lib/config"; import * as config from "../../lib/config";
import type { GetStaticProps, GetStaticPaths } from "next"; import type { GetStaticProps, GetStaticPaths } from "next";
@@ -102,7 +102,7 @@ export const getStaticProps: GetStaticProps = async ({ params }) => {
export const getStaticPaths: GetStaticPaths = async () => { export const getStaticPaths: GetStaticPaths = async () => {
const paths = notePaths const paths = notePaths
// Remove file extensions for page paths // Remove file extensions for page paths
.map((path) => path.replace(/\.mdx?$/, "")) .map((notePath) => notePath.replace(/\.mdx?$/, ""))
// Map the path into the static paths object required by Next.js // Map the path into the static paths object required by Next.js
.map((slug) => ({ params: { slug } })); .map((slug) => ({ params: { slug } }));

View File

@@ -3,7 +3,7 @@ import groupBy from "lodash.groupby";
import Layout from "../../components/Layout"; import Layout from "../../components/Layout";
import Container from "../../components/Container"; import Container from "../../components/Container";
import List from "../../components/notes/List"; import List from "../../components/notes/List";
import { getAllNotes } from "../../lib/parseNotes"; import { getAllNotes } from "../../lib/parse-notes";
import type { GetStaticProps } from "next"; import type { GetStaticProps } from "next";
export default function Notes({ allNotes }) { export default function Notes({ allNotes }) {

View File

@@ -1,3 +0,0 @@
// Browser reset:
// https://github.com/sindresorhus/modern-normalize
@import "~modern-normalize/modern-normalize.css";

View File

@@ -1,4 +1,7 @@
@use "reset"; // Browser reset:
// https://github.com/sindresorhus/modern-normalize
@import "~modern-normalize/modern-normalize.css";
@use "typography"; @use "typography";
@use "colors"; @use "colors";
@use "syntax"; @use "syntax";