mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-09-16 00:05:33 -04:00
refactor component/page function returns
This commit is contained in:
@@ -92,13 +92,15 @@ export type CodeBlockProps = ComponentProps<typeof Code> & {
|
||||
highlight?: boolean;
|
||||
};
|
||||
|
||||
const CodeBlock = ({ highlight, className, children, ...rest }: CodeBlockProps) => (
|
||||
<Block highlight={highlight}>
|
||||
<CornerCopyButton source={children} />
|
||||
<Code className={className?.replace("code-highlight", "").trim()} {...rest}>
|
||||
{children}
|
||||
</Code>
|
||||
</Block>
|
||||
);
|
||||
const CodeBlock = ({ highlight, className, children, ...rest }: CodeBlockProps) => {
|
||||
return (
|
||||
<Block highlight={highlight}>
|
||||
<CornerCopyButton source={children} />
|
||||
<Code className={className?.replace("code-highlight", "").trim()} {...rest}>
|
||||
{children}
|
||||
</Code>
|
||||
</Block>
|
||||
);
|
||||
};
|
||||
|
||||
export default CodeBlock;
|
||||
|
@@ -26,14 +26,14 @@ const CodeHybrid = ({ forceBlock, className, children, ...rest }: CodeHybridProp
|
||||
{children}
|
||||
</CodeBlock>
|
||||
);
|
||||
} else {
|
||||
// inline code in paragraphs, headings, etc. (never highlighted)
|
||||
return (
|
||||
<CodeInline className={className} {...rest}>
|
||||
{children}
|
||||
</CodeInline>
|
||||
);
|
||||
}
|
||||
|
||||
// simple inline code in paragraphs, headings, etc. (never highlighted)
|
||||
return (
|
||||
<CodeInline className={className} {...rest}>
|
||||
{children}
|
||||
</CodeInline>
|
||||
);
|
||||
};
|
||||
|
||||
export default CodeHybrid;
|
||||
|
@@ -3,7 +3,7 @@ import innerText from "react-innertext";
|
||||
import copy from "copy-to-clipboard";
|
||||
import { ClipboardOcticon, CheckOcticon } from "../Icons";
|
||||
import { styled } from "../../lib/styles/stitches.config";
|
||||
import type { ReactNode, Ref } from "react";
|
||||
import type { ReactNode, Ref, MouseEventHandler } from "react";
|
||||
|
||||
const Button = styled("button", {
|
||||
lineHeight: 1,
|
||||
@@ -44,9 +44,9 @@ const CopyButton = forwardRef(function CopyButton(
|
||||
) {
|
||||
const [copied, setCopied] = useState(false);
|
||||
|
||||
const handleCopy = (e) => {
|
||||
const handleCopy: MouseEventHandler<HTMLButtonElement> = (e) => {
|
||||
// prevent unintentional double-clicks by unfocusing button
|
||||
e.target.blur();
|
||||
e.currentTarget.blur();
|
||||
|
||||
// send plaintext to the clipboard
|
||||
const didCopy = copy(innerText(source));
|
||||
|
@@ -83,48 +83,50 @@ const Heart = styled("span", {
|
||||
|
||||
export type FooterProps = ComponentProps<typeof Wrapper>;
|
||||
|
||||
const Footer = ({ ...rest }: FooterProps) => (
|
||||
<Wrapper {...rest}>
|
||||
<Row>
|
||||
<div>
|
||||
Content{" "}
|
||||
<Link href="/license/" prefetch={false} title="Creative Commons Attribution 4.0 International">
|
||||
licensed under CC-BY-4.0
|
||||
</Link>
|
||||
,{" "}
|
||||
<Link href="/previously/" prefetch={false} title="Previously on...">
|
||||
2001
|
||||
</Link>{" "}
|
||||
– {new Date(process.env.NEXT_PUBLIC_RELEASE_DATE).getUTCFullYear()}.
|
||||
</div>
|
||||
const Footer = ({ ...rest }: FooterProps) => {
|
||||
return (
|
||||
<Wrapper {...rest}>
|
||||
<Row>
|
||||
<div>
|
||||
Content{" "}
|
||||
<Link href="/license/" prefetch={false} title="Creative Commons Attribution 4.0 International">
|
||||
licensed under CC-BY-4.0
|
||||
</Link>
|
||||
,{" "}
|
||||
<Link href="/previously/" prefetch={false} title="Previously on...">
|
||||
2001
|
||||
</Link>{" "}
|
||||
– {new Date(process.env.NEXT_PUBLIC_RELEASE_DATE).getUTCFullYear()}.
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Made with{" "}
|
||||
<Heart title="Love">
|
||||
<Icon as={HeartIcon} />
|
||||
</Heart>{" "}
|
||||
and{" "}
|
||||
<NextjsLink
|
||||
href="https://nextjs.org/"
|
||||
title="Powered by Next.js"
|
||||
aria-label="Next.js"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<Icon as={NextjsLogo} />
|
||||
</NextjsLink>
|
||||
.{" "}
|
||||
<ViewSourceLink
|
||||
href={`https://github.com/${config.githubRepo}`}
|
||||
title="View Source on GitHub"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
View source.
|
||||
</ViewSourceLink>
|
||||
</div>
|
||||
</Row>
|
||||
</Wrapper>
|
||||
);
|
||||
<div>
|
||||
Made with{" "}
|
||||
<Heart title="Love">
|
||||
<Icon as={HeartIcon} />
|
||||
</Heart>{" "}
|
||||
and{" "}
|
||||
<NextjsLink
|
||||
href="https://nextjs.org/"
|
||||
title="Powered by Next.js"
|
||||
aria-label="Next.js"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<Icon as={NextjsLogo} />
|
||||
</NextjsLink>
|
||||
.{" "}
|
||||
<ViewSourceLink
|
||||
href={`https://github.com/${config.githubRepo}`}
|
||||
title="View Source on GitHub"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
View source.
|
||||
</ViewSourceLink>
|
||||
</div>
|
||||
</Row>
|
||||
</Wrapper>
|
||||
);
|
||||
};
|
||||
|
||||
export default Footer;
|
||||
|
@@ -44,13 +44,15 @@ const ResponsiveMenu = styled(Menu, {
|
||||
|
||||
export type HeaderProps = ComponentProps<typeof Wrapper>;
|
||||
|
||||
const Header = ({ ...rest }: HeaderProps) => (
|
||||
<Wrapper {...rest}>
|
||||
<Nav>
|
||||
<Selfie />
|
||||
<ResponsiveMenu />
|
||||
</Nav>
|
||||
</Wrapper>
|
||||
);
|
||||
const Header = ({ ...rest }: HeaderProps) => {
|
||||
return (
|
||||
<Wrapper {...rest}>
|
||||
<Nav>
|
||||
<Selfie />
|
||||
<ResponsiveMenu />
|
||||
</Nav>
|
||||
</Wrapper>
|
||||
);
|
||||
};
|
||||
|
||||
export default Header;
|
||||
|
@@ -17,10 +17,12 @@ export type HeadingAnchorProps = ComponentProps<typeof AnchorLink> & {
|
||||
title: string;
|
||||
};
|
||||
|
||||
const HeadingAnchor = ({ id, title, ...rest }: HeadingAnchorProps) => (
|
||||
<AnchorLink href={`#${id}`} title={`Jump to "${title}"`} tabIndex={-1} aria-hidden={true} {...rest}>
|
||||
<Icon />
|
||||
</AnchorLink>
|
||||
);
|
||||
const HeadingAnchor = ({ id, title, ...rest }: HeadingAnchorProps) => {
|
||||
return (
|
||||
<AnchorLink href={`#${id}`} title={`Jump to "${title}"`} tabIndex={-1} aria-hidden={true} {...rest}>
|
||||
<Icon />
|
||||
</AnchorLink>
|
||||
);
|
||||
};
|
||||
|
||||
export default HeadingAnchor;
|
||||
|
@@ -17,20 +17,22 @@ export type IFrameProps = ComponentProps<typeof RoundedIFrame> & {
|
||||
noScroll?: boolean;
|
||||
};
|
||||
|
||||
const IFrame = ({ src, title, height, width, allowScripts, noScroll, css, ...rest }: IFrameProps) => (
|
||||
<RoundedIFrame
|
||||
src={src}
|
||||
title={title}
|
||||
sandbox={allowScripts ? "allow-same-origin allow-scripts allow-popups" : undefined}
|
||||
scrolling={noScroll ? "no" : undefined}
|
||||
loading="lazy"
|
||||
css={{
|
||||
height: `${height}px`,
|
||||
maxWidth: width ? `${width}px` : "100%",
|
||||
...css,
|
||||
}}
|
||||
{...rest}
|
||||
/>
|
||||
);
|
||||
const IFrame = ({ src, title, height, width, allowScripts, noScroll, css, ...rest }: IFrameProps) => {
|
||||
return (
|
||||
<RoundedIFrame
|
||||
src={src}
|
||||
title={title}
|
||||
sandbox={allowScripts ? "allow-same-origin allow-scripts allow-popups" : undefined}
|
||||
scrolling={noScroll ? "no" : undefined}
|
||||
loading="lazy"
|
||||
css={{
|
||||
height: `${height}px`,
|
||||
maxWidth: width ? `${width}px` : "100%",
|
||||
...css,
|
||||
}}
|
||||
{...rest}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default IFrame;
|
||||
|
@@ -67,7 +67,7 @@ const Image = ({
|
||||
{img}
|
||||
</Link>
|
||||
) : (
|
||||
img
|
||||
<>{img}</>
|
||||
)}
|
||||
</Wrapper>
|
||||
);
|
||||
|
@@ -57,7 +57,7 @@ const Layout = ({ container = true, children, ...rest }: LayoutProps) => {
|
||||
<Container>{children}</Container>
|
||||
</Default>
|
||||
) : (
|
||||
children
|
||||
<>{children}</>
|
||||
)}
|
||||
|
||||
<FlexedFooter />
|
||||
|
@@ -36,10 +36,12 @@ const Track = styled("div", {
|
||||
|
||||
export type MarqueeProps = ComponentProps<typeof Wrapper>;
|
||||
|
||||
const Marquee = ({ children, ...rest }: MarqueeProps) => (
|
||||
<Wrapper {...rest}>
|
||||
<Track>{children}</Track>
|
||||
</Wrapper>
|
||||
);
|
||||
const Marquee = ({ children, ...rest }: MarqueeProps) => {
|
||||
return (
|
||||
<Wrapper {...rest}>
|
||||
<Track>{children}</Track>
|
||||
</Wrapper>
|
||||
);
|
||||
};
|
||||
|
||||
export default Marquee;
|
||||
|
@@ -71,9 +71,9 @@ const MenuItem = ({ icon: ItemIcon, href, text, current, className }: MenuItemPr
|
||||
{linkContent}
|
||||
</Link>
|
||||
);
|
||||
} else {
|
||||
return linkContent;
|
||||
}
|
||||
|
||||
return <>{linkContent}</>;
|
||||
};
|
||||
|
||||
export default MenuItem;
|
||||
|
@@ -58,70 +58,72 @@ const Tag = styled("span", {
|
||||
|
||||
export type NoteMetaProps = Pick<NoteFrontMatter, "slug" | "date" | "title" | "htmlTitle" | "tags">;
|
||||
|
||||
const NoteMeta = ({ slug, date, title, htmlTitle, tags = [] }: NoteMetaProps) => (
|
||||
<>
|
||||
<Wrapper>
|
||||
<MetaItem>
|
||||
<MetaLink
|
||||
href={{
|
||||
pathname: "/notes/[slug]/",
|
||||
query: { slug },
|
||||
}}
|
||||
>
|
||||
<span>
|
||||
<Icon as={DateIcon} />
|
||||
</span>
|
||||
<Time date={date} format="MMMM D, YYYY" />
|
||||
</MetaLink>
|
||||
</MetaItem>
|
||||
|
||||
{tags.length > 0 && (
|
||||
const NoteMeta = ({ slug, date, title, htmlTitle, tags = [] }: NoteMetaProps) => {
|
||||
return (
|
||||
<>
|
||||
<Wrapper>
|
||||
<MetaItem>
|
||||
<span title="Tags">
|
||||
<Icon as={TagIcon} />
|
||||
</span>
|
||||
<TagsList>
|
||||
{tags.map((tag) => (
|
||||
<Tag key={tag} title={tag}>
|
||||
{tag}
|
||||
</Tag>
|
||||
))}
|
||||
</TagsList>
|
||||
</MetaItem>
|
||||
)}
|
||||
|
||||
<MetaItem>
|
||||
<MetaLink
|
||||
href={`https://github.com/${config.githubRepo}/blob/main/notes/${slug}.mdx`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title={`Edit "${title}" on GitHub`}
|
||||
>
|
||||
<span>
|
||||
<Icon as={EditIcon} />
|
||||
</span>
|
||||
<span>Improve This Post</span>
|
||||
</MetaLink>
|
||||
</MetaItem>
|
||||
|
||||
{/* only count hits on production site */}
|
||||
{process.env.NEXT_PUBLIC_VERCEL_ENV === "production" && (
|
||||
<ErrorBoundary fallback={null}>
|
||||
<MetaItem
|
||||
// fix potential layout shift when number of hits loads
|
||||
css={{ minWidth: "7em", marginRight: 0 }}
|
||||
<MetaLink
|
||||
href={{
|
||||
pathname: "/notes/[slug]/",
|
||||
query: { slug },
|
||||
}}
|
||||
>
|
||||
<span>
|
||||
<Icon as={ViewsIcon} />
|
||||
<Icon as={DateIcon} />
|
||||
</span>
|
||||
<HitCounter slug={`notes/${slug}`} />
|
||||
</MetaItem>
|
||||
</ErrorBoundary>
|
||||
)}
|
||||
</Wrapper>
|
||||
<Time date={date} format="MMMM D, YYYY" />
|
||||
</MetaLink>
|
||||
</MetaItem>
|
||||
|
||||
<NoteTitle slug={slug} htmlTitle={htmlTitle || title} />
|
||||
</>
|
||||
);
|
||||
{tags.length > 0 && (
|
||||
<MetaItem>
|
||||
<span title="Tags">
|
||||
<Icon as={TagIcon} />
|
||||
</span>
|
||||
<TagsList>
|
||||
{tags.map((tag) => (
|
||||
<Tag key={tag} title={tag}>
|
||||
{tag}
|
||||
</Tag>
|
||||
))}
|
||||
</TagsList>
|
||||
</MetaItem>
|
||||
)}
|
||||
|
||||
<MetaItem>
|
||||
<MetaLink
|
||||
href={`https://github.com/${config.githubRepo}/blob/main/notes/${slug}.mdx`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title={`Edit "${title}" on GitHub`}
|
||||
>
|
||||
<span>
|
||||
<Icon as={EditIcon} />
|
||||
</span>
|
||||
<span>Improve This Post</span>
|
||||
</MetaLink>
|
||||
</MetaItem>
|
||||
|
||||
{/* only count hits on production site */}
|
||||
{process.env.NEXT_PUBLIC_VERCEL_ENV === "production" && (
|
||||
<ErrorBoundary fallback={null}>
|
||||
<MetaItem
|
||||
// fix potential layout shift when number of hits loads
|
||||
css={{ minWidth: "7em", marginRight: 0 }}
|
||||
>
|
||||
<span>
|
||||
<Icon as={ViewsIcon} />
|
||||
</span>
|
||||
<HitCounter slug={`notes/${slug}`} />
|
||||
</MetaItem>
|
||||
</ErrorBoundary>
|
||||
)}
|
||||
</Wrapper>
|
||||
|
||||
<NoteTitle slug={slug} htmlTitle={htmlTitle || title} />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default NoteMeta;
|
||||
|
@@ -25,16 +25,18 @@ const Link = styled(NextLink, {
|
||||
|
||||
export type NoteTitleProps = Pick<NoteFrontMatter, "slug" | "htmlTitle"> & ComponentProps<typeof Title>;
|
||||
|
||||
const NoteTitle = ({ slug, htmlTitle, ...rest }: NoteTitleProps) => (
|
||||
<Title {...rest}>
|
||||
<Link
|
||||
href={{
|
||||
pathname: "/notes/[slug]/",
|
||||
query: { slug },
|
||||
}}
|
||||
dangerouslySetInnerHTML={{ __html: htmlTitle }}
|
||||
/>
|
||||
</Title>
|
||||
);
|
||||
const NoteTitle = ({ slug, htmlTitle, ...rest }: NoteTitleProps) => {
|
||||
return (
|
||||
<Title {...rest}>
|
||||
<Link
|
||||
href={{
|
||||
pathname: "/notes/[slug]/",
|
||||
query: { slug },
|
||||
}}
|
||||
dangerouslySetInnerHTML={{ __html: htmlTitle }}
|
||||
/>
|
||||
</Title>
|
||||
);
|
||||
};
|
||||
|
||||
export default NoteTitle;
|
||||
|
@@ -23,10 +23,12 @@ export type OctocatLinkProps = ComponentProps<typeof Link> & {
|
||||
repo: string;
|
||||
};
|
||||
|
||||
const OctocatLink = ({ repo, className, ...rest }: OctocatLinkProps) => (
|
||||
<Link href={`https://github.com/${repo}`} target="_blank" rel="noopener noreferrer" {...rest}>
|
||||
<Octocat className={className} />
|
||||
</Link>
|
||||
);
|
||||
const OctocatLink = ({ repo, className, ...rest }: OctocatLinkProps) => {
|
||||
return (
|
||||
<Link href={`https://github.com/${repo}`} target="_blank" rel="noopener noreferrer" {...rest}>
|
||||
<Octocat className={className} />
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
||||
export default OctocatLink;
|
||||
|
@@ -50,11 +50,13 @@ const Name = styled("span", {
|
||||
|
||||
export type SelfieProps = Omit<ComponentProps<typeof Link>, "href">;
|
||||
|
||||
const Selfie = ({ ...rest }: SelfieProps) => (
|
||||
<Link href="/" rel="author" title={authorName} {...rest}>
|
||||
<Image src={selfieJpg} alt={`Photo of ${authorName}`} width={50} height={50} quality={60} layout="raw" priority />
|
||||
<Name>{authorName}</Name>
|
||||
</Link>
|
||||
);
|
||||
const Selfie = ({ ...rest }: SelfieProps) => {
|
||||
return (
|
||||
<Link href="/" rel="author" title={authorName} {...rest}>
|
||||
<Image src={selfieJpg} alt={`Photo of ${authorName}`} width={50} height={50} quality={60} layout="raw" priority />
|
||||
<Name>{authorName}</Name>
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
||||
export default Selfie;
|
||||
|
@@ -6,10 +6,12 @@ export type TimeProps = {
|
||||
className?: string;
|
||||
};
|
||||
|
||||
const Time = ({ date, format = "MMM D", className }: TimeProps) => (
|
||||
<time dateTime={formatDateISO(date)} title={formatDate(date)} className={className}>
|
||||
{formatDate(date, format)}
|
||||
</time>
|
||||
);
|
||||
const Time = ({ date, format = "MMM D", className }: TimeProps) => {
|
||||
return (
|
||||
<time dateTime={formatDateISO(date)} title={formatDate(date)} className={className}>
|
||||
{formatDate(date, format)}
|
||||
</time>
|
||||
);
|
||||
};
|
||||
|
||||
export default Time;
|
||||
|
@@ -42,7 +42,7 @@
|
||||
"gray-matter": "^4.0.3",
|
||||
"hex-to-rgba": "^2.0.1",
|
||||
"markdown-to-jsx": "^7.1.7",
|
||||
"next": "12.1.7-canary.15",
|
||||
"next": "12.1.7-canary.16",
|
||||
"next-compose-plugins": "^2.2.1",
|
||||
"next-mdx-remote": "^4.0.3",
|
||||
"next-seo": "^5.4.0",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@jakejarvis/eslint-config": "*",
|
||||
"@next/bundle-analyzer": "12.1.7-canary.15",
|
||||
"@next/bundle-analyzer": "12.1.7-canary.16",
|
||||
"@svgr/webpack": "^6.2.1",
|
||||
"@types/comma-number": "^2.1.0",
|
||||
"@types/node": "*",
|
||||
@@ -93,7 +93,7 @@
|
||||
"@typescript-eslint/parser": "^5.26.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "~8.16.0",
|
||||
"eslint-config-next": "12.1.7-canary.15",
|
||||
"eslint-config-next": "12.1.7-canary.16",
|
||||
"eslint-config-prettier": "~8.5.0",
|
||||
"eslint-plugin-mdx": "~1.17.0",
|
||||
"eslint-plugin-prettier": "~4.0.0",
|
||||
|
@@ -5,28 +5,30 @@ import Video from "../components/Video";
|
||||
|
||||
import thumbnail from "../public/static/images/birthday/thumb.png";
|
||||
|
||||
const Birthday = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
||||
description="The origin of my hatred for the Happy Birthday song."
|
||||
openGraph={{
|
||||
title: "🎉 Cranky Birthday Boy on VHS Tape 📼",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>📼 1996.MOV</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/birthday/birthday.webm",
|
||||
mp4: "/static/images/birthday/birthday.mp4",
|
||||
const Birthday = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
||||
description="The origin of my hatred for the Happy Birthday song."
|
||||
openGraph={{
|
||||
title: "🎉 Cranky Birthday Boy on VHS Tape 📼",
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
/>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
|
||||
<PageTitle>📼 1996.MOV</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/birthday/birthday.webm",
|
||||
mp4: "/static/images/birthday/birthday.mp4",
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
/>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Birthday;
|
||||
|
@@ -10,58 +10,60 @@ import { UnorderedList, ListItem } from "../components/List";
|
||||
|
||||
import cliImg from "../public/static/images/cli/screenshot.png";
|
||||
|
||||
const CLI = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="CLI"
|
||||
description="AKA, the most useless Node module ever published, in history, by anyone, ever."
|
||||
openGraph={{
|
||||
title: "CLI",
|
||||
}}
|
||||
/>
|
||||
const CLI = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="CLI"
|
||||
description="AKA, the most useless Node module ever published, in history, by anyone, ever."
|
||||
openGraph={{
|
||||
title: "CLI",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>🤖 CLI</PageTitle>
|
||||
<PageTitle>🤖 CLI</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Blockquote>
|
||||
The <Link href="/">Jake Jarvis</Link> CLI (aka the most useless Node module ever published, in history, by
|
||||
anyone, ever).
|
||||
</Blockquote>
|
||||
<Content>
|
||||
<Blockquote>
|
||||
The <Link href="/">Jake Jarvis</Link> CLI (aka the most useless Node module ever published, in history, by
|
||||
anyone, ever).
|
||||
</Blockquote>
|
||||
|
||||
<Image src={cliImg} href="https://www.npmjs.com/package/@jakejarvis/cli" alt="Terminal Screenshot" priority />
|
||||
<Image src={cliImg} href="https://www.npmjs.com/package/@jakejarvis/cli" alt="Terminal Screenshot" priority />
|
||||
|
||||
<H2 id="usage">Usage</H2>
|
||||
<CodeBlock>npx @jakejarvis/cli</CodeBlock>
|
||||
<H2 id="usage">Usage</H2>
|
||||
<CodeBlock>npx @jakejarvis/cli</CodeBlock>
|
||||
|
||||
<H2 id="inspired-by">Inspired by</H2>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/sindresorhus/sindresorhus-cli">@sindresorhus/sindresorhus-cli</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/yg/ygcodes">@yg/ygcodes</Link>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
<H2 id="inspired-by">Inspired by</H2>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/sindresorhus/sindresorhus-cli">@sindresorhus/sindresorhus-cli</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/yg/ygcodes">@yg/ygcodes</Link>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
|
||||
<H2 id="built-with">Built with</H2>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/vadimdemedes/ink">ink</Link> - React for interactive command-line apps
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/sindresorhus/meow">meow</Link> - CLI helper
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
<p>
|
||||
<Link href="https://github.com/jakejarvis/jakejarvis/tree/main/cli">View source on GitHub.</Link>
|
||||
</p>
|
||||
<H2 id="built-with">Built with</H2>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/vadimdemedes/ink">ink</Link> - React for interactive command-line apps
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://github.com/sindresorhus/meow">meow</Link> - CLI helper
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
<p>
|
||||
<Link href="https://github.com/jakejarvis/jakejarvis/tree/main/cli">View source on GitHub.</Link>
|
||||
</p>
|
||||
|
||||
<H2 id="license">License</H2>
|
||||
<p>
|
||||
MIT © <Link href="/">Jake Jarvis</Link>, <Link href="https://sindresorhus.com">Sindre Sorhus</Link>
|
||||
</p>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<H2 id="license">License</H2>
|
||||
<p>
|
||||
MIT © <Link href="/">Jake Jarvis</Link>, <Link href="https://sindresorhus.com">Sindre Sorhus</Link>
|
||||
</p>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default CLI;
|
||||
|
@@ -15,35 +15,37 @@ const PGPKey = styled("code", {
|
||||
wordSpacing: "-0.25em",
|
||||
});
|
||||
|
||||
const Contact = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Contact Me"
|
||||
openGraph={{
|
||||
title: "Contact Me",
|
||||
}}
|
||||
/>
|
||||
const Contact = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Contact Me"
|
||||
openGraph={{
|
||||
title: "Contact Me",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>📬 Contact Me</PageTitle>
|
||||
<PageTitle>📬 Contact Me</PageTitle>
|
||||
|
||||
<Wrapper>
|
||||
<p>
|
||||
Fill out this quick form and I'll get back to you as soon as I can! You can also{" "}
|
||||
<Link href="mailto:jake@jarv.is">email me directly</Link>, send me a{" "}
|
||||
<Link href="https://twitter.com/messages/compose?recipient_id=229769022">direct message on Twitter</Link>, or{" "}
|
||||
<Link href="sms:+1-617-917-3737">text me</Link>.
|
||||
</p>
|
||||
<p>
|
||||
🔐 You can grab my public key here:{" "}
|
||||
<Link href="/pubkey.asc" title="My Public PGP Key" rel="pgpkey authn" openInNewTab>
|
||||
<PGPKey>6BF3 79D3 6F67 1480 2B0C 9CF2 51E6 9A39</PGPKey>
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
<Wrapper>
|
||||
<p>
|
||||
Fill out this quick form and I'll get back to you as soon as I can! You can also{" "}
|
||||
<Link href="mailto:jake@jarv.is">email me directly</Link>, send me a{" "}
|
||||
<Link href="https://twitter.com/messages/compose?recipient_id=229769022">direct message on Twitter</Link>, or{" "}
|
||||
<Link href="sms:+1-617-917-3737">text me</Link>.
|
||||
</p>
|
||||
<p>
|
||||
🔐 You can grab my public key here:{" "}
|
||||
<Link href="/pubkey.asc" title="My Public PGP Key" rel="pgpkey authn" openInNewTab>
|
||||
<PGPKey>6BF3 79D3 6F67 1480 2B0C 9CF2 51E6 9A39</PGPKey>
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
|
||||
<ContactForm />
|
||||
</Wrapper>
|
||||
</>
|
||||
);
|
||||
<ContactForm />
|
||||
</Wrapper>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Contact;
|
||||
|
@@ -15,44 +15,46 @@ const Copyright = styled("p", {
|
||||
color: "$mediumLight",
|
||||
});
|
||||
|
||||
const Hillary = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="My Brief Apperance in Hillary Clinton's DNC Video"
|
||||
description="My brief apperance in one of Hillary Clinton's 2016 DNC convention videos on substance abuse."
|
||||
openGraph={{
|
||||
title: "My Brief Apperance in Hillary Clinton's DNC Video",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>My Brief Apperance in Hillary Clinton's DNC Video</PageTitle>
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/hillary/convention-720p.webm",
|
||||
mp4: "/static/images/hillary/convention-720p.mp4",
|
||||
const Hillary = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="My Brief Apperance in Hillary Clinton's DNC Video"
|
||||
description="My brief apperance in one of Hillary Clinton's 2016 DNC convention videos on substance abuse."
|
||||
openGraph={{
|
||||
title: "My Brief Apperance in Hillary Clinton's DNC Video",
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
subs="/static/images/hillary/subs.en.vtt"
|
||||
/>
|
||||
|
||||
<Copyright>
|
||||
Video is property of{" "}
|
||||
<Link href="https://www.hillaryclinton.com/" css={{ fontWeight: 700 }}>
|
||||
Hillary for America
|
||||
</Link>
|
||||
, the{" "}
|
||||
<Link href="https://democrats.org/" css={{ fontWeight: 700 }}>
|
||||
Democratic National Committee
|
||||
</Link>
|
||||
, and{" "}
|
||||
<Link href="https://cnnpressroom.blogs.cnn.com/" css={{ fontWeight: 700 }}>
|
||||
CNN / WarnerMedia
|
||||
</Link>
|
||||
. © 2016.
|
||||
</Copyright>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<PageTitle>My Brief Apperance in Hillary Clinton's DNC Video</PageTitle>
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/hillary/convention-720p.webm",
|
||||
mp4: "/static/images/hillary/convention-720p.mp4",
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
subs="/static/images/hillary/subs.en.vtt"
|
||||
/>
|
||||
|
||||
<Copyright>
|
||||
Video is property of{" "}
|
||||
<Link href="https://www.hillaryclinton.com/" css={{ fontWeight: 700 }}>
|
||||
Hillary for America
|
||||
</Link>
|
||||
, the{" "}
|
||||
<Link href="https://democrats.org/" css={{ fontWeight: 700 }}>
|
||||
Democratic National Committee
|
||||
</Link>
|
||||
, and{" "}
|
||||
<Link href="https://cnnpressroom.blogs.cnn.com/" css={{ fontWeight: 700 }}>
|
||||
CNN / WarnerMedia
|
||||
</Link>
|
||||
. © 2016.
|
||||
</Copyright>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Hillary;
|
||||
|
478
pages/index.tsx
478
pages/index.tsx
@@ -110,242 +110,254 @@ const EasterEgg = styled(ColorfulLink, {
|
||||
},
|
||||
});
|
||||
|
||||
const Index = () => (
|
||||
<>
|
||||
<H1>
|
||||
Hi there! I'm Jake. <Wave>👋</Wave>
|
||||
</H1>
|
||||
const Index = () => {
|
||||
return (
|
||||
<>
|
||||
<H1>
|
||||
Hi there! I'm Jake. <Wave>👋</Wave>
|
||||
</H1>
|
||||
|
||||
<H2>
|
||||
I'm a frontend web developer based in{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&fs=1&showinfo=1&rel=0&iv_load_policy=3"
|
||||
title='"Boston Accent Trailer - Late Night with Seth Meyers" on YouTube'
|
||||
lightColor="#fb4d42"
|
||||
darkColor="#ff5146"
|
||||
>
|
||||
Boston
|
||||
</ColorfulLink>
|
||||
.
|
||||
</H2>
|
||||
|
||||
<Paragraph>
|
||||
I specialize in{" "}
|
||||
<ColorfulLink href="https://reactjs.org/" title="React Official Website" lightColor="#1091b3" darkColor="#6fcbe3">
|
||||
React
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/"
|
||||
title='"The Cost of Javascript Frameworks" by Tim Kadlec'
|
||||
lightColor="#f48024"
|
||||
darkColor="#e18431"
|
||||
>
|
||||
vanilla JavaScript
|
||||
</ColorfulLink>{" "}
|
||||
to make nifty{" "}
|
||||
<ColorfulLink href="https://jamstack.wtf/" title="WTF is Jamstack?" lightColor="#04a699" darkColor="#08bbac">
|
||||
Jamstack sites
|
||||
</ColorfulLink>{" "}
|
||||
with dynamic{" "}
|
||||
<ColorfulLink
|
||||
href="https://nodejs.org/en/"
|
||||
title="Node.js Official Website"
|
||||
lightColor="#6fbc4e"
|
||||
darkColor="#84d95f"
|
||||
>
|
||||
Node.js
|
||||
</ColorfulLink>{" "}
|
||||
services. But I still know my way around less buzzwordy stacks like{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.jetbrains.com/lp/php-25/"
|
||||
title="25 Years of PHP History"
|
||||
lightColor="#8892bf"
|
||||
darkColor="#a4afe3"
|
||||
>
|
||||
LAMP
|
||||
</ColorfulLink>
|
||||
, too.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
Whenever possible, I also apply my experience in{" "}
|
||||
<ColorfulLink
|
||||
href="https://bugcrowd.com/jakejarvis"
|
||||
title="Jake Jarvis on Bugcrowd"
|
||||
lightColor="#00b81a"
|
||||
darkColor="#57f06d"
|
||||
>
|
||||
application security
|
||||
</ColorfulLink>
|
||||
,{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.cloudflare.com/learning/serverless/what-is-serverless/"
|
||||
title='"What is serverless computing?" on Cloudflare'
|
||||
lightColor="#0098ec"
|
||||
darkColor="#43b9fb"
|
||||
>
|
||||
serverless stacks
|
||||
</ColorfulLink>
|
||||
, and{" "}
|
||||
<ColorfulLink href="https://xkcd.com/1319/" title='"Automation" on xkcd' lightColor="#ff6200" darkColor="#f46c16">
|
||||
DevOps automation
|
||||
</ColorfulLink>
|
||||
.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
I fell in love with{" "}
|
||||
<ColorfulLink
|
||||
href="/previously/"
|
||||
title="My Terrible, Horrible, No Good, Very Bad First Websites"
|
||||
lightColor="#4169e1"
|
||||
darkColor="#8ca9ff"
|
||||
>
|
||||
frontend web design
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="/notes/my-first-code/"
|
||||
title="Jake's Bulletin Board, circa 2003"
|
||||
lightColor="#9932cc"
|
||||
darkColor="#d588fb"
|
||||
>
|
||||
backend programming
|
||||
</ColorfulLink>{" "}
|
||||
back when my only source of income was{" "}
|
||||
<EasterEgg
|
||||
href="/birthday/"
|
||||
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
||||
lightColor="#e40088"
|
||||
darkColor="#fd40b1"
|
||||
>
|
||||
the Tooth Fairy
|
||||
</EasterEgg>
|
||||
. <Quiet>I've improved a bit since then, I think? 🤷</Quiet>
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
Over the years, some of my side projects{" "}
|
||||
<ColorfulLink
|
||||
href="/leo/"
|
||||
title="Powncer segment on The Lab with Leo Laporte (G4techTV)"
|
||||
lightColor="#ff1b1b"
|
||||
darkColor="#f06060"
|
||||
>
|
||||
have
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://tuftsdaily.com/news/2012/04/06/student-designs-iphone-joeytracker-app/"
|
||||
title='"Student designs iPhone JoeyTracker app" on The Tufts Daily'
|
||||
lightColor="#f78200"
|
||||
darkColor="#fd992a"
|
||||
>
|
||||
been
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.google.com/books/edition/The_Facebook_Effect/RRUkLhyGZVgC?hl=en&gbpv=1&dq=%22jake%20jarvis%22&pg=PA226&printsec=frontcover&bsq=%22jake%20jarvis%22"
|
||||
title='"The Facebook Effect" by David Kirkpatrick (Google Books)'
|
||||
lightColor="#f2b702"
|
||||
darkColor="#ffcc2e"
|
||||
>
|
||||
featured
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://money.cnn.com/2007/06/01/technology/facebookplatform.fortune/index.htm"
|
||||
title='"The new Facebook is on a roll" on CNN Money'
|
||||
lightColor="#5ebd3e"
|
||||
darkColor="#78df55"
|
||||
>
|
||||
by
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.wired.com/2007/04/our-web-servers/"
|
||||
title='"Middio: A YouTube Scraper for Major Label Music Videos" on Wired'
|
||||
lightColor="#009cdf"
|
||||
darkColor="#29bfff"
|
||||
>
|
||||
various
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://gigaom.com/2009/10/06/fresh-faces-in-tech-10-kid-entrepreneurs-to-watch/6/"
|
||||
title='"Fresh Faces in Tech: 10 Kid Entrepreneurs to Watch" on Gigaom'
|
||||
lightColor="#3e49bb"
|
||||
darkColor="#7b87ff"
|
||||
>
|
||||
media
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://adage.com/article/small-agency-diary/client-ceo-s-son/116723/"
|
||||
title='"Your Next Client? The CEO's Son" on Advertising Age'
|
||||
lightColor="#973999"
|
||||
darkColor="#db60dd"
|
||||
>
|
||||
outlets
|
||||
</ColorfulLink>
|
||||
.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
You can find more of my work on{" "}
|
||||
<ColorfulLink
|
||||
href="https://github.com/jakejarvis"
|
||||
rel="me"
|
||||
title="Jake Jarvis on GitHub"
|
||||
lightColor="#8d4eff"
|
||||
darkColor="#a379f0"
|
||||
>
|
||||
GitHub
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.linkedin.com/in/jakejarvis/"
|
||||
rel="me"
|
||||
title="Jake Jarvis on LinkedIn"
|
||||
lightColor="#0073b1"
|
||||
darkColor="#3b9dd2"
|
||||
>
|
||||
LinkedIn
|
||||
</ColorfulLink>
|
||||
. I'm always available to connect over{" "}
|
||||
<ColorfulLink href="/contact/" title="Send an email" lightColor="#de0c0c" darkColor="#ff5050">
|
||||
email
|
||||
</ColorfulLink>{" "}
|
||||
<Sup>
|
||||
<H2>
|
||||
I'm a frontend web developer based in{" "}
|
||||
<ColorfulLink
|
||||
href="/pubkey.asc"
|
||||
rel="pgpkey authn"
|
||||
title="My Public Key"
|
||||
lightColor="#757575"
|
||||
darkColor="#959595"
|
||||
underline={false}
|
||||
openInNewTab
|
||||
href="https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&fs=1&showinfo=1&rel=0&iv_load_policy=3"
|
||||
title='"Boston Accent Trailer - Late Night with Seth Meyers" on YouTube'
|
||||
lightColor="#fb4d42"
|
||||
darkColor="#ff5146"
|
||||
>
|
||||
🔐 <PGPKey>2B0C 9CF2 51E6 9A39</PGPKey>
|
||||
Boston
|
||||
</ColorfulLink>
|
||||
</Sup>
|
||||
,{" "}
|
||||
<ColorfulLink
|
||||
href="https://twitter.com/jakejarvis"
|
||||
rel="me"
|
||||
title="Jake Jarvis on Twitter"
|
||||
lightColor="#00acee"
|
||||
darkColor="#3bc9ff"
|
||||
>
|
||||
Twitter
|
||||
</ColorfulLink>
|
||||
, or{" "}
|
||||
<ColorfulLink
|
||||
href="sms:+1-617-917-3737"
|
||||
title="Send SMS to +1 (617) 917-3737"
|
||||
lightColor="#6fcc01"
|
||||
darkColor="#8edb34"
|
||||
>
|
||||
SMS
|
||||
</ColorfulLink>{" "}
|
||||
as well!
|
||||
</Paragraph>
|
||||
</>
|
||||
);
|
||||
.
|
||||
</H2>
|
||||
|
||||
<Paragraph>
|
||||
I specialize in{" "}
|
||||
<ColorfulLink
|
||||
href="https://reactjs.org/"
|
||||
title="React Official Website"
|
||||
lightColor="#1091b3"
|
||||
darkColor="#6fcbe3"
|
||||
>
|
||||
React
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/"
|
||||
title='"The Cost of Javascript Frameworks" by Tim Kadlec'
|
||||
lightColor="#f48024"
|
||||
darkColor="#e18431"
|
||||
>
|
||||
vanilla JavaScript
|
||||
</ColorfulLink>{" "}
|
||||
to make nifty{" "}
|
||||
<ColorfulLink href="https://jamstack.wtf/" title="WTF is Jamstack?" lightColor="#04a699" darkColor="#08bbac">
|
||||
Jamstack sites
|
||||
</ColorfulLink>{" "}
|
||||
with dynamic{" "}
|
||||
<ColorfulLink
|
||||
href="https://nodejs.org/en/"
|
||||
title="Node.js Official Website"
|
||||
lightColor="#6fbc4e"
|
||||
darkColor="#84d95f"
|
||||
>
|
||||
Node.js
|
||||
</ColorfulLink>{" "}
|
||||
services. But I still know my way around less buzzwordy stacks like{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.jetbrains.com/lp/php-25/"
|
||||
title="25 Years of PHP History"
|
||||
lightColor="#8892bf"
|
||||
darkColor="#a4afe3"
|
||||
>
|
||||
LAMP
|
||||
</ColorfulLink>
|
||||
, too.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
Whenever possible, I also apply my experience in{" "}
|
||||
<ColorfulLink
|
||||
href="https://bugcrowd.com/jakejarvis"
|
||||
title="Jake Jarvis on Bugcrowd"
|
||||
lightColor="#00b81a"
|
||||
darkColor="#57f06d"
|
||||
>
|
||||
application security
|
||||
</ColorfulLink>
|
||||
,{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.cloudflare.com/learning/serverless/what-is-serverless/"
|
||||
title='"What is serverless computing?" on Cloudflare'
|
||||
lightColor="#0098ec"
|
||||
darkColor="#43b9fb"
|
||||
>
|
||||
serverless stacks
|
||||
</ColorfulLink>
|
||||
, and{" "}
|
||||
<ColorfulLink
|
||||
href="https://xkcd.com/1319/"
|
||||
title='"Automation" on xkcd'
|
||||
lightColor="#ff6200"
|
||||
darkColor="#f46c16"
|
||||
>
|
||||
DevOps automation
|
||||
</ColorfulLink>
|
||||
.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
I fell in love with{" "}
|
||||
<ColorfulLink
|
||||
href="/previously/"
|
||||
title="My Terrible, Horrible, No Good, Very Bad First Websites"
|
||||
lightColor="#4169e1"
|
||||
darkColor="#8ca9ff"
|
||||
>
|
||||
frontend web design
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="/notes/my-first-code/"
|
||||
title="Jake's Bulletin Board, circa 2003"
|
||||
lightColor="#9932cc"
|
||||
darkColor="#d588fb"
|
||||
>
|
||||
backend programming
|
||||
</ColorfulLink>{" "}
|
||||
back when my only source of income was{" "}
|
||||
<EasterEgg
|
||||
href="/birthday/"
|
||||
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
||||
lightColor="#e40088"
|
||||
darkColor="#fd40b1"
|
||||
>
|
||||
the Tooth Fairy
|
||||
</EasterEgg>
|
||||
. <Quiet>I've improved a bit since then, I think? 🤷</Quiet>
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
Over the years, some of my side projects{" "}
|
||||
<ColorfulLink
|
||||
href="/leo/"
|
||||
title="Powncer segment on The Lab with Leo Laporte (G4techTV)"
|
||||
lightColor="#ff1b1b"
|
||||
darkColor="#f06060"
|
||||
>
|
||||
have
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://tuftsdaily.com/news/2012/04/06/student-designs-iphone-joeytracker-app/"
|
||||
title='"Student designs iPhone JoeyTracker app" on The Tufts Daily'
|
||||
lightColor="#f78200"
|
||||
darkColor="#fd992a"
|
||||
>
|
||||
been
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.google.com/books/edition/The_Facebook_Effect/RRUkLhyGZVgC?hl=en&gbpv=1&dq=%22jake%20jarvis%22&pg=PA226&printsec=frontcover&bsq=%22jake%20jarvis%22"
|
||||
title='"The Facebook Effect" by David Kirkpatrick (Google Books)'
|
||||
lightColor="#f2b702"
|
||||
darkColor="#ffcc2e"
|
||||
>
|
||||
featured
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://money.cnn.com/2007/06/01/technology/facebookplatform.fortune/index.htm"
|
||||
title='"The new Facebook is on a roll" on CNN Money'
|
||||
lightColor="#5ebd3e"
|
||||
darkColor="#78df55"
|
||||
>
|
||||
by
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.wired.com/2007/04/our-web-servers/"
|
||||
title='"Middio: A YouTube Scraper for Major Label Music Videos" on Wired'
|
||||
lightColor="#009cdf"
|
||||
darkColor="#29bfff"
|
||||
>
|
||||
various
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://gigaom.com/2009/10/06/fresh-faces-in-tech-10-kid-entrepreneurs-to-watch/6/"
|
||||
title='"Fresh Faces in Tech: 10 Kid Entrepreneurs to Watch" on Gigaom'
|
||||
lightColor="#3e49bb"
|
||||
darkColor="#7b87ff"
|
||||
>
|
||||
media
|
||||
</ColorfulLink>{" "}
|
||||
<ColorfulLink
|
||||
href="https://adage.com/article/small-agency-diary/client-ceo-s-son/116723/"
|
||||
title='"Your Next Client? The CEO's Son" on Advertising Age'
|
||||
lightColor="#973999"
|
||||
darkColor="#db60dd"
|
||||
>
|
||||
outlets
|
||||
</ColorfulLink>
|
||||
.
|
||||
</Paragraph>
|
||||
|
||||
<Paragraph>
|
||||
You can find more of my work on{" "}
|
||||
<ColorfulLink
|
||||
href="https://github.com/jakejarvis"
|
||||
rel="me"
|
||||
title="Jake Jarvis on GitHub"
|
||||
lightColor="#8d4eff"
|
||||
darkColor="#a379f0"
|
||||
>
|
||||
GitHub
|
||||
</ColorfulLink>{" "}
|
||||
and{" "}
|
||||
<ColorfulLink
|
||||
href="https://www.linkedin.com/in/jakejarvis/"
|
||||
rel="me"
|
||||
title="Jake Jarvis on LinkedIn"
|
||||
lightColor="#0073b1"
|
||||
darkColor="#3b9dd2"
|
||||
>
|
||||
LinkedIn
|
||||
</ColorfulLink>
|
||||
. I'm always available to connect over{" "}
|
||||
<ColorfulLink href="/contact/" title="Send an email" lightColor="#de0c0c" darkColor="#ff5050">
|
||||
email
|
||||
</ColorfulLink>{" "}
|
||||
<Sup>
|
||||
<ColorfulLink
|
||||
href="/pubkey.asc"
|
||||
rel="pgpkey authn"
|
||||
title="My Public Key"
|
||||
lightColor="#757575"
|
||||
darkColor="#959595"
|
||||
underline={false}
|
||||
openInNewTab
|
||||
>
|
||||
🔐 <PGPKey>2B0C 9CF2 51E6 9A39</PGPKey>
|
||||
</ColorfulLink>
|
||||
</Sup>
|
||||
,{" "}
|
||||
<ColorfulLink
|
||||
href="https://twitter.com/jakejarvis"
|
||||
rel="me"
|
||||
title="Jake Jarvis on Twitter"
|
||||
lightColor="#00acee"
|
||||
darkColor="#3bc9ff"
|
||||
>
|
||||
Twitter
|
||||
</ColorfulLink>
|
||||
, or{" "}
|
||||
<ColorfulLink
|
||||
href="sms:+1-617-917-3737"
|
||||
title="Send SMS to +1 (617) 917-3737"
|
||||
lightColor="#6fcc01"
|
||||
darkColor="#8edb34"
|
||||
>
|
||||
SMS
|
||||
</ColorfulLink>{" "}
|
||||
as well!
|
||||
</Paragraph>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Index;
|
||||
|
@@ -15,41 +15,43 @@ const Copyright = styled("p", {
|
||||
color: "$mediumLight",
|
||||
});
|
||||
|
||||
const Leo = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title='Facebook App on "The Lab with Leo Laporte"'
|
||||
description="Powncer app featured in Leo Laporte's TechTV show."
|
||||
openGraph={{
|
||||
title: 'Facebook App on "The Lab with Leo Laporte"',
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>Facebook App on "The Lab with Leo Laporte"</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/leo/leo.webm",
|
||||
mp4: "/static/images/leo/leo.mp4",
|
||||
const Leo = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title='Facebook App on "The Lab with Leo Laporte"'
|
||||
description="Powncer app featured in Leo Laporte's TechTV show."
|
||||
openGraph={{
|
||||
title: 'Facebook App on "The Lab with Leo Laporte"',
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
subs="/static/images/leo/subs.en.vtt"
|
||||
/>
|
||||
|
||||
<Copyright>
|
||||
Video is property of{" "}
|
||||
<Link href="https://web.archive.org/web/20070511004304/www.g4techtv.ca" css={{ fontWeight: 700 }}>
|
||||
G4techTV Canada
|
||||
</Link>{" "}
|
||||
&{" "}
|
||||
<Link href="https://leolaporte.com/" css={{ fontWeight: 700 }}>
|
||||
Leo Laporte
|
||||
</Link>
|
||||
. © 2007 G4 Media, Inc.
|
||||
</Copyright>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<PageTitle>Facebook App on "The Lab with Leo Laporte"</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Video
|
||||
src={{
|
||||
webm: "/static/images/leo/leo.webm",
|
||||
mp4: "/static/images/leo/leo.mp4",
|
||||
}}
|
||||
thumbnail={thumbnail.src}
|
||||
subs="/static/images/leo/subs.en.vtt"
|
||||
/>
|
||||
|
||||
<Copyright>
|
||||
Video is property of{" "}
|
||||
<Link href="https://web.archive.org/web/20070511004304/www.g4techtv.ca" css={{ fontWeight: 700 }}>
|
||||
G4techTV Canada
|
||||
</Link>{" "}
|
||||
&{" "}
|
||||
<Link href="https://leolaporte.com/" css={{ fontWeight: 700 }}>
|
||||
Leo Laporte
|
||||
</Link>
|
||||
. © 2007 G4 Media, Inc.
|
||||
</Copyright>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Leo;
|
||||
|
@@ -7,466 +7,470 @@ import Blockquote from "../components/Blockquote";
|
||||
import { H2, H3 } from "../components/Heading";
|
||||
import { UnorderedList, OrderedList, ListItem } from "../components/List";
|
||||
|
||||
const License = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="License"
|
||||
openGraph={{
|
||||
title: "License",
|
||||
}}
|
||||
/>
|
||||
const License = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="License"
|
||||
openGraph={{
|
||||
title: "License",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>📜 License</PageTitle>
|
||||
<PageTitle>📜 License</PageTitle>
|
||||
|
||||
<Content>
|
||||
<p>
|
||||
Unless otherwise noted, content on this website is published under the{" "}
|
||||
<Link href="https://creativecommons.org/licenses/by/4.0/">
|
||||
<strong>Creative Commons Attribution 4.0 International Public License</strong>
|
||||
</Link>{" "}
|
||||
(CC-BY-4.0), which means that you can copy, redistribute, remix, transform, and build upon the content for any
|
||||
purpose as long as you give appropriate credit (such as a hyperlink to the original URL).
|
||||
</p>
|
||||
<p>
|
||||
The <Link href="https://creativecommons.org/licenses/by/4.0/legalcode">full license</Link> is re-printed below.
|
||||
</p>
|
||||
|
||||
<HorizontalRule />
|
||||
|
||||
<H2 id="full-text">Creative Commons Attribution 4.0 International Public License</H2>
|
||||
|
||||
<p style={{ textAlign: "center", lineHeight: 0 }}>
|
||||
<Link
|
||||
href="https://creativecommons.org/licenses/by/4.0/"
|
||||
title="Creative Commons Attribution 4.0"
|
||||
underline={false}
|
||||
>
|
||||
<svg width="120" height="42">
|
||||
<path d="M3.1.5l113.4.2c1.6 0 3-.2 3 3.2l-.1 37.3H.3V3.7C.3 2.1.4.5 3 .5z" fill="#aab2ab"></path>
|
||||
<path d="M117.8 0H2.2C1 0 0 1 0 2.2v39.3c0 .3.2.5.5.5h119c.3 0 .5-.2.5-.5V2.2c0-1.2-1-2.2-2.2-2.2zM2.2 1h115.6c.6 0 1.2.6 1.2 1.2v27.3H36.2a17.8 17.8 0 01-31.1 0H1V2.2C1 1.6 1.5 1 2.1 1z"></path>
|
||||
<path
|
||||
d="M73.8 32.7l.9.1.6.3.5.5.1.8c0 .3 0 .6-.2.8l-.7.6c.4 0 .7.3 1 .6l.2 1-.1 1-.6.5-.7.4H70.7v-6.6h3.1zm-.2 2.7c.3 0 .5 0 .7-.2l.2-.6v-.3l-.3-.3H74l-.4-.1h-1.4v1.5h1.5zm.1 2.8h.4l.4-.1.2-.3v-.4c0-.4 0-.6-.2-.8l-.8-.2h-1.6v1.8h1.6zM76.5 32.7h1.6l1.6 2.7 1.5-2.7H83l-2.5 4.1v2.6h-1.5v-2.6l-2.4-4zM34.3 19.6a13.6 13.6 0 01-27.3 0 13.6 13.6 0 0127.3 0z"
|
||||
fill="#fff"
|
||||
></path>
|
||||
<path d="M31.7 8.5c3 3 4.5 6.7 4.5 11.1a15.4 15.4 0 01-15.6 15.6 15 15 0 01-11-4.6 15 15 0 01-4.6-11c0-4.3 1.5-8 4.6-11.1 3-3 6.7-4.5 11-4.5 4.4 0 8 1.5 11.1 4.5zm-20 2a12.5 12.5 0 00-3.9 9.1c0 3.5 1.3 6.5 3.8 9s5.6 3.8 9 3.8c3.5 0 6.6-1.3 9.2-3.8a12 12 0 003.6-9c0-3.6-1.2-6.6-3.7-9a12.3 12.3 0 00-9-3.8c-3.6 0-6.6 1.2-9 3.7zm6.7 7.6c-.4-.9-1-1.3-1.8-1.3-1.4 0-2 1-2 2.8 0 1.8.6 2.8 2 2.8 1 0 1.6-.5 2-1.4l1.9 1a4.4 4.4 0 01-4.1 2.5c-1.4 0-2.5-.5-3.4-1.3-.8-.9-1.3-2-1.3-3.6 0-1.5.5-2.7 1.3-3.5 1-1 2-1.3 3.3-1.3 2 0 3.3.7 4.1 2.2l-2 1zm9 0c-.4-.9-1-1.3-1.8-1.3-1.4 0-2 1-2 2.8 0 1.8.6 2.8 2 2.8 1 0 1.6-.5 2-1.4l2 1a4.4 4.4 0 01-4.2 2.5c-1.4 0-2.5-.5-3.3-1.3-.9-.9-1.3-2-1.3-3.6 0-1.5.4-2.7 1.3-3.5.8-1 2-1.3 3.2-1.3 2 0 3.3.7 4.2 2.2l-2.1 1z"></path>
|
||||
<g transform="matrix(.99377 0 0 .99367 -177.7 0)">
|
||||
<circle cx="255.6" cy="15.3" r="10.8" fill="#fff"></circle>
|
||||
<path d="M258.7 12.2c0-.4-.4-.8-.8-.8h-4.7c-.5 0-.8.4-.8.8V17h1.3v5.6h3.6V17h1.4v-4.8z"></path>
|
||||
<circle cx="255.5" cy="9.2" r="1.6"></circle>
|
||||
<path
|
||||
clipRule="evenodd"
|
||||
d="M255.5 3.4c-3.2 0-6 1.1-8.2 3.4A11.4 11.4 0 00244 15c0 3.2 1.1 6 3.4 8.2 2.3 2.3 5 3.4 8.2 3.4 3.2 0 6-1.1 8.4-3.4a11 11 0 003.3-8.2c0-3.3-1.1-6-3.4-8.3-2.2-2.3-5-3.4-8.3-3.4zm0 2.1c2.7 0 5 1 6.8 2.8a9.2 9.2 0 012.8 6.8c0 2.7-1 4.9-2.7 6.7-2 1.9-4.2 2.8-6.8 2.8-2.7 0-5-1-6.8-2.8A9.2 9.2 0 01246 15c0-2.6 1-4.9 2.8-6.8a9 9 0 016.8-2.8z"
|
||||
fillRule="evenodd"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<Blockquote>
|
||||
<Content>
|
||||
<p>
|
||||
Unless otherwise noted, content on this website is published under the{" "}
|
||||
<Link href="https://creativecommons.org/licenses/by/4.0/">
|
||||
<strong>Creative Commons Attribution 4.0 International Public License</strong>
|
||||
</Link>{" "}
|
||||
(CC-BY-4.0), which means that you can copy, redistribute, remix, transform, and build upon the content for any
|
||||
purpose as long as you give appropriate credit (such as a hyperlink to the original URL).
|
||||
</p>
|
||||
<p>
|
||||
The <Link href="https://creativecommons.org/licenses/by/4.0/legalcode">full license</Link> is re-printed
|
||||
below.
|
||||
</p>
|
||||
|
||||
<HorizontalRule />
|
||||
|
||||
<H2 id="full-text">Creative Commons Attribution 4.0 International Public License</H2>
|
||||
|
||||
<p style={{ textAlign: "center", lineHeight: 0 }}>
|
||||
<Link
|
||||
href="https://creativecommons.org/licenses/by/4.0/"
|
||||
title="Creative Commons Attribution 4.0"
|
||||
underline={false}
|
||||
>
|
||||
<svg width="120" height="42">
|
||||
<path d="M3.1.5l113.4.2c1.6 0 3-.2 3 3.2l-.1 37.3H.3V3.7C.3 2.1.4.5 3 .5z" fill="#aab2ab"></path>
|
||||
<path d="M117.8 0H2.2C1 0 0 1 0 2.2v39.3c0 .3.2.5.5.5h119c.3 0 .5-.2.5-.5V2.2c0-1.2-1-2.2-2.2-2.2zM2.2 1h115.6c.6 0 1.2.6 1.2 1.2v27.3H36.2a17.8 17.8 0 01-31.1 0H1V2.2C1 1.6 1.5 1 2.1 1z"></path>
|
||||
<path
|
||||
d="M73.8 32.7l.9.1.6.3.5.5.1.8c0 .3 0 .6-.2.8l-.7.6c.4 0 .7.3 1 .6l.2 1-.1 1-.6.5-.7.4H70.7v-6.6h3.1zm-.2 2.7c.3 0 .5 0 .7-.2l.2-.6v-.3l-.3-.3H74l-.4-.1h-1.4v1.5h1.5zm.1 2.8h.4l.4-.1.2-.3v-.4c0-.4 0-.6-.2-.8l-.8-.2h-1.6v1.8h1.6zM76.5 32.7h1.6l1.6 2.7 1.5-2.7H83l-2.5 4.1v2.6h-1.5v-2.6l-2.4-4zM34.3 19.6a13.6 13.6 0 01-27.3 0 13.6 13.6 0 0127.3 0z"
|
||||
fill="#fff"
|
||||
></path>
|
||||
<path d="M31.7 8.5c3 3 4.5 6.7 4.5 11.1a15.4 15.4 0 01-15.6 15.6 15 15 0 01-11-4.6 15 15 0 01-4.6-11c0-4.3 1.5-8 4.6-11.1 3-3 6.7-4.5 11-4.5 4.4 0 8 1.5 11.1 4.5zm-20 2a12.5 12.5 0 00-3.9 9.1c0 3.5 1.3 6.5 3.8 9s5.6 3.8 9 3.8c3.5 0 6.6-1.3 9.2-3.8a12 12 0 003.6-9c0-3.6-1.2-6.6-3.7-9a12.3 12.3 0 00-9-3.8c-3.6 0-6.6 1.2-9 3.7zm6.7 7.6c-.4-.9-1-1.3-1.8-1.3-1.4 0-2 1-2 2.8 0 1.8.6 2.8 2 2.8 1 0 1.6-.5 2-1.4l1.9 1a4.4 4.4 0 01-4.1 2.5c-1.4 0-2.5-.5-3.4-1.3-.8-.9-1.3-2-1.3-3.6 0-1.5.5-2.7 1.3-3.5 1-1 2-1.3 3.3-1.3 2 0 3.3.7 4.1 2.2l-2 1zm9 0c-.4-.9-1-1.3-1.8-1.3-1.4 0-2 1-2 2.8 0 1.8.6 2.8 2 2.8 1 0 1.6-.5 2-1.4l2 1a4.4 4.4 0 01-4.2 2.5c-1.4 0-2.5-.5-3.3-1.3-.9-.9-1.3-2-1.3-3.6 0-1.5.4-2.7 1.3-3.5.8-1 2-1.3 3.2-1.3 2 0 3.3.7 4.2 2.2l-2.1 1z"></path>
|
||||
<g transform="matrix(.99377 0 0 .99367 -177.7 0)">
|
||||
<circle cx="255.6" cy="15.3" r="10.8" fill="#fff"></circle>
|
||||
<path d="M258.7 12.2c0-.4-.4-.8-.8-.8h-4.7c-.5 0-.8.4-.8.8V17h1.3v5.6h3.6V17h1.4v-4.8z"></path>
|
||||
<circle cx="255.5" cy="9.2" r="1.6"></circle>
|
||||
<path
|
||||
clipRule="evenodd"
|
||||
d="M255.5 3.4c-3.2 0-6 1.1-8.2 3.4A11.4 11.4 0 00244 15c0 3.2 1.1 6 3.4 8.2 2.3 2.3 5 3.4 8.2 3.4 3.2 0 6-1.1 8.4-3.4a11 11 0 003.3-8.2c0-3.3-1.1-6-3.4-8.3-2.2-2.3-5-3.4-8.3-3.4zm0 2.1c2.7 0 5 1 6.8 2.8a9.2 9.2 0 012.8 6.8c0 2.7-1 4.9-2.7 6.7-2 1.9-4.2 2.8-6.8 2.8-2.7 0-5-1-6.8-2.8A9.2 9.2 0 01246 15c0-2.6 1-4.9 2.8-6.8a9 9 0 016.8-2.8z"
|
||||
fillRule="evenodd"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<Blockquote>
|
||||
<p>
|
||||
<em>
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or
|
||||
legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other
|
||||
relationship. Creative Commons makes its licenses and related information available on an "as-is" basis.
|
||||
Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and
|
||||
conditions, or any related information. Creative Commons disclaims all liability for damages resulting
|
||||
from their use to the fullest extent possible.
|
||||
</em>
|
||||
</p>
|
||||
</Blockquote>
|
||||
|
||||
<H3>Using Creative Commons Public Licenses</H3>
|
||||
|
||||
<p>
|
||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights
|
||||
holders may use to share original works of authorship and other material subject to copyright and certain
|
||||
other rights specified in the public license below. The following considerations are for informational
|
||||
purposes only, are not exhaustive, and do not form part of our licenses.
|
||||
</p>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Considerations for licensors:</strong> Our public licenses are intended for use by those
|
||||
authorized to give the public permission to use material in ways otherwise restricted by copyright and
|
||||
certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and
|
||||
conditions of the license they choose before applying it. Licensors should also secure all rights
|
||||
necessary before applying our licenses so that the public can reuse the material as expected. Licensors
|
||||
should clearly mark any material not subject to the license. This includes other CC-licensed material, or
|
||||
material used under an exception or limitation to copyright.{" "}
|
||||
<Link href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors">
|
||||
More considerations for licensors
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Considerations for the public:</strong> By using one of our public licenses, a licensor grants the
|
||||
public permission to use the licensed material under specified terms and conditions. If the licensor's
|
||||
permission is not necessary for any reason–for example, because of any applicable exception or limitation
|
||||
to copyright–then that use is not regulated by the license. Our licenses grant only permissions under
|
||||
copyright and certain other rights that a licensor has authority to grant. Use of the licensed material
|
||||
may still be restricted for other reasons, including because others have copyright or other rights in the
|
||||
material. A licensor may make special requests, such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to respect those requests where reasonable.{" "}
|
||||
<Link href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees">
|
||||
More considerations for the public
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
|
||||
<H3>Licensed Rights</H3>
|
||||
|
||||
<p>
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and
|
||||
conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in
|
||||
consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the Licensed Material available under these terms
|
||||
and conditions.
|
||||
</p>
|
||||
|
||||
<H3>Section 1 – Definitions.</H3>
|
||||
|
||||
<p>
|
||||
a. <strong>Adapted Material</strong> means material subject to Copyright and Similar Rights that is derived
|
||||
from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged,
|
||||
transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights
|
||||
held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work,
|
||||
performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in
|
||||
timed relation with a moving image.
|
||||
</p>
|
||||
<p>
|
||||
b. <strong>Adapter's License</strong> means the license You apply to Your Copyright and Similar Rights in Your
|
||||
contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
c. <strong>Copyright and Similar Rights</strong> means copyright and/or similar rights closely related to
|
||||
copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the
|
||||
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
</p>
|
||||
<p>
|
||||
d. <strong>Effective Technological Measures</strong> means those measures that, in the absence of proper
|
||||
authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
</p>
|
||||
<p>
|
||||
e. <strong>Exceptions and Limitations</strong> means fair use, fair dealing, and/or any other exception or
|
||||
limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
</p>
|
||||
<p>
|
||||
f. <strong>Licensed Material</strong> means the artistic or literary work, database, or other material to
|
||||
which the Licensor applied this Public License.
|
||||
</p>
|
||||
<p>
|
||||
g. <strong>Licensed Rights</strong> means the rights granted to You subject to the terms and conditions of
|
||||
this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
</p>
|
||||
<p>
|
||||
h. <strong>Licensor</strong> means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
</p>
|
||||
<p>
|
||||
i. <strong>Share</strong> means to provide material to the public by any means or process that requires
|
||||
permission under the Licensed Rights, such as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material available to the public including in ways
|
||||
that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
</p>
|
||||
<p>
|
||||
j. <strong>Sui Generis Database Rights</strong> means rights other than copyright resulting from Directive
|
||||
96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
</p>
|
||||
<p>
|
||||
k. <strong>You</strong> means the individual or entity exercising the Licensed Rights under this Public
|
||||
License. <strong>Your</strong> has a corresponding meaning.
|
||||
</p>
|
||||
|
||||
<H3>Section 2 – Scope.</H3>
|
||||
|
||||
<p>
|
||||
a.{" "}
|
||||
<em>
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or
|
||||
legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other
|
||||
relationship. Creative Commons makes its licenses and related information available on an "as-is" basis.
|
||||
Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and
|
||||
conditions, or any related information. Creative Commons disclaims all liability for damages resulting from
|
||||
their use to the fullest extent possible.
|
||||
<strong>License grant.</strong>
|
||||
</em>
|
||||
</p>
|
||||
</Blockquote>
|
||||
|
||||
<H3>Using Creative Commons Public Licenses</H3>
|
||||
|
||||
<p>
|
||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights
|
||||
holders may use to share original works of authorship and other material subject to copyright and certain other
|
||||
rights specified in the public license below. The following considerations are for informational purposes only,
|
||||
are not exhaustive, and do not form part of our licenses.
|
||||
</p>
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Considerations for licensors:</strong> Our public licenses are intended for use by those authorized
|
||||
to give the public permission to use material in ways otherwise restricted by copyright and certain other
|
||||
rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the
|
||||
license they choose before applying it. Licensors should also secure all rights necessary before applying
|
||||
our licenses so that the public can reuse the material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-licensed material, or material used under an
|
||||
exception or limitation to copyright.{" "}
|
||||
<Link href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors">
|
||||
More considerations for licensors
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Considerations for the public:</strong> By using one of our public licenses, a licensor grants the
|
||||
public permission to use the licensed material under specified terms and conditions. If the licensor's
|
||||
permission is not necessary for any reason–for example, because of any applicable exception or limitation to
|
||||
copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright
|
||||
and certain other rights that a licensor has authority to grant. Use of the licensed material may still be
|
||||
restricted for other reasons, including because others have copyright or other rights in the material. A
|
||||
licensor may make special requests, such as asking that all changes be marked or described. Although not
|
||||
required by our licenses, you are encouraged to respect those requests where reasonable.{" "}
|
||||
<Link href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees">
|
||||
More considerations for the public
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
|
||||
<H3>Licensed Rights</H3>
|
||||
|
||||
<p>
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions
|
||||
of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this
|
||||
Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits
|
||||
the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||
</p>
|
||||
|
||||
<H3>Section 1 – Definitions.</H3>
|
||||
|
||||
<p>
|
||||
a. <strong>Adapted Material</strong> means material subject to Copyright and Similar Rights that is derived from
|
||||
or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged,
|
||||
transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held
|
||||
by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work,
|
||||
performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in
|
||||
timed relation with a moving image.
|
||||
</p>
|
||||
<p>
|
||||
b. <strong>Adapter's License</strong> means the license You apply to Your Copyright and Similar Rights in Your
|
||||
contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
c. <strong>Copyright and Similar Rights</strong> means copyright and/or similar rights closely related to
|
||||
copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the
|
||||
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
</p>
|
||||
<p>
|
||||
d. <strong>Effective Technological Measures</strong> means those measures that, in the absence of proper
|
||||
authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
</p>
|
||||
<p>
|
||||
e. <strong>Exceptions and Limitations</strong> means fair use, fair dealing, and/or any other exception or
|
||||
limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
</p>
|
||||
<p>
|
||||
f. <strong>Licensed Material</strong> means the artistic or literary work, database, or other material to which
|
||||
the Licensor applied this Public License.
|
||||
</p>
|
||||
<p>
|
||||
g. <strong>Licensed Rights</strong> means the rights granted to You subject to the terms and conditions of this
|
||||
Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed
|
||||
Material and that the Licensor has authority to license.
|
||||
</p>
|
||||
<p>
|
||||
h. <strong>Licensor</strong> means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
</p>
|
||||
<p>
|
||||
i. <strong>Share</strong> means to provide material to the public by any means or process that requires
|
||||
permission under the Licensed Rights, such as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material available to the public including in ways
|
||||
that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
</p>
|
||||
<p>
|
||||
j. <strong>Sui Generis Database Rights</strong> means rights other than copyright resulting from Directive
|
||||
96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as
|
||||
amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
</p>
|
||||
<p>
|
||||
k. <strong>You</strong> means the individual or entity exercising the Licensed Rights under this Public License.{" "}
|
||||
<strong>Your</strong> has a corresponding meaning.
|
||||
</p>
|
||||
|
||||
<H3>Section 2 – Scope.</H3>
|
||||
|
||||
<p>
|
||||
a.{" "}
|
||||
<em>
|
||||
<strong>License grant.</strong>
|
||||
</em>
|
||||
</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide,
|
||||
royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the
|
||||
Licensed Material to:
|
||||
</p>
|
||||
<p>A. reproduce and Share the Licensed Material, in whole or in part; and</p>
|
||||
<p>B. produce, reproduce, and Share Adapted Material.</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Exceptions and Limitations.</strong> For the avoidance of doubt, where Exceptions and Limitations
|
||||
apply to Your use, this Public License does not apply, and You do not need to comply with its terms and
|
||||
conditions.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Term.</strong> The term of this Public License is specified in Section 6(a).
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Media and formats; technical modifications allowed.</strong> The Licensor authorizes You to exercise
|
||||
the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical
|
||||
modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to
|
||||
forbid You from making technical modifications necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective Technological Measures. For purposes of this
|
||||
Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted
|
||||
Material.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Downstream recipients.</strong>
|
||||
</p>
|
||||
<p>
|
||||
A. <strong>Offer from the Licensor – Licensed Material.</strong> Every recipient of the Licensed Material
|
||||
automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and
|
||||
conditions of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
B. <strong>No downstream restrictions.</strong> You may not offer or impose any additional or different
|
||||
terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so
|
||||
restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>No endorsement.</strong> Nothing in this Public License constitutes or may be construed as
|
||||
permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or
|
||||
sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution
|
||||
as provided in Section 3(a)(1)(A)(i).
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
<p>
|
||||
b.{" "}
|
||||
<em>
|
||||
<strong>Other rights.</strong>
|
||||
</em>
|
||||
</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives
|
||||
and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow
|
||||
You to exercise the Licensed Rights, but not otherwise.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>Patent and trademark rights are not licensed under this Public License.</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the
|
||||
Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory
|
||||
or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such
|
||||
royalties.
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
|
||||
<H3>Section 3 – License Conditions.</H3>
|
||||
|
||||
<p>Your exercise of the Licensed Rights is expressly made subject to the following conditions.</p>
|
||||
<p>
|
||||
a.{" "}
|
||||
<em>
|
||||
<strong>Attribution.</strong>
|
||||
</em>
|
||||
</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>If You Share the Licensed Material (including in modified form), You must:</p>
|
||||
<p>A. retain the following if it is supplied by the Licensor with the Licensed Material:</p>
|
||||
<p>
|
||||
i. identification of the creator(s) of the Licensed Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||
</p>
|
||||
<p>ii. a copyright notice;</p>
|
||||
<p>iii. a notice that refers to this Public License;</p>
|
||||
<p>iv. a notice that refers to the disclaimer of warranties;</p>
|
||||
<p>v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;</p>
|
||||
<p>
|
||||
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications;
|
||||
and
|
||||
</p>
|
||||
<p>
|
||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI
|
||||
or hyperlink to, this Public License.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and
|
||||
context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the
|
||||
conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the
|
||||
extent reasonably practicable.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of
|
||||
the Adapted Material from complying with this Public License.
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
|
||||
<H3>Section 4 – Sui Generis Database Rights.</H3>
|
||||
|
||||
<p>
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
</p>
|
||||
<p>
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all
|
||||
or a substantial portion of the contents of the database;
|
||||
</p>
|
||||
<p>
|
||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui
|
||||
Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual
|
||||
contents) is Adapted Material; and
|
||||
</p>
|
||||
<p>
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents
|
||||
of the database.
|
||||
</p>
|
||||
<p>
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public
|
||||
License where the Licensed Rights include other Copyright and Similar Rights.
|
||||
</p>
|
||||
|
||||
<H3>Section 5 – Disclaimer of Warranties and Limitation of Liability.</H3>
|
||||
|
||||
<p>
|
||||
a.{" "}
|
||||
<strong>
|
||||
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
|
||||
Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning
|
||||
the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation,
|
||||
warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or
|
||||
other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where
|
||||
disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
b.{" "}
|
||||
<strong>
|
||||
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without
|
||||
limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive,
|
||||
exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the
|
||||
Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses,
|
||||
or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply
|
||||
to You.
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner
|
||||
that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
</p>
|
||||
|
||||
<H3>Section 6 – Term and Termination.</H3>
|
||||
|
||||
<p>
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You
|
||||
fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
</p>
|
||||
<p>b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery
|
||||
of the violation; or
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>upon express reinstatement by the Licensor.</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
<p>
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies
|
||||
for Your violations of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or
|
||||
conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this
|
||||
Public License.
|
||||
</p>
|
||||
<p>d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.</p>
|
||||
|
||||
<H3>Section 7 – Other Terms and Conditions.</H3>
|
||||
|
||||
<p>
|
||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless
|
||||
expressly agreed.
|
||||
</p>
|
||||
<p>
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
|
||||
separate from and independent of the terms and conditions of this Public License.
|
||||
</p>
|
||||
|
||||
<H3>Section 8 – Interpretation.</H3>
|
||||
|
||||
<p>
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit,
|
||||
restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without
|
||||
permission under this Public License.
|
||||
</p>
|
||||
<p>
|
||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be
|
||||
automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be
|
||||
reformed, it shall be severed from this Public License without affecting the enforceability of the remaining
|
||||
terms and conditions.
|
||||
</p>
|
||||
<p>
|
||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless
|
||||
expressly agreed to by the Licensor.
|
||||
</p>
|
||||
<p>
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any
|
||||
privileges and immunities that apply to the Licensor or You, including from the legal processes of any
|
||||
jurisdiction or authority.
|
||||
</p>
|
||||
|
||||
<Blockquote>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide,
|
||||
royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the
|
||||
Licensed Material to:
|
||||
</p>
|
||||
<p>A. reproduce and Share the Licensed Material, in whole or in part; and</p>
|
||||
<p>B. produce, reproduce, and Share Adapted Material.</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Exceptions and Limitations.</strong> For the avoidance of doubt, where Exceptions and Limitations
|
||||
apply to Your use, this Public License does not apply, and You do not need to comply with its terms and
|
||||
conditions.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Term.</strong> The term of this Public License is specified in Section 6(a).
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Media and formats; technical modifications allowed.</strong> The Licensor authorizes You to
|
||||
exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make
|
||||
technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications necessary to exercise the Licensed Rights,
|
||||
including technical modifications necessary to circumvent Effective Technological Measures. For purposes
|
||||
of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces
|
||||
Adapted Material.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>Downstream recipients.</strong>
|
||||
</p>
|
||||
<p>
|
||||
A. <strong>Offer from the Licensor – Licensed Material.</strong> Every recipient of the Licensed Material
|
||||
automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and
|
||||
conditions of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
B. <strong>No downstream restrictions.</strong> You may not offer or impose any additional or different
|
||||
terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing
|
||||
so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
<strong>No endorsement.</strong> Nothing in this Public License constitutes or may be construed as
|
||||
permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with,
|
||||
or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive
|
||||
attribution as provided in Section 3(a)(1)(A)(i).
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
<p>
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply
|
||||
one of its public licenses to material it publishes and in those instances will be considered the "Licensor."
|
||||
The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
|
||||
<Link href="https://creativecommons.org/publicdomain/zero/1.0/legalcode">
|
||||
<em>CC0 Public Domain Dedication</em>
|
||||
</Link>
|
||||
. Except for the limited purpose of indicating that material is shared under a Creative Commons public license
|
||||
or as otherwise permitted by the Creative Commons policies published at{" "}
|
||||
<Link href="https://creativecommons.org/policies">creativecommons.org/policies</Link>, Creative Commons does
|
||||
not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons
|
||||
without its prior written consent including, without limitation, in connection with any unauthorized
|
||||
modifications to any of its public licenses or any other arrangements, understandings, or agreements
|
||||
concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
b.{" "}
|
||||
<em>
|
||||
<strong>Other rights.</strong>
|
||||
</em>
|
||||
</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are
|
||||
publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor
|
||||
waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to
|
||||
allow You to exercise the Licensed Rights, but not otherwise.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>Patent and trademark rights are not licensed under this Public License.</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of
|
||||
the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable
|
||||
statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to
|
||||
collect such royalties.
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
|
||||
<H3>Section 3 – License Conditions.</H3>
|
||||
|
||||
<p>Your exercise of the Licensed Rights is expressly made subject to the following conditions.</p>
|
||||
<p>
|
||||
a.{" "}
|
||||
<em>
|
||||
<strong>Attribution.</strong>
|
||||
</em>
|
||||
</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>If You Share the Licensed Material (including in modified form), You must:</p>
|
||||
<p>A. retain the following if it is supplied by the Licensor with the Licensed Material:</p>
|
||||
<p>
|
||||
i. identification of the creator(s) of the Licensed Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||
</p>
|
||||
<p>ii. a copyright notice;</p>
|
||||
<p>iii. a notice that refers to this Public License;</p>
|
||||
<p>iv. a notice that refers to the disclaimer of warranties;</p>
|
||||
<p>v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;</p>
|
||||
<p>
|
||||
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications;
|
||||
and
|
||||
</p>
|
||||
<p>
|
||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the
|
||||
URI or hyperlink to, this Public License.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and
|
||||
context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the
|
||||
conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the
|
||||
extent reasonably practicable.
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>
|
||||
If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of
|
||||
the Adapted Material from complying with this Public License.
|
||||
</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
|
||||
<H3>Section 4 – Sui Generis Database Rights.</H3>
|
||||
|
||||
<p>
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
</p>
|
||||
<p>
|
||||
Creative Commons may be contacted at <Link href="https://creativecommons.org/">creativecommons.org</Link>.
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share
|
||||
all or a substantial portion of the contents of the database;
|
||||
</p>
|
||||
</Blockquote>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<p>
|
||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui
|
||||
Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its
|
||||
individual contents) is Adapted Material; and
|
||||
</p>
|
||||
<p>
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the
|
||||
contents of the database.
|
||||
</p>
|
||||
<p>
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public
|
||||
License where the Licensed Rights include other Copyright and Similar Rights.
|
||||
</p>
|
||||
|
||||
<H3>Section 5 – Disclaimer of Warranties and Limitation of Liability.</H3>
|
||||
|
||||
<p>
|
||||
a.{" "}
|
||||
<strong>
|
||||
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
|
||||
Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning
|
||||
the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation,
|
||||
warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent
|
||||
or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable.
|
||||
Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
b.{" "}
|
||||
<strong>
|
||||
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including,
|
||||
without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential,
|
||||
punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use
|
||||
of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs,
|
||||
expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may
|
||||
not apply to You.
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner
|
||||
that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
</p>
|
||||
|
||||
<H3>Section 6 – Term and Termination.</H3>
|
||||
|
||||
<p>
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You
|
||||
fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
</p>
|
||||
<p>b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:</p>
|
||||
<OrderedList>
|
||||
<ListItem>
|
||||
<p>
|
||||
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery
|
||||
of the violation; or
|
||||
</p>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<p>upon express reinstatement by the Licensor.</p>
|
||||
</ListItem>
|
||||
</OrderedList>
|
||||
<p>
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies
|
||||
for Your violations of this Public License.
|
||||
</p>
|
||||
<p>
|
||||
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or
|
||||
conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this
|
||||
Public License.
|
||||
</p>
|
||||
<p>d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.</p>
|
||||
|
||||
<H3>Section 7 – Other Terms and Conditions.</H3>
|
||||
|
||||
<p>
|
||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You
|
||||
unless expressly agreed.
|
||||
</p>
|
||||
<p>
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
|
||||
separate from and independent of the terms and conditions of this Public License.
|
||||
</p>
|
||||
|
||||
<H3>Section 8 – Interpretation.</H3>
|
||||
|
||||
<p>
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit,
|
||||
restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without
|
||||
permission under this Public License.
|
||||
</p>
|
||||
<p>
|
||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be
|
||||
automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be
|
||||
reformed, it shall be severed from this Public License without affecting the enforceability of the remaining
|
||||
terms and conditions.
|
||||
</p>
|
||||
<p>
|
||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless
|
||||
expressly agreed to by the Licensor.
|
||||
</p>
|
||||
<p>
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any
|
||||
privileges and immunities that apply to the Licensor or You, including from the legal processes of any
|
||||
jurisdiction or authority.
|
||||
</p>
|
||||
|
||||
<Blockquote>
|
||||
<p>
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply
|
||||
one of its public licenses to material it publishes and in those instances will be considered the
|
||||
"Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
|
||||
<Link href="https://creativecommons.org/publicdomain/zero/1.0/legalcode">
|
||||
<em>CC0 Public Domain Dedication</em>
|
||||
</Link>
|
||||
. Except for the limited purpose of indicating that material is shared under a Creative Commons public
|
||||
license or as otherwise permitted by the Creative Commons policies published at{" "}
|
||||
<Link href="https://creativecommons.org/policies">creativecommons.org/policies</Link>, Creative Commons does
|
||||
not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons
|
||||
without its prior written consent including, without limitation, in connection with any unauthorized
|
||||
modifications to any of its public licenses or any other arrangements, understandings, or agreements
|
||||
concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
</p>
|
||||
<p>
|
||||
Creative Commons may be contacted at <Link href="https://creativecommons.org/">creativecommons.org</Link>.
|
||||
</p>
|
||||
</Blockquote>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default License;
|
||||
|
@@ -4,21 +4,23 @@ import NotesList, { NotesListProps } from "../../components/NotesList";
|
||||
import { getAllNotes } from "../../lib/helpers/parse-notes";
|
||||
import type { GetStaticProps } from "next";
|
||||
|
||||
const Notes = ({ notesByYear }: NotesListProps) => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Notes"
|
||||
description="Recent posts by Jake Jarvis."
|
||||
openGraph={{
|
||||
title: "Notes",
|
||||
}}
|
||||
/>
|
||||
const Notes = ({ notesByYear }: NotesListProps) => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Notes"
|
||||
description="Recent posts by Jake Jarvis."
|
||||
openGraph={{
|
||||
title: "Notes",
|
||||
}}
|
||||
/>
|
||||
|
||||
<Content>
|
||||
<NotesList notesByYear={notesByYear} />
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<Content>
|
||||
<NotesList notesByYear={notesByYear} />
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export const getStaticProps: GetStaticProps = async () => {
|
||||
// parse the year of each note and group them together
|
||||
|
@@ -37,135 +37,138 @@ const WindowsIcon = styled(Windows95Logo, {
|
||||
fill: "currentColor",
|
||||
});
|
||||
|
||||
const Previously = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Previously on..."
|
||||
description="An incredibly embarrassing and somewhat painful trip down this site's memory lane..."
|
||||
openGraph={{
|
||||
title: "Previously on...",
|
||||
}}
|
||||
/>
|
||||
const Previously = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Previously on..."
|
||||
description="An incredibly embarrassing and somewhat painful trip down this site's memory lane..."
|
||||
openGraph={{
|
||||
title: "Previously on...",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>🕰️ Previously on...</PageTitle>
|
||||
<PageTitle>🕰️ Previously on...</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Figure
|
||||
src={img_wayback}
|
||||
href="https://web.archive.org/web/20010501000000*/jakejarvis.com"
|
||||
alt="Timeline of this website's past."
|
||||
priority
|
||||
>
|
||||
...the <Link href="https://web.archive.org/web/20010501000000*/jakejarvis.com">Cringey Chronicles™</Link>{" "}
|
||||
of this website's past.
|
||||
</Figure>
|
||||
|
||||
<HorizontalRule />
|
||||
|
||||
<Marquee>
|
||||
🚨 <strong>Trigger warning:</strong> excessive marquees, animated GIFs, Comic Sans, popups,{" "}
|
||||
<CodeInline>
|
||||
color: <span style={{ color: "#32cd32" }}>limegreen</span>
|
||||
</CodeInline>{" "}
|
||||
ahead...
|
||||
</Marquee>
|
||||
|
||||
<p style={{ marginTop: 0 }}>
|
||||
<Link
|
||||
href="/y2k/"
|
||||
prefetch={false}
|
||||
css={{
|
||||
"&:hover": {
|
||||
// classic windows 9x hand cursor easter egg
|
||||
cursor: `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEVHcEwAAAD///8W1S+BAAAAAXRSTlMAQObYZgAAAEdJREFUeAFjoAVghTGkHIhghMAYmQEwxlIYYxlYlSiQMQEsELUKyli1ahWYwQZjMGIwGLKQGA4QA1EYEP0rGVAZrKGhSF4BAHw/HsVwshytAAAAAElFTkSuQmCC") 16 12, auto`,
|
||||
},
|
||||
}}
|
||||
<Content>
|
||||
<Figure
|
||||
src={img_wayback}
|
||||
href="https://web.archive.org/web/20010501000000*/jakejarvis.com"
|
||||
alt="Timeline of this website's past."
|
||||
priority
|
||||
>
|
||||
<WindowsIcon /> Click here for the{" "}
|
||||
<strong>
|
||||
<em>full</em>
|
||||
</strong>{" "}
|
||||
experience anyway.
|
||||
</Link>
|
||||
</p>
|
||||
...the{" "}
|
||||
<Link href="https://web.archive.org/web/20010501000000*/jakejarvis.com">Cringey Chronicles™</Link> of
|
||||
this website's past.
|
||||
</Figure>
|
||||
|
||||
<figure style={{ margin: 0 }}>
|
||||
<IFrame
|
||||
src="https://jakejarvis.github.io/my-first-website/"
|
||||
title="My Terrible, Horrible, No Good, Very Bad First Website"
|
||||
height={500}
|
||||
allowScripts
|
||||
css={{ margin: "0.6em 0" }}
|
||||
/>
|
||||
<figcaption>
|
||||
<Link href="https://jakejarvis.github.io/my-first-website/">November 2001</Link> (
|
||||
<Link href="https://github.com/jakejarvis/my-first-website">view source</Link>)
|
||||
</figcaption>
|
||||
</figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Marquee>
|
||||
🚨 <strong>Trigger warning:</strong> excessive marquees, animated GIFs, Comic Sans, popups,{" "}
|
||||
<CodeInline>
|
||||
color: <span style={{ color: "#32cd32" }}>limegreen</span>
|
||||
</CodeInline>{" "}
|
||||
ahead...
|
||||
</Marquee>
|
||||
|
||||
<Figure src={img_2002_02}>February 2002</Figure>
|
||||
<p style={{ marginTop: 0 }}>
|
||||
<Link
|
||||
href="/y2k/"
|
||||
prefetch={false}
|
||||
css={{
|
||||
"&:hover": {
|
||||
// classic windows 9x hand cursor easter egg
|
||||
cursor: `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEVHcEwAAAD///8W1S+BAAAAAXRSTlMAQObYZgAAAEdJREFUeAFjoAVghTGkHIhghMAYmQEwxlIYYxlYlSiQMQEsELUKyli1ahWYwQZjMGIwGLKQGA4QA1EYEP0rGVAZrKGhSF4BAHw/HsVwshytAAAAAElFTkSuQmCC") 16 12, auto`,
|
||||
},
|
||||
}}
|
||||
>
|
||||
<WindowsIcon /> Click here for the{" "}
|
||||
<strong>
|
||||
<em>full</em>
|
||||
</strong>{" "}
|
||||
experience anyway.
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<HorizontalRule />
|
||||
<figure style={{ margin: 0 }}>
|
||||
<IFrame
|
||||
src="https://jakejarvis.github.io/my-first-website/"
|
||||
title="My Terrible, Horrible, No Good, Very Bad First Website"
|
||||
height={500}
|
||||
allowScripts
|
||||
css={{ margin: "0.6em 0" }}
|
||||
/>
|
||||
<figcaption>
|
||||
<Link href="https://jakejarvis.github.io/my-first-website/">November 2001</Link> (
|
||||
<Link href="https://github.com/jakejarvis/my-first-website">view source</Link>)
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<Figure src={img_2002_10}>October 2002</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2002_02}>February 2002</Figure>
|
||||
|
||||
<Figure src={img_2003_08}>August 2003</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2002_10}>October 2002</Figure>
|
||||
|
||||
<Figure src={img_2004_11}>November 2004</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2003_08}>August 2003</Figure>
|
||||
|
||||
<Figure src={img_2006_04}>April 2006</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2004_11}>November 2004</Figure>
|
||||
|
||||
<Figure src={img_2006_05}>May 2006</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2006_04}>April 2006</Figure>
|
||||
|
||||
<Figure src={img_2007_01}>January 2007</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2006_05}>May 2006</Figure>
|
||||
|
||||
<Figure src={img_2007_04}>April 2007</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2007_01}>January 2007</Figure>
|
||||
|
||||
<Figure src={img_2007_05}>May 2007</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2007_04}>April 2007</Figure>
|
||||
|
||||
<Figure src={img_2009_07}>July 2009</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2007_05}>May 2007</Figure>
|
||||
|
||||
<Figure src={img_2012_09} href="https://focused-knuth-7bc10d.netlify.app/" alt="September 2012">
|
||||
<Link href="https://focused-knuth-7bc10d.netlify.app/">September 2012</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/tree/v1">view source</Link>)
|
||||
</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2009_07}>July 2009</Figure>
|
||||
|
||||
<Figure src={img_2018_04} href="https://hungry-mayer-40e790.netlify.app/" alt="April 2018">
|
||||
<Link href="https://hungry-mayer-40e790.netlify.app/">April 2018</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/tree/v2">view source</Link>)
|
||||
</Figure>
|
||||
<HorizontalRule />
|
||||
|
||||
<HorizontalRule />
|
||||
<Figure src={img_2012_09} href="https://focused-knuth-7bc10d.netlify.app/" alt="September 2012">
|
||||
<Link href="https://focused-knuth-7bc10d.netlify.app/">September 2012</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/tree/v1">view source</Link>)
|
||||
</Figure>
|
||||
|
||||
<Figure src={img_2020_03} href="https://quiet-truffle-92842d.netlify.app/" alt="March 2020">
|
||||
<Link href="https://quiet-truffle-92842d.netlify.app/">March 2020</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is-hugo">view source</Link>)
|
||||
</Figure>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<HorizontalRule />
|
||||
|
||||
<Figure src={img_2018_04} href="https://hungry-mayer-40e790.netlify.app/" alt="April 2018">
|
||||
<Link href="https://hungry-mayer-40e790.netlify.app/">April 2018</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/tree/v2">view source</Link>)
|
||||
</Figure>
|
||||
|
||||
<HorizontalRule />
|
||||
|
||||
<Figure src={img_2020_03} href="https://quiet-truffle-92842d.netlify.app/" alt="March 2020">
|
||||
<Link href="https://quiet-truffle-92842d.netlify.app/">March 2020</Link> (
|
||||
<Link href="https://github.com/jakejarvis/jarv.is-hugo">view source</Link>)
|
||||
</Figure>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
// a complete sh*tshow of "global" overrides, mainly to compensate for font change
|
||||
Previously.getLayout = (page: ReactElement) => {
|
||||
|
@@ -12,138 +12,142 @@ import { fathomSiteId, siteDomain } from "../lib/config";
|
||||
|
||||
import faunaImg from "../public/static/images/privacy/fauna_hits.png";
|
||||
|
||||
const Privacy = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Privacy"
|
||||
openGraph={{
|
||||
title: "Privacy",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>🕵️ Privacy</PageTitle>
|
||||
|
||||
<Content>
|
||||
<p>Okay, this is an easy one. 😉</p>
|
||||
|
||||
<H2 id="hosting">Hosting</H2>
|
||||
|
||||
<p>
|
||||
Pages and first-party assets on this website are served by{" "}
|
||||
<Link href="https://vercel.com/">
|
||||
<strong>▲ Vercel</strong>
|
||||
</Link>
|
||||
. Refer to their <Link href="https://vercel.com/legal/privacy-policy">privacy policy</Link> for more
|
||||
information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For a likely excessive level of privacy and security, this website is also mirrored on the{" "}
|
||||
<Link href="https://www.torproject.org/">🧅 Tor network</Link> at:
|
||||
</p>
|
||||
|
||||
<Blockquote css={{ overflowWrap: "break-word" }}>
|
||||
<Link href="http://jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion">
|
||||
<strong>jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion</strong>
|
||||
</Link>
|
||||
</Blockquote>
|
||||
|
||||
<H2 id="analytics">Analytics</H2>
|
||||
|
||||
<p>
|
||||
A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "}
|
||||
<CodeInline>hits = hits + 1</CodeInline>) in a <Link href="https://fauna.com/">Fauna</Link> database. Individual
|
||||
views and identifying (or non-identifying) details are <strong>never stored or logged</strong>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <Link href="https://github.com/jakejarvis/jarv.is/blob/main/pages/api/hits.ts">serverless function</Link>{" "}
|
||||
and{" "}
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/blob/main/components/HitCounter/HitCounter.tsx">
|
||||
client script
|
||||
</Link>{" "}
|
||||
are open source, and <Link href="https://github.com/jakejarvis/website-stats">snapshots of the database</Link>{" "}
|
||||
are public.
|
||||
</p>
|
||||
|
||||
<Image src={faunaImg} alt="The entire database schema." />
|
||||
|
||||
<p>
|
||||
<Link href="https://usefathom.com/ref/ZEYG0O">
|
||||
<strong>Fathom Analytics</strong>
|
||||
</Link>
|
||||
, a <em>very</em> <Link href="https://usefathom.com/privacy-focused-web-analytics">privacy-focused</Link>{" "}
|
||||
service, is also used to gain insights into referrers, search terms, etc.{" "}
|
||||
<strong>without collecting anything identifiable about you</strong>. (My <Link href="/stats/">dashboard</Link>{" "}
|
||||
is completely public, too!)
|
||||
</p>
|
||||
|
||||
<IFrame
|
||||
src={`https://app.usefathom.com/share/${fathomSiteId}/${siteDomain}`}
|
||||
title="Fathom Analytics dashboard"
|
||||
height={500}
|
||||
allowScripts
|
||||
const Privacy = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Privacy"
|
||||
openGraph={{
|
||||
title: "Privacy",
|
||||
}}
|
||||
/>
|
||||
|
||||
<H2 id="third-party">Third-Party Content</H2>
|
||||
<PageTitle>🕵️ Privacy</PageTitle>
|
||||
|
||||
<p>
|
||||
Occasionally, embedded content from third-party services is included in posts, and some may contain tracking
|
||||
code that is outside of my control. Please refer to their privacy policies for more information:
|
||||
</p>
|
||||
<Content>
|
||||
<p>Okay, this is an easy one. 😉</p>
|
||||
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://blog.codepen.io/documentation/privacy/">CodePen</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://www.facebook.com/policy.php">Facebook</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://docs.github.com/en/github/site-policy/github-privacy-statement">GitHub</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://soundcloud.com/pages/privacy">SoundCloud</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://twitter.com/en/privacy">Twitter</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://vimeo.com/privacy">Vimeo</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://policies.google.com/privacy">YouTube</Link>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
<H2 id="hosting">Hosting</H2>
|
||||
|
||||
<H2 id="hcaptcha">Fighting Spam</H2>
|
||||
<p>
|
||||
Pages and first-party assets on this website are served by{" "}
|
||||
<Link href="https://vercel.com/">
|
||||
<strong>▲ Vercel</strong>
|
||||
</Link>
|
||||
. Refer to their <Link href="https://vercel.com/legal/privacy-policy">privacy policy</Link> for more
|
||||
information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Using{" "}
|
||||
<Link href="https://www.hcaptcha.com/">
|
||||
<strong>hCaptcha</strong>
|
||||
</Link>{" "}
|
||||
to fight bot spam on the <Link href="/contact/">contact form</Link> was an easy choice over seemingly
|
||||
unavoidable alternatives like <Link href="https://developers.google.com/recaptcha/">reCAPTCHA</Link>.
|
||||
</p>
|
||||
<p>
|
||||
For a likely excessive level of privacy and security, this website is also mirrored on the{" "}
|
||||
<Link href="https://www.torproject.org/">🧅 Tor network</Link> at:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can refer to hCaptcha's <Link href="https://www.hcaptcha.com/privacy">privacy policy</Link> and{" "}
|
||||
<Link href="https://www.hcaptcha.com/terms">terms of service</Link> for more details. While some information is
|
||||
sent to the hCaptcha API about your behavior <strong>(on the contact page only)</strong>, at least you won't be
|
||||
helping a certain internet conglomerate{" "}
|
||||
<Link href="https://blog.cloudflare.com/moving-from-recaptcha-to-hcaptcha/">train their self-driving cars</Link>
|
||||
. 🚗
|
||||
</p>
|
||||
<Blockquote css={{ overflowWrap: "break-word" }}>
|
||||
<Link href="http://jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion">
|
||||
<strong>jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion</strong>
|
||||
</Link>
|
||||
</Blockquote>
|
||||
|
||||
<p>
|
||||
I also enabled the setting to donate 100% of my{" "}
|
||||
<Link href="https://humanprotocol.org/?lng=en-US">HMT token</Link> earnings to the{" "}
|
||||
<Link href="https://wikimediafoundation.org/">Wikimedia Foundation</Link>, for what it's worth. (A few cents,
|
||||
probably... 💰)
|
||||
</p>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<H2 id="analytics">Analytics</H2>
|
||||
|
||||
<p>
|
||||
A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "}
|
||||
<CodeInline>hits = hits + 1</CodeInline>) in a <Link href="https://fauna.com/">Fauna</Link> database.
|
||||
Individual views and identifying (or non-identifying) details are <strong>never stored or logged</strong>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <Link href="https://github.com/jakejarvis/jarv.is/blob/main/pages/api/hits.ts">serverless function</Link>{" "}
|
||||
and{" "}
|
||||
<Link href="https://github.com/jakejarvis/jarv.is/blob/main/components/HitCounter/HitCounter.tsx">
|
||||
client script
|
||||
</Link>{" "}
|
||||
are open source, and <Link href="https://github.com/jakejarvis/website-stats">snapshots of the database</Link>{" "}
|
||||
are public.
|
||||
</p>
|
||||
|
||||
<Image src={faunaImg} alt="The entire database schema." />
|
||||
|
||||
<p>
|
||||
<Link href="https://usefathom.com/ref/ZEYG0O">
|
||||
<strong>Fathom Analytics</strong>
|
||||
</Link>
|
||||
, a <em>very</em> <Link href="https://usefathom.com/privacy-focused-web-analytics">privacy-focused</Link>{" "}
|
||||
service, is also used to gain insights into referrers, search terms, etc.{" "}
|
||||
<strong>without collecting anything identifiable about you</strong>. (My <Link href="/stats/">dashboard</Link>{" "}
|
||||
is completely public, too!)
|
||||
</p>
|
||||
|
||||
<IFrame
|
||||
src={`https://app.usefathom.com/share/${fathomSiteId}/${siteDomain}`}
|
||||
title="Fathom Analytics dashboard"
|
||||
height={500}
|
||||
allowScripts
|
||||
/>
|
||||
|
||||
<H2 id="third-party">Third-Party Content</H2>
|
||||
|
||||
<p>
|
||||
Occasionally, embedded content from third-party services is included in posts, and some may contain tracking
|
||||
code that is outside of my control. Please refer to their privacy policies for more information:
|
||||
</p>
|
||||
|
||||
<UnorderedList>
|
||||
<ListItem>
|
||||
<Link href="https://blog.codepen.io/documentation/privacy/">CodePen</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://www.facebook.com/policy.php">Facebook</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://docs.github.com/en/github/site-policy/github-privacy-statement">GitHub</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://soundcloud.com/pages/privacy">SoundCloud</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://twitter.com/en/privacy">Twitter</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://vimeo.com/privacy">Vimeo</Link>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Link href="https://policies.google.com/privacy">YouTube</Link>
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
|
||||
<H2 id="hcaptcha">Fighting Spam</H2>
|
||||
|
||||
<p>
|
||||
Using{" "}
|
||||
<Link href="https://www.hcaptcha.com/">
|
||||
<strong>hCaptcha</strong>
|
||||
</Link>{" "}
|
||||
to fight bot spam on the <Link href="/contact/">contact form</Link> was an easy choice over seemingly
|
||||
unavoidable alternatives like <Link href="https://developers.google.com/recaptcha/">reCAPTCHA</Link>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can refer to hCaptcha's <Link href="https://www.hcaptcha.com/privacy">privacy policy</Link> and{" "}
|
||||
<Link href="https://www.hcaptcha.com/terms">terms of service</Link> for more details. While some information
|
||||
is sent to the hCaptcha API about your behavior <strong>(on the contact page only)</strong>, at least you
|
||||
won't be helping a certain internet conglomerate{" "}
|
||||
<Link href="https://blog.cloudflare.com/moving-from-recaptcha-to-hcaptcha/">
|
||||
train their self-driving cars
|
||||
</Link>
|
||||
. 🚗
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I also enabled the setting to donate 100% of my{" "}
|
||||
<Link href="https://humanprotocol.org/?lng=en-US">HMT token</Link> earnings to the{" "}
|
||||
<Link href="https://wikimediafoundation.org/">Wikimedia Foundation</Link>, for what it's worth. (A few cents,
|
||||
probably... 💰)
|
||||
</p>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Privacy;
|
||||
|
@@ -41,32 +41,34 @@ const GitHubLogo = styled(OctocatOcticon, {
|
||||
fill: "$text",
|
||||
});
|
||||
|
||||
const Projects = ({ repos }) => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Projects"
|
||||
openGraph={{
|
||||
title: "Projects",
|
||||
}}
|
||||
/>
|
||||
const Projects = ({ repos }) => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Projects"
|
||||
openGraph={{
|
||||
title: "Projects",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>💾 Projects</PageTitle>
|
||||
<PageTitle>💾 Projects</PageTitle>
|
||||
|
||||
<Content>
|
||||
<Wrapper>
|
||||
{repos.map((repo: Repository) => (
|
||||
<Card key={repo.name} {...repo} />
|
||||
))}
|
||||
</Wrapper>
|
||||
<Content>
|
||||
<Wrapper>
|
||||
{repos.map((repo: Repository) => (
|
||||
<Card key={repo.name} {...repo} />
|
||||
))}
|
||||
</Wrapper>
|
||||
|
||||
<ViewMore>
|
||||
<Link href={`https://github.com/${authorSocial.github}`}>
|
||||
View more on <GitHubLogo /> GitHub...
|
||||
</Link>
|
||||
</ViewMore>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
<ViewMore>
|
||||
<Link href={`https://github.com/${authorSocial.github}`}>
|
||||
View more on <GitHubLogo /> GitHub...
|
||||
</Link>
|
||||
</ViewMore>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export const getStaticProps: GetStaticProps = async () => {
|
||||
// https://docs.github.com/en/graphql/reference/objects#repository
|
||||
|
@@ -21,33 +21,35 @@ const FathomIcon = styled(FathomLogo, {
|
||||
fill: "$text",
|
||||
});
|
||||
|
||||
const Stats = () => (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Stats"
|
||||
openGraph={{
|
||||
title: "Stats",
|
||||
}}
|
||||
/>
|
||||
|
||||
<PageTitle>📈 Stats</PageTitle>
|
||||
|
||||
<Content>
|
||||
<PoweredBy>
|
||||
Powered by{" "}
|
||||
<Link href="https://usefathom.com/ref/ZEYG0O" underline={false}>
|
||||
<FathomIcon /> Fathom Analytics
|
||||
</Link>
|
||||
</PoweredBy>
|
||||
|
||||
<IFrame
|
||||
src={`https://app.usefathom.com/share/${fathomSiteId}/${siteDomain}`}
|
||||
title="Fathom Analytics dashboard"
|
||||
height={600}
|
||||
allowScripts
|
||||
const Stats = () => {
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
title="Stats"
|
||||
openGraph={{
|
||||
title: "Stats",
|
||||
}}
|
||||
/>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
|
||||
<PageTitle>📈 Stats</PageTitle>
|
||||
|
||||
<Content>
|
||||
<PoweredBy>
|
||||
Powered by{" "}
|
||||
<Link href="https://usefathom.com/ref/ZEYG0O" underline={false}>
|
||||
<FathomIcon /> Fathom Analytics
|
||||
</Link>
|
||||
</PoweredBy>
|
||||
|
||||
<IFrame
|
||||
src={`https://app.usefathom.com/share/${fathomSiteId}/${siteDomain}`}
|
||||
title="Fathom Analytics dashboard"
|
||||
height={600}
|
||||
allowScripts
|
||||
/>
|
||||
</Content>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Stats;
|
||||
|
1591
pages/uses.tsx
1591
pages/uses.tsx
File diff suppressed because it is too large
Load Diff
332
yarn.lock
332
yarn.lock
@@ -45,32 +45,32 @@
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.15.5":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.0.tgz#c58d04d7c6fbfb58ea7681e2b9145cfb62726756"
|
||||
integrity sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876"
|
||||
integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.1.0"
|
||||
"@babel/code-frame" "^7.16.7"
|
||||
"@babel/generator" "^7.18.0"
|
||||
"@babel/helper-compilation-targets" "^7.17.10"
|
||||
"@babel/generator" "^7.18.2"
|
||||
"@babel/helper-compilation-targets" "^7.18.2"
|
||||
"@babel/helper-module-transforms" "^7.18.0"
|
||||
"@babel/helpers" "^7.18.0"
|
||||
"@babel/helpers" "^7.18.2"
|
||||
"@babel/parser" "^7.18.0"
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.0"
|
||||
"@babel/types" "^7.18.0"
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/generator@^7.12.5", "@babel/generator@^7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.0.tgz#46d28e8a18fc737b028efb25ab105d74473af43f"
|
||||
integrity sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==
|
||||
"@babel/generator@^7.12.5", "@babel/generator@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
|
||||
integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.18.0"
|
||||
"@babel/types" "^7.18.2"
|
||||
"@jridgewell/gen-mapping" "^0.3.0"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
@@ -89,10 +89,10 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.16.7"
|
||||
"@babel/types" "^7.16.7"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10":
|
||||
version "7.17.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe"
|
||||
integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==
|
||||
"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b"
|
||||
integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.17.10"
|
||||
"@babel/helper-validator-option" "^7.16.7"
|
||||
@@ -134,12 +134,10 @@
|
||||
resolve "^1.14.2"
|
||||
semver "^6.1.2"
|
||||
|
||||
"@babel/helper-environment-visitor@^7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
|
||||
integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.7"
|
||||
"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
|
||||
integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
|
||||
|
||||
"@babel/helper-explode-assignable-expression@^7.16.7":
|
||||
version "7.16.7"
|
||||
@@ -163,7 +161,7 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.7"
|
||||
|
||||
"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7":
|
||||
"@babel/helper-member-expression-to-functions@^7.17.7":
|
||||
version "7.17.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4"
|
||||
integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
|
||||
@@ -218,22 +216,22 @@
|
||||
"@babel/types" "^7.16.8"
|
||||
|
||||
"@babel/helper-replace-supers@^7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
|
||||
integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0"
|
||||
integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.16.7"
|
||||
"@babel/helper-member-expression-to-functions" "^7.16.7"
|
||||
"@babel/helper-environment-visitor" "^7.18.2"
|
||||
"@babel/helper-member-expression-to-functions" "^7.17.7"
|
||||
"@babel/helper-optimise-call-expression" "^7.16.7"
|
||||
"@babel/traverse" "^7.16.7"
|
||||
"@babel/types" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/helper-simple-access@^7.17.7":
|
||||
version "7.17.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367"
|
||||
integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==
|
||||
"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9"
|
||||
integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.17.0"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
|
||||
version "7.16.0"
|
||||
@@ -269,14 +267,14 @@
|
||||
"@babel/traverse" "^7.16.8"
|
||||
"@babel/types" "^7.16.8"
|
||||
|
||||
"@babel/helpers@^7.12.5", "@babel/helpers@^7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.0.tgz#aff37c3590de42102b54842446146d0205946370"
|
||||
integrity sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==
|
||||
"@babel/helpers@^7.12.5", "@babel/helpers@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384"
|
||||
integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.0"
|
||||
"@babel/types" "^7.18.0"
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/highlight@^7.16.7":
|
||||
version "7.17.12"
|
||||
@@ -652,7 +650,7 @@
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
|
||||
"@babel/plugin-transform-for-of@^7.17.12":
|
||||
"@babel/plugin-transform-for-of@^7.18.1":
|
||||
version "7.18.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036"
|
||||
integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==
|
||||
@@ -691,14 +689,14 @@
|
||||
"@babel/helper-plugin-utils" "^7.17.12"
|
||||
babel-plugin-dynamic-import-node "^2.3.3"
|
||||
|
||||
"@babel/plugin-transform-modules-commonjs@^7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz#3be575e19fbd273d42adbc84566b1fad3582b3db"
|
||||
integrity sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==
|
||||
"@babel/plugin-transform-modules-commonjs@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e"
|
||||
integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==
|
||||
dependencies:
|
||||
"@babel/helper-module-transforms" "^7.18.0"
|
||||
"@babel/helper-plugin-utils" "^7.17.12"
|
||||
"@babel/helper-simple-access" "^7.17.7"
|
||||
"@babel/helper-simple-access" "^7.18.2"
|
||||
babel-plugin-dynamic-import-node "^2.3.3"
|
||||
|
||||
"@babel/plugin-transform-modules-systemjs@^7.18.0":
|
||||
@@ -834,10 +832,10 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
|
||||
"@babel/plugin-transform-template-literals@^7.17.12":
|
||||
version "7.17.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e"
|
||||
integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==
|
||||
"@babel/plugin-transform-template-literals@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28"
|
||||
integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.17.12"
|
||||
|
||||
@@ -873,12 +871,12 @@
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
|
||||
"@babel/preset-env@^7.15.6":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.0.tgz#ec7e51f4c6e026816000b230ed7cf74a1530d91d"
|
||||
integrity sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a"
|
||||
integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.17.10"
|
||||
"@babel/helper-compilation-targets" "^7.17.10"
|
||||
"@babel/helper-compilation-targets" "^7.18.2"
|
||||
"@babel/helper-plugin-utils" "^7.17.12"
|
||||
"@babel/helper-validator-option" "^7.16.7"
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12"
|
||||
@@ -923,12 +921,12 @@
|
||||
"@babel/plugin-transform-dotall-regex" "^7.16.7"
|
||||
"@babel/plugin-transform-duplicate-keys" "^7.17.12"
|
||||
"@babel/plugin-transform-exponentiation-operator" "^7.16.7"
|
||||
"@babel/plugin-transform-for-of" "^7.17.12"
|
||||
"@babel/plugin-transform-for-of" "^7.18.1"
|
||||
"@babel/plugin-transform-function-name" "^7.16.7"
|
||||
"@babel/plugin-transform-literals" "^7.17.12"
|
||||
"@babel/plugin-transform-member-expression-literals" "^7.16.7"
|
||||
"@babel/plugin-transform-modules-amd" "^7.18.0"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.18.0"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.18.2"
|
||||
"@babel/plugin-transform-modules-systemjs" "^7.18.0"
|
||||
"@babel/plugin-transform-modules-umd" "^7.18.0"
|
||||
"@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12"
|
||||
@@ -941,12 +939,12 @@
|
||||
"@babel/plugin-transform-shorthand-properties" "^7.16.7"
|
||||
"@babel/plugin-transform-spread" "^7.17.12"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.16.7"
|
||||
"@babel/plugin-transform-template-literals" "^7.17.12"
|
||||
"@babel/plugin-transform-template-literals" "^7.18.2"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.17.12"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.16.7"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.16.7"
|
||||
"@babel/preset-modules" "^0.1.5"
|
||||
"@babel/types" "^7.18.0"
|
||||
"@babel/types" "^7.18.2"
|
||||
babel-plugin-polyfill-corejs2 "^0.3.0"
|
||||
babel-plugin-polyfill-corejs3 "^0.5.0"
|
||||
babel-plugin-polyfill-regenerator "^0.3.0"
|
||||
@@ -986,17 +984,17 @@
|
||||
"@babel/plugin-transform-typescript" "^7.17.12"
|
||||
|
||||
"@babel/runtime-corejs3@^7.10.2":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz#eed03023c5226b1e2b2ba32b8b6af5cb0518a6c7"
|
||||
integrity sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.2.tgz#c8bd68f520c8c5e82698a53ad3ec8b712b735580"
|
||||
integrity sha512-HpagHkRJkbIS3jt9Vd/ESmaQ0AzkMZai0ahICwpTam+pVCaz7zExPlzLcEfsNokgKM9LJtk2jN/Su8OKdhFIKQ==
|
||||
dependencies:
|
||||
core-js-pure "^3.20.2"
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.8.4":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.0.tgz#6d77142a19cb6088f0af662af1ada37a604d34ae"
|
||||
integrity sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.2.tgz#674575748fa99cf03694e77fc00de8e5117b42a0"
|
||||
integrity sha512-mTV1PibQHr88R1p4nH/uhR/TJ0mXGEgKTx6Mnd1cn/DSA9r8fqbd+d31xujI2C1pRWtxjy+HAcmtB+MEcF4VNg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
@@ -1009,26 +1007,26 @@
|
||||
"@babel/parser" "^7.16.7"
|
||||
"@babel/types" "^7.16.7"
|
||||
|
||||
"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba"
|
||||
integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==
|
||||
"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8"
|
||||
integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.16.7"
|
||||
"@babel/generator" "^7.18.0"
|
||||
"@babel/helper-environment-visitor" "^7.16.7"
|
||||
"@babel/generator" "^7.18.2"
|
||||
"@babel/helper-environment-visitor" "^7.18.2"
|
||||
"@babel/helper-function-name" "^7.17.9"
|
||||
"@babel/helper-hoist-variables" "^7.16.7"
|
||||
"@babel/helper-split-export-declaration" "^7.16.7"
|
||||
"@babel/parser" "^7.18.0"
|
||||
"@babel/types" "^7.18.0"
|
||||
"@babel/types" "^7.18.2"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.4.4":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.0.tgz#ef523ea349722849cb4bf806e9342ede4d071553"
|
||||
integrity sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==
|
||||
"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.4.4":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091"
|
||||
integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
@@ -1177,89 +1175,89 @@
|
||||
resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
|
||||
integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
|
||||
|
||||
"@next/bundle-analyzer@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.7-canary.15.tgz#0c1afa193bf0e733ecba007b8bbc50340bf1f902"
|
||||
integrity sha512-9P6LwwAr3yTM+a4xOOZwsn7w7RkO3HO3vecDnXmV2ju+dQZZuJyMEctLKAQd8Qx8E5TFe9CA5/TJKrJS5s039g==
|
||||
"@next/bundle-analyzer@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.7-canary.16.tgz#21bb9129a2c1d7fa757ce4d031f97523f3dd9433"
|
||||
integrity sha512-xu6Ql9vk3YQ0srry8ABXGmKPRvebG7LEINBcH9PV7MBDbmUmFKcOa1BkJmzQXj3I/CmHGhbN0LJpayiXamr6BQ==
|
||||
dependencies:
|
||||
webpack-bundle-analyzer "4.3.0"
|
||||
|
||||
"@next/env@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.7-canary.15.tgz#f6c630e255dfc3d1178d542febddf38e18065b8b"
|
||||
integrity sha512-Ut6CM0lUyrF1rrQNkKvcKoRg0HDWop2b1VtLm81DMQnCUpFAgUKPaepZFidUIuUOgiiHXxnAXHEQGd72ui78qQ==
|
||||
"@next/env@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.7-canary.16.tgz#10853c760a32358cf32e00a78107464f4eddd897"
|
||||
integrity sha512-AXQXBrXMpf2KqqTcvXvvpJY+qG9tMyAMWyzXrkb02efbufSxeVskY4Y2EACyfarPC95+IycgDFrs8BCDRBDOBA==
|
||||
|
||||
"@next/eslint-plugin-next@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.7-canary.15.tgz#360b0f0d8870835745b3e6cb81a4171d75267d01"
|
||||
integrity sha512-iHsg5hJCo3fA9p25QXSqlZDAF/+50MqhMldFvoOMZiHdXQBq+NYDWAKl+gD6qPRwUJsHtHKXm5ttD5IDgrxR/A==
|
||||
"@next/eslint-plugin-next@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.7-canary.16.tgz#c36d8563cfa559a4195a13cd652663d5632d8ba3"
|
||||
integrity sha512-edJAbGMFpoF8q1Nfr590lcmrpTR0+7hOuYEwShRvKei6fp6kIj7Sqq4MDs1s52yNLH6r9nm+jvXAIsoA8rkNJw==
|
||||
dependencies:
|
||||
glob "7.1.7"
|
||||
|
||||
"@next/swc-android-arm-eabi@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.7-canary.15.tgz#b00bb0d3eaff72c2688c702d1b1dec7b1a270d4e"
|
||||
integrity sha512-yuujSDsuic7hSI1eZ6YhdkoY42Exi9rHjNZZq4kpU71K/TZrgKdRYZAp/OMsap9KVMJ4vxeqgfnS6RlBp2tTiA==
|
||||
"@next/swc-android-arm-eabi@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.7-canary.16.tgz#b205fd6f8eb48639630c79e0eb7ebc407ce89856"
|
||||
integrity sha512-ywssG0j6Uld9I9l+7Yapd0chncxTOqowALHEije+Q1CfRbZwOfGlAXctz4jkgfqw5A20i0ETvXA3HeauDKHNQg==
|
||||
|
||||
"@next/swc-android-arm64@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.7-canary.15.tgz#9b31b900af7c845fd921b1b990d538db86046149"
|
||||
integrity sha512-yJ1FwB/n7CElP/kFiDy7SH57CzhiJriVoJ5GZMyCE0aWzvXQybS4seVzvA/UsFHws6K9saPkYW2cTKh83Dw7cQ==
|
||||
"@next/swc-android-arm64@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.7-canary.16.tgz#c4faedc9aa08f0edb78d54de05b0969d6c98c68f"
|
||||
integrity sha512-qfB6M/SyfxabD+UshiAGzwB3qBDHljgLfAcxoir5UWjVdGk7zp2zFcL93MEz/o1gc2QLjk0CTppTURXq2bVdoQ==
|
||||
|
||||
"@next/swc-darwin-arm64@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.7-canary.15.tgz#75b78c96f66818d034c0f65355f7f7c424bca136"
|
||||
integrity sha512-ALRavRzeVwQmVmuv4pPOnSH0iVoQ7FBZMVEdu3qf8qoHDzxl1GXqSI5r4riZekNTF4FIh322a1iQOp+mQioP4Q==
|
||||
"@next/swc-darwin-arm64@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.7-canary.16.tgz#8061a43bf14fdbddeaf3e134d5514365c21752f8"
|
||||
integrity sha512-m2xRcT6Vc9g7GWJB1wEEg/AYnf1dlEXYKb8SVsY82BTF2zxgQCfFDVwSZSF8VxgQA670itTBNq3kk6geq1X41A==
|
||||
|
||||
"@next/swc-darwin-x64@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.7-canary.15.tgz#4ddf9e972568c7c30f0b212d227e7223ba93e288"
|
||||
integrity sha512-gvPguKBAfv7ZOKqa5ByQLzryJ3b8tdG9MZjGntOrwgQhPBM3T3I8rP5cjL4qqmEtSra4yVy9JVg6DGkdldq//g==
|
||||
"@next/swc-darwin-x64@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.7-canary.16.tgz#d34955abd2b6ae6507d5a7ecec35cd3a501f472c"
|
||||
integrity sha512-X95zXPegmiEeoeF00Vz7AYAmI3AoofenrmZ1TU+huAj0JrpZ7QKG4LrKPZbtiDIhmR6kSuEdtDvlMw15kaA0lg==
|
||||
|
||||
"@next/swc-freebsd-x64@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.1.7-canary.15.tgz#7c00b5de70e1beacca0e550deaddff9aecbec475"
|
||||
integrity sha512-0ADi3r9mLzxlNPIyJR53ggBhNKoqF56cBQqvnz/3Uviy5Z9Y7cSGvMdOKe+pLQN5IWoBOyz3BN+Bbm006w1Wug==
|
||||
"@next/swc-freebsd-x64@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.1.7-canary.16.tgz#5999ffd3f0e710842568121a4527ab68ab1a1f02"
|
||||
integrity sha512-yH/72tv8qZVLXB5OOUzo4OZCpwg7IoXot6Vd6Lck/niMbn+EgC8Nb27TZGOZVyPaNjwxqchMPR0nYmvsQke/0A==
|
||||
|
||||
"@next/swc-linux-arm-gnueabihf@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.7-canary.15.tgz#7f79e68231d1a60fbacea30142c961b5bed844f3"
|
||||
integrity sha512-j6fPwUacCpcmKgEG5Ko7X18LNU/Mg2x9t65r/hyCbrAnQMy9PhTjgjFzMkQ8xSxZzfVkCwRuMdx38ZDB3b21Mg==
|
||||
"@next/swc-linux-arm-gnueabihf@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.7-canary.16.tgz#536e88775ddf520763c4a88f79ecd31ca881fc72"
|
||||
integrity sha512-66jnwNJC+jESiiO6ReUV046u77XYK1nnpf4n71IAqKl5H5KF/QlO7PV+KNMl0UNhILN6RpF6K87lbM+Hq4Ygjw==
|
||||
|
||||
"@next/swc-linux-arm64-gnu@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.7-canary.15.tgz#20ffc9c6ddf68ce4cb28c48baaf1c7ba056db1e6"
|
||||
integrity sha512-osie8a8YQeSLDTEZM0BsfMvwL7yaKnye9SOL7KUGS8Jz3D2jZgxKBDnBfxVJNfMmvQ1wdlezTKIidHBGmSKJjA==
|
||||
"@next/swc-linux-arm64-gnu@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.7-canary.16.tgz#88011c3495cb4106cc9fc6fb0fbd4ce7e50e97ec"
|
||||
integrity sha512-Uj9tSd6rK+fuql8lDcmGZmPh6O/6Ld5xNIZH0gRGYHC/tNUTOPgTxo9Fixebkc1ELWBIspxNINx557OGgceltg==
|
||||
|
||||
"@next/swc-linux-arm64-musl@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.7-canary.15.tgz#031ca248322e33a637a266ec641aef5a9d5d63b6"
|
||||
integrity sha512-lkWW4jRbzvWWpX2tshCk6qjV6OTbWmBXXwj1YEiJyh6p1eBmz/jwQstw2ilKndiScugMxZ0f5+ULJviNFb97fQ==
|
||||
"@next/swc-linux-arm64-musl@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.7-canary.16.tgz#6dd48a44bce3e1db9dd271f646d0e859c927dd3e"
|
||||
integrity sha512-hhGkJRuSO/ML6Kvne9H2EMY6VdmR/39ZJXoH6IOG7t6qRGSmW3q0Nhhdfdz6lT2a7EhggMd81La76UOkx0ZuAQ==
|
||||
|
||||
"@next/swc-linux-x64-gnu@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.7-canary.15.tgz#36ec43b1607f4231edadea856571881378472e2f"
|
||||
integrity sha512-2OVUNtNBREdT+HymjMQOXU8uxKnKjzrY4hYaWOqI97d86GF0IcGB4755G4Wk/UEzocVz/TiKgcrVDj0aAsetUA==
|
||||
"@next/swc-linux-x64-gnu@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.7-canary.16.tgz#1b694f97e0f5261c3fc3c6b0023cf0d821df95d9"
|
||||
integrity sha512-8oB8WEVtWc6PPEzwA6sqiVyZ/hz/MZnoG9Thsg2mNMKCbF2C1xrObsMvGl61vMTvjxQDOguDoJFY57AUlorHcQ==
|
||||
|
||||
"@next/swc-linux-x64-musl@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.7-canary.15.tgz#d352b281feab79c3dc7f001ede403cd9e0e286fc"
|
||||
integrity sha512-Yw0XKTUc1YuvXrvr/uTl7uDqqZ/uvx2d7U5yyN1Obghz9y5jozj0OgLOzVdLlLPHVMOb8luCMXAASxnxQmjd2g==
|
||||
"@next/swc-linux-x64-musl@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.7-canary.16.tgz#3e638258dacedb6a3f6973a907d8c8c3b4648688"
|
||||
integrity sha512-fw2DD9yApjdfbaMUDyRx8yrdJvQurrmqyxhSBHse7lo929eIRkPl6N1/PpDenPn4spftv9uZ5qYguOmvCRU3FQ==
|
||||
|
||||
"@next/swc-win32-arm64-msvc@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.7-canary.15.tgz#4b284357660a4804439898b159794b438b36d0ba"
|
||||
integrity sha512-lmnmfeloEmhCz8bd83qkKJ9aeNr9ChDKcSLf0omPBO5jcaodwvEx/JwNmrdSoRFdKzxc6R8fQrAVbAPhOyREsA==
|
||||
"@next/swc-win32-arm64-msvc@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.7-canary.16.tgz#b9be87acad4dfde3957866e7a8a64eaa5bb83d58"
|
||||
integrity sha512-D3YxibVZRymUg4N1gi5zdLsaLPz/wllDy/jj5umip7PBgtdevDRncaxLOzK6i8uvHUzziqeW9pToXVycB2BNyw==
|
||||
|
||||
"@next/swc-win32-ia32-msvc@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.7-canary.15.tgz#764511900c8c4b0a0c5670ab6d769b3f40923483"
|
||||
integrity sha512-nkwMi520H3qYj3gIZ4l8nISLdsDkTzrckEYxJa2zWa0NoW9kZNAHWFhjSMrqxpNQgpRePmHYTrjKS6tqNKo9/Q==
|
||||
"@next/swc-win32-ia32-msvc@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.7-canary.16.tgz#580e9264c2f882aadbae532263257c8c652f68fa"
|
||||
integrity sha512-q3oskcJXPxF+nk9g1IDiEupYgM/i0ssYU6q37jxBy2kjucO6/2rKwNw5M9xQ/cLwzPlnrf4gPvEN7ZhND1Lzrg==
|
||||
|
||||
"@next/swc-win32-x64-msvc@12.1.7-canary.15":
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.7-canary.15.tgz#784ef26ffc6644a98ff7c3c309768c9c506416a7"
|
||||
integrity sha512-Tknk79Fem5SbJ1ZCP6Y77N9p+cuXGMZ2oGZ6O/mdmyaQseRTMLZiJ3gMIyfp4IUO/eUO1w/Av2ZxyhxPfhLRFw==
|
||||
"@next/swc-win32-x64-msvc@12.1.7-canary.16":
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.7-canary.16.tgz#6000d3bf2b9ffe88ee669c909d7a23fb7b1e7334"
|
||||
integrity sha512-FnWqfBS1WE+rj+91uap2EzafSBXJsP0AYWBG7a9DfACJnnIQwbVZVL5qOV/y6ZICrWClhLPSU4dNEFPqAlPNUQ==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
@@ -2602,9 +2600,9 @@ eastasianwidth@^0.2.0:
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
electron-to-chromium@^1.4.118:
|
||||
version "1.4.137"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz#186180a45617283f1c012284458510cd99d6787f"
|
||||
integrity sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==
|
||||
version "1.4.138"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.138.tgz#3ec41ca589aaf505dfe2034fde913329af801730"
|
||||
integrity sha512-IOyp2Seq3w4QLln+yZWcMF3VXhhduz4bwg9gfI+CnP5TkzwNXQ8FCZuwwPsnes73AfWdf5J2n2OXdUwDUspDPQ==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
@@ -2713,12 +2711,12 @@ escape-string-regexp@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
eslint-config-next@12.1.7-canary.15:
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.7-canary.15.tgz#68180b050a4b632deb434a0bfbdcaef368fe9658"
|
||||
integrity sha512-O9z015gz76HCxHVe6I/JfE9Y6k5rY8F0UgEaCrNY92mBoU+Sfbe2RFFyjTZT+eIMGZ5yTo6LO8T16O4nXTXakQ==
|
||||
eslint-config-next@12.1.7-canary.16:
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.7-canary.16.tgz#cee71fde606f38c4d2c368fad5da0f7049f21a57"
|
||||
integrity sha512-BRaWFCQUlwbLYj2cSWbhsAsT1XsQ7LE3MLIWQ8Yo/wekUJcEdsAAM60ZE4wWyVv6qtUZ5XvdW8wwbWXu/qqt7g==
|
||||
dependencies:
|
||||
"@next/eslint-plugin-next" "12.1.7-canary.15"
|
||||
"@next/eslint-plugin-next" "12.1.7-canary.16"
|
||||
"@rushstack/eslint-patch" "^1.1.3"
|
||||
"@typescript-eslint/parser" "^5.21.0"
|
||||
eslint-import-resolver-node "^0.3.6"
|
||||
@@ -4751,30 +4749,30 @@ next-transpile-modules@^9.0.0:
|
||||
enhanced-resolve "^5.7.0"
|
||||
escalade "^3.1.1"
|
||||
|
||||
next@12.1.7-canary.15:
|
||||
version "12.1.7-canary.15"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-12.1.7-canary.15.tgz#94ae85a77333c9df6fa321985e6bb1bd27ee8614"
|
||||
integrity sha512-q8ndiriY3bIu06oNdI/CavdRNusvptz5gqDbXR0MvngJto4ildH0GL+uKHGgh3KJDg9o1tF7Q8x1v3pgJq4T3Q==
|
||||
next@12.1.7-canary.16:
|
||||
version "12.1.7-canary.16"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-12.1.7-canary.16.tgz#295c02f7b4f6604031faeed8535b4fbcc4333cae"
|
||||
integrity sha512-8Zf4I7a/leSXxjlNyXJN6EYfYxcdasMfDaMtl6FHaBSeWkShhn1OxD1iFb90V6kYMDfHpeYaYUW/hLBfOtmI2A==
|
||||
dependencies:
|
||||
"@next/env" "12.1.7-canary.15"
|
||||
"@next/env" "12.1.7-canary.16"
|
||||
caniuse-lite "^1.0.30001332"
|
||||
postcss "8.4.5"
|
||||
styled-jsx "5.0.2"
|
||||
use-sync-external-store "1.1.0"
|
||||
optionalDependencies:
|
||||
"@next/swc-android-arm-eabi" "12.1.7-canary.15"
|
||||
"@next/swc-android-arm64" "12.1.7-canary.15"
|
||||
"@next/swc-darwin-arm64" "12.1.7-canary.15"
|
||||
"@next/swc-darwin-x64" "12.1.7-canary.15"
|
||||
"@next/swc-freebsd-x64" "12.1.7-canary.15"
|
||||
"@next/swc-linux-arm-gnueabihf" "12.1.7-canary.15"
|
||||
"@next/swc-linux-arm64-gnu" "12.1.7-canary.15"
|
||||
"@next/swc-linux-arm64-musl" "12.1.7-canary.15"
|
||||
"@next/swc-linux-x64-gnu" "12.1.7-canary.15"
|
||||
"@next/swc-linux-x64-musl" "12.1.7-canary.15"
|
||||
"@next/swc-win32-arm64-msvc" "12.1.7-canary.15"
|
||||
"@next/swc-win32-ia32-msvc" "12.1.7-canary.15"
|
||||
"@next/swc-win32-x64-msvc" "12.1.7-canary.15"
|
||||
"@next/swc-android-arm-eabi" "12.1.7-canary.16"
|
||||
"@next/swc-android-arm64" "12.1.7-canary.16"
|
||||
"@next/swc-darwin-arm64" "12.1.7-canary.16"
|
||||
"@next/swc-darwin-x64" "12.1.7-canary.16"
|
||||
"@next/swc-freebsd-x64" "12.1.7-canary.16"
|
||||
"@next/swc-linux-arm-gnueabihf" "12.1.7-canary.16"
|
||||
"@next/swc-linux-arm64-gnu" "12.1.7-canary.16"
|
||||
"@next/swc-linux-arm64-musl" "12.1.7-canary.16"
|
||||
"@next/swc-linux-x64-gnu" "12.1.7-canary.16"
|
||||
"@next/swc-linux-x64-musl" "12.1.7-canary.16"
|
||||
"@next/swc-win32-arm64-msvc" "12.1.7-canary.16"
|
||||
"@next/swc-win32-ia32-msvc" "12.1.7-canary.16"
|
||||
"@next/swc-win32-x64-msvc" "12.1.7-canary.16"
|
||||
|
||||
nlcst-to-string@^2.0.0:
|
||||
version "2.0.4"
|
||||
|
Reference in New Issue
Block a user