diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7e54495 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false \ No newline at end of file diff --git a/gatsby-browser.js b/gatsby-browser.js new file mode 100644 index 0000000..4f1a3b7 --- /dev/null +++ b/gatsby-browser.js @@ -0,0 +1,2 @@ +import './src/styles/global.scss'; +import 'prismjs/themes/prism-okaidia.css'; diff --git a/gatsby-config.js b/gatsby-config.js index 42ec303..7344c95 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -6,5 +6,93 @@ module.exports = { /* Your site config here */ - plugins: [], + plugins: [ + { + resolve: `gatsby-plugin-sass`, + options: { + postCssPlugins: [ + require("tailwindcss"), + ] + } + }, + { + resolve: 'gatsby-source-filesystem', + options: { + name: 'markdown-pages', + path: `${__dirname}/src/markdown-pages` + } + }, + { + resolve: `gatsby-transformer-remark`, + options: { + plugins: [ + { + resolve: `gatsby-remark-prismjs`, + options: { + // Class prefix for
tags containing syntax highlighting; + // defaults to 'language-' (e.g.). + // If your site loads Prism into the browser at runtime, + // (e.g. for use with libraries like react-live), + // you may use this to prevent Prism from re-processing syntax. + // This is an uncommon use-case though; + // If you're unsure, it's best to use the default value. + classPrefix: "language-", + // This is used to allow setting a language for inline code + // (i.e. single backticks) by creating a separator. + // This separator is a string and will do no white-space + // stripping. + // A suggested value for English speakers is the non-ascii + // character '›'. + inlineCodeMarker: null, + // This lets you set up language aliases. For example, + // setting this to '{ sh: "bash" }' will let you use + // the language "sh" which will highlight using the + // bash highlighter. + aliases: {}, + // This toggles the display of line numbers globally alongside the code. + // To use it, add the following line in gatsby-browser.js + // right after importing the prism color scheme: + // require("prismjs/plugins/line-numbers/prism-line-numbers.css") + // Defaults to false. + // If you wish to only show line numbers on certain code blocks, + // leave false and use the {numberLines: true} syntax below + showLineNumbers: false, + // If setting this to true, the parser won't handle and highlight inline + // code used in markdown i.e. single backtick code like `this`. + noInlineHighlight: false, + // This adds a new language definition to Prism or extend an already + // existing language definition. More details on this option can be + // found under the header "Add new language definition or extend an + // existing language" below. + languageExtensions: [ + { + language: "superscript", + extend: "javascript", + definition: { + superscript_types: /(SuperType)/, + }, + insertBefore: { + function: { + superscript_keywords: /(superif|superelse)/, + }, + }, + }, + ], + // Customize the prompt used in shell output + // Values below are default + prompt: { + user: "root", + host: "localhost", + global: false, + }, + // By default the HTML entities <>&'" are escaped. + // Add additional HTML escapes by providing a mapping + // of HTML entities and their escape value IE: { '}': '{' } + escapeEntities: {}, + }, + }, + ], + }, + }, + ], } diff --git a/gatsby-graphql.ts b/gatsby-graphql.ts new file mode 100644 index 0000000..f5aa441 --- /dev/null +++ b/gatsby-graphql.ts @@ -0,0 +1,2366 @@ +export type Maybe= T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + /** The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. */ + ID: string; + /** The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. */ + String: string; + /** The `Boolean` scalar type represents `true` or `false`. */ + Boolean: boolean; + /** The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. */ + Int: number; + /** The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). */ + Float: number; + /** A date string, such as 2007-12-03, compliant with the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + Date: any; + /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ + JSON: any; +}; + + + + + + + + + + +export type File = Node & { + sourceInstanceName: Scalars['String']; + absolutePath: Scalars['String']; + relativePath: Scalars['String']; + extension: Scalars['String']; + size: Scalars['Int']; + prettySize: Scalars['String']; + modifiedTime: Scalars['Date']; + accessTime: Scalars['Date']; + changeTime: Scalars['Date']; + birthTime: Scalars['Date']; + root: Scalars['String']; + dir: Scalars['String']; + base: Scalars['String']; + ext: Scalars['String']; + name: Scalars['String']; + relativeDirectory: Scalars['String']; + dev: Scalars['Int']; + mode: Scalars['Int']; + nlink: Scalars['Int']; + uid: Scalars['Int']; + gid: Scalars['Int']; + rdev: Scalars['Int']; + ino: Scalars['Float']; + atimeMs: Scalars['Float']; + mtimeMs: Scalars['Float']; + ctimeMs: Scalars['Float']; + atime: Scalars['Date']; + mtime: Scalars['Date']; + ctime: Scalars['Date']; + /** @deprecated Use `birthTime` instead */ + birthtime?: Maybe ; + /** @deprecated Use `birthTime` instead */ + birthtimeMs?: Maybe ; + blksize?: Maybe ; + blocks?: Maybe ; + /** Copy file to static directory and return public url to it */ + publicURL?: Maybe ; + /** Returns all children nodes filtered by type MarkdownRemark */ + childrenMarkdownRemark?: Maybe >>; + /** Returns the first child node of type MarkdownRemark or null if there are no children of given type on this node */ + childMarkdownRemark?: Maybe ; + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; +}; + + +export type FileModifiedTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileAccessTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileChangeTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileBirthTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileAtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileMtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type FileCtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + +/** Node Interface */ +export type Node = { + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; +}; + +export type Internal = { + content?: Maybe ; + contentDigest: Scalars['String']; + description?: Maybe ; + fieldOwners?: Maybe >>; + ignoreType?: Maybe ; + mediaType?: Maybe ; + owner: Scalars['String']; + type: Scalars['String']; +}; + + +export type Directory = Node & { + sourceInstanceName: Scalars['String']; + absolutePath: Scalars['String']; + relativePath: Scalars['String']; + extension: Scalars['String']; + size: Scalars['Int']; + prettySize: Scalars['String']; + modifiedTime: Scalars['Date']; + accessTime: Scalars['Date']; + changeTime: Scalars['Date']; + birthTime: Scalars['Date']; + root: Scalars['String']; + dir: Scalars['String']; + base: Scalars['String']; + ext: Scalars['String']; + name: Scalars['String']; + relativeDirectory: Scalars['String']; + dev: Scalars['Int']; + mode: Scalars['Int']; + nlink: Scalars['Int']; + uid: Scalars['Int']; + gid: Scalars['Int']; + rdev: Scalars['Int']; + ino: Scalars['Float']; + atimeMs: Scalars['Float']; + mtimeMs: Scalars['Float']; + ctimeMs: Scalars['Float']; + atime: Scalars['Date']; + mtime: Scalars['Date']; + ctime: Scalars['Date']; + /** @deprecated Use `birthTime` instead */ + birthtime?: Maybe ; + /** @deprecated Use `birthTime` instead */ + birthtimeMs?: Maybe ; + blksize?: Maybe ; + blocks?: Maybe ; + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; +}; + + +export type DirectoryModifiedTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryAccessTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryChangeTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryBirthTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryAtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryMtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type DirectoryCtimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + +export type Site = Node & { + buildTime?: Maybe ; + siteMetadata?: Maybe ; + port?: Maybe ; + host?: Maybe ; + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; +}; + + +export type SiteBuildTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + +export type SiteSiteMetadata = { + title?: Maybe ; + description?: Maybe ; +}; + +export type SitePage = Node & { + path: Scalars['String']; + component: Scalars['String']; + internalComponentName: Scalars['String']; + componentChunkName: Scalars['String']; + matchPath?: Maybe ; + isCreatedByStatefulCreatePages?: Maybe ; + pluginCreator?: Maybe ; + pluginCreatorId?: Maybe ; + componentPath?: Maybe ; + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; + context?: Maybe ; +}; + +export type SitePageContext = { + slug?: Maybe ; +}; + +export type MarkdownHeading = { + id?: Maybe ; + value?: Maybe ; + depth?: Maybe ; +}; + +export type MarkdownHeadingLevels = + | 'h1' + | 'h2' + | 'h3' + | 'h4' + | 'h5' + | 'h6'; + +export type MarkdownExcerptFormats = + | 'PLAIN' + | 'HTML' + | 'MARKDOWN'; + +export type MarkdownWordCount = { + paragraphs?: Maybe ; + sentences?: Maybe ; + words?: Maybe ; +}; + +export type MarkdownRemark = Node & { + id: Scalars['ID']; + frontmatter?: Maybe ; + excerpt?: Maybe ; + rawMarkdownBody?: Maybe ; + fileAbsolutePath?: Maybe ; + html?: Maybe ; + htmlAst?: Maybe ; + excerptAst?: Maybe ; + headings?: Maybe >>; + timeToRead?: Maybe ; + tableOfContents?: Maybe ; + wordCount?: Maybe ; + parent?: Maybe ; + children: Array ; + internal: Internal; +}; + + +export type MarkdownRemarkExcerptArgs = { + pruneLength?: Maybe ; + truncate?: Maybe ; + format?: Maybe ; +}; + + +export type MarkdownRemarkExcerptAstArgs = { + pruneLength?: Maybe ; + truncate?: Maybe ; +}; + + +export type MarkdownRemarkHeadingsArgs = { + depth?: Maybe ; +}; + + +export type MarkdownRemarkTableOfContentsArgs = { + absolute?: Maybe ; + pathToSlugField?: Maybe ; + maxDepth?: Maybe ; + heading?: Maybe ; +}; + +export type MarkdownRemarkFrontmatter = { + title?: Maybe ; + slug?: Maybe ; + date?: Maybe ; +}; + + +export type MarkdownRemarkFrontmatterDateArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + + +export type SiteBuildMetadata = Node & { + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; + buildTime?: Maybe ; +}; + + +export type SiteBuildMetadataBuildTimeArgs = { + formatString?: Maybe ; + fromNow?: Maybe ; + difference?: Maybe ; + locale?: Maybe ; +}; + +export type SitePlugin = Node & { + id: Scalars['ID']; + parent?: Maybe ; + children: Array ; + internal: Internal; + resolve?: Maybe ; + name?: Maybe ; + version?: Maybe ; + pluginOptions?: Maybe ; + nodeAPIs?: Maybe >>; + pluginFilepath?: Maybe ; + packageJson?: Maybe ; +}; + +export type SitePluginPluginOptions = { + plugins?: Maybe >>; + fileName?: Maybe ; + name?: Maybe ; + path?: Maybe ; + classPrefix?: Maybe ; + showLineNumbers?: Maybe ; + noInlineHighlight?: Maybe ; + languageExtensions?: Maybe >>; + prompt?: Maybe ; + pathCheck?: Maybe ; + allExtensions?: Maybe ; + isTSX?: Maybe ; + jsxPragma?: Maybe ; +}; + +export type SitePluginPluginOptionsPlugins = { + resolve?: Maybe ; + id?: Maybe ; + name?: Maybe ; + version?: Maybe ; + pluginOptions?: Maybe ; +}; + +export type SitePluginPluginOptionsPluginsPluginOptions = { + classPrefix?: Maybe ; + showLineNumbers?: Maybe ; + noInlineHighlight?: Maybe ; + languageExtensions?: Maybe >>; + prompt?: Maybe ; +}; + +export type SitePluginPluginOptionsPluginsPluginOptionsLanguageExtensions = { + language?: Maybe ; + extend?: Maybe ; +}; + +export type SitePluginPluginOptionsPluginsPluginOptionsPrompt = { + user?: Maybe ; + host?: Maybe ; + global?: Maybe ; +}; + +export type SitePluginPluginOptionsLanguageExtensions = { + language?: Maybe ; + extend?: Maybe ; +}; + +export type SitePluginPluginOptionsPrompt = { + user?: Maybe ; + host?: Maybe ; + global?: Maybe ; +}; + +export type SitePluginPackageJson = { + name?: Maybe ; + description?: Maybe ; + version?: Maybe ; + main?: Maybe ; + license?: Maybe ; + dependencies?: Maybe >>; + devDependencies?: Maybe >>; + peerDependencies?: Maybe >>; + keywords?: Maybe >>; +}; + +export type SitePluginPackageJsonDependencies = { + name?: Maybe ; + version?: Maybe ; +}; + +export type SitePluginPackageJsonDevDependencies = { + name?: Maybe ; + version?: Maybe ; +}; + +export type SitePluginPackageJsonPeerDependencies = { + name?: Maybe ; + version?: Maybe ; +}; + +export type Query = { + file?: Maybe ; + allFile: FileConnection; + directory?: Maybe ; + allDirectory: DirectoryConnection; + site?: Maybe ; + allSite: SiteConnection; + sitePage?: Maybe ; + allSitePage: SitePageConnection; + markdownRemark?: Maybe ; + allMarkdownRemark: MarkdownRemarkConnection; + siteBuildMetadata?: Maybe ; + allSiteBuildMetadata: SiteBuildMetadataConnection; + sitePlugin?: Maybe ; + allSitePlugin: SitePluginConnection; +}; + + +export type QueryFileArgs = { + sourceInstanceName?: Maybe ; + absolutePath?: Maybe ; + relativePath?: Maybe ; + extension?: Maybe ; + size?: Maybe ; + prettySize?: Maybe ; + modifiedTime?: Maybe ; + accessTime?: Maybe ; + changeTime?: Maybe ; + birthTime?: Maybe ; + root?: Maybe ; + dir?: Maybe ; + base?: Maybe ; + ext?: Maybe ; + name?: Maybe ; + relativeDirectory?: Maybe ; + dev?: Maybe ; + mode?: Maybe ; + nlink?: Maybe ; + uid?: Maybe ; + gid?: Maybe ; + rdev?: Maybe ; + ino?: Maybe ; + atimeMs?: Maybe ; + mtimeMs?: Maybe ; + ctimeMs?: Maybe ; + atime?: Maybe ; + mtime?: Maybe ; + ctime?: Maybe ; + birthtime?: Maybe ; + birthtimeMs?: Maybe ; + blksize?: Maybe ; + blocks?: Maybe ; + publicURL?: Maybe ; + childrenMarkdownRemark?: Maybe ; + childMarkdownRemark?: Maybe ; + id?: Maybe ; + parent?: Maybe ; + children?: Maybe ; + internal?: Maybe