aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKevin Hoerr <kjhoerr@protonmail.com>2022-11-28 17:37:25 -0500
committerGitHub <noreply@github.com>2022-11-28 17:37:25 -0500
commit832794e035705e7f0a5989ce240a385e5ccebf62 (patch)
treeed836a8473688545e93270f25697433e77feba20
parent73736f0873017967e78538d42fcfabb60ba8b4a2 (diff)
downloadsubmelon.dev-832794e035705e7f0a5989ce240a385e5ccebf62.tar.gz
submelon.dev-832794e035705e7f0a5989ce240a385e5ccebf62.tar.bz2
submelon.dev-832794e035705e7f0a5989ce240a385e5ccebf62.zip
Reintegrate GraphQL (#23)
* Use GraphQL for site metadata incl version * Explicit props for passthrough components
-rw-r--r--.gitignore1
-rw-r--r--gatsby-config.ts (renamed from gatsby-config.js)7
-rw-r--r--package-lock.json98
-rw-r--r--package.json2
-rw-r--r--src/components/BlockLink.tsx9
-rw-r--r--src/components/Layout.tsx11
-rw-r--r--src/components/SEO.tsx18
-rw-r--r--src/hooks/SiteMetadata.ts21
-rw-r--r--src/hooks/SiteVersion.ts19
-rw-r--r--src/hooks/index.ts4
-rw-r--r--src/styles/index.ts4
-rw-r--r--tsconfig.json102
12 files changed, 229 insertions, 67 deletions
diff --git a/.gitignore b/.gitignore
index 6073dec..c77e233 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules/
.cache/
public/page-data/dev-404-page/
+src/gatsby-types.d.ts \ No newline at end of file
diff --git a/gatsby-config.js b/gatsby-config.ts
index 79dbda9..670bcf5 100644
--- a/gatsby-config.js
+++ b/gatsby-config.ts
@@ -1,4 +1,11 @@
module.exports = {
+ siteMetadata: {
+ title: "Kevin J Hoerr <kjhoerr@submelon.tech>",
+ description: "The official website of Kevin Hoerr, developer of websites.",
+ author: "Kevin J Hoerr",
+ version: "1669668242",
+ },
+ graphqlTypegen: true,
plugins: [
"gatsby-plugin-styled-components",
"gatsby-plugin-image",
diff --git a/package-lock.json b/package-lock.json
index 6f0313b..d8d1635 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "submelon.dev",
- "version": "1669057338",
+ "version": "1.0.x",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "submelon.dev",
- "version": "1669057338",
+ "version": "1.0.x",
"license": "BlueOak-1.0.0",
"dependencies": {
"babel-plugin-styled-components": "^2.0.7",
@@ -35,7 +35,7 @@
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.11",
- "typescript": "*"
+ "typescript": "latest"
}
},
"node_modules/@ampproject/remapping": {
@@ -8822,15 +8822,15 @@
}
},
"node_modules/gatsby-page-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.0.0.tgz",
- "integrity": "sha512-TvqRlkERD9WzX4WeXlz7x5TASfC8ZcfWS6NIDqJvL5ELzh5dnJdA98fcaAsF/wCtCpTBHwuSeCWsmZO7hdpKCQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.2.0.tgz",
+ "integrity": "sha512-L8OmKqfHpDbuIfcMForF/oQCRES2XBNVVZ6TkO4ZLxeA4Ig0Uu99guqNjIXDViImN9kB6vilcPgUz0458GWZTg==",
"dependencies": {
"@babel/runtime": "^7.15.4",
"bluebird": "^3.7.2",
"chokidar": "^3.5.3",
"fs-exists-cached": "^1.0.0",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"glob": "^7.2.3",
"lodash": "^4.17.21",
"micromatch": "^4.0.5"
@@ -8963,13 +8963,13 @@
}
},
"node_modules/gatsby-plugin-offline": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-6.0.0.tgz",
- "integrity": "sha512-UXQUzedkAevMRocM5N7nxuI0/L0Yazh2J7Nbnty56vV3R8RAMmeoaG0ocJMvyAcqSrZqptHcI96Lbg4u3TVuIA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-6.2.0.tgz",
+ "integrity": "sha512-mnf/FcGqqiywpNyJ+CEFDJtWSHhL4OxyXmswDFZNSwYzOqBxpnr4CaGdFPMW4EMA0wf3niJVmohskF8blUZOIQ==",
"dependencies": {
"@babel/runtime": "^7.15.4",
"cheerio": "^1.0.0-rc.10",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"glob": "^7.2.3",
"idb-keyval": "^3.2.0",
"lodash": "^4.17.21",
@@ -8985,9 +8985,9 @@
}
},
"node_modules/gatsby-plugin-page-creator": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.0.0.tgz",
- "integrity": "sha512-9+fuXl4Ucgh/QY5odsTMNT7EsZ8rfPvSq/YN7Sb0OOiul66he9ecv63EeXzDLmeqsiAEBwFOVbBaIWphGI0Aew==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.2.0.tgz",
+ "integrity": "sha512-hLDyqWspwtUSv/+N+L+sTL5VZNbvMqYxt8ANYoMGIABkS+Q7mwaCjSw2h8HW6VtjdB6B3qdy1+MZT3mz+7vBOQ==",
"dependencies": {
"@babel/runtime": "^7.15.4",
"@babel/traverse": "^7.15.4",
@@ -8995,10 +8995,10 @@
"chokidar": "^3.5.3",
"fs-exists-cached": "^1.0.0",
"fs-extra": "^10.1.0",
- "gatsby-core-utils": "^4.0.0",
- "gatsby-page-utils": "^3.0.0",
- "gatsby-plugin-utils": "^4.0.0",
- "gatsby-telemetry": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
+ "gatsby-page-utils": "^3.2.0",
+ "gatsby-plugin-utils": "^4.2.0",
+ "gatsby-telemetry": "^4.2.0",
"globby": "^11.1.0",
"lodash": "^4.17.21"
},
@@ -9096,9 +9096,9 @@
}
},
"node_modules/gatsby-plugin-typescript": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.0.0.tgz",
- "integrity": "sha512-tfCKbUnEWIBn7fpQhuLtTPDi+xWrkwo23tcd18D2gWmCMTvjKtBFNYmyrTGz38hZHuU0mH+pkCz0v7XV2jW5ww==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.2.0.tgz",
+ "integrity": "sha512-zGx/g0WLCpAKZ/4iMNTEWtFOPnlnNWbqEhxgBlxuakjNwG23szJrsN6rcgu0361vGUIUYS9NztJ4v6ZEdoNH/Q==",
"dependencies": {
"@babel/core": "^7.15.5",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
@@ -9106,7 +9106,7 @@
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/preset-typescript": "^7.15.0",
"@babel/runtime": "^7.15.4",
- "babel-plugin-remove-graphql-queries": "^5.0.0"
+ "babel-plugin-remove-graphql-queries": "^5.2.0"
},
"engines": {
"node": ">=18.0.0"
@@ -9259,9 +9259,9 @@
}
},
"node_modules/gatsby-telemetry": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.0.0.tgz",
- "integrity": "sha512-SLDftlcRx/G5ORXGxigr+RISpTOQawB6Cy7KZHTBzci6BS0d70R+biE0Bf8hPrBGHqy2em82+skFBinw0nLOaA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.2.0.tgz",
+ "integrity": "sha512-RmUIWVOoVFwVFAxUhJpP6YwWZbUObNOfS+iJQZoPwondg7fBLuE2NEtlycPfdDLYlmzQZat0l3xwvECpmjzM4Q==",
"hasInstallScript": true,
"dependencies": {
"@babel/code-frame": "^7.14.0",
@@ -9271,7 +9271,7 @@
"boxen": "^4.2.0",
"configstore": "^5.0.1",
"fs-extra": "^10.1.0",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"git-up": "^7.0.0",
"is-docker": "^2.2.1",
"lodash": "^4.17.21",
@@ -23309,15 +23309,15 @@
}
},
"gatsby-page-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.0.0.tgz",
- "integrity": "sha512-TvqRlkERD9WzX4WeXlz7x5TASfC8ZcfWS6NIDqJvL5ELzh5dnJdA98fcaAsF/wCtCpTBHwuSeCWsmZO7hdpKCQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.2.0.tgz",
+ "integrity": "sha512-L8OmKqfHpDbuIfcMForF/oQCRES2XBNVVZ6TkO4ZLxeA4Ig0Uu99guqNjIXDViImN9kB6vilcPgUz0458GWZTg==",
"requires": {
"@babel/runtime": "^7.15.4",
"bluebird": "^3.7.2",
"chokidar": "^3.5.3",
"fs-exists-cached": "^1.0.0",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"glob": "^7.2.3",
"lodash": "^4.17.21",
"micromatch": "^4.0.5"
@@ -23410,13 +23410,13 @@
}
},
"gatsby-plugin-offline": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-6.0.0.tgz",
- "integrity": "sha512-UXQUzedkAevMRocM5N7nxuI0/L0Yazh2J7Nbnty56vV3R8RAMmeoaG0ocJMvyAcqSrZqptHcI96Lbg4u3TVuIA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-6.2.0.tgz",
+ "integrity": "sha512-mnf/FcGqqiywpNyJ+CEFDJtWSHhL4OxyXmswDFZNSwYzOqBxpnr4CaGdFPMW4EMA0wf3niJVmohskF8blUZOIQ==",
"requires": {
"@babel/runtime": "^7.15.4",
"cheerio": "^1.0.0-rc.10",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"glob": "^7.2.3",
"idb-keyval": "^3.2.0",
"lodash": "^4.17.21",
@@ -23424,9 +23424,9 @@
}
},
"gatsby-plugin-page-creator": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.0.0.tgz",
- "integrity": "sha512-9+fuXl4Ucgh/QY5odsTMNT7EsZ8rfPvSq/YN7Sb0OOiul66he9ecv63EeXzDLmeqsiAEBwFOVbBaIWphGI0Aew==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.2.0.tgz",
+ "integrity": "sha512-hLDyqWspwtUSv/+N+L+sTL5VZNbvMqYxt8ANYoMGIABkS+Q7mwaCjSw2h8HW6VtjdB6B3qdy1+MZT3mz+7vBOQ==",
"requires": {
"@babel/runtime": "^7.15.4",
"@babel/traverse": "^7.15.4",
@@ -23434,10 +23434,10 @@
"chokidar": "^3.5.3",
"fs-exists-cached": "^1.0.0",
"fs-extra": "^10.1.0",
- "gatsby-core-utils": "^4.0.0",
- "gatsby-page-utils": "^3.0.0",
- "gatsby-plugin-utils": "^4.0.0",
- "gatsby-telemetry": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
+ "gatsby-page-utils": "^3.2.0",
+ "gatsby-plugin-utils": "^4.2.0",
+ "gatsby-telemetry": "^4.2.0",
"globby": "^11.1.0",
"lodash": "^4.17.21"
}
@@ -23505,9 +23505,9 @@
}
},
"gatsby-plugin-typescript": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.0.0.tgz",
- "integrity": "sha512-tfCKbUnEWIBn7fpQhuLtTPDi+xWrkwo23tcd18D2gWmCMTvjKtBFNYmyrTGz38hZHuU0mH+pkCz0v7XV2jW5ww==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.2.0.tgz",
+ "integrity": "sha512-zGx/g0WLCpAKZ/4iMNTEWtFOPnlnNWbqEhxgBlxuakjNwG23szJrsN6rcgu0361vGUIUYS9NztJ4v6ZEdoNH/Q==",
"requires": {
"@babel/core": "^7.15.5",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
@@ -23515,7 +23515,7 @@
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/preset-typescript": "^7.15.0",
"@babel/runtime": "^7.15.4",
- "babel-plugin-remove-graphql-queries": "^5.0.0"
+ "babel-plugin-remove-graphql-queries": "^5.2.0"
}
},
"gatsby-plugin-utils": {
@@ -23617,9 +23617,9 @@
}
},
"gatsby-telemetry": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.0.0.tgz",
- "integrity": "sha512-SLDftlcRx/G5ORXGxigr+RISpTOQawB6Cy7KZHTBzci6BS0d70R+biE0Bf8hPrBGHqy2em82+skFBinw0nLOaA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.2.0.tgz",
+ "integrity": "sha512-RmUIWVOoVFwVFAxUhJpP6YwWZbUObNOfS+iJQZoPwondg7fBLuE2NEtlycPfdDLYlmzQZat0l3xwvECpmjzM4Q==",
"requires": {
"@babel/code-frame": "^7.14.0",
"@babel/runtime": "^7.15.4",
@@ -23628,7 +23628,7 @@
"boxen": "^4.2.0",
"configstore": "^5.0.1",
"fs-extra": "^10.1.0",
- "gatsby-core-utils": "^4.0.0",
+ "gatsby-core-utils": "^4.2.0",
"git-up": "^7.0.0",
"is-docker": "^2.2.1",
"lodash": "^4.17.21",
diff --git a/package.json b/package.json
index 41c9afb..2c53b91 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "submelon.dev",
- "version": "1669057338",
+ "version": "1.0.x",
"private": true,
"description": "submelon.dev",
"author": "Kevin J Hoerr",
diff --git a/src/components/BlockLink.tsx b/src/components/BlockLink.tsx
index f2724e7..c0f2ad6 100644
--- a/src/components/BlockLink.tsx
+++ b/src/components/BlockLink.tsx
@@ -1,7 +1,12 @@
import React from "react";
-import { BlockAnchor, BlockBody } from "../styles";
+import { ThemedStyledFunction } from "styled-components";
+import { BlockAnchor, BlockBody, Theme } from "../styles";
-const BlockLink = ({ children, ...attributes }) => {
+type BlockLinkProps = {
+ children: React.ReactNode;
+} & ThemedStyledFunction<"a", Theme>;
+
+const BlockLink = ({ children, ...attributes }: BlockLinkProps) => {
return (
<BlockBody theme={{ link: true }}>
<BlockAnchor {...attributes}>{children}</BlockAnchor>
diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx
index 7be816f..4f93fec 100644
--- a/src/components/Layout.tsx
+++ b/src/components/Layout.tsx
@@ -1,14 +1,17 @@
import React from "react";
import { IconContext } from "react-icons/lib";
import { Content, Footer } from "../styles";
-import package_json from "../../package.json";
+import { useSiteVersion } from "../hooks";
import { getTimestamp } from "../util/timestamp";
import "../styles/main.css";
-const VERSION = package_json.version;
+interface LayoutProps {
+ children: React.ReactNode;
+}
-const Layout = ({ children }) => {
+const Layout = ({ children }: LayoutProps) => {
+ const version = useSiteVersion();
return (
<React.StrictMode>
<main>
@@ -20,7 +23,7 @@ const Layout = ({ children }) => {
<Footer>
<span>
&copy;2022 kjhoerr@https://submelon.dev/:
- {getTimestamp(Number(VERSION))}
+ {getTimestamp(Number(version))}
</span>
</Footer>
</IconContext.Provider>
diff --git a/src/components/SEO.tsx b/src/components/SEO.tsx
index 3049810..b13dc19 100644
--- a/src/components/SEO.tsx
+++ b/src/components/SEO.tsx
@@ -1,19 +1,17 @@
import React from "react";
+import { useSiteMetadata } from "../hooks";
export function Head(): React.ReactElement {
- const metaDescription =
- "The official website of Kevin Hoerr, developer of websites.";
+ const { author, description, title } = useSiteMetadata();
+
return (
<>
- <meta name="twitter:description" content={metaDescription} />
- <meta
- name="twitter:title"
- content="Kevin J Hoerr &lt;kjhoerr@submelon.tech&gt;"
- />
- <meta name="twitter:creator" content="Kevin J Hoerr" />
+ <meta name="twitter:description" content={description ?? ""} />
+ <meta name="twitter:title" content={title ?? ""} />
+ <meta name="twitter:creator" content={author ?? ""} />
<meta name="twitter:card" content="summary" />
- <meta name="description" content={metaDescription} />
- <title>Kevin J Hoerr &lt;kjhoerr@submelon.tech&gt;</title>
+ <meta name="description" content={description ?? ""} />
+ <title>{title}</title>
</>
);
}
diff --git a/src/hooks/SiteMetadata.ts b/src/hooks/SiteMetadata.ts
new file mode 100644
index 0000000..889f42b
--- /dev/null
+++ b/src/hooks/SiteMetadata.ts
@@ -0,0 +1,21 @@
+import { useStaticQuery, graphql } from "gatsby";
+
+type SiteMetadata = NonNullable<
+ NonNullable<Queries.getSiteMetadataQuery["site"]>["siteMetadata"]
+>;
+
+export const useSiteMetadata = (): SiteMetadata => {
+ const { site } = useStaticQuery<Queries.getSiteMetadataQuery>(graphql`
+ query getSiteMetadata {
+ site {
+ siteMetadata {
+ author
+ description
+ title
+ }
+ }
+ }
+ `);
+
+ return site?.siteMetadata ?? ({} as SiteMetadata);
+};
diff --git a/src/hooks/SiteVersion.ts b/src/hooks/SiteVersion.ts
new file mode 100644
index 0000000..6726a3c
--- /dev/null
+++ b/src/hooks/SiteVersion.ts
@@ -0,0 +1,19 @@
+import { useStaticQuery, graphql } from "gatsby";
+
+type SiteVersion = NonNullable<
+ NonNullable<Queries.getSiteVersionQuery["site"]>["siteMetadata"]
+>["version"];
+
+export const useSiteVersion = (): SiteVersion => {
+ const { site } = useStaticQuery<Queries.getSiteVersionQuery>(graphql`
+ query getSiteVersion {
+ site {
+ siteMetadata {
+ version
+ }
+ }
+ }
+ `);
+
+ return site?.siteMetadata?.version ?? "0";
+};
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
new file mode 100644
index 0000000..1250d57
--- /dev/null
+++ b/src/hooks/index.ts
@@ -0,0 +1,4 @@
+import { useSiteMetadata } from "./SiteMetadata";
+import { useSiteVersion } from "./SiteVersion";
+
+export { useSiteMetadata, useSiteVersion };
diff --git a/src/styles/index.ts b/src/styles/index.ts
index 8eee62a..978271a 100644
--- a/src/styles/index.ts
+++ b/src/styles/index.ts
@@ -4,4 +4,6 @@ import BlockHeader from "./BlockHeader";
import Content from "./Content";
import Footer from "./Footer";
-export { BlockAnchor, BlockBody, BlockHeader, Content, Footer };
+type Theme = Record<string, never>;
+
+export { BlockAnchor, BlockBody, BlockHeader, Content, Footer, Theme };
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..c04dca0
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,102 @@
+{
+ "compilerOptions": {
+ /* Visit https://aka.ms/tsconfig.json to read more about this file */
+
+ /* Projects */
+ // "incremental": true, /* Enable incremental compilation */
+ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
+ // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
+ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
+ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
+ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
+
+ /* Language and Environment */
+ "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
+ "lib": ["dom", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+ "jsx": "react", /* Specify what JSX code is generated. */
+ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
+ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
+ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
+ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
+ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
+ // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+
+ /* Modules */
+ "module": "esnext", /* Specify what module code is generated. */
+ // "rootDir": "./", /* Specify the root folder within your source files. */
+ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+ // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
+ // "types": [], /* Specify type package names to be included without being referenced in a source file. */
+ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
+ // "resolveJsonModule": true, /* Enable importing .json files */
+ // "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
+
+ /* JavaScript Support */
+ // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
+ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
+
+ /* Emit */
+ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
+ // "declarationMap": true, /* Create sourcemaps for d.ts files. */
+ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
+ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
+ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
+ // "outDir": "./", /* Specify an output folder for all emitted files. */
+ // "removeComments": true, /* Disable emitting comments. */
+ // "noEmit": true, /* Disable emitting files from a compilation. */
+ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
+ // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
+ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
+ // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
+ // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
+ // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
+ // "newLine": "crlf", /* Set the newline character for emitting files. */
+ // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
+ // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
+ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
+ // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
+ // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
+ // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
+
+ /* Interop Constraints */
+ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
+ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
+ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
+
+ /* Type Checking */
+ "strict": true, /* Enable all strict type-checking options. */
+ // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
+ // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
+ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
+ // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
+ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
+ // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
+ // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
+ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
+ // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
+ // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
+ // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
+ // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
+ // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+ // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
+ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
+ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
+ // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
+ // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
+
+ /* Completeness */
+ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "include": ["./src/**/*", "./gatsby-config.ts", "./src/gatsby-types.d.ts"]
+} \ No newline at end of file