{
  "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json",
  "version": "0.2",
  "description": "The recommended CSpell configuration used by Storm Software.",
  "enabledLanguageIds": ["sql", "mdx", "rust", "markdown"],
  "dictionaries": [
    "fullstack",
    "rust",
    "sql",
    "lorem-ipsum",
    "markdown",
    "public-licenses",
    "fonts"
  ],
  "overrides": [
    {
      "filename": "**/CHANGELOG*.md",
      "ignoreRegExpList": ["@[-\\w]+"]
    },
    {
      "filename": "'**/*.md*",
      "ignoreRegExpList": ["\\]\\([^)]+\\)"]
    }
  ],
  "patterns": [
    {
      "name": "Markdown link reference",
      "description": "Markdown reference link: `[This is a link][reference]`, matches `[reference]`",
      "pattern": "/(?<=])[[-w.`'\"*&;#@ ]+]/g"
    },
    {
      "name": "Markdown link footer",
      "description": "Markdown referenced link: `[reference]: https://www.google.com`, matches the entire reference.",
      "pattern": "/[[-w.`'\"*&;#@ ]+]:( [^s]*)?/g"
    },
    {
      "name": "Markdown link",
      "description": "Markdown link: `[link text](link)`, matches `link`",
      "pattern": "/(?<=]()[^)s]+/g"
    },
    {
      "name": "Markdown anchor",
      "description": "Markdown Anchors: `<a id=\"my_link\"></a>`, matches `my_link`",
      "pattern": "/(?<=<as+id=\")[^\"s]+/g"
    },
    {
      "name": "Markdown code blocks",
      "pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx",
      "description": "Taken from the cSpell example at https://cspell.org/configuration/patterns/#verbose-regular-expressions"
    },
    {
      "name": "Inline code blocks",
      "pattern": "\\`([^\\`\\r\\n]+?)\\`",
      "description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex"
    },
    {
      "name": "Link contents",
      "pattern": "\\<a(.*)\\>",
      "description": ""
    },
    {
      "name": "Snippet references",
      "pattern": "-- snippet:(.*)",
      "description": ""
    },
    {
      "name": "Snippet references 2",
      "pattern": "\\<\\[sample:(.*)",
      "description": "another kind of snippet reference"
    },
    {
      "name": "Multi-line code blocks",
      "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm"
    }
  ],
  "languageSettings": [
    {
      "languageId": "json,jsonc,yaml",
      "dictionaries": ["storm", "softwareTerms", "public-licenses"]
    },
    {
      "languageId": "markdown,mdx",
      "dictionaries": [
        "storm",
        "npm",
        "markdown",
        "softwareTerms",
        "public-licenses"
      ]
    },
    {
      "languageId": "map",
      "enabled": false
    },
    {
      "languageId": "image",
      "enabled": false
    },
    {
      "languageId": "binary",
      "enabled": false
    },
    {
      "languageId": "markdown",
      "ignoreRegExpList": [
        "Markdown link reference",
        "Markdown link footer",
        "Markdown link",
        "Markdown anchor",
        "Markdown code blocks",
        "Inline code blocks",
        "Link contents",
        "Snippet references",
        "Snippet references 2",
        "Multi-line code blocks"
      ]
    }
  ],
  "import": [
    "./cspell-ext.json",
    "./cspell-minimal.json",
    "@cspell/dict-fullstack/cspell-ext.json",
    "@cspell/dict-markdown/cspell-ext.json",
    "@cspell/dict-rust/cspell-ext.json",
    "@cspell/dict-lorem-ipsum/cspell-ext.json",
    "@cspell/dict-public-licenses/cspell-ext.json",
    "@cspell/dict-fonts/cspell-ext.json",
    "@cspell/dict-sql/cspell-ext.json"
  ],
  "ignoreRegExpList": [
    "usernames\\s*=\\s*\\{[^}]*\\}",
    "name:\\s*\"[^\"]*\"",
    "description:\\s*\"[^\"]*\"",
    "avatar:\\s*\"[^\"]*\"",
    "twitter:\\s*\"[^\"]*\"",
    "image:\\s*\"[^\"]*\"",
    "privateKeyPass:\\s*\"[^\"]*\"",
    "encPrivateKeyPass:\\s*\"[^\"]*\"",
    "\"x\":\\s*\"[^\"]*\"",
    "\\[@[^\\]]+\\]\\([^\\)]+\\)",
    "\\[[^\\]]+\\]\\(https://github\\.com/\\w+\\)",
    "\\[[^\\]]+\\]\\(https://x\\.com/\\w+\\)",
    "@[a-zA-Z0-9-_]+",
    "price_[a-zA-Z0-9-_]+",
    "sub_[a-zA-Z0-9-_]+",
    "%[0-9A-Fa-f]{2}(?:%[0-9A-Fa-f]{2})*",
    "toBe\\([^\\)]*\\)",
    "GHSA-[-\\w]+"
  ]
}
