### Type definitions saved at 2021-12-21T00:30:23.430Z ###

type File implements Node @dontInfer {
  sourceInstanceName: String!
  absolutePath: String!
  relativePath: String!
  extension: String!
  size: Int!
  prettySize: String!
  modifiedTime: Date! @dateformat
  accessTime: Date! @dateformat
  changeTime: Date! @dateformat
  birthTime: Date! @dateformat
  root: String!
  dir: String!
  base: String!
  ext: String!
  name: String!
  relativeDirectory: String!
  dev: Int!
  mode: Int!
  nlink: Int!
  uid: Int!
  gid: Int!
  rdev: Int!
  ino: Float!
  atimeMs: Float!
  mtimeMs: Float!
  ctimeMs: Float!
  atime: Date! @dateformat
  mtime: Date! @dateformat
  ctime: Date! @dateformat
  birthtime: Date @deprecated(reason: "Use `birthTime` instead")
  birthtimeMs: Float @deprecated(reason: "Use `birthTime` instead")
  blksize: Int
  blocks: Int
}

type Directory implements Node @dontInfer {
  sourceInstanceName: String!
  absolutePath: String!
  relativePath: String!
  extension: String!
  size: Int!
  prettySize: String!
  modifiedTime: Date! @dateformat
  accessTime: Date! @dateformat
  changeTime: Date! @dateformat
  birthTime: Date! @dateformat
  root: String!
  dir: String!
  base: String!
  ext: String!
  name: String!
  relativeDirectory: String!
  dev: Int!
  mode: Int!
  nlink: Int!
  uid: Int!
  gid: Int!
  rdev: Int!
  ino: Float!
  atimeMs: Float!
  mtimeMs: Float!
  ctimeMs: Float!
  atime: Date! @dateformat
  mtime: Date! @dateformat
  ctime: Date! @dateformat
  birthtime: Date @deprecated(reason: "Use `birthTime` instead")
  birthtimeMs: Float @deprecated(reason: "Use `birthTime` instead")
}

type Site implements Node @dontInfer {
  buildTime: Date @dateformat
  siteMetadata: SiteSiteMetadata
  polyfill: Boolean
  pathPrefix: String
  jsxRuntime: String
}

type SiteSiteMetadata {
  title: String
  description: String
  author: String
  image: String
  basePath: String
  siteUrl: String
}

type SiteFunction implements Node @dontInfer {
  functionRoute: String!
  pluginName: String!
  originalAbsoluteFilePath: String!
  originalRelativeFilePath: String!
  relativeCompiledFilePath: String!
  absoluteCompiledFilePath: String!
  matchPath: String
}

type SitePage implements Node @dontInfer {
  path: String!
  component: String!
  internalComponentName: String!
  componentChunkName: String!
  matchPath: String
  pageContext: JSON @proxy(from: "context", fromNode: false)
  pluginCreator: SitePlugin @link(by: "id", from: "pluginCreatorId")
}

type SitePlugin implements Node @dontInfer {
  resolve: String
  name: String
  version: String
  nodeAPIs: [String]
  browserAPIs: [String]
  ssrAPIs: [String]
  pluginFilepath: String
  pluginOptions: JSON
  packageJson: JSON
}

type SiteBuildMetadata implements Node @dontInfer {
  buildTime: Date @dateformat
}

type MdxFrontmatter {
  title: String
  description: String
  icon: Icon
  image: String
  modal: Boolean
}

type MdxHeadingMdx {
  value: String
  depth: Int
}

enum HeadingsMdx {
  h1
  h2
  h3
  h4
  h5
  h6
}

type MdxWordCount {
  paragraphs: Int
  sentences: Int
  words: Int
}

type Mdx implements Node @childOf(mimeTypes: ["text/markdown", "text/x-markdown"], types: ["File"]) @dontInfer {
  rawBody: String!
  fileAbsolutePath: String!
  frontmatter: MdxFrontmatter!
  slug: String
  body: String!
  excerpt(pruneLength: Int = 140, truncate: Boolean = false): String!
  headings(depth: HeadingsMdx): [MdxHeadingMdx]
  html: String
  mdxAST: JSON
  tableOfContents(maxDepth: Int): JSON
  timeToRead: Int
  wordCount: MdxWordCount
}

type Icon {
  name: String!
  variant: String!
}