diff --git a/build/versions.props b/build/versions.props
index 5a66d9c2..cb3fbaa2 100644
--- a/build/versions.props
+++ b/build/versions.props
@@ -1,75 +1,75 @@
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3-preview1
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3
- 8.0.3-preview1
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4-preview1
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4
+ 8.0.4-preview1
diff --git a/docs/development.mdx b/docs/development.mdx
deleted file mode 100644
index 87830089..00000000
--- a/docs/development.mdx
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: 'Development'
-description: 'Learn how to preview changes locally'
----
-
-
- **Prerequisite** You should have installed Node.js (version 18.10.0 or
- higher).
-
-
-Step 1. Install Mintlify on your OS:
-
-
-
-```bash npm
-npm i -g mintlify
-```
-
-```bash yarn
-yarn global add mintlify
-```
-
-
-
-Step 2. Go to the docs are located (where you can find `mint.json`) and run the following command:
-
-```bash
-mintlify dev
-```
-
-The documentation website is now available at `http://localhost:3000`.
-
-### Custom Ports
-
-Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333:
-
-```bash
-mintlify dev --port 3333
-```
-
-You will see an error like this if you try to run Mintlify in a port that's already taken:
-
-```md
-Error: listen EADDRINUSE: address already in use :::3000
-```
-
-## Mintlify Versions
-
-Each CLI is linked to a specific version of Mintlify. Please update the CLI if your local website looks different than production.
-
-
-
-```bash npm
-npm i -g mintlify@latest
-```
-
-```bash yarn
-yarn global upgrade mintlify
-```
-
-
-
-## Deployment
-
-
- Unlimited editors available under the [Startup
- Plan](https://mintlify.com/pricing)
-
-
-You should see the following if the deploy successfully went through:
-
-
-
-
-
-## Troubleshooting
-
-Here's how to solve some common problems when working with the CLI.
-
-
-
- Update to Node v18. Run `mintlify install` and try again.
-
-
-Go to the `C:/Users/Username/.mintlify/` directory and remove the `mint`
-folder. Then Open the Git Bash in this location and run `git clone
-https://github.com/mintlify/mint.git`.
-
-Repeat step 3.
-
-
-
- Try navigating to the root of your device and delete the ~/.mintlify folder.
- Then run `mintlify dev` again.
-
-
-
-Curious about what changed in a CLI version? [Check out the CLI changelog.](/changelog/command-line)
diff --git a/docs/essentials/code.mdx b/docs/essentials/code.mdx
deleted file mode 100644
index d2a462a7..00000000
--- a/docs/essentials/code.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: 'Code Blocks'
-description: 'Display inline code and code blocks'
-icon: 'code'
----
-
-## Basic
-
-### Inline Code
-
-To denote a `word` or `phrase` as code, enclose it in backticks (`).
-
-```
-To denote a `word` or `phrase` as code, enclose it in backticks (`).
-```
-
-### Code Block
-
-Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
-
-```java HelloWorld.java
-class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
-}
-```
-
-````md
-```java HelloWorld.java
-class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
-}
-```
-````
diff --git a/docs/essentials/images.mdx b/docs/essentials/images.mdx
deleted file mode 100644
index 60ad42d3..00000000
--- a/docs/essentials/images.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: 'Images and Embeds'
-description: 'Add image, video, and other HTML elements'
-icon: 'image'
----
-
-
-
-## Image
-
-### Using Markdown
-
-The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code
-
-```md
-
-```
-
-Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed.
-
-### Using Embeds
-
-To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images
-
-```html
-
-```
-
-## Embeds and HTML elements
-
-VIDEO
-
-
-
-
-
-Mintlify supports [HTML tags in Markdown](https://www.markdownguide.org/basic-syntax/#html). This is helpful if you prefer HTML tags to Markdown syntax, and lets you create documentation with infinite flexibility.
-
-
-
-### iFrames
-
-Loads another HTML page within the document. Most commonly used for embedding videos.
-
-```html
-VIDEO
-```
diff --git a/docs/essentials/markdown.mdx b/docs/essentials/markdown.mdx
deleted file mode 100644
index c8ad9c1f..00000000
--- a/docs/essentials/markdown.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: 'Markdown Syntax'
-description: 'Text, title, and styling in standard markdown'
-icon: 'text-size'
----
-
-## Titles
-
-Best used for section headers.
-
-```md
-## Titles
-```
-
-### Subtitles
-
-Best use to subsection headers.
-
-```md
-### Subtitles
-```
-
-
-
-Each **title** and **subtitle** creates an anchor and also shows up on the table of contents on the right.
-
-
-
-## Text Formatting
-
-We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
-
-| Style | How to write it | Result |
-| ------------- | ----------------- | --------------- |
-| Bold | `**bold**` | **bold** |
-| Italic | `_italic_` | _italic_ |
-| Strikethrough | `~strikethrough~` | ~strikethrough~ |
-
-You can combine these. For example, write `**_bold and italic_**` to get **_bold and italic_** text.
-
-You need to use HTML to write superscript and subscript text. That is, add `` or `` around your text.
-
-| Text Size | How to write it | Result |
-| ----------- | ------------------------ | ---------------------- |
-| Superscript | `superscript ` | superscript |
-| Subscript | `subscript ` | subscript |
-
-## Linking to Pages
-
-You can add a link by wrapping text in `[]()`. You would write `[link to google](https://google.com)` to [link to google](https://google.com).
-
-Links to pages in your docs need to be root-relative. Basically, you should include the entire folder path. For example, `[link to text](/writing-content/text)` links to the page "Text" in our components section.
-
-Relative links like `[link to text](../text)` will open slower because we cannot optimize them as easily.
-
-## Blockquotes
-
-### Singleline
-
-To create a blockquote, add a `>` in front of a paragraph.
-
-> Dorothy followed her through many of the beautiful rooms in her castle.
-
-```md
-> Dorothy followed her through many of the beautiful rooms in her castle.
-```
-
-### Multiline
-
-> Dorothy followed her through many of the beautiful rooms in her castle.
->
-> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
-
-```md
-> Dorothy followed her through many of the beautiful rooms in her castle.
->
-> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
-```
-
-### LaTeX
-
-Mintlify supports [LaTeX](https://www.latex-project.org) through the Latex component.
-
-8 x (vk x H1 - H2) = (0,1)
-
-```md
-8 x (vk x H1 - H2) = (0,1)
-```
diff --git a/docs/essentials/navigation.mdx b/docs/essentials/navigation.mdx
deleted file mode 100644
index ca44bb64..00000000
--- a/docs/essentials/navigation.mdx
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: 'Navigation'
-description: 'The navigation field in mint.json defines the pages that go in the navigation menu'
-icon: 'map'
----
-
-The navigation menu is the list of links on every website.
-
-You will likely update `mint.json` every time you add a new page. Pages do not show up automatically.
-
-## Navigation syntax
-
-Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names.
-
-
-
-```json Regular Navigation
-"navigation": [
- {
- "group": "Getting Started",
- "pages": ["quickstart"]
- }
-]
-```
-
-```json Nested Navigation
-"navigation": [
- {
- "group": "Getting Started",
- "pages": [
- "quickstart",
- {
- "group": "Nested Reference Pages",
- "pages": ["nested-reference-page"]
- }
- ]
- }
-]
-```
-
-
-
-## Folders
-
-Simply put your MDX files in folders and update the paths in `mint.json`.
-
-For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`.
-
-
-
-You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted.
-
-
-
-```json Navigation With Folder
-"navigation": [
- {
- "group": "Group Name",
- "pages": ["your-folder/your-page"]
- }
-]
-```
-
-## Hidden Pages
-
-MDX files not included in `mint.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them.
diff --git a/docs/essentials/reusable-snippets.mdx b/docs/essentials/reusable-snippets.mdx
deleted file mode 100644
index a0a55297..00000000
--- a/docs/essentials/reusable-snippets.mdx
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Reusable Snippets
-description: Reusable, custom snippets to keep content in sync
-icon: 'recycle'
----
-
-import SnippetIntro from '/snippets/snippet-intro.mdx';
-
-
-
-## Creating a custom snippet
-
-**Pre-condition**: You must create your snippet file in the `snippets` directory.
-
-
- Any page in the `snippets` directory will be treated as a snippet and will not
- be rendered into a standalone page. If you want to create a standalone page
- from the snippet, import the snippet into another file and call it as a
- component.
-
-
-### Default export
-
-1. Add content to your snippet file that you want to re-use across multiple
- locations. Optionally, you can add variables that can be filled in via props
- when you import the snippet.
-
-```mdx snippets/my-snippet.mdx
-Hello world! This is my content I want to reuse across pages. My keyword of the
-day is {word}.
-```
-
-
- The content that you want to reuse must be inside the `snippets` directory in
- order for the import to work.
-
-
-2. Import the snippet into your destination file.
-
-```mdx destination-file.mdx
----
-title: My title
-description: My Description
----
-
-import MySnippet from '/snippets/path/to/my-snippet.mdx';
-
-## Header
-
-Lorem impsum dolor sit amet.
-
-
-```
-
-### Reusable variables
-
-1. Export a variable from your snippet file:
-
-```mdx snippets/path/to/custom-variables.mdx
-export const myName = 'my name';
-
-export const myObject = { fruit: 'strawberries' };
-```
-
-2. Import the snippet from your destination file and use the variable:
-
-```mdx destination-file.mdx
----
-title: My title
-description: My Description
----
-
-import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
-
-Hello, my name is {myName} and I like {myObject.fruit}.
-```
-
-### Reusable components
-
-1. Inside your snippet file, create a component that takes in props by exporting
- your component in the form of an arrow function.
-
-```mdx snippets/custom-component.mdx
-export const MyComponent = ({ title }) => (
-
-
{title}
-
... snippet content ...
-
-);
-```
-
-
- MDX does not compile inside the body of an arrow function. Stick to HTML
- syntax when you can or use a default export if you need to use MDX.
-
-
-2. Import the snippet into your destination file and pass in the props
-
-```mdx destination-file.mdx
----
-title: My title
-description: My Description
----
-
-import { MyComponent } from '/snippets/custom-component.mdx';
-
-Lorem ipsum dolor sit amet.
-
-
-```
diff --git a/docs/essentials/settings.mdx b/docs/essentials/settings.mdx
deleted file mode 100644
index d9dd2d7e..00000000
--- a/docs/essentials/settings.mdx
+++ /dev/null
@@ -1,318 +0,0 @@
----
-title: 'Global Settings'
-description: 'Mintlify gives you complete control over the look and feel of your documentation using the mint.json file'
-icon: 'gear'
----
-
-Every Mintlify site needs a `mint.json` file with the core configuration settings. Learn more about the [properties](#properties) below.
-
-## Properties
-
-
-Name of your project. Used for the global title.
-
-Example: `mintlify`
-
-
-
-
- An array of groups with all the pages within that group
-
-
- The name of the group.
-
- Example: `Settings`
-
-
-
- The relative paths to the markdown files that will serve as pages.
-
- Example: `["customization", "page"]`
-
-
-
-
-
-
-
- Path to logo image or object with path to "light" and "dark" mode logo images
-
-
- Path to the logo in light mode
-
-
- Path to the logo in dark mode
-
-
- Where clicking on the logo links you to
-
-
-
-
-
- Path to the favicon image
-
-
-
- Hex color codes for your global theme
-
-
- The primary color. Used for most often for highlighted content, section
- headers, accents, in light mode
-
-
- The primary color for dark mode. Used for most often for highlighted
- content, section headers, accents, in dark mode
-
-
- The primary color for important buttons
-
-
- The color of the background in both light and dark mode
-
-
- The hex color code of the background in light mode
-
-
- The hex color code of the background in dark mode
-
-
-
-
-
-
-
- Array of `name`s and `url`s of links you want to include in the topbar
-
-
- The name of the button.
-
- Example: `Contact us`
-
-
- The url once you click on the button. Example: `https://mintlify.com/contact`
-
-
-
-
-
-
-
-
- Link shows a button. GitHub shows the repo information at the url provided including the number of GitHub stars.
-
-
- If `link`: What the button links to.
-
- If `github`: Link to the repository to load GitHub information from.
-
-
- Text inside the button. Only required if `type` is a `link`.
-
-
-
-
-
-
- Array of version names. Only use this if you want to show different versions
- of docs with a dropdown in the navigation bar.
-
-
-
- An array of the anchors, includes the `icon`, `color`, and `url`.
-
-
- The [Font Awesome](https://fontawesome.com/search?s=brands%2Cduotone) icon used to feature the anchor.
-
- Example: `comments`
-
-
- The name of the anchor label.
-
- Example: `Community`
-
-
- The start of the URL that marks what pages go in the anchor. Generally, this is the name of the folder you put your pages in.
-
-
- The hex color of the anchor icon background. Can also be a gradient if you pass an object with the properties `from` and `to` that are each a hex color.
-
-
- Used if you want to hide an anchor until the correct docs version is selected.
-
-
- Pass `true` if you want to hide the anchor until you directly link someone to docs inside it.
-
-
- One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
-
-
-
-
-
-
- Override the default configurations for the top-most anchor.
-
-
- The name of the top-most anchor
-
-
- Font Awesome icon.
-
-
- One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
-
-
-
-
-
- An array of navigational tabs.
-
-
- The name of the tab label.
-
-
- The start of the URL that marks what pages go in the tab. Generally, this
- is the name of the folder you put your pages in.
-
-
-
-
-
- Configuration for API settings. Learn more about API pages at [API Components](/api-playground/demo).
-
-
- The base url for all API endpoints. If `baseUrl` is an array, it will enable for multiple base url
- options that the user can toggle.
-
-
-
-
-
- The authentication strategy used for all API endpoints.
-
-
- The name of the authentication parameter used in the API playground.
-
- If method is `basic`, the format should be `[usernameName]:[passwordName]`
-
-
- The default value that's designed to be a prefix for the authentication input field.
-
- E.g. If an `inputPrefix` of `AuthKey` would inherit the default input result of the authentication field as `AuthKey`.
-
-
-
-
-
- Configurations for the API playground
-
-
-
- Whether the playground is showing, hidden, or only displaying the endpoint with no added user interactivity `simple`
-
- Learn more at the [playground guides](/api-playground/demo)
-
-
-
-
-
- Enabling this flag ensures that key ordering in OpenAPI pages matches the key ordering defined in the OpenAPI file.
-
- This behavior will soon be enabled by default, at which point this field will be deprecated.
-
-
-
-
-
-
- A string or an array of strings of URL(s) or relative path(s) pointing to your
- OpenAPI file.
-
- Examples:
-
- ```json Absolute
- "openapi": "https://example.com/openapi.json"
- ```
- ```json Relative
- "openapi": "/openapi.json"
- ```
- ```json Multiple
- "openapi": ["https://example.com/openapi1.json", "/openapi2.json", "/openapi3.json"]
- ```
-
-
-
-
-
- An object of social media accounts where the key:property pair represents the social media platform and the account url.
-
- Example:
- ```json
- {
- "x": "https://x.com/mintlify",
- "website": "https://mintlify.com"
- }
- ```
-
-
- One of the following values `website`, `facebook`, `x`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`
-
- Example: `x`
-
-
- The URL to the social platform.
-
- Example: `https://x.com/mintlify`
-
-
-
-
-
- Configurations to enable feedback buttons
-
-
-
- Enables a button to allow users to suggest edits via pull requests
-
-
- Enables a button to allow users to raise an issue about the documentation
-
-
-
-
-
- Customize the dark mode toggle.
-
-
- Set if you always want to show light or dark mode for new users. When not
- set, we default to the same mode as the user's operating system.
-
-
- Set to true to hide the dark/light mode toggle. You can combine `isHidden` with `default` to force your docs to only use light or dark mode. For example:
-
-
- ```json Only Dark Mode
- "modeToggle": {
- "default": "dark",
- "isHidden": true
- }
- ```
-
- ```json Only Light Mode
- "modeToggle": {
- "default": "light",
- "isHidden": true
- }
- ```
-
-
-
-
-
-
-
-
- A background image to be displayed behind every page. See example with
- [Infisical](https://infisical.com/docs) and [FRPC](https://frpc.io).
-
diff --git a/docs/favicon.svg b/docs/favicon.svg
index 6a323326..9bff23a7 100644
--- a/docs/favicon.svg
+++ b/docs/favicon.svg
@@ -1,49 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/docs/generator/csproj-parser.mjs b/docs/generator/csproj-parser.mjs
new file mode 100644
index 00000000..4a536d2c
--- /dev/null
+++ b/docs/generator/csproj-parser.mjs
@@ -0,0 +1,57 @@
+import { existsSync, readFileSync, statSync } from 'fs'
+import { basename, extname } from 'path'
+
+export const isFile = (filePath) => existsSync(filePath) && statSync(filePath).isFile()
+
+export const fileContents = (pathOrContents) => {
+ if (isFile(pathOrContents)) {
+ return readFileSync(pathOrContents, 'utf8').toString()
+ }
+ return pathOrContents
+}
+
+const extractProjectSdks = (content) => {
+ return [...content.matchAll(/)/g)]
+ .flatMap(ref => ref[1].split(';'))
+ .sort()
+}
+
+const extractPackageRefs = (content) => {
+ return [...content.matchAll(/ ({ name: ref[1], version: ref[2] }))
+ .sort((a, b) => a.name.localeCompare(b.name))
+}
+
+const extractExtrasRefs = (content) => {
+ return [...content.matchAll(/<([A-Za-z][A-Za-z0-9]*)[^>]*>(.*?)<\/([A-Za-z][A-Za-z0-9]*)>/g)]
+ .map(ref => ({ name: ref[1], value: ref[2] }))
+ .sort((a, b) => a.name.localeCompare(b.name))
+}
+
+const parseProjectFileContent = (filePath, content) => {
+ return {
+ name: basename(filePath, extname(filePath)),
+ path: filePath,
+ type: '',
+ guid: '',
+ sdks: extractProjectSdks(content),
+ dependencies: extractPackageRefs(content),
+ extras: extractExtrasRefs(content)
+ }
+}
+
+export const supportedProjectFileExtensions = ['.csproj', '.fsproj', '.vbproj', '.vcxproj']
+
+export const parseCsproj = (pathOrContents) => {
+ const projectFilePath = isFile(pathOrContents) ? pathOrContents : ''
+ if (projectFilePath !== '' && !supportedProjectFileExtensions.includes(extname(projectFilePath))) throw new Error(`Not a valid Visual Studio project file name: ${projectFilePath}`)
+ const content = fileContents(pathOrContents)
+ return parseProjectFileContent(projectFilePath, content)
+}
+
+export const extractPropValue = (content, tagName) => {
+ const regex = new RegExp(`<${tagName}>(.*?)<\/${tagName}>`, 'g')
+ return [...content.matchAll(regex)]
+ .map(ref => (ref[1]))
+ .at(0)
+}
diff --git a/docs/generator/doc-gen.mjs b/docs/generator/doc-gen.mjs
new file mode 100644
index 00000000..9c55d636
--- /dev/null
+++ b/docs/generator/doc-gen.mjs
@@ -0,0 +1,95 @@
+import { unified } from "unified";
+import remarkParse from "remark-parse";
+import fs from "node:fs/promises";
+import path from "node:path";
+import { toMarkdown } from "mdast-util-to-markdown";
+import { glob } from "glob";
+import { parseCsproj, extractPropValue } from "./csproj-parser.mjs";
+import mint from "../mint.json" assert { type: "json" };
+
+const projectRoot = "../../src";
+const projectBuild = "../../build";
+
+const slugify = (text) => {
+ return text
+ .toString()
+ .normalize("NFKD")
+ .toLowerCase()
+ .trim()
+ .replace(/\s+/g, "-")
+ .replace(/[^\w\-]+/g, "")
+ .replace(/\_/g, "-")
+ .replace(/\-\-+/g, "-")
+ .replace(/\-$/g, "");
+};
+
+const packages = (await fs.readdir(projectRoot)).filter(
+ (path) =>
+ !path.includes("Pulse.UI") &&
+ !path.includes("Pulse.Publisher") &&
+ path.includes("Pulse"),
+);
+
+const template = (await fs.readFile("package.template.mdx")).toString("utf-8");
+const installationTemplate = (
+ await fs.readFile("installation.template.mdx")
+).toString("utf-8");
+const versionProps = (
+ await fs.readFile(path.join(projectBuild, "versions.props"))
+).toString("utf-8");
+const healthchecks = mint.navigation.find(
+ (nav) => nav.group === "Healthchecks",
+);
+healthchecks.pages = ["quickstart"];
+
+for (const packageName of packages) {
+ const readMePath = path.join(projectRoot, packageName, "readme.md");
+ const [csprojPath] = await glob(
+ path.join(projectRoot, packageName, "*.csproj"),
+ );
+ const csprojStr = await fs.readFile(csprojPath);
+ const csproj = parseCsproj(csprojStr.toString("utf-8"));
+ const docKind = csproj.extras.find(
+ (extra) => extra.name === "DocKind",
+ )?.value;
+ const projectVersionTag = csproj.extras
+ .find((extra) => extra.name === "VersionPrefix")
+ ?.value?.replace("$", "")
+ ?.replace("(", "")
+ ?.replace(")", "");
+ const version = extractPropValue(versionProps, projectVersionTag);
+ const readMeFile = await fs.readFile(readMePath);
+ const processor = unified().use(remarkParse);
+ const tokens = processor.parse(readMeFile);
+
+ const packageTitle = tokens.children.shift()?.children?.at(0)?.value?.trim();
+ const description = toMarkdown(tokens.children.shift())?.trim();
+
+ let installationContent = installationTemplate;
+ installationContent = installationContent.replaceAll("{{version}}", version);
+ installationContent = installationContent.replaceAll(
+ "{{packageName}}",
+ `AspNetCore.${path.parse(csprojPath).name}`,
+ );
+
+ let packageContent = template;
+ packageContent = packageContent.replace(
+ "{{installation}}",
+ installationContent,
+ );
+ packageContent = packageContent.replace("{{title}}", packageTitle);
+ packageContent = packageContent.replace("{{description}}", description);
+ packageContent = packageContent.replace("{{content}}", toMarkdown(tokens));
+ packageContent = packageContent.replace("{{icon}}", docKind);
+
+ const pageName = slugify(packageTitle);
+ const templateFileName = `${pageName}.mdx`;
+ await fs.writeFile(
+ path.join("..", "packages", templateFileName),
+ packageContent,
+ );
+
+ healthchecks.pages.push(`packages/${pageName}`);
+
+ await fs.writeFile(path.join("..", "mint.json"), JSON.stringify(mint, null, 2));
+}
diff --git a/docs/generator/installation.template.mdx b/docs/generator/installation.template.mdx
new file mode 100644
index 00000000..447adcc1
--- /dev/null
+++ b/docs/generator/installation.template.mdx
@@ -0,0 +1,17 @@
+## Installation
+
+
+
+ ```bash
+ dotnet add package {{packageName}} --version {{version}}
+ ```
+
+
+ ```xml
+
+ ```
+
+
+ Go to nuget page
+
+
diff --git a/docs/generator/package.json b/docs/generator/package.json
new file mode 100644
index 00000000..861504ed
--- /dev/null
+++ b/docs/generator/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "generator",
+ "version": "1.0.0",
+ "description": "",
+ "main": "doc-gen.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "start": "node doc-gen.mjs"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "remark-parse": "^11.0.0",
+ "mdast-util-to-markdown": "^2.1.0",
+ "unified": "^11.0.4",
+ "glob": "^10.4.1"
+ }
+}
diff --git a/docs/generator/package.template.mdx b/docs/generator/package.template.mdx
new file mode 100644
index 00000000..df0f1c9e
--- /dev/null
+++ b/docs/generator/package.template.mdx
@@ -0,0 +1,9 @@
+---
+title: '{{title}}'
+description: '{{description}}'
+icon: '{{icon}}'
+---
+
+{{installation}}
+
+{{content}}
diff --git a/docs/generator/yarn.lock b/docs/generator/yarn.lock
new file mode 100644
index 00000000..d31bf491
--- /dev/null
+++ b/docs/generator/yarn.lock
@@ -0,0 +1,636 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+ dependencies:
+ string-width "^5.1.2"
+ string-width-cjs "npm:string-width@^4.2.0"
+ strip-ansi "^7.0.1"
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+ wrap-ansi "^8.1.0"
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
+"@pkgjs/parseargs@^0.11.0":
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
+ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+
+"@types/debug@^4.0.0":
+ version "4.1.12"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
+ integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/mdast@^4.0.0":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6"
+ integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/ms@*":
+ version "0.7.34"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433"
+ integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
+
+"@types/unist@*", "@types/unist@^3.0.0":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20"
+ integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+bail@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
+ integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+character-entities@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
+ integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+cross-spawn@^7.0.0:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+debug@^4.0.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decode-named-character-reference@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
+ integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
+ dependencies:
+ character-entities "^2.0.0"
+
+dequal@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
+devlop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018"
+ integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
+ dependencies:
+ dequal "^2.0.0"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+foreground-child@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
+ integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^4.0.1"
+
+glob@^10.4.1:
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2"
+ integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^3.1.2"
+ minimatch "^9.0.4"
+ minipass "^7.1.2"
+ path-scurry "^1.11.1"
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-plain-obj@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
+ integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+jackspeak@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab"
+ integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
+longest-streak@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4"
+ integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==
+
+lru-cache@^10.2.0:
+ version "10.2.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
+ integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
+
+mdast-util-from-markdown@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz#32a6e8f512b416e1f51eb817fc64bd867ebcd9cc"
+ integrity sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark "^4.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-decode-string "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+mdast-util-phrasing@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3"
+ integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ unist-util-is "^6.0.0"
+
+mdast-util-to-markdown@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4"
+ integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-phrasing "^4.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark-util-decode-string "^2.0.0"
+ unist-util-visit "^5.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814"
+ integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+
+micromark-core-commonmark@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz#9a45510557d068605c6e9a80f282b2bb8581e43d"
+ integrity sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-factory-destination "^2.0.0"
+ micromark-factory-label "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-factory-title "^2.0.0"
+ micromark-factory-whitespace "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-html-tag-name "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-destination@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07"
+ integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-label@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a"
+ integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-space@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030"
+ integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-title@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95"
+ integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-whitespace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763"
+ integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-character@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz#31320ace16b4644316f6bf057531689c71e2aee1"
+ integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-chunked@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89"
+ integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-classify-character@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34"
+ integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-combine-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5"
+ integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==
+ dependencies:
+ micromark-util-chunked "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-decode-numeric-character-reference@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5"
+ integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-decode-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a"
+ integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1"
+ integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==
+
+micromark-util-html-tag-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4"
+ integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==
+
+micromark-util-normalize-identifier@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b"
+ integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-resolve-all@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364"
+ integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==
+ dependencies:
+ micromark-util-types "^2.0.0"
+
+micromark-util-sanitize-uri@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de"
+ integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-subtokenize@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz#76129c49ac65da6e479c09d0ec4b5f29ec6eace5"
+ integrity sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-symbol@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044"
+ integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==
+
+micromark-util-types@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e"
+ integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==
+
+micromark@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249"
+ integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-core-commonmark "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-combine-extensions "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+minimatch@^9.0.4:
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
+ integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
+ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-scurry@^1.11.1:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
+ integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
+ dependencies:
+ lru-cache "^10.2.0"
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
+remark-parse@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1"
+ integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unified "^11.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+signal-exit@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
+ name string-width-cjs
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ name strip-ansi-cjs
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+trough@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f"
+ integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
+
+unified@^11.0.0, unified@^11.0.4:
+ version "11.0.4"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015"
+ integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ bail "^2.0.0"
+ devlop "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^6.0.0"
+
+unist-util-is@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424"
+ integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-stringify-position@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2"
+ integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-visit-parents@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815"
+ integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+
+unist-util-visit@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
+ integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+ unist-util-visit-parents "^6.0.0"
+
+vfile-message@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181"
+ integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+vfile@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536"
+ integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-stringify-position "^4.0.0"
+ vfile-message "^4.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
+zwitch@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"
+ integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==
diff --git a/docs/introduction.mdx b/docs/introduction.mdx
deleted file mode 100644
index 2589c0b9..00000000
--- a/docs/introduction.mdx
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: Introduction
-description: 'Welcome to the home of your new documentation'
----
-
-
-
-
-## Setting up
-
-The first step to world-class documentation is setting up your editing environments.
-
-
-
- Get your docs set up locally for easy development
-
-
- Preview your changes before you push to make sure they're perfect
-
-
-
-## Make it yours
-
-Update your docs to your brand and add valuable content for the best user conversion.
-
-
-
- Customize your docs to your company's colors and brands
-
-
- Automatically generate endpoints from an OpenAPI spec
-
-
- Build interactive features and designs to guide your users
-
-
- Check out our showcase of our favorite documentation
-
-
diff --git a/docs/logo/dark.svg b/docs/logo/dark.svg
index a6283786..a95a3ae8 100644
--- a/docs/logo/dark.svg
+++ b/docs/logo/dark.svg
@@ -1,55 +1,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/docs/logo/light.svg b/docs/logo/light.svg
index 582b3b95..04ace0cc 100644
--- a/docs/logo/light.svg
+++ b/docs/logo/light.svg
@@ -1,51 +1,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/docs/mint.json b/docs/mint.json
index d6f7e33d..59adbb17 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -1,71 +1,119 @@
{
"$schema": "https://mintlify.com/schema.json",
- "name": "Starter Kit",
+ "name": "AspNetCore.Pulse",
"logo": {
"dark": "/logo/dark.svg",
"light": "/logo/light.svg"
},
"favicon": "/favicon.svg",
"colors": {
- "primary": "#0D9373",
- "light": "#07C983",
- "dark": "#0D9373",
- "anchors": {
- "from": "#0D9373",
- "to": "#07C983"
+ "primary": "#7E53F8",
+ "light": "#BFA8FF",
+ "dark": "#4C22C0",
+ "background": {
+ "dark": "#121212"
}
},
- "topbarLinks": [
- {
- "name": "Support",
- "url": "mailto:hi@mintlify.com"
- }
- ],
"topbarCtaButton": {
- "name": "Dashboard",
- "url": "https://dashboard.mintlify.com"
+ "type": "github",
+ "url": "https://github.com/victor-teles/AspNetCore.Pulse"
+ },
+ "modeToggle": {
+ "default": "dark",
+ "isHidden": true
+ },
+ "feedback": {
+ "suggestEdit": true,
+ "raiseIssue": true,
+ "thumbsRating": true
},
"tabs": [
{
- "name": "API Reference",
+ "name": "Pulse UI",
"url": "api-reference"
}
],
"anchors": [
{
- "name": "Documentation",
- "icon": "book-open-cover",
- "url": "https://mintlify.com/docs"
+ "name": "Releases",
+ "icon": "megaphone",
+ "url": "https://github.com/victor-teles/AspNetCore.Pulse/releases"
},
{
- "name": "Community",
- "icon": "slack",
- "url": "https://mintlify.com/community"
+ "name": "Issues",
+ "icon": "bugs",
+ "url": "https://github.com/victor-teles/AspNetCore.Pulse/issues"
},
{
- "name": "Blog",
- "icon": "newspaper",
- "url": "https://mintlify.com/blog"
+ "name": "Request a feature",
+ "icon": "question",
+ "url": "https://github.com/victor-teles/AspNetCore.Pulse/pulls"
}
],
"navigation": [
{
- "group": "Get Started",
+ "group": "Healthchecks",
"pages": [
- "introduction",
"quickstart",
- "development"
+ "packages/application-status",
+ "packages/arangodb",
+ "packages/amazon-s3",
+ "packages/aws-secrets-manager",
+ "packages/aws-sns",
+ "packages/aws-sqs",
+ "packages/aws-systems-manager",
+ "packages/azure-data-tables",
+ "packages/azure-iot-hub",
+ "packages/azure-keyvault-secrets",
+ "packages/azure-event-hubs",
+ "packages/azure-blob-storage",
+ "packages/azure-file-storage",
+ "packages/azure-queue-storage",
+ "packages/azure-application-insights",
+ "packages/azure-digital-twin",
+ "packages/azure-keyvault",
+ "packages/azure-search",
+ "packages/azure-service-bus",
+ "packages/consul",
+ "packages/azure-cosmos-db",
+ "packages/dapr",
+ "packages/documentdb",
+ "packages/amazon-dynamodb",
+ "packages/elasticsearch",
+ "packages/eventstore",
+ "packages/eventstore-grpc",
+ "packages/gcp-cloud-firestore",
+ "packages/gremlin",
+ "packages/hangfire",
+ "packages/ibmmq",
+ "packages/influxdb",
+ "packages/kafka",
+ "packages/kubernetes",
+ "packages/milvus",
+ "packages/mongodb",
+ "packages/mysql",
+ "packages/nats",
+ "packages/network",
+ "packages/postgresql",
+ "packages/openid-connect",
+ "packages/oracle",
+ "packages/prometheus-metrics",
+ "packages/rabbitmq",
+ "packages/ravendb",
+ "packages/redis",
+ "packages/sendgrid",
+ "packages/sinalr",
+ "packages/solr",
+ "packages/sql-server",
+ "packages/sqlite",
+ "packages/system",
+ "packages/uris"
]
},
{
- "group": "Essentials",
+ "group": "Push results",
"pages": [
- "essentials/markdown",
- "essentials/code",
- "essentials/images",
- "essentials/settings",
- "essentials/navigation",
- "essentials/reusable-snippets"
+ "packages/amazon-s3"
]
},
{
@@ -82,10 +130,5 @@
"api-reference/endpoint/delete"
]
}
- ],
- "footerSocials": {
- "x": "https://x.com/mintlify",
- "github": "https://github.com/mintlify",
- "linkedin": "https://www.linkedin.com/company/mintsearch"
- }
+ ]
}
\ No newline at end of file
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index d7f34867..6ee11222 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -1,86 +1,308 @@
---
title: 'Quickstart'
-description: 'Start building awesome documentation in under 5 minutes'
+description: 'Pulse is a collection of healthchecks packages for many services and databases'
+icon: "wave-pulse"
---
-## Setup your development
-
-Learn how to update your docs locally and and deploy them to the public.
-
-### Edit and preview
-
-
-
- During the onboarding process, we created a repository on your Github with
- your docs content. You can find this repository on our
- [dashboard](https://dashboard.mintlify.com). To clone the repository
- locally, follow these
- [instructions](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)
- in your terminal.
-
-
- Previewing helps you make sure your changes look as intended. We built a
- command line interface to render these changes locally. 1. Install the
- [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the
- documentation changes locally with this command: ``` npm i -g mintlify ```
- 2. Run the following command at the root of your documentation (where
- `mint.json` is): ``` mintlify dev ```
-
-
-
-### Deploy your changes
-
-
-
-
- Our Github app automatically deploys your changes to your docs site, so you
- don't need to manage deployments yourself. You can find the link to install on
- your [dashboard](https://dashboard.mintlify.com). Once the bot has been
- successfully installed, there should be a check mark next to the commit hash
- of the repo.
-
-
- [Commit and push your changes to
- Git](https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository#about-git-push)
- for your changes to update in your docs site. If you push and don't see that
- the Github app successfully deployed your changes, you can also manually
- update your docs through our [dashboard](https://dashboard.mintlify.com).
-
-
-
-
-## Update your docs
-
-Add content directly in your files with MDX syntax and React components. You can use any of our components, or even build your own.
-
-
-
-
- Add flair to your docs with personalized branding.
-
-
-
- Implement your OpenAPI spec and enable API user interaction.
-
-
-
- Draw insights from user interactions with your documentation.
-
-
-
- Keep your docs on your own website's subdomain.
-
+ASP.NET Core versions supported: 8.0, 7.0, 6.0, 5.0, 3.1, 3.0 and 2.2
+
+# Choose your check 🫀 👇
+
+### AWS
+
+
+
+
+
+
+
+
+
+
+### Azure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Databases
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### GCP
+
+
+
+
+
+### Misc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/snippets/snippet-intro.mdx b/docs/snippets/snippet-intro.mdx
deleted file mode 100644
index c57e7c75..00000000
--- a/docs/snippets/snippet-intro.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-One of the core principles of software development is DRY (Don't Repeat
-Yourself). This is a principle that apply to documentation as
-well. If you find yourself repeating the same content in multiple places, you
-should consider creating a custom snippet to keep your content in sync.
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 9b328ef6..c4a1bc86 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -7,8 +7,8 @@
icon.png
true
Apache-2.0
- https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks
- https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks
+ https://pulse.mintlify.app
+ https://github.com/victor-teles/AspNetCore.Pulse
Xabaril Contributors
Xabaril
git
diff --git a/src/Pulse.ApplicationStatus/README.md b/src/Pulse.ApplicationStatus/README.md
index eca33fbd..9859ac69 100644
--- a/src/Pulse.ApplicationStatus/README.md
+++ b/src/Pulse.ApplicationStatus/README.md
@@ -1,8 +1,7 @@
-# Application Status Health Check
+# Application Status
+
+This health check verifies that application is up and running based on `IHostApplicationLifetime`. If application received stop signal, eg: SIGTERM in docker container - then health status will be unhealthy and application wont be able to receive new requests.
-This health check verifies that application is up and runnning based on `IHostApplicationLifetime`.
-If application received stop signal, eg: SIGTERM in docker container - then health status will be unhealthy and
-application won't be able to receive new requests.
## Example Usage
diff --git a/src/Pulse.ArangoDb/README.md b/src/Pulse.ArangoDb/README.md
index e157bc2d..baf63372 100644
--- a/src/Pulse.ArangoDb/README.md
+++ b/src/Pulse.ArangoDb/README.md
@@ -1,4 +1,4 @@
-# ArangoDb Health Check
+# ArangoDb
This health check verifies the ability to communicate with a ArangoDb server. ArangoDb is a Hight Available and Multi-Model database.
For more information about ArangoDb please check [ArangoDb Home](https://www.arangodb.com/)
diff --git a/src/Pulse.Aws.S3/Pulse.Aws.S3.csproj b/src/Pulse.Aws.S3/Pulse.Aws.S3.csproj
index a627e622..b71ec05e 100644
--- a/src/Pulse.Aws.S3/Pulse.Aws.S3.csproj
+++ b/src/Pulse.Aws.S3/Pulse.Aws.S3.csproj
@@ -5,6 +5,7 @@
$(PackageTags);AWS;S3;Simple Storage Service
Pulse.Aws.S3 is the health check package for S3 Buckets and files.
$(HealthCheckAWSS3)
+ aws
diff --git a/src/Pulse.Aws.S3/README.md b/src/Pulse.Aws.S3/README.md
index 8e9ed601..00366e89 100644
--- a/src/Pulse.Aws.S3/README.md
+++ b/src/Pulse.Aws.S3/README.md
@@ -1,4 +1,4 @@
-# Amazon S3 Health Check
+# Amazon S3
This health check verifies the ability to communicate with [Amazon S3](https://aws.amazon.com/s3/).
diff --git a/src/Pulse.Aws.SecretsManager/README.md b/src/Pulse.Aws.SecretsManager/README.md
index 826626d0..17a9af8e 100644
--- a/src/Pulse.Aws.SecretsManager/README.md
+++ b/src/Pulse.Aws.SecretsManager/README.md
@@ -1,4 +1,4 @@
-# AWS Secrets Manager Health Check
+# AWS Secrets Manager
This health check verifies the ability to communicate with Amazon Secrets Manager and the existence of some secrets. For more information about AWS Secrets Manager check the [AWS Secrets Manager Site](https://aws.amazon.com/secrets-manager/)
diff --git a/src/Pulse.Aws.Sns/README.md b/src/Pulse.Aws.Sns/README.md
index 22848fd3..0c0219ca 100644
--- a/src/Pulse.Aws.Sns/README.md
+++ b/src/Pulse.Aws.Sns/README.md
@@ -1,4 +1,4 @@
-# AWS SNS Health Check
+# AWS SNS
This health check verifies the ability to communicate with Amazon SNS and the existence of some topics and its subscriptions. For more information about AWS SNS check the [AWS SNS Site](https://aws.amazon.com/sns/)
diff --git a/src/Pulse.Aws.Sqs/README.md b/src/Pulse.Aws.Sqs/README.md
index e0b87da0..848d64c5 100644
--- a/src/Pulse.Aws.Sqs/README.md
+++ b/src/Pulse.Aws.Sqs/README.md
@@ -1,4 +1,4 @@
-# AWS SQS Health Check
+# AWS SQS
This health check verifies the ability to communicate with Amazon SQS and the existence of some queues. For more information about AWS SQS check the [AWS SQS Site](https://aws.amazon.com/sqs/)
diff --git a/src/Pulse.Aws.SystemsManager/README.md b/src/Pulse.Aws.SystemsManager/README.md
index b80c85a4..8ac26fbc 100644
--- a/src/Pulse.Aws.SystemsManager/README.md
+++ b/src/Pulse.Aws.SystemsManager/README.md
@@ -1,4 +1,4 @@
-# AWS Systems Manager Health Check
+# AWS Systems Manager
This health check verifies the ability to communicate with Amazon Systems Manager and the existence of some parameters on the Parameter Store. For more information about AWS Systems Mananger check the [AWS Systems Manager Site (Parameter Store)](https://aws.amazon.com/systems-manager/features/#Parameter_Store)
diff --git a/src/Pulse.Azure.Data.Tables/README.md b/src/Pulse.Azure.Data.Tables/README.md
index 096f084f..59631718 100644
--- a/src/Pulse.Azure.Data.Tables/README.md
+++ b/src/Pulse.Azure.Data.Tables/README.md
@@ -1,4 +1,4 @@
-## Azure Tables Health Check
+## Azure Data Tables
This health check verifies the ability to communicate with [Azure Tables](https://azure.microsoft.com/en-us/products/storage/tables/). It uses the provided [TableServiceClient](https://learn.microsoft.com/dotnet/api/azure.data.tables.tableserviceclient).
diff --git a/src/Pulse.Azure.IoTHub/README.md b/src/Pulse.Azure.IoTHub/README.md
index e09c1447..3c18dde9 100644
--- a/src/Pulse.Azure.IoTHub/README.md
+++ b/src/Pulse.Azure.IoTHub/README.md
@@ -1,4 +1,4 @@
-# Azure IoT Hub Health Check
+# Azure IoT Hub
This health check verifies the ability to communicate with Azure IoT Hub. For more information about Azure IoT Hub please check and .NET please check the [Azure IoT Hub Microsoft Site](https://azure.microsoft.com/en-us/services/iot-hub/)
diff --git a/src/Pulse.Azure.KeyVault.Secrets/README.md b/src/Pulse.Azure.KeyVault.Secrets/README.md
index c79a6ec8..057cb5a9 100644
--- a/src/Pulse.Azure.KeyVault.Secrets/README.md
+++ b/src/Pulse.Azure.KeyVault.Secrets/README.md
@@ -1,4 +1,4 @@
-## Azure KeyVault Secrets Health Check
+## Azure KeyVault Secrets
This health check verifies the ability to communicate with [Azure Key Vault Secrets](https://azure.microsoft.com/services/key-vault/). It uses the provided [SecretClient](https://learn.microsoft.com/dotnet/api/azure.security.keyvault.secrets.secretclient) to get configured secret. When the connection to the service itself can be made, but secret is not found, it returns `HealthStatus.Healthy` status.
diff --git a/src/Pulse.Azure.Messaging.EventHubs/README.md b/src/Pulse.Azure.Messaging.EventHubs/README.md
index 14e1548f..66b4898e 100644
--- a/src/Pulse.Azure.Messaging.EventHubs/README.md
+++ b/src/Pulse.Azure.Messaging.EventHubs/README.md
@@ -1,4 +1,4 @@
-## Azure Event Hubs Health Check
+## Azure Event Hubs
This health check verifies the ability to communicate with [Azure Event Hubs](https://azure.microsoft.com/services/event-hubs/). It uses the provided [EventHubProducerClient](https://learn.microsoft.com/dotnet/api/azure.messaging.eventhubs.producer.eventhubproducerclient) to get event hub properties.
diff --git a/src/Pulse.Azure.Storage.Blobs/README.md b/src/Pulse.Azure.Storage.Blobs/README.md
index 94d66e88..a07e719c 100644
--- a/src/Pulse.Azure.Storage.Blobs/README.md
+++ b/src/Pulse.Azure.Storage.Blobs/README.md
@@ -1,4 +1,4 @@
-## Azure Blob Storage Health Check
+## Azure Blob Storage
This health check verifies the ability to communicate with [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs/). It uses the provided [BlobServiceClient](https://learn.microsoft.com/dotnet/api/azure.storage.blobs.blobserviceclient) to get first or configured blob container.
diff --git a/src/Pulse.Azure.Storage.Files.Shares/README.md b/src/Pulse.Azure.Storage.Files.Shares/README.md
index 4bb44e2d..d3ac8ea0 100644
--- a/src/Pulse.Azure.Storage.Files.Shares/README.md
+++ b/src/Pulse.Azure.Storage.Files.Shares/README.md
@@ -1,4 +1,4 @@
-## Azure File Storage Health Check
+## Azure File Storage
This health check verifies the ability to communicate with [Azure File Storage](https://azure.microsoft.com/en-us/products/storage/files/). It uses the provided [ShareServiceClient](https://learn.microsoft.com/dotnet/api/azure.storage.files.shares.shareserviceclient) to get first share or configured share properties.
diff --git a/src/Pulse.Azure.Storage.Queues/README.md b/src/Pulse.Azure.Storage.Queues/README.md
index c0a92523..4a060a1f 100644
--- a/src/Pulse.Azure.Storage.Queues/README.md
+++ b/src/Pulse.Azure.Storage.Queues/README.md
@@ -1,4 +1,4 @@
-## Azure Queue Storage Health Check
+## Azure Queue Storage
This health check verifies the ability to communicate with [Azure Queue Storage](https://azure.microsoft.com/en-us/products/storage/queues/). It uses the provided [QueueServiceClient](https://learn.microsoft.com/dotnet/api/azure.storage.queues.queueserviceclient) to get first queue or configured queues properties.
diff --git a/src/Pulse.AzureApplicationInsights/README.md b/src/Pulse.AzureApplicationInsights/README.md
index 815d4093..f7361e50 100644
--- a/src/Pulse.AzureApplicationInsights/README.md
+++ b/src/Pulse.AzureApplicationInsights/README.md
@@ -1,4 +1,4 @@
-# Azure Application Insights Health Check
+# Azure Application Insights
This health check verifies the existence of a Azure Application Insights resource. For more information about Azure Application Insights check the [Azure AppInsights Microsoft Site](https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview)
diff --git a/src/Pulse.AzureDigitalTwin/README.md b/src/Pulse.AzureDigitalTwin/README.md
index 11e2af93..71de3abe 100644
--- a/src/Pulse.AzureDigitalTwin/README.md
+++ b/src/Pulse.AzureDigitalTwin/README.md
@@ -1,8 +1,6 @@
-# **Digital Twin Health Check**
+# Azure Digital Twin
-Azure Digital Twins is an Internet of Things (IoT) platform that enables you to create a digital representation of real-world things, places, business processes, and people.
-
-For more information about Azure Digital Twin please check [Azure Digital Twin Home](https://azure.microsoft.com/en-us/services/digital-twins/)
+Azure Digital Twins is an Internet of Things (IoT) platform that enables you to create a digital representation of real-world things, places, business processes, and people. For more information about Azure Digital Twin please check [Azure Digital Twin Home](https://azure.microsoft.com/en-us/services/digital-twins/)
This health check can check the Digital Twin:
diff --git a/src/Pulse.AzureKeyVault/README.md b/src/Pulse.AzureKeyVault/README.md
index 6d866298..9489fb4a 100644
--- a/src/Pulse.AzureKeyVault/README.md
+++ b/src/Pulse.AzureKeyVault/README.md
@@ -1,4 +1,4 @@
-# Azure KeyVault Health Check
+# Azure KeyVault
This health check verifies the ability to communicate with Azure Key Vault and the existence of some secrets, keys and certificates. For more information about Azure Key Vault check the [Azure KeyVault Microsoft Site](https://azure.microsoft.com/en-us/services/key-vault/)
diff --git a/src/Pulse.AzureSearch/README.md b/src/Pulse.AzureSearch/README.md
new file mode 100644
index 00000000..0d6bdec1
--- /dev/null
+++ b/src/Pulse.AzureSearch/README.md
@@ -0,0 +1,3 @@
+# Azure Search
+
+This health check verifies the ability to communicate with Azure Search
diff --git a/src/Pulse.AzureServiceBus/README.md b/src/Pulse.AzureServiceBus/README.md
index 463fa23e..815e11ed 100644
--- a/src/Pulse.AzureServiceBus/README.md
+++ b/src/Pulse.AzureServiceBus/README.md
@@ -1,4 +1,4 @@
-## Azure Service Bus Health Check
+## Azure Service Bus
This health check verifies the ability to communicate with [Azure Service Bus](https://azure.microsoft.com/services/service-bus/).
diff --git a/src/Pulse.Consul/README.md b/src/Pulse.Consul/README.md
new file mode 100644
index 00000000..f6cced89
--- /dev/null
+++ b/src/Pulse.Consul/README.md
@@ -0,0 +1,3 @@
+# Consul
+
+This health check verifies the ability to communicate with Consul
diff --git a/src/Pulse.CosmosDb/README.md b/src/Pulse.CosmosDb/README.md
index cf3ad6a2..5d3ff707 100644
--- a/src/Pulse.CosmosDb/README.md
+++ b/src/Pulse.CosmosDb/README.md
@@ -1,4 +1,4 @@
-## Azure Cosmos DB Health Check
+## Azure Cosmos DB
This health check verifies the ability to communicate with [Azure Cosmos DB](https://azure.microsoft.com/en-us/products/cosmos-db/). It uses the provided [CosmosClient](https://learn.microsoft.com/dotnet/api/microsoft.azure.cosmos.cosmosclient).
diff --git a/src/Pulse.Dapr/README.md b/src/Pulse.Dapr/README.md
new file mode 100644
index 00000000..5fb4aba0
--- /dev/null
+++ b/src/Pulse.Dapr/README.md
@@ -0,0 +1,3 @@
+# Dapr
+
+This health check verifies the ability to communicate with Dapr
diff --git a/src/Pulse.DocumentDb/README.md b/src/Pulse.DocumentDb/README.md
new file mode 100644
index 00000000..c48494a5
--- /dev/null
+++ b/src/Pulse.DocumentDb/README.md
@@ -0,0 +1,3 @@
+# DocumentDb
+
+This health check verifies the ability to communicate with DocumentDb
diff --git a/src/Pulse.DynamoDb/README.md b/src/Pulse.DynamoDb/README.md
index 4cae53d3..2a910292 100644
--- a/src/Pulse.DynamoDb/README.md
+++ b/src/Pulse.DynamoDb/README.md
@@ -1,4 +1,4 @@
-# Amazon DynamoDB Health Check
+# Amazon DynamoDB
This health check verifies the ability to communicate with [Amazon DynamoDB](https://aws.amazon.com/dynamodb/).
diff --git a/src/Pulse.Elasticsearch/README.md b/src/Pulse.Elasticsearch/README.md
new file mode 100644
index 00000000..671cf578
--- /dev/null
+++ b/src/Pulse.Elasticsearch/README.md
@@ -0,0 +1,3 @@
+# Elasticsearch
+
+This health check verifies the ability to communicate with Elasticsearch
diff --git a/src/Pulse.EventStore.gRPC/README.md b/src/Pulse.EventStore.gRPC/README.md
new file mode 100644
index 00000000..0d5e2760
--- /dev/null
+++ b/src/Pulse.EventStore.gRPC/README.md
@@ -0,0 +1,3 @@
+# EventStore gRPC
+
+This health check verifies the ability to communicate with EventStore gRPC
diff --git a/src/Pulse.EventStore/README.md b/src/Pulse.EventStore/README.md
new file mode 100644
index 00000000..68a6cf2e
--- /dev/null
+++ b/src/Pulse.EventStore/README.md
@@ -0,0 +1,3 @@
+# EventStore
+
+This health check verifies the ability to communicate with EventStore
diff --git a/src/Pulse.Gcp.CloudFirestore/README.md b/src/Pulse.Gcp.CloudFirestore/README.md
new file mode 100644
index 00000000..71cf77aa
--- /dev/null
+++ b/src/Pulse.Gcp.CloudFirestore/README.md
@@ -0,0 +1,3 @@
+# GCP Cloud Firestore
+
+This health check verifies the ability to communicate with GCP Cloud Firestore
diff --git a/src/Pulse.Gremlin/README.md b/src/Pulse.Gremlin/README.md
new file mode 100644
index 00000000..2db02b64
--- /dev/null
+++ b/src/Pulse.Gremlin/README.md
@@ -0,0 +1,3 @@
+# Gremlin
+
+This health check verifies the ability to communicate with Gremlin
diff --git a/src/Pulse.Hangfire/README.md b/src/Pulse.Hangfire/README.md
new file mode 100644
index 00000000..5cb3edb6
--- /dev/null
+++ b/src/Pulse.Hangfire/README.md
@@ -0,0 +1,3 @@
+# Hangfire
+
+This health check verifies the ability to communicate with Hangfire
diff --git a/src/Pulse.IbmMQ/README.md b/src/Pulse.IbmMQ/README.md
index 7a3a951e..c2a8c66c 100644
--- a/src/Pulse.IbmMQ/README.md
+++ b/src/Pulse.IbmMQ/README.md
@@ -1,4 +1,4 @@
-# IbmMQ Health Check
+# IbmMQ
This health check verifies the ability to communicate with a IbmMQ 9.0.+ server
diff --git a/src/Pulse.InfluxDB/README.md b/src/Pulse.InfluxDB/README.md
index 4cd1233f..514bdf93 100644
--- a/src/Pulse.InfluxDB/README.md
+++ b/src/Pulse.InfluxDB/README.md
@@ -1,4 +1,4 @@
-# InfluxDB Health Check
+# InfluxDB
This health check verifies the ability to communicate with a InfluxDB server.
@@ -14,7 +14,7 @@ With all of the following examples, you can additionally add the following param
### Basic
This will create a new `InfluxDBClient` and reuse it on every request to get the health check result. Use
-the extension method where you provide the `Uri` to connect with.
+the extension method where you provide the `Uri` to connect with.
```csharp
public void ConfigureServices(IServiceCollection services)
diff --git a/src/Pulse.Kafka/README.md b/src/Pulse.Kafka/README.md
new file mode 100644
index 00000000..a53e787a
--- /dev/null
+++ b/src/Pulse.Kafka/README.md
@@ -0,0 +1,3 @@
+# Kafka
+
+This health check verifies the ability to communicate with Kafka
diff --git a/src/Pulse.Kubernetes/README.md b/src/Pulse.Kubernetes/README.md
new file mode 100644
index 00000000..532b3c11
--- /dev/null
+++ b/src/Pulse.Kubernetes/README.md
@@ -0,0 +1,3 @@
+# Kubernetes
+
+This health check verifies the ability to communicate with Kubernetes
diff --git a/src/Pulse.Milvus/README.md b/src/Pulse.Milvus/README.md
new file mode 100644
index 00000000..31ef6527
--- /dev/null
+++ b/src/Pulse.Milvus/README.md
@@ -0,0 +1,3 @@
+# Milvus
+
+This health check verifies the ability to communicate with Milvus
diff --git a/src/Pulse.MongoDb/README.md b/src/Pulse.MongoDb/README.md
new file mode 100644
index 00000000..8308e7f1
--- /dev/null
+++ b/src/Pulse.MongoDb/README.md
@@ -0,0 +1,3 @@
+# MongoDb
+
+This health check verifies the ability to communicate with MongoDb
diff --git a/src/Pulse.MySql/README.md b/src/Pulse.MySql/README.md
index 6ec4a6db..b5752154 100644
--- a/src/Pulse.MySql/README.md
+++ b/src/Pulse.MySql/README.md
@@ -1,4 +1,4 @@
-## MySQL Health Check
+## MySQL
This health check verifies the ability to communicate with a MySQL Server.
It uses the provided [MySqlDataSource](https://mysqlconnector.net/api/mysqlconnector/mysqldatasourcetype/) or a connection string to connect to the server.
diff --git a/src/Pulse.Nats/README.md b/src/Pulse.Nats/README.md
index f4351ba3..915b81cf 100644
--- a/src/Pulse.Nats/README.md
+++ b/src/Pulse.Nats/README.md
@@ -1,8 +1,6 @@
-# NATS Health Check
+# NATS
-This health check verifies the ability to communicate with a [NATS server](https://nats.io/about/). \
-It relies on `NATS.Client` package. \
-Latest tag for the [official dockerhub image](https://hub.docker.com/_/nats/) is `2.6.6`.
+This health check verifies the ability to communicate with a [NATS server](https://nats.io/about/). It relies on `NATS.Client` package. Latest tag for the [official dockerhub image](https://hub.docker.com/_/nats/) is `2.6.6`.
## Builder Extension
@@ -51,5 +49,3 @@ Like all `IHealthChecksBuilder` extensions, all the following parameters have ty
- `failureStatus`: The `HealthStatus` that should be reported when the health check fails. Default is `HealthStatus.Unhealthy`.
- `tags`: A list of tags that can be used to filter sets of health checks.
- `timeout`: A `System.TimeSpan` representing the timeout of the check.
-
-[<<](../../README.md)
diff --git a/src/Pulse.Network/README.md b/src/Pulse.Network/README.md
new file mode 100644
index 00000000..fe868e92
--- /dev/null
+++ b/src/Pulse.Network/README.md
@@ -0,0 +1,3 @@
+# Network
+
+This health check verifies the ability to communicate with Network
diff --git a/src/Pulse.NpgSql/README.md b/src/Pulse.NpgSql/README.md
index 7dab4282..bf20c443 100644
--- a/src/Pulse.NpgSql/README.md
+++ b/src/Pulse.NpgSql/README.md
@@ -1,4 +1,4 @@
-## PostgreSQL Health Check
+## PostgreSQL
This health check verifies the ability to communicate with [PostgreSQL](https://www.postgresql.org/). It uses the [Npgsql](https://www.npgsql.org/) library.
diff --git a/src/Pulse.OpenIdConnectServer/README.md b/src/Pulse.OpenIdConnectServer/README.md
new file mode 100644
index 00000000..f29bd945
--- /dev/null
+++ b/src/Pulse.OpenIdConnectServer/README.md
@@ -0,0 +1,3 @@
+# OpenId Connect
+
+This health check verifies the ability to communicate with OpenId Connect
diff --git a/src/Pulse.Oracle/README.md b/src/Pulse.Oracle/README.md
new file mode 100644
index 00000000..e9fb419b
--- /dev/null
+++ b/src/Pulse.Oracle/README.md
@@ -0,0 +1,3 @@
+# Oracle
+
+This health check verifies the ability to communicate with Oracle
diff --git a/src/Pulse.Prometheus.Metrics/README.md b/src/Pulse.Prometheus.Metrics/README.md
new file mode 100644
index 00000000..d0815e76
--- /dev/null
+++ b/src/Pulse.Prometheus.Metrics/README.md
@@ -0,0 +1,3 @@
+# Prometheus Metrics
+
+This health check verifies the ability to communicate with Prometheus Metrics
diff --git a/src/Pulse.Rabbitmq/README.md b/src/Pulse.Rabbitmq/README.md
index d95a46ad..1b4fa097 100644
--- a/src/Pulse.Rabbitmq/README.md
+++ b/src/Pulse.Rabbitmq/README.md
@@ -1,4 +1,4 @@
-# RabbitMQ Health Check
+# RabbitMQ
This health check verifies the ability to communicate with a RabbitMQ server
diff --git a/src/Pulse.RavenDB/README.md b/src/Pulse.RavenDB/README.md
new file mode 100644
index 00000000..22bc9802
--- /dev/null
+++ b/src/Pulse.RavenDB/README.md
@@ -0,0 +1,3 @@
+# RavenDB
+
+This health check verifies the ability to communicate with RavenDB
diff --git a/src/Pulse.Redis/README.md b/src/Pulse.Redis/README.md
new file mode 100644
index 00000000..cacaaea5
--- /dev/null
+++ b/src/Pulse.Redis/README.md
@@ -0,0 +1,3 @@
+# Redis
+
+This health check verifies the ability to communicate with Redis
diff --git a/src/Pulse.SendGrid/README.md b/src/Pulse.SendGrid/README.md
new file mode 100644
index 00000000..6c8d37aa
--- /dev/null
+++ b/src/Pulse.SendGrid/README.md
@@ -0,0 +1,3 @@
+# SendGrid
+
+This health check verifies the ability to communicate with SendGrid
diff --git a/src/Pulse.SignalR/README.md b/src/Pulse.SignalR/README.md
new file mode 100644
index 00000000..1ebba558
--- /dev/null
+++ b/src/Pulse.SignalR/README.md
@@ -0,0 +1,3 @@
+# SinalR
+
+This health check verifies the ability to communicate with SinalR
diff --git a/src/Pulse.Solr/README.md b/src/Pulse.Solr/README.md
new file mode 100644
index 00000000..4ef65eaa
--- /dev/null
+++ b/src/Pulse.Solr/README.md
@@ -0,0 +1,3 @@
+# Solr
+
+This health check verifies the ability to communicate with Solr
diff --git a/src/Pulse.SqlServer/README.md b/src/Pulse.SqlServer/README.md
new file mode 100644
index 00000000..2505b553
--- /dev/null
+++ b/src/Pulse.SqlServer/README.md
@@ -0,0 +1,3 @@
+# Sql Server
+
+This health check verifies the ability to communicate with Sql Server
diff --git a/src/Pulse.Sqlite/README.md b/src/Pulse.Sqlite/README.md
new file mode 100644
index 00000000..419e206c
--- /dev/null
+++ b/src/Pulse.Sqlite/README.md
@@ -0,0 +1,3 @@
+# Sqlite
+
+This health check verifies the ability to communicate with Sqlite
diff --git a/src/Pulse.System/README.md b/src/Pulse.System/README.md
new file mode 100644
index 00000000..dafa4348
--- /dev/null
+++ b/src/Pulse.System/README.md
@@ -0,0 +1,3 @@
+# System
+
+This health check verifies the ability to communicate with System
diff --git a/src/Pulse.Uris/README.md b/src/Pulse.Uris/README.md
new file mode 100644
index 00000000..c562ddcc
--- /dev/null
+++ b/src/Pulse.Uris/README.md
@@ -0,0 +1,3 @@
+# Uris
+
+This health check verifies the ability to communicate with URIs