diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index cf3ed2e..0000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,40 +0,0 @@ -# Contribute - -## Introduction - -First, thank you for considering contributing to Cachet! It's people like you that make the open source community such a great community! 😊 - -Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. - -We welcome any type of contribution, not only code. You can help with - -- **QA**: file bug reports, the more details you can give the better (e.g. screenshots with the console open) -- **Code**: take a look at the [open issues](issues). Even if you can't write code, commenting on them, showing that you care about a given issue matters. It helps us triage them. -- **Documentation**: add documentation for this project when contributing code, write best-practices or tips&tricks in general. -- **Financial**: we welcome financial contributions by [sponsoring this project](https://github.com/sponsors/cachethq) - -## Your First Contribution - -Working on your first Pull Request ever? You can learn how from this _free_ series, [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github). - -Not too familiar with markdown? Have a look at this also free [Markdown tutorial](https://www.markdowntutorial.com/) to get started or refresh your memory. - -## Submitting code - -Any code change should be submitted as a pull request. The description should explain what the code does and give steps to execute it. The pull request should also contain tests. - -## Code review process - -The bigger the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge. -It is also always helpful to have some context for your pull request. What was the purpose? Why does it matter to you? - -## Security Vulnerabilities - -Please review our [security policy](https://github.com/cachethq/cachet/security/policy) on how to report security vulnerabilities. - -## Questions - -If you have any questions, please create a new [issue](https://github.com/cachethq/docs/issues). - - - diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 751f3a6..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [cachethq, jbrooksuk] diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml new file mode 100644 index 0000000..3c7c2da --- /dev/null +++ b/.github/workflows/broken-links.yml @@ -0,0 +1,20 @@ +name: Mintlify Broken Links +on: + push: + +jobs: + broken-links: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + + - name: Install Mintlify + run: npm i -g mintlify@latest + + - name: Check Broken Links + run: mintlify broken-links \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index fdcfa62..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/node_modules -.DS_Store -.idea -.vitepress/cache -.vitepress/dist \ No newline at end of file diff --git a/.vitepress/config.ts b/.vitepress/config.ts deleted file mode 100644 index 70a683b..0000000 --- a/.vitepress/config.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { defineConfigWithTheme } from 'vitepress' -import type { ThemeConfig } from '@hempworks/pilgrim' -import config from '@hempworks/pilgrim/config' - -export default defineConfigWithTheme({ - extends: config, - title: "Cachet", - description: "The open-source status page system.", - srcDir: 'src', - cleanUrls: false, - - sitemap: { - hostname: 'https://docs.cachethq.io', - }, - - head: [ - ['script', { - src: 'https://cdn.usefathom.com/script.js', - 'data-site': 'FDSKQOXU', - defer: true, - }], - - ['link', { - rel: 'apple-touch-icon', - sizes: '180x180', - href: 'https://cachethq.io/apple-touch-icon.png', - }], - ['link', { - rel: 'icon', - sizes: '16x16', - type: 'image/png', - href: 'https://cachethq.io/favicon-16x16.png', - }], - ['link', { - rel: 'icon', - sizes: '32x32', - type: 'image/png', - href: 'https://cachethq.io/favicon-32x32.png', - }], - ['link', { - rel: 'manifest', - href: 'https://cachethq.io/site.webmanifest', - }], - ['link', { - rel: 'mask-icon', - href: 'https://cachethq.io/safari-pinned-tab.svg', - }], - ['meta', { - name: 'msapplication-TileColor', - content: '#04c147', - }], - // ['meta', { - // property: 'og:image', - // content: 'https://cachethq.io/social-share.png', - // }], - ['meta', { - property: 'twitter:card', - content: 'summary_large_image', - }], - // ['meta', { - // property: 'twitter:image', - // content: 'https://cachethq.io/social-share.png', - // }], - ], - - themeConfig: { - githubUrl: 'https://github.com/cachethq/cachet', - editLink: { - pattern: - 'https://github.com/cachethq/docs/edit/main/src/:path', - }, - - logo: { - light: '/logo.svg', - dark: '/logo-dark.svg', - }, - - nav: [ - { text: 'Home', link: '/' }, - { text: 'Demo', link: 'https://demo.cachethq.io' }, - { text: 'Blog', link: 'https://blog.cachethq.io' }, - { text: 'Sponsor', link: 'https://github.com/cachethq/cachet?sponsor=1' }, - ], - - sidebar: [ - { - text: 'Getting Started', - items: [ - { text: 'Introduction', link: '/introduction.html' }, - { text: 'Component Statuses', link: '/component-statuses.html' }, - { text: 'Incident Statuses', link: '/incident-statuses.html' }, - { text: 'Third-party Integrations', link: '/integrations.html' }, - { text: 'Client Libraries', link: '/client-libraries.html' }, - { text: 'Frequently Asked Questions', link: '/faq.html' }, - ], - }, - { - text: 'Installation', - items: [ - { text: 'Installation', link: '/installation/guide.html' }, - { text: 'Installation with Docker', link: '/installation/docker.html' }, - { text: 'Installation with Windows', link: '/installation/windows.html' }, - { text: 'Upgrading', link: '/installation/upgrading.html' }, - { text: 'Beacons', link: '/installation/beacons.html' }, - ], - }, - { - text: 'Configuration', - items: [ - { text: 'Prerequisites', link: '/configuration/prerequisites.html' }, - { text: 'GitHub OAuth Token', link: '/configuration/github-oauth-token.html' }, - { text: 'CORS', link: '/configuration/cors.html' }, - { text: 'Mail', link: '/configuration/mail.html' }, - { text: 'Queue', link: '/configuration/queue.html' }, - { text: 'Subscribers', link: '/configuration/subscribers.html' }, - ], - }, - { - text: 'API', - items: [ - { text: 'Introduction', link: '/api/introduction.html' }, - { text: 'Advanced Usage', link: '/api/advanced.html' }, - { text: 'Timezone Header', link: '/api/timezone-header.html' }, - ] - } - ], - search: { - provider: 'local', - options: { - placeholder: 'Search Cachet Docs...', - }, - }, - }, -}) diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts deleted file mode 100644 index 2dc701d..0000000 --- a/.vitepress/theme/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Theme } from '@hempworks/pilgrim'; - -export default Theme \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 2ff0737..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Cachet by Alt Three Services Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 73f1a6c..70117db 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,41 @@

- - Cachet Logo + + Cachet Logo

-## Introduction +

+ + GitHub Sponsors + +

-This repository contains the documentation for Cachet and is deployed to https://docs.cachethq.io/. +# Cachet Documentation -## Contributing to the documentation +[Cachet](https://cachethq.io) is an easy-to-use and powerful open-source status page system. Cachet allows you effectively communicate downtime and +system outages to your customers, teams, and shareholders. -Please refer to our description on [CONTRIBUTING.md](https://github.com/cachethq/docs/blob/main/.github/CONTRIBUTING.md) for details on how to contribute to this project. +This repository contains the source code for the Cachet documentation which is built using [Mintlify](https://mintlify.com). -## Security Vulnerabilities +## Running Locally -Please review our [security policy](https://github.com/cachethq/cachet/security/policy) on how to report security vulnerabilities. +The documentation is kindly hosted by [Mintlify](https://mintlify.com). To run the documentation locally: -## License +1. **Clone the repository:** + ```bash + git clone git@github.com:cachethq/docs.git cachet-docs + ``` +2. **Install Mintlify:** + ```bash + npm install -g mintlify@latest + ``` +3. **Run the documentation:** + ```bash + cd cachet-docs + mintlify dev + ``` + +## Contributing -Cachet Docs is open-sourced software licensed under the [MIT license](LICENSE.md). +Check out the [Mintlify Guide](https://mintlify.com/docs/) to learn more. diff --git a/api-reference/authentication.mdx b/api-reference/authentication.mdx new file mode 100644 index 0000000..bb0c245 --- /dev/null +++ b/api-reference/authentication.mdx @@ -0,0 +1,20 @@ +--- +title: 'Authentication' +description: 'Learn how to authenticate with the Cachet API' +--- + + + Cachet is built on the belief that your service status is open and transparent, therefore all `GET` requests are public and require no authentication to access the information. + + +Authenticated requests (those that `POST`, `PUT` or `DELETE`) require an **API Token**. + +### API Token + +API Tokens are the preferred method of authentication. + +Once you have your token you'll need to add a new request header of `Authorization: Bearer $TOKEN`: + +```shell +curl -H "Content-Type: application/json;" -H "Authorization: Bear YOUR_KEY_HERE" -d '{"name":"API","description":"An example description","status":1}' https://v3.cachethq.io/api/components +``` \ No newline at end of file diff --git a/api-reference/filtering.mdx b/api-reference/filtering.mdx new file mode 100644 index 0000000..96c6a3f --- /dev/null +++ b/api-reference/filtering.mdx @@ -0,0 +1,34 @@ +--- +title: 'Filtering & Sorting' +description: 'Learn how to filter and sort data in the Cachet API.' +--- + +## Filtering + +Several endpoints support filtering to allow you to retrieve only the data you need. For example, you can filter incidents by status: + +``` +GET /api/incidents?filter[status]=1 +``` + + +Each endpoint may support different fields for filtering. Check the documentation for the specific endpoint you are working with. + + +## Sorting + +You can sort the results of an endpoint by passing the `sort` parameter. The `sort` parameter should be a comma-separated list of fields to sort by. You can also specify the sort order by appending `asc` or `desc` to the field name. + +``` +GET /api/incidents?sort=id +``` + +To reverse the sort order, you can prefix the field name with a hyphen. + +``` +GET /api/incidents?sort=-id +``` + + + Each endpoint may support different fields for sorting. Check the documentation for the specific endpoint you are working with. + diff --git a/api-reference/introduction.mdx b/api-reference/introduction.mdx new file mode 100644 index 0000000..fbab256 --- /dev/null +++ b/api-reference/introduction.mdx @@ -0,0 +1,91 @@ +--- +title: 'Introduction' +description: 'Learn how to interact with the Cachet API.' +--- + + + This documentation refers to the Cachet v3 API. If you are looking for the Cachet v2 API, please refer to the previous [Cachet API documentation](https://github.com/cachethq/docs/tree/2.x). + + +## JSON API + +Cachet provides a RESTful JSON API that allows you to interact with the status page programmatically. The API is designed to be simple and easy to use. + +### Example Response + +```json +{ + "data": [ + { + "id": "2", + "type": "incidents", + "attributes": { + "id": 2, + "guid": "3aad01a9-be10-422b-a90b-413c850cf89b", + "name": "Documentation Performance Degradation", + "message": "We're investigating an issue with our documentation causing the site to be slow.", + "component_id": null, + "visible": 1, + "stickied": false, + "notifications": 0, + "status": { + "human": "Investigating", + "value": 1 + }, + "occurred": { + "human": "34 minutes ago", + "string": "2024-10-27 08:31:59" + }, + "created": { + "human": "34 minutes ago", + "string": "2024-10-27 08:31:59" + }, + "updated": { + "human": "34 minutes ago", + "string": "2024-10-27 08:31:59" + } + } + }, + { + "id": "1", + "type": "incidents", + "attributes": { + "id": 1, + "guid": "105d8c6d-9d21-4afd-a8d9-8c49f1fd1fbc", + "name": "DNS Provider Outage", + "message": "We're investigating an issue with our DNS provider causing the site to be offline.", + "component_id": null, + "visible": 1, + "stickied": false, + "notifications": 0, + "status": { + "human": "Fixed", + "value": 4 + }, + "occurred": { + "human": "1 day ago", + "string": "2024-10-26 09:01:59" + }, + "created": { + "human": "1 day ago", + "string": "2024-10-26 09:01:59" + }, + "updated": { + "human": "1 day ago", + "string": "2024-10-26 09:01:59" + } + } + } + ], + "links": { + "first": "https://v3.cachethq.io/api/incidents?page=1" + }, + "meta": { + "current_page": 1, + "from": 1, + "path": "https://v3.cachethq.io/api/incidents", + "per_page": 15, + "to": 2 + } +} +``` diff --git a/api-reference/openapi.json b/api-reference/openapi.json new file mode 100644 index 0000000..6cb47f5 --- /dev/null +++ b/api-reference/openapi.json @@ -0,0 +1,5242 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Cachet", + "version": "0.0.1", + "description": "API documentation for Cachet, the open-source, self-hosted status page system." + }, + "servers": [ + { + "url": "http://localhost/api" + }, + { + "url": "https://v3.cachethq.io/api", + "description": "The Cachet v3 demo server." + } + ], + "tags": [ + { + "name": "Cachet" + }, + { + "name": "Components" + }, + { + "name": "Component Groups" + }, + { + "name": "Incidents" + }, + { + "name": "Incident Updates" + }, + { + "name": "Incident Templates" + }, + { + "name": "Metrics" + }, + { + "name": "Metric Points" + }, + { + "name": "Schedules" + }, + { + "name": "Schedule Updates" + } + ], + "security": [ + { + "http": [] + } + ], + "paths": { + "/ping": { + "get": { + "operationId": "cachet.api.ping", + "summary": "Test the API", + "tags": [ + "Cachet" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "enum": [ + "Pong!" + ] + } + }, + "required": [ + "data" + ] + } + } + } + } + }, + "security": [] + } + }, + "/version": { + "get": { + "operationId": "cachet.api.version", + "summary": "Get Version", + "tags": [ + "Cachet" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "version": { + "type": "string", + "enum": [ + "'3.x-dev'" + ] + } + }, + "required": [ + "version" + ] + } + }, + "required": [ + "data" + ] + } + } + } + } + }, + "security": [] + } + }, + "/components": { + "get": { + "operationId": "cachet.api.components.index", + "summary": "List Components", + "tags": [ + "Components" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `order`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `group`, `groupCount`, `groupExists`, `incidents`, `incidentsCount`, `incidentsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[status]", + "in": "query", + "description": "Filter by status", + "schema": { + "$ref": "#/components/schemas/ComponentStatusEnum" + }, + "example": 1 + }, + { + "name": "filter[name]", + "in": "query", + "description": "Filter by name.", + "schema": { + "type": "string" + }, + "example": "My Component" + }, + { + "name": "filter[enabled]", + "in": "query", + "description": "Filter by enabled status.", + "schema": { + "type": "boolean" + }, + "example": "1" + } + ], + "responses": { + "200": { + "description": "Paginated set of `Component`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Component" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/ComponentGroup" + }, + { + "$ref": "#/components/schemas/Incident" + } + ] + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.components.store", + "summary": "Create Component", + "tags": [ + "Components" + ], + "requestBody": { + "description": "`CreateComponentRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateComponentRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Component`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Component" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/components/{component}": { + "get": { + "operationId": "cachet.api.components.show", + "summary": "Get Component", + "tags": [ + "Components" + ], + "parameters": [ + { + "name": "component", + "in": "path", + "required": true, + "description": "The component ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `group`, `groupCount`, `groupExists`, `incidents`, `incidentsCount`, `incidentsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Component`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Component" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.components.update", + "summary": "Update Component", + "tags": [ + "Components" + ], + "parameters": [ + { + "name": "component", + "in": "path", + "required": true, + "description": "The component ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateComponentRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateComponentRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Component`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Component" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.components.destroy", + "summary": "Delete Component", + "tags": [ + "Components" + ], + "parameters": [ + { + "name": "component", + "in": "path", + "required": true, + "description": "The component ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/component-groups": { + "get": { + "operationId": "cachet.api.component-groups.index", + "summary": "List Component Groups", + "tags": [ + "Component Groups" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + } + ], + "responses": { + "200": { + "description": "Paginated set of `ComponentGroup`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentGroup" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Component" + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.component-groups.store", + "summary": "Create Component Group", + "tags": [ + "Component Groups" + ], + "requestBody": { + "description": "`CreateComponentGroupRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateComponentGroupRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`ComponentGroup`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/ComponentGroup" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/component-groups/{componentGroup}": { + "get": { + "operationId": "cachet.api.component-groups.show", + "summary": "Get Component Group", + "tags": [ + "Component Groups" + ], + "parameters": [ + { + "name": "componentGroup", + "in": "path", + "required": true, + "description": "The component group ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`ComponentGroup`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/ComponentGroup" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.component-groups.update", + "summary": "Update Component Group", + "tags": [ + "Component Groups" + ], + "parameters": [ + { + "name": "componentGroup", + "in": "path", + "required": true, + "description": "The component group ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateComponentGroupRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateComponentGroupRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`ComponentGroup`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/ComponentGroup" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.component-groups.destroy", + "summary": "Delete Component Group", + "tags": [ + "Component Groups" + ], + "parameters": [ + { + "name": "componentGroup", + "in": "path", + "required": true, + "description": "The component group ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/incidents": { + "get": { + "operationId": "cachet.api.incidents.index", + "summary": "List Incidents", + "tags": [ + "Incidents" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `status`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`, `updates`, `updatesCount`, `updatesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[name]", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "filter[status]", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "filter[occurred_at]", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Paginated set of `Incident`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Incident" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Component" + }, + { + "$ref": "#/components/schemas/Update" + }, + { + "$ref": "#/components/schemas/User" + } + ] + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.incidents.store", + "summary": "Create Incident", + "tags": [ + "Incidents" + ], + "requestBody": { + "description": "`CreateIncidentRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateIncidentRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Incident`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Incident" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/incidents/{incident}": { + "get": { + "operationId": "cachet.api.incidents.show", + "summary": "Get Incident", + "tags": [ + "Incidents" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`, `updates`, `updatesCount`, `updatesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Incident`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Incident" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.incidents.update", + "summary": "Update Incident", + "tags": [ + "Incidents" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateIncidentRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateIncidentRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Incident`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Incident" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.incidents.destroy", + "summary": "Delete Incident", + "tags": [ + "Incidents" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/incidents/{incident}/updates": { + "get": { + "operationId": "cachet.api.incidents.updates.index", + "summary": "List Incident Updates", + "tags": [ + "Incident Updates" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + }, + { + "name": "sort", + "in": "query", + "description": "Available sorts are `status`, `created_at`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-status`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `incident`, `incidentCount`, `incidentExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[status]", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Paginated set of `Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Update" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.incidents.updates.store", + "summary": "Create Incident Update", + "tags": [ + "Incident Updates" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`CreateIncidentUpdateRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateIncidentUpdateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/incidents/{incident}/updates/{update}": { + "get": { + "operationId": "cachet.api.incidents.updates.show", + "summary": "Get Incident Update", + "tags": [ + "Incident Updates" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `incident`, `incidentCount`, `incidentExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.incidents.updates.update", + "summary": "Update Incident Update", + "tags": [ + "Incident Updates" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`EditIncidentUpdateRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditIncidentUpdateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.incidents.updates.destroy", + "summary": "Delete Incident Update", + "tags": [ + "Incident Updates" + ], + "parameters": [ + { + "name": "incident", + "in": "path", + "required": true, + "description": "The incident ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/incident-templates": { + "get": { + "operationId": "cachet.api.incident-templates.index", + "summary": "List Incident Templates", + "tags": [ + "Incident Templates" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `slug`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[name]", + "in": "query", + "description": "Filter by name", + "schema": { + "type": "string" + }, + "example": "My Template" + }, + { + "name": "filter[slug]", + "in": "query", + "description": "Filter by slug", + "schema": { + "type": "string" + }, + "example": "my-template" + } + ], + "responses": { + "200": { + "description": "Paginated set of `IncidentTemplate`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncidentTemplate" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.incident-templates.store", + "summary": "Create Incident Template", + "tags": [ + "Incident Templates" + ], + "requestBody": { + "description": "`CreateIncidentTemplateRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateIncidentTemplateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`IncidentTemplate`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/IncidentTemplate" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/incident-templates/{incidentTemplate}": { + "get": { + "operationId": "cachet.api.incident-templates.show", + "summary": "Get Incident Template", + "tags": [ + "Incident Templates" + ], + "parameters": [ + { + "name": "incidentTemplate", + "in": "path", + "required": true, + "description": "The incident template ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "`IncidentTemplate`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/IncidentTemplate" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.incident-templates.update", + "summary": "Update Incident Template", + "tags": [ + "Incident Templates" + ], + "parameters": [ + { + "name": "incidentTemplate", + "in": "path", + "required": true, + "description": "The incident template ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateIncidentTemplateRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateIncidentTemplateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`IncidentTemplate`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/IncidentTemplate" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.incident-templates.destroy", + "summary": "Delete Incident Template", + "tags": [ + "Incident Templates" + ], + "parameters": [ + { + "name": "incidentTemplate", + "in": "path", + "required": true, + "description": "The incident template ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/metrics": { + "get": { + "operationId": "cachet.api.metrics.index", + "summary": "List Metrics", + "tags": [ + "Metrics" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `order`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `points`, `pointsCount`, `pointsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[name]", + "in": "query", + "description": "Filter by name.", + "schema": { + "type": "string" + }, + "example": "metric name" + }, + { + "name": "filter[calc_type]", + "in": "query", + "description": "Filter by calculation type.", + "schema": { + "$ref": "#/components/schemas/MetricTypeEnum" + } + } + ], + "responses": { + "200": { + "description": "Paginated set of `Metric`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metric" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricPoint" + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.metrics.store", + "summary": "Create Metric", + "tags": [ + "Metrics" + ], + "requestBody": { + "description": "`CreateMetricRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMetricRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Metric`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Metric" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/metrics/{metric}": { + "get": { + "operationId": "cachet.api.metrics.show", + "summary": "Get Metric", + "tags": [ + "Metrics" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `points`, `pointsCount`, `pointsExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Metric`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Metric" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.metrics.update", + "summary": "Update Metric", + "tags": [ + "Metrics" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateMetricRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMetricRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Metric`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Metric" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.metrics.destroy", + "summary": "Delete Metric", + "tags": [ + "Metrics" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/metrics/{metric}/points": { + "get": { + "operationId": "cachet.api.metrics.points.index", + "summary": "List Metric Points", + "tags": [ + "Metric Points" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + }, + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `order`, `id`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `metric`, `metricCount`, `metricExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + } + ], + "responses": { + "200": { + "description": "Paginated set of `MetricPoint`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricPoint" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metric" + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.metrics.points.store", + "summary": "Create Metric Point", + "tags": [ + "Metric Points" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`CreateMetricPointRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMetricPointRequestData" + } + } + } + }, + "responses": { + "201": { + "description": "`MetricPoint`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/MetricPoint" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/metrics/{metric}/points/{metricPoint}": { + "get": { + "operationId": "cachet.api.metrics.points.show", + "summary": "Get Metric Point", + "tags": [ + "Metric Points" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + }, + { + "name": "metricPoint", + "in": "path", + "required": true, + "description": "The metric point ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `metric`, `metricCount`, `metricExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`MetricPoint`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/MetricPoint" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "delete": { + "operationId": "cachet.api.metrics.points.destroy", + "summary": "Delete Metric Point", + "tags": [ + "Metric Points" + ], + "parameters": [ + { + "name": "metric", + "in": "path", + "required": true, + "description": "The metric ID", + "schema": { + "type": "integer" + } + }, + { + "name": "metricPoint", + "in": "path", + "required": true, + "description": "The metric point ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/schedules": { + "get": { + "operationId": "cachet.api.schedules.index", + "summary": "List Schedules", + "tags": [ + "Schedules" + ], + "parameters": [ + { + "name": "sort", + "in": "query", + "description": "Available sorts are `name`, `id`, `scheduled_at`, `completed_at`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-name`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`, `updates`, `updatesCount`, `updatesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + }, + { + "name": "filter[name]", + "in": "query", + "description": "Filter the resources by name.", + "schema": { + "type": "string" + }, + "example": "api" + }, + { + "name": "filter[status]", + "in": "query", + "description": "Filter the resources by status.", + "schema": { + "$ref": "#/components/schemas/ScheduleStatusEnum" + } + } + ], + "responses": { + "200": { + "description": "Paginated set of `Schedule`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Schedule" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + }, + "included": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Component" + }, + { + "$ref": "#/components/schemas/Update" + } + ] + } + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.schedules.store", + "summary": "Create Schedule", + "tags": [ + "Schedules" + ], + "requestBody": { + "description": "`CreateScheduleRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateScheduleRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Schedule`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Schedule" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/schedules/{schedule}": { + "get": { + "operationId": "cachet.api.schedules.show", + "summary": "Get Schedule", + "tags": [ + "Schedules" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `components`, `componentsCount`, `componentsExists`, `updates`, `updatesCount`, `updatesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Schedule`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Schedule" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.schedules.update", + "summary": "Update Schedule", + "tags": [ + "Schedules" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`UpdateScheduleRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateScheduleRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Schedule`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Schedule" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.schedules.destroy", + "summary": "Delete Schedule", + "tags": [ + "Schedules" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/schedules/{schedule}/updates": { + "get": { + "operationId": "cachet.api.schedules.updates.index", + "summary": "List Schedule Updates", + "tags": [ + "Schedule Updates" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + }, + { + "name": "sort", + "in": "query", + "description": "Available sorts are `created_at`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-created_at`.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `schedule`, `scheduleCount`, `scheduleExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "in": "query", + "description": "How many items to show per page.", + "schema": { + "type": "integer", + "default": 15 + }, + "example": 20 + }, + { + "name": "page", + "in": "query", + "description": "Which page to show.", + "schema": { + "type": "integer" + }, + "example": 2 + } + ], + "responses": { + "200": { + "description": "Paginated set of `Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Update" + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "properties": { + "current_page": { + "type": "integer" + }, + "from": { + "type": [ + "integer", + "null" + ] + }, + "path": { + "type": [ + "string", + "null" + ], + "description": "Base path for paginator generated URLs." + }, + "per_page": { + "type": "integer", + "description": "Number of items shown per page." + }, + "to": { + "type": [ + "integer", + "null" + ], + "description": "Number of the last item in the slice." + } + }, + "required": [ + "current_page", + "from", + "path", + "per_page", + "to" + ] + } + }, + "required": [ + "data", + "links", + "meta" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "post": { + "operationId": "cachet.api.schedules.updates.store", + "summary": "Create Schedule Update", + "tags": [ + "Schedule Updates" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`CreateScheduleUpdateRequestData`", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateScheduleUpdateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + } + }, + "/schedules/{schedule}/updates/{update}": { + "get": { + "operationId": "cachet.api.schedules.updates.show", + "summary": "Get Schedule Update", + "tags": [ + "Schedule Updates" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + }, + { + "name": "include", + "in": "query", + "description": "Available includes are `schedule`, `scheduleCount`, `scheduleExists`. You can include multiple options by separating them with a comma.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + } + }, + "security": [] + }, + "put": { + "operationId": "cachet.api.schedules.updates.update", + "summary": "Update Schedule Update", + "tags": [ + "Schedule Updates" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "description": "`EditScheduleUpdateRequestData`", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditScheduleUpdateRequestData" + } + } + } + }, + "responses": { + "200": { + "description": "`Update`", + "content": { + "application/vnd.api+json": { + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/Update" + } + }, + "required": [ + "data" + ] + } + } + } + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + }, + "422": { + "$ref": "#/components/responses/ValidationException" + } + } + }, + "delete": { + "operationId": "cachet.api.schedules.updates.destroy", + "summary": "Delete Schedule Update", + "tags": [ + "Schedule Updates" + ], + "parameters": [ + { + "name": "schedule", + "in": "path", + "required": true, + "description": "The schedule ID", + "schema": { + "type": "integer" + } + }, + { + "name": "update", + "in": "path", + "required": true, + "description": "The update ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "403": { + "$ref": "#/components/responses/MissingAbilityException" + }, + "404": { + "$ref": "#/components/responses/ModelNotFoundException" + }, + "401": { + "$ref": "#/components/responses/AuthenticationException" + } + } + } + }, + "/status": { + "get": { + "operationId": "cachet.api.status", + "summary": "Get System Status", + "tags": [ + "Cachet" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "status": { + "type": "string", + "examples": [ + "operational" + ] + }, + "message": { + "type": "string", + "examples": [ + "All Systems Operational" + ] + } + }, + "required": [ + "status", + "message" + ] + } + }, + "required": [ + "data" + ] + } + } + } + } + }, + "security": [] + } + } + }, + "components": { + "securitySchemes": { + "http": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Component": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "components" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "order": { + "type": [ + "integer", + "null" + ] + }, + "status": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "human", + "value" + ] + }, + "enabled": { + "type": "boolean" + }, + "meta": { + "type": [ + "array", + "null" + ], + "items": {} + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "pivot": { + "type": "object", + "properties": { + "component_status": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "human", + "value" + ] + } + }, + "required": [ + "component_status" + ] + } + }, + "required": [ + "id", + "name", + "description", + "link", + "order", + "status", + "enabled", + "meta", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "group": { + "type": "object", + "properties": { + "data": { + "anyOf": [ + { + "$ref": "#/components/schemas/ComponentGroupIdentifier" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "data" + ] + }, + "incidents": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IncidentIdentifier" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "Component" + }, + "ComponentGroup": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "componentGroups" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "order": { + "type": "integer" + }, + "visible": { + "$ref": "#/components/schemas/ResourceVisibilityEnum" + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "name", + "order", + "visible", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "components": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentIdentifier" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "ComponentGroup" + }, + "ComponentGroupIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "componentGroups" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "ComponentGroupIdentifier" + }, + "ComponentGroupVisibilityEnum": { + "type": "integer", + "enum": [ + 0, + 1, + 2 + ], + "title": "ComponentGroupVisibilityEnum" + }, + "ComponentIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "components" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "ComponentIdentifier" + }, + "ComponentStatusEnum": { + "type": "integer", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "title": "ComponentStatusEnum" + }, + "CreateComponentGroupRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "order": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + }, + "visible": { + "type": [ + "boolean", + "null" + ] + }, + "components": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer", + "minimum": 0 + } + } + }, + "required": [ + "name" + ], + "title": "CreateComponentGroupRequestData" + }, + "CreateComponentRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/ComponentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "order": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + }, + "enabled": { + "type": "boolean", + "default": true + }, + "component_group_id": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + } + }, + "required": [ + "name" + ], + "title": "CreateComponentRequestData" + }, + "CreateIncidentRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/IncidentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "template": { + "type": [ + "string", + "null" + ] + }, + "visible": { + "type": "boolean", + "default": false + }, + "stickied": { + "type": "boolean", + "default": false + }, + "notifications": { + "type": "boolean", + "default": false + }, + "occurred_at": { + "type": [ + "string", + "null" + ] + }, + "template_vars": { + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "component_id": { + "type": [ + "integer", + "null" + ] + }, + "component_status": { + "anyOf": [ + { + "$ref": "#/components/schemas/ComponentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "components": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/IncidentComponentRequestData" + } + } + }, + "required": [ + "name" + ], + "title": "CreateIncidentRequestData" + }, + "CreateIncidentTemplateRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "template": { + "type": "string" + }, + "engine": { + "anyOf": [ + { + "$ref": "#/components/schemas/IncidentTemplateEngineEnum" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "name", + "template" + ], + "title": "CreateIncidentTemplateRequestData" + }, + "CreateIncidentUpdateRequestData": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/IncidentStatusEnum" + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "message" + ], + "title": "CreateIncidentUpdateRequestData" + }, + "CreateMetricPointRequestData": { + "type": "object", + "properties": { + "value": { + "type": "number" + } + }, + "required": [ + "value" + ], + "title": "CreateMetricPointRequestData" + }, + "CreateMetricRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "suffix": { + "type": "string", + "maxLength": 255 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "default_value": { + "type": [ + "number", + "null" + ] + }, + "threshold": { + "type": [ + "integer", + "null" + ], + "minimum": 0, + "maximum": 60 + } + }, + "required": [ + "name", + "suffix" + ], + "title": "CreateMetricRequestData" + }, + "CreateScheduleRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "message": { + "type": "string" + }, + "scheduled_at": { + "type": "string", + "format": "date-time" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time" + }, + "components": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/ScheduleComponentRequestData" + } + } + }, + "required": [ + "name", + "message", + "scheduled_at" + ], + "title": "CreateScheduleRequestData" + }, + "CreateScheduleUpdateRequestData": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ], + "title": "CreateScheduleUpdateRequestData" + }, + "EditIncidentUpdateRequestData": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/IncidentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + } + }, + "title": "EditIncidentUpdateRequestData" + }, + "EditScheduleUpdateRequestData": { + "type": "object", + "properties": { + "message": { + "type": [ + "string", + "null" + ] + } + }, + "title": "EditScheduleUpdateRequestData" + }, + "Incident": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "incidents" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "message": { + "type": "string" + }, + "visible": { + "$ref": "#/components/schemas/ResourceVisibilityEnum" + }, + "stickied": { + "type": "boolean" + }, + "notifications": { + "type": "integer" + }, + "components_count": { + "type": "string" + }, + "status": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "human", + "value" + ] + }, + "occurred": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "guid", + "name", + "message", + "visible", + "stickied", + "notifications", + "status", + "occurred", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "components": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentIdentifier" + } + } + }, + "required": [ + "data" + ] + }, + "updates": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateIdentifier" + } + } + }, + "required": [ + "data" + ] + }, + "user": { + "type": "object", + "properties": { + "data": { + "anyOf": [ + { + "$ref": "#/components/schemas/UserIdentifier" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "Incident" + }, + "IncidentComponentRequestData": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/ComponentStatusEnum" + } + }, + "required": [ + "id", + "status" + ], + "title": "IncidentComponentRequestData" + }, + "IncidentIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "incidents" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "IncidentIdentifier" + }, + "IncidentStatusEnum": { + "type": "integer", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "title": "IncidentStatusEnum" + }, + "IncidentTemplate": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "incidentTemplates" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "template": { + "type": "string" + }, + "engine": { + "$ref": "#/components/schemas/IncidentTemplateEngineEnum" + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "name", + "slug", + "template", + "engine", + "created", + "updated" + ] + } + }, + "required": [ + "id", + "type" + ], + "title": "IncidentTemplate" + }, + "IncidentTemplateEngineEnum": { + "type": "string", + "enum": [ + "blade", + "twig" + ], + "title": "IncidentTemplateEngineEnum" + }, + "Metric": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "metrics" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "suffix": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "default_value": { + "type": [ + "string", + "null" + ] + }, + "calc_type": { + "$ref": "#/components/schemas/MetricTypeEnum" + }, + "display_chart": { + "type": "boolean" + }, + "places": { + "type": "integer" + }, + "default_view": { + "$ref": "#/components/schemas/MetricViewEnum" + }, + "threshold": { + "type": "integer" + }, + "order": { + "type": "integer" + }, + "visible": { + "$ref": "#/components/schemas/ResourceVisibilityEnum" + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "name", + "suffix", + "description", + "default_value", + "calc_type", + "display_chart", + "places", + "default_view", + "threshold", + "order", + "visible", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "points": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricPointIdentifier" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "Metric" + }, + "MetricIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "metrics" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "MetricIdentifier" + }, + "MetricPoint": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "metricPoints" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "metric_id": { + "type": "integer" + }, + "calculated_value": { + "type": "string" + }, + "value": { + "type": "number" + }, + "counter": { + "type": "integer" + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "metric_id", + "calculated_value", + "value", + "counter", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "metric": { + "type": "object", + "properties": { + "data": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetricIdentifier" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "MetricPoint" + }, + "MetricPointIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "metricPoints" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "MetricPointIdentifier" + }, + "MetricTypeEnum": { + "type": "integer", + "enum": [ + 0, + 1 + ], + "title": "MetricTypeEnum" + }, + "MetricViewEnum": { + "type": "integer", + "enum": [ + 0, + 1, + 2, + 3 + ], + "title": "MetricViewEnum" + }, + "ResourceVisibilityEnum": { + "type": "integer", + "enum": [ + 0, + 1, + 2 + ], + "title": "ResourceVisibilityEnum" + }, + "Schedule": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "schedules" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "human", + "value" + ] + }, + "scheduled": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "completed": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "name", + "message", + "status", + "scheduled", + "completed", + "created", + "updated" + ] + }, + "relationships": { + "type": "object", + "properties": { + "components": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComponentIdentifier" + } + } + }, + "required": [ + "data" + ] + }, + "updates": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateIdentifier" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "required": [ + "id", + "type" + ], + "title": "Schedule" + }, + "ScheduleComponentRequestData": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/ComponentStatusEnum" + } + }, + "required": [ + "id", + "status" + ], + "title": "ScheduleComponentRequestData" + }, + "ScheduleStatusEnum": { + "type": "integer", + "enum": [ + 0, + 1, + 2 + ], + "title": "ScheduleStatusEnum" + }, + "Update": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "updates" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "updateable_id": { + "type": "integer" + }, + "updateable_type": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "human", + "value" + ] + }, + "created": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + }, + "updated": { + "type": "object", + "properties": { + "human": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "required": [ + "human", + "string" + ] + } + }, + "required": [ + "id", + "updateable_id", + "updateable_type", + "message", + "created", + "updated" + ] + } + }, + "required": [ + "id", + "type" + ], + "title": "Update" + }, + "UpdateComponentGroupRequestData": { + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "maxLength": 255 + }, + "order": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + }, + "visible": { + "type": [ + "boolean", + "null" + ] + }, + "components": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer", + "minimum": 0 + } + } + }, + "title": "UpdateComponentGroupRequestData" + }, + "UpdateComponentRequestData": { + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "maxLength": 255 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/ComponentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "order": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + }, + "enabled": { + "type": "boolean", + "default": true + }, + "component_group_id": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + } + }, + "title": "UpdateComponentRequestData" + }, + "UpdateIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "updates" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "UpdateIdentifier" + }, + "UpdateIncidentRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/IncidentStatusEnum" + }, + { + "type": "null" + } + ] + }, + "visible": { + "type": [ + "boolean", + "null" + ] + }, + "stickied": { + "type": [ + "boolean", + "null" + ] + }, + "notifications": { + "type": [ + "boolean", + "null" + ] + }, + "occurred_at": { + "type": [ + "string", + "null" + ] + } + }, + "title": "UpdateIncidentRequestData" + }, + "UpdateIncidentTemplateRequestData": { + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "maxLength": 255 + }, + "template": { + "type": [ + "string", + "null" + ] + }, + "engine": { + "anyOf": [ + { + "$ref": "#/components/schemas/IncidentTemplateEngineEnum" + }, + { + "type": "null" + } + ] + } + }, + "title": "UpdateIncidentTemplateRequestData" + }, + "UpdateMetricRequestData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 255 + }, + "suffix": { + "type": [ + "string", + "null" + ], + "maxLength": 255 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "default_value": { + "type": [ + "number", + "null" + ] + }, + "threshold": { + "type": [ + "integer", + "null" + ], + "minimum": 0, + "maximum": 60 + } + }, + "required": [ + "name" + ], + "title": "UpdateMetricRequestData" + }, + "UpdateScheduleRequestData": { + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "maxLength": 255 + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "scheduled_at": { + "type": [ + "string", + "null" + ], + "format": "date-time" + }, + "components": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/ScheduleComponentRequestData" + } + } + }, + "title": "UpdateScheduleRequestData" + }, + "User": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + } + }, + "required": [ + "id", + "type" + ], + "title": "User" + }, + "UserIdentifier": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "title": "UserIdentifier" + } + }, + "responses": { + "ModelNotFoundException": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Error overview." + } + }, + "required": [ + "message" + ] + } + } + } + }, + "MissingAbilityException": { + "description": "Authorization error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Error overview." + } + }, + "required": [ + "message" + ] + } + } + } + }, + "AuthenticationException": { + "description": "Unauthenticated", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Error overview." + } + }, + "required": [ + "message" + ] + } + } + } + }, + "ValidationException": { + "description": "Validation error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Errors overview." + }, + "errors": { + "type": "object", + "description": "A detailed description of each field that failed validation.", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "required": [ + "message", + "errors" + ] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/api-reference/pagination.mdx b/api-reference/pagination.mdx new file mode 100644 index 0000000..55725c3 --- /dev/null +++ b/api-reference/pagination.mdx @@ -0,0 +1,12 @@ +--- +title: Pagination +description: 'Learn how to paginate through the results of a query.' +--- + +All API endpoints that return multiple items support pagination. By default, 15 items are returned per page. +You can specify the number of items to return per page by passing the `per_page` parameter. +To navigate between pages, use the `page` parameter. + +``` +GET /api/incidents?page=2&per_page=10 +``` \ No newline at end of file diff --git a/api-reference/rate-limiting.mdx b/api-reference/rate-limiting.mdx new file mode 100644 index 0000000..e492f2f --- /dev/null +++ b/api-reference/rate-limiting.mdx @@ -0,0 +1,12 @@ +--- +title: 'Rate Limiting' +description: 'Learn how rate limits work in the Cachet API.' +--- + +The Cachet API is rate-limited to prevent abuse. The rate limit is set to 300 requests per minute per IP address. + +Cachet will return the `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers in the response to provide information about the rate limit. + + + You can override the default rate limit by setting the `CACHET_API_RATE_LIMIT` environment variable. + \ No newline at end of file diff --git a/carbon.js b/carbon.js new file mode 100644 index 0000000..97e89c1 --- /dev/null +++ b/carbon.js @@ -0,0 +1,8 @@ +(function() { + var carbonScript = document.createElement('script'); + carbonScript.async = true; + carbonScript.type = 'text/javascript'; + carbonScript.src = '//cdn.carbonads.com/carbon.js?serve=CWYDE2QJ&placement=cachethqio'; + carbonScript.id = '_carbonads_js'; + document.body.appendChild(carbonScript); +})(); \ No newline at end of file diff --git a/credits.mdx b/credits.mdx new file mode 100644 index 0000000..9a66607 --- /dev/null +++ b/credits.mdx @@ -0,0 +1,43 @@ +--- +title: Credits +description: 'Cachet is made possible by the hard work of our contributors and dependencies.' +icon: 'heart' +--- + +## Thanks + +🫶 We'd like to thank the following projects and people for making Cachet possible: + +- [Laravel](https://laravel.com) +- [Tailwind](https://tailwindcss.com) +- [Filament](https://filamentphp.com) + - Special thanks to [Dan Harrin](https://danharrin.com) +- [Testbench](https://github.com/orchestral/testbench) + - Special thanks to [Mior Muhammad Zaki](https://github.com/crynobone) +- [Alpine.js](https://alpinejs.dev) + - Special thanks to [Jason Beggs](https://jasonlbeggs.com/) +- [Jump24](https://jump24.co.uk) +- [de:doc](https://scramble.dedoc.co) + - Special thanks to [Roman Lytvynenko](https://x.com/romalyt) +- [Mintlify](https://mintlify.com) +- [Scribe](https://scribe.knuckles.wtf) +- [Spatie](https://spatie.be/open-source) +- [FluxUI](https://fluxui.dev) + - In particular, [Caleb Porzio](https://calebporzio.com) for his work on Flux's themes system + +## Contributors + +A big thank you to all of our contributors who have helped make Cachet better: + + + + + + + + + + + + + \ No newline at end of file diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..cab8fac Binary files /dev/null and b/favicon.png differ diff --git a/src/public/logo-dark.svg b/logo/dark.svg similarity index 100% rename from src/public/logo-dark.svg rename to logo/dark.svg diff --git a/src/public/logo.svg b/logo/light.svg similarity index 100% rename from src/public/logo.svg rename to logo/light.svg diff --git a/mint.json b/mint.json new file mode 100644 index 0000000..842a3bb --- /dev/null +++ b/mint.json @@ -0,0 +1,212 @@ +{ + "$schema": "https://mintlify.com/schema.json", + "name": "Cachet", + "logo": { + "dark": "/logo/dark.svg", + "light": "/logo/light.svg" + }, + "favicon": "/favicon.png", + "background": { + "style": "grid" + }, + "api": { + "baseUrl": "https://v3.cachethq.io/api" + }, + "colors": { + "primary": "#04C147", + "light": "#04C147", + "dark": "#04C147", + "anchors": { + "from": "#04C147", + "to": "#04C147" + } + }, + "font": { + "headings": { + "family": "Lexend" + } + }, + "topbarLinks": [ + { + "name": "Sponsor Cachet", + "url": "https://github.com/cachethq/cachet?sponsor=1" + } + ], + "topbarCtaButton": { + "name": "Demo", + "url": "https://v3.cachethq.io" + }, + "versions": [ + "v3.x", + "v2.x" + ], + "anchors": [ + { + "name": "Blog", + "icon": "newspaper", + "url": "https://blog.cachethq.io" + }, + { + "name": "API Reference", + "url": "api-reference", + "openapi": "/api-reference/openapi.json", + "icon": "square-terminal" + } + ], + "navigation": [ + { + "group": "Getting Started", + "version": "v3.x", + "pages": [ + "v3.x/introduction", + "v3.x/installation", + "v3.x/demo", + "v3.x/development", + "v3.x/migration-guide" + ] + }, { + "group": "Guide", + "version": "v3.x", + "pages": [ + "v3.x/guide/incidents", + "v3.x/guide/components", + "v3.x/guide/schedules", + "v3.x/guide/metrics", + "v3.x/guide/subscribers", + "v3.x/guide/webhooks", + "v3.x/guide/users", + "v3.x/guide/dashboard" + ] + }, { + "group": "Configuration", + "version": "v3.x", + "pages": [ + "v3.x/configuration/cachet", + "v3.x/configuration/customization", + "v3.x/configuration/theme", + "v3.x/configuration/beacon", + "v3.x/configuration/api-keys" + ] + }, { + "group": "Integrations", + "version": "v3.x", + "pages": [ + "v3.x/integrations/oh-dear" + ] + }, { + "group": "API Documentation", + "version": "v3.x", + "pages": [ + "api-reference/introduction", + "api-reference/authentication", + "api-reference/pagination", + "api-reference/filtering", + "api-reference/rate-limiting" + ] + }, { + "group": "Get Started", + "version": "v2.x", + "pages": [ + "v2.x/introduction", + "v2.x/component-statuses", + "v2.x/incident-statuses", + "v2.x/client-libraries", + "v2.x/faq" + ] + }, { + "group": "Installation", + "version": "v2.x", + "pages": [ + "v2.x/installation/guide", + "v2.x/installation/docker", + "v2.x/installation/windows", + "v2.x/installation/upgrading", + "v2.x/installation/beacons" + ] + }, { + "group": "Configuration", + "version": "v2.x", + "pages": [ + "v2.x/configuration/prerequisites", + "v2.x/configuration/github-oauth-token", + "v2.x/configuration/cors", + "v2.x/configuration/mail", + "v2.x/configuration/queue", + "v2.x/configuration/subscribers" + ] + }, { + "group": "Other", + "pages": [ + "credits", + "trademarks" + ] + } + ], + "analytics": { + "fathom": { + "siteId": "FDSKQOXU" + } + }, + "redirects": [ + { + "source": "/v3.x/credits", + "destination": "/credits" + }, + { + "source": "/v3.x/trademarks", + "destination": "/trademarks" + } + ], + "footer": { + "links": [ + { + "title": "Cachet", + "links": [ + { + "label": "Cachet", + "url": "https://cachethq.io" + }, + { + "label": "Blog", + "url": "https://blog.cachethq.io" + }, + { + "label": "Sponsor Cachet", + "url": "https://github.com/sponsors/cachethq" + } + ] + }, + { + "title": "Open Source", + "links": [ + { + "label": "Cachet", + "url": "https://github.com/cachethq/cachet" + }, + { + "label": "Cachet Core", + "url": "https://github.com/cachethq/core" + } + ] + }, + { + "title": "Demo", + "links": [ + { + "label": "Cachet v3.x", + "url": "https://dev.cachethq.io" + }, + { + "label": "Cachet v2.4", + "url": "https://demo.cachethq.io" + } + ] + } + ], + "socials": { + "x": "https://x.com/cachethq", + "github": "https://github.com/cachethq", + "linkedin": "https://linkedin.com/company/cachethq" + } + } +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a21860b..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3056 +0,0 @@ -{ - "name": "docs", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "@hempworks/pilgrim": "^0.2.0", - "@tailwindcss/typography": "^0.5.13", - "autoprefixer": "^10.4.14", - "tailwindcss": "^3.4.3" - } - }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "search-insights": ">= 1 < 3" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz", - "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==", - "dependencies": { - "@algolia/cache-common": "4.23.3" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz", - "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==" - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz", - "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==", - "dependencies": { - "@algolia/cache-common": "4.23.3" - } - }, - "node_modules/@algolia/client-account": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz", - "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==", - "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz", - "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==", - "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/client-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz", - "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==", - "dependencies": { - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz", - "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==", - "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/client-search": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz", - "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==", - "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/logger-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz", - "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==" - }, - "node_modules/@algolia/logger-console": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz", - "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==", - "dependencies": { - "@algolia/logger-common": "4.23.3" - } - }, - "node_modules/@algolia/recommend": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz", - "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.23.3", - "@algolia/cache-common": "4.23.3", - "@algolia/cache-in-memory": "4.23.3", - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/logger-console": "4.23.3", - "@algolia/requester-browser-xhr": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/requester-node-http": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz", - "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==", - "dependencies": { - "@algolia/requester-common": "4.23.3" - } - }, - "node_modules/@algolia/requester-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz", - "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==" - }, - "node_modules/@algolia/requester-node-http": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz", - "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==", - "dependencies": { - "@algolia/requester-common": "4.23.3" - } - }, - "node_modules/@algolia/transporter": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz", - "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==", - "dependencies": { - "@algolia/cache-common": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/requester-common": "4.23.3" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@docsearch/css": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", - "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==" - }, - "node_modules/@docsearch/js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", - "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", - "dependencies": { - "@docsearch/react": "3.6.0", - "preact": "^10.0.0" - } - }, - "node_modules/@docsearch/react": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", - "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", - "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.6.0", - "algoliasearch": "^4.19.1" - }, - "peerDependencies": { - "@types/react": ">= 16.8.0 < 19.0.0", - "react": ">= 16.8.0 < 19.0.0", - "react-dom": ">= 16.8.0 < 19.0.0", - "search-insights": ">= 1 < 3" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "search-insights": { - "optional": true - } - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@headlessui/vue": { - "version": "1.7.21", - "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.21.tgz", - "integrity": "sha512-95cPFP5X9luB8/+smPENFv0ruaotT6epFnqK9EKldX2YpNkYM/qkN44oFoqQo+higlCAxDK5Pkg2E3FuD1Anyg==", - "dependencies": { - "@tanstack/vue-virtual": "^3.0.0-beta.60" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/@hempworks/pilgrim": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@hempworks/pilgrim/-/pilgrim-0.2.0.tgz", - "integrity": "sha512-1KXD2ePYGQioVzesn5lB3/oUQId2N+d2z92YMrnV+wyoxcEsC0/ran1v9cxRBs0qMAzx2GuH87/j1Ws+7PvdMw==", - "dependencies": { - "@docsearch/js": "^3.6.0", - "@headlessui/vue": "^1.7.21", - "@heroicons/vue": "^2.1.3" - }, - "peerDependencies": { - "typescript": "^4.6.3", - "vitepress": "^1.1.4" - } - }, - "node_modules/@heroicons/vue": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.1.3.tgz", - "integrity": "sha512-CP4ipIwFbV4NEn8ULUCN110wkV0wZq6dsViDL3HwgIh+jn5yQGlRm6QaRN+Mv+o+UsUBbRDei3Je/q0NZHf5Gg==", - "peerDependencies": { - "vue": ">= 3" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "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" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", - "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", - "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", - "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", - "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", - "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", - "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", - "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", - "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", - "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", - "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", - "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", - "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", - "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", - "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", - "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", - "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@shikijs/core": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.4.0.tgz", - "integrity": "sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==", - "peer": true - }, - "node_modules/@shikijs/transformers": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.4.0.tgz", - "integrity": "sha512-kzvlWmWYYSeaLKRce/kgmFFORUtBtFahfXRKndor0b60ocYiXufBQM6d6w1PlMuUkdk55aor9xLvy9wy7hTEJg==", - "peer": true, - "dependencies": { - "shiki": "1.4.0" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", - "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" - } - }, - "node_modules/@tanstack/virtual-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz", - "integrity": "sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/vue-virtual": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.5.0.tgz", - "integrity": "sha512-wvRQ8sFxn/NDr3WvI5XabhFovZ5MBmpEck2GHpTxYunmV63Ovpl30lRu6W5BPQo35a1GqDZ+Pvzlz6WDWRNqqw==", - "dependencies": { - "@tanstack/virtual-core": "3.5.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "vue": "^2.7.0 || ^3.0.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "peer": true - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "peer": true - }, - "node_modules/@types/markdown-it": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz", - "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==", - "peer": true, - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "peer": true - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", - "peer": true - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", - "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", - "peer": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.26.tgz", - "integrity": "sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==", - "peer": true, - "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/shared": "3.4.26", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.26.tgz", - "integrity": "sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA==", - "peer": true, - "dependencies": { - "@vue/compiler-core": "3.4.26", - "@vue/shared": "3.4.26" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.26.tgz", - "integrity": "sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==", - "peer": true, - "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/compiler-core": "3.4.26", - "@vue/compiler-dom": "3.4.26", - "@vue/compiler-ssr": "3.4.26", - "@vue/shared": "3.4.26", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.38", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.26.tgz", - "integrity": "sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ==", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.4.26", - "@vue/shared": "3.4.26" - } - }, - "node_modules/@vue/devtools-api": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.1.3.tgz", - "integrity": "sha512-W8IwFJ/o5iUk78jpqhvScbgCsPiOp2uileDVC0NDtW38gCWhsnu9SeBTjcdu3lbwLdsjc+H1c5Msd/x9ApbcFA==", - "peer": true, - "dependencies": { - "@vue/devtools-kit": "^7.1.3" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.1.3.tgz", - "integrity": "sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==", - "peer": true, - "dependencies": { - "@vue/devtools-shared": "^7.1.3", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.1.3.tgz", - "integrity": "sha512-KJ3AfgjTn3tJz/XKF+BlVShNPecim3G21oHRue+YQOsooW+0s+qXvm09U09aO7yBza5SivL1QgxSrzAbiKWjhQ==", - "peer": true, - "dependencies": { - "rfdc": "^1.3.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.26.tgz", - "integrity": "sha512-E/ynEAu/pw0yotJeLdvZEsp5Olmxt+9/WqzvKff0gE67tw73gmbx6tRkiagE/eH0UCubzSlGRebCbidB1CpqZQ==", - "peer": true, - "dependencies": { - "@vue/shared": "3.4.26" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.26.tgz", - "integrity": "sha512-AFJDLpZvhT4ujUgZSIL9pdNcO23qVFh7zWCsNdGQBw8ecLNxOOnPcK9wTTIYCmBJnuPHpukOwo62a2PPivihqw==", - "peer": true, - "dependencies": { - "@vue/reactivity": "3.4.26", - "@vue/shared": "3.4.26" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.26.tgz", - "integrity": "sha512-UftYA2hUXR2UOZD/Fc3IndZuCOOJgFxJsWOxDkhfVcwLbsfh2CdXE2tG4jWxBZuDAs9J9PzRTUFt1PgydEtItw==", - "peer": true, - "dependencies": { - "@vue/runtime-core": "3.4.26", - "@vue/shared": "3.4.26", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.26.tgz", - "integrity": "sha512-xoGAqSjYDPGAeRWxeoYwqJFD/gw7mpgzOvSxEmjWaFO2rE6qpbD1PC172YRpvKhrihkyHJkNDADFXTfCyVGhKw==", - "peer": true, - "dependencies": { - "@vue/compiler-ssr": "3.4.26", - "@vue/shared": "3.4.26" - }, - "peerDependencies": { - "vue": "3.4.26" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.26.tgz", - "integrity": "sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ==", - "peer": true - }, - "node_modules/@vueuse/core": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", - "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", - "peer": true, - "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.9.0", - "@vueuse/shared": "10.9.0", - "vue-demi": ">=0.14.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "hasInstallScript": true, - "peer": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/integrations": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz", - "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==", - "peer": true, - "dependencies": { - "@vueuse/core": "10.9.0", - "@vueuse/shared": "10.9.0", - "vue-demi": ">=0.14.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "async-validator": "*", - "axios": "*", - "change-case": "*", - "drauu": "*", - "focus-trap": "*", - "fuse.js": "*", - "idb-keyval": "*", - "jwt-decode": "*", - "nprogress": "*", - "qrcode": "*", - "sortablejs": "*", - "universal-cookie": "*" - }, - "peerDependenciesMeta": { - "async-validator": { - "optional": true - }, - "axios": { - "optional": true - }, - "change-case": { - "optional": true - }, - "drauu": { - "optional": true - }, - "focus-trap": { - "optional": true - }, - "fuse.js": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "jwt-decode": { - "optional": true - }, - "nprogress": { - "optional": true - }, - "qrcode": { - "optional": true - }, - "sortablejs": { - "optional": true - }, - "universal-cookie": { - "optional": true - } - } - }, - "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "hasInstallScript": true, - "peer": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/metadata": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", - "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", - "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", - "peer": true, - "dependencies": { - "vue-demi": ">=0.14.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "hasInstallScript": true, - "peer": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/algoliasearch": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz", - "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.23.3", - "@algolia/cache-common": "4.23.3", - "@algolia/cache-in-memory": "4.23.3", - "@algolia/client-account": "4.23.3", - "@algolia/client-analytics": "4.23.3", - "@algolia/client-common": "4.23.3", - "@algolia/client-personalization": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/logger-console": "4.23.3", - "@algolia/recommend": "4.23.3", - "@algolia/requester-browser-xhr": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/requester-node-http": "4.23.3", - "@algolia/transporter": "4.23.3" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001615", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001615.tgz", - "integrity": "sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "peer": true - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.754", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.754.tgz", - "integrity": "sha512-7Kr5jUdns5rL/M9wFFmMZAgFDuL2YOnanFH4OI4iFzUqyh3XOL7nAGbSlSMZdzKMIyyTpNSbqZsWG9odwLeKvA==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "hasInstallScript": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "peer": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "peer": true, - "dependencies": { - "tabbable": "^6.2.0" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "peer": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "peer": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minisearch": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", - "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", - "peer": true - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "peer": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "peer": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/preact": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.21.0.tgz", - "integrity": "sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "peer": true - }, - "node_modules/rollup": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", - "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", - "peer": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.17.2", - "@rollup/rollup-android-arm64": "4.17.2", - "@rollup/rollup-darwin-arm64": "4.17.2", - "@rollup/rollup-darwin-x64": "4.17.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", - "@rollup/rollup-linux-arm-musleabihf": "4.17.2", - "@rollup/rollup-linux-arm64-gnu": "4.17.2", - "@rollup/rollup-linux-arm64-musl": "4.17.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", - "@rollup/rollup-linux-riscv64-gnu": "4.17.2", - "@rollup/rollup-linux-s390x-gnu": "4.17.2", - "@rollup/rollup-linux-x64-gnu": "4.17.2", - "@rollup/rollup-linux-x64-musl": "4.17.2", - "@rollup/rollup-win32-arm64-msvc": "4.17.2", - "@rollup/rollup-win32-ia32-msvc": "4.17.2", - "@rollup/rollup-win32-x64-msvc": "4.17.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/search-insights": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", - "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", - "peer": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.4.0.tgz", - "integrity": "sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==", - "peer": true, - "dependencies": { - "@shikijs/core": "1.4.0" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "peer": true - }, - "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.14.tgz", - "integrity": "sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", - "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", - "peer": true, - "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitepress": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.1.4.tgz", - "integrity": "sha512-bWIzFZXpPB6NIDBuWnS20aMADH+FcFKDfQNYFvbOWij03PR29eImTceQHIzCKordjXYBhM/TjE5VKFTUJ3EheA==", - "peer": true, - "dependencies": { - "@docsearch/css": "^3.6.0", - "@docsearch/js": "^3.6.0", - "@shikijs/core": "^1.3.0", - "@shikijs/transformers": "^1.3.0", - "@types/markdown-it": "^14.0.1", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/devtools-api": "^7.0.27", - "@vueuse/core": "^10.9.0", - "@vueuse/integrations": "^10.9.0", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^6.3.0", - "shiki": "^1.3.0", - "vite": "^5.2.10", - "vue": "^3.4.25" - }, - "bin": { - "vitepress": "bin/vitepress.js" - }, - "peerDependencies": { - "markdown-it-mathjax3": "^4", - "postcss": "^8" - }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.26.tgz", - "integrity": "sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg==", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.4.26", - "@vue/compiler-sfc": "3.4.26", - "@vue/runtime-dom": "3.4.26", - "@vue/server-renderer": "3.4.26", - "@vue/shared": "3.4.26" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 0aa8518..0000000 --- a/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "npm run docs:dev", - "docs:build": "vitepress build", - "docs:dev": "vitepress dev", - "docs:preview": "vitepress preview" - }, - "dependencies": { - "@hempworks/pilgrim": "^0.2.0", - "@tailwindcss/typography": "^0.5.13", - "autoprefixer": "^10.4.14", - "tailwindcss": "^3.4.3" - }, - "postcss": { - "plugins": { - "tailwindcss": {}, - "autoprefixer": {} - } - } -} \ No newline at end of file diff --git a/prettier.config.js b/prettier.config.js deleted file mode 100644 index 2ece2d0..0000000 --- a/prettier.config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - printWidth: 80, - tabWidth: 2, - useTabs: false, - singleQuote: true, - trailingComma: 'es5', - bracketSpacing: true, - jsxBracketSameLine: false, - semi: false, - requirePragma: false, - proseWrap: 'preserve', - arrowParens: 'avoid', -} diff --git a/src/api/advanced.md b/src/api/advanced.md deleted file mode 100644 index 67457dc..0000000 --- a/src/api/advanced.md +++ /dev/null @@ -1,29 +0,0 @@ -# Advanced Usage - -[[toc]] - -## Sort & Ordering - -You can sort your result set in an ascending or descending manner by supplying these two extra parameters. - -The `sort` parameter tells Cachet which property to sort the results by. By default, this will be the `id` of the object, but you could decide to sort components by their name or status. - -Ordering is achieved by passing the `order` parameter. This should either be `asc` or `desc`. - -To get all components, sorted by their `status` in a descending way, we'd use `http://demo.cachethq.io/api/v1/components?sort=status&order=desc`. - -## Pagination - -To control how many results per page, the endpoint should return, we add a `per_page` parameter. - -Using the same query above, we can limit our components to 1 per page `http://demo.cachethq.io/api/v1/components?sort=status&order=desc&per_page=1` - -## Searching - -You can perform basic searches on many of the endpoints, by passing through a key/value pair containing the column name and the value you want to match. - -As a different example let's search for all incidents with a status of **2**, `https://demo.cachethq.io/api/v1/incidents?status=2&per_page=1`. - -:::tip Not all object key/values can be searched -This includes any keys that match `sort`, `order` and `per_page`. You should check the relevant **GET** requests to see what keys can be searched. -::: \ No newline at end of file diff --git a/src/api/index.md b/src/api/index.md deleted file mode 100644 index 0eb8ff9..0000000 --- a/src/api/index.md +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/api/introduction.md b/src/api/introduction.md deleted file mode 100644 index e79607c..0000000 --- a/src/api/introduction.md +++ /dev/null @@ -1,99 +0,0 @@ -# API - -[[toc]] - -## Authentication - -:::tip Public Read-Only Access -Cachet is built on the belief that your service status is open and transparent, therefore all `GET` requests are public and require no authentication to access the information. -::: - -Authenticated requests (those that `POST`, `PUT` or `DELETE`) use either **Basic Auth** or the preferred **API Token** mechanism. - -### API Token - -API Tokens are the preferred method of authentication. They are more secure than Basic Auth and can be revoked at any time. - -The API Token is generated at installation time for the main user or when a new team member is added to your status page and can be found on your profile page (click your profile picture to get there). - -Once you have your token you'll need to add a new request header of `X-Cachet-Token: TOKEN`: - -```shell -curl -H "Content-Type: application/json;" -H "X-Cachet-Token: YOUR_KEY_HERE" -d '{"name":"API","description":"An example description","status":1}' http://status.cachethq.io/api/v1/components -``` - -### Basic Auth - -:::danger Unsafe! -Sending your authentication details in plain text is not secure. -::: - -```sh -curl -u username@example.com:password -H "Content-Type: application/json" -d '{"name":"API","description":"An example description","status":1}' http://status.cachethq.io/api/v1/components -``` - -## Endpoints - -### General - -- `GET /api/v1/ping` -- `GET /api/v1/version` - -### Components - -- `GET /api/v1/components` -- `GET /api/v1/components/{componentId}` -- `POST /api/v1/components` -- `PUT /api/v1/components/{componentId}` -- `DELETE /api/v1/components/{componentId}` - -### Components Groups - -- `GET /api/v1/components/groups` -- `GET /api/v1/components/groups/{componentGroupId}` -- `POST /api/v1/components/groups` -- `PUT /api/v1/components/groups/{componentGroupId}` -- `DELETE /api/v1/components/groups/{componentGroupId}` - -### Incidents - -- `GET /api/v1/incidents` -- `GET /api/v1/incidents/{incidentId}` -- `POST /api/v1/incidents` -- `PUT /api/v1/incidents/{incidentId}` -- `DELETE /api/v1/incidents/{incidentId}` - -### Incident Updates - -- `GET /api/v1/incidents/{incidentId}/updates` -- `GET /api/v1/incidents/{incidentId}/updates/{incidentUpdateId}` -- `POST /api/v1/incidents/{incidentId}/updates` -- `PUT /api/v1/incidents/{incidentId}/updates/{incidentUpdateId}` -- `DELETE /api/v1/incidents/{incidentId}/updates/{incidentUpdateId}` - -### Incidents Templates - -- `GET /api/v1/incidents/templates` -- `GET /api/v1/incidents/templates/{incidentTemplateId}` -- `POST /api/v1/incidents/templates` -- `PUT /api/v1/incidents/templates/{incidentTemplateId}` -- `DELETE /api/v1/incidents/templates/{incidentTemplateId}` - -### Scheduled Maintenance - -- `GET /api/v1/schedules` -- `GET /api/v1/schedules/{scheduleId}` -- `POST /api/v1/schedules` -- `PUT /api/v1/schedules/{scheduleId}` -- `DELETE /api/v1/schedules/{scheduleId}` - -### Metrics - -- `GET /api/v1/incidents/metrics` -- `GET /api/v1/incidents/metrics/{metricId}` -- `DELETE /api/v1/incidents/metrics/{metricId}` -- `GET /api/v1/incidents/metrics/{metricId}/points` -- `PUT /api/v1/incidents/metrics/{metricId}` -- `POST /api/v1/incidents/metrics/{metricId}/points` -- `PUT /api/v1/incidents/metrics/{metricId}/points/{metricPointId}` -- `DELETE /api/v1/incidents/metrics/{metricId}/points/{metricPointId}` diff --git a/src/api/timezone-header.md b/src/api/timezone-header.md deleted file mode 100644 index bd68fc9..0000000 --- a/src/api/timezone-header.md +++ /dev/null @@ -1,9 +0,0 @@ -# Timezone Header - -[[toc]] - -## Overview - -You can supply a `Time-Zone` header which defines a timezone according to the list of names from the [Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -Supplying this header means that we will generate a timestamp for the moment your API call is made in the timezone this header defines. This header will determine the timezone used for generating that current timestamp, rather than using the UTC format. \ No newline at end of file diff --git a/src/configuration/index.md b/src/configuration/index.md deleted file mode 100644 index 37c59c7..0000000 --- a/src/configuration/index.md +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/configuration/subscribers.md b/src/configuration/subscribers.md deleted file mode 100644 index 186ad0d..0000000 --- a/src/configuration/subscribers.md +++ /dev/null @@ -1,19 +0,0 @@ -# Subscribers - -[[toc]] - -## Overview - -One of the most powerful features of Cachet is the ability to automatically send notification emails to anybody who has subscribed to your status page whenever an incident is created. - -## Configuring Subscribers - -:::tip Requirements -Before going any further, ensure that you've [configured the mail](/configuration/mail) and the [queue](/configuration/queue). -::: - -Once you've [configured mail](/configuration/mail), you'll need to log in to your dashboard and enable the **Allow people to sign-up to email notifications?** setting found in the **Application Setup** panel. - -Once you've enabled this setting you'll see a **Subscribe** button in the footer of your status page: - -![Subscribe screenshot](https://cldup.com/EooS2kr6sG.png) \ No newline at end of file diff --git a/src/getting-started.md b/src/getting-started.md deleted file mode 100644 index fa9deba..0000000 --- a/src/getting-started.md +++ /dev/null @@ -1,15 +0,0 @@ -# Getting Started - -[[toc]] - -## Overview - -## Installation Service - -We offer a professional installation service. [Email us](mailto:support@cachethq.io?subject=Cachet%20Installation) with your requirements, and we'll be happy to get everything setup for you! - -:::tip - -The professional installation service starts from $249. Your server must be running Ubuntu 18.04 or later, PHP, Nginx and MySQL. - -::: diff --git a/src/index.md b/src/index.md deleted file mode 100644 index 4769b14..0000000 --- a/src/index.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/installation/index.md b/src/installation/index.md deleted file mode 100644 index b321819..0000000 --- a/src/installation/index.md +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..f701c6c --- /dev/null +++ b/style.css @@ -0,0 +1,114 @@ +h1, h2, h3, h4 { + font-weight: 600 !important; +} + +#navigation-items div ul li { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +span > img { + /*padding: 0.5rem;*/ +} + +footer > div { + padding: 3rem 2rem !important; +} + +#carbonads { + display: flex; + max-width: 130px; + overflow: hidden; + border-radius: 4px; + box-shadow: 0 0 1px hsla(0, 0%, 0%, 0.15); + font-size: 12px; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', + Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', + Helvetica, Arial, sans-serif; + position: fixed; + bottom: 2rem; + right: 2rem; +} + +#carbonads a { + background-image: none; + color: #111; + text-decoration: none; +} + +#carbonads a:hover { + color: #111; +} + +#carbonads .carbon-img { + display: block; + max-width: 130px; + line-height: 1; +} + +#carbonads .carbon-img img { + display: block; + width: 130px; + height: 100px; + margin: 0 auto; +} + +#carbonads .carbon-text { + display: block; + padding: 8px 10px; + background-color: hsl(0, 0%, 98%); + line-height: 1.35; + text-align: left; +} + +#carbonads .carbon-poweredby { + display: block; + padding: 10px; + background: repeating-linear-gradient( + -45deg, + transparent, + transparent 5px, + hsla(0, 0%, 0%, 0.025) 5px, + hsla(0, 0%, 0%, 0.025) 10px + ) + hsla(203, 11%, 95%, 0.4); + background-color: hsl(0, 0%, 98%); + font-weight: 600; + font-size: 8px; + line-height: 0; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +@media only screen and (min-width: 320px) and (max-width: 759px) { + #carbonads { + position: relative; + max-width: 330px; + margin: 20px 0; + float: none; + } + + #carbonads .carbon-wrap { + display: flex; + flex-direction: row; + } + + #carbonads .carbon-img { + margin: 0; + } + + #carbonads .carbon-text { + padding: 10px 10px 0 10px; + + font-size: 12px; + } + + #carbonads .carbon-poweredby { + position: absolute; + right: 0; + bottom: 0; + border-radius: 0; + border-top-left-radius: 3px; + text-align: center; + } +} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 00e494e..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,34 +0,0 @@ -const defaultTheme = require('tailwindcss/defaultTheme') -import tailwindConfig from '@hempworks/pilgrim/tailwind.config' - -const primary = { - '50': '#e6f7ed', - '100': '#c1edce', - '200': '#9be3b1', - '300': '#74d994', - '400': '#4dce76', - '500': '#04c147', // Base Color - '600': '#03ad40', - '700': '#038f34', - '800': '#027227', - '900': '#01561a' -} - -/** @type {import('tailwindcss').Config} */ -module.exports = { - presets: [ - tailwindConfig, - ], - - content: [ - ...tailwindConfig.content, - './.vitepress/theme/**/*.{vue,js,ts,jsx,tsx}', - './src/**/*.{md,svg}', - ], - - theme: { - extend: { - colors: { primary }, - }, - }, -} \ No newline at end of file diff --git a/trademarks.mdx b/trademarks.mdx new file mode 100644 index 0000000..67cc265 --- /dev/null +++ b/trademarks.mdx @@ -0,0 +1,70 @@ +--- +title: 'Trademarks' +description: "Learn about Cachet's trademarks and how to use them." +icon: 'trademark' +--- + +This trademark policy was prepared to help you understand how to use the Cachet trademarks, service marks and logos. + +While the copyright to our open source software is licensed under the Cachet license, our trademarks appearing in or on the open source software are the exclusive property of Cachet Inc. This means that our open source license does not include a license to use our trademarks. + +Because we make some of our code available to download and modify, proper use of our trademarks is essential to inform people whether or not Cachet stands behind a product or service. When using Cachet trademarks, you must comply with these Cachet Trademark Guidelines. + +This policy is intended to explain how to use our trademarks in a way that is consistent with background law and community expectations. This policy covers: + +1. Our word trademarks and service marks: Cachet +2. Our logos: The Cachet logos + +This policy encompasses all trademarks and service marks, whether they are registered or not. + +## General guidelines + +Whenever you use one of our marks, you must always do so in a way that does not mislead anyone about what they are getting and from whom. + +Do not use the Cachet marks in any way that could mistakenly imply that Cachet has reviewed, approved or guaranteed your goods or services. You also cannot use our logo on your website in a way that suggests that your website is an official website or that we endorse your website. You can, though, say you like the Cachet software, that you use Cachet, that the analytics are powered by Cachet or that you participate in the Cachet community. + +Do not use the "Cachet" prefix in a way that could mistakenly imply that your product is related to Cachet. For example, an analytics product that uses Cachet should not use the name "cachetanalytics". + +You may not use or register our marks or variations of them as part of your trademark, business, product, service, app, domain name, social media account or business indicator. You may not use our marks as a part of an advertising campaign. You may not display Cachet trademarks more prominently than your product, service or company name. You may not use Cachet trademarks on merchandise for sale (e.g., selling t-shirts, mugs, etc). + +Trademark law does not allow your use of names or trademarks that are too similar to ours. You therefore may not use an obvious variation of any of our marks or any phonetic equivalent, foreign language equivalent, takeoff, or abbreviation for a similar or compatible product or service. + +## Acceptable uses + +You can use the Cachet name to truthfully and accurately refer to or identify Cachet and its products and services in the following instances: + +- To refer to Cachet and its products and services in news articles and other content without alteration +- To discuss Cachet and its products in a fair and honest manner that does not suggest sponsorship or endorsement by or affiliation with Cachet +- To refer to and/or to link to the products and services hosted on Cachet’s servers and website +- To indicate if your product, service or solution integrates, or is interoperable or compatible, with Cachet, for example, “we offer a simple integration with Cachet”, provided that doing so does not create a likelihood of confusion as to the origin of such product, service, or solution +- You may use our word marks as part of a public subdomain solely for the purpose of serving as the URL for your self-managed Cachet instance, for example, cachethq.iopanyname.com + +## Prohibited uses + +Unless you have express written permission from Cachet, or your use is permitted pursuant to the acceptable uses set forth above, the use of Cachet trademarks is strictly prohibited. Here is a short, non-exhaustive list of the kinds of uses that are not permitted without Cachet’s express written permission but that Cachet may consider granting you the right to do should you request permission: + +- Use of Cachet trademarks in connection with the provision of a public website that makes Cachet software available for installation and use on a server (rather than directing users to the official Cachet site) +- Use of Cachet trademarks in connection with versions of Cachet products made publicly available or made available in the cloud on a managed service provider, resale or other commercial basis +- Use of Cachet trademarks in connection with Cachet product bundled with other software + +In the above cases: + +- You must follow the terms of the open source license for Cachet software products and code +- You must remove all of our logos from it and choose your branding, logos and trademarks that denote your unique identity to clearly signal to users that there is no affiliation with or endorsement by Cachet +- You must not use any Cachet trademark in connection with the user-facing name, branding or marketing materials of your project +- You may use word marks, but not our logos, in truthful statements that describe the relationship between your software and ours, for example, “this software is derived from the source code of the Cachet software”, as long as you also include a statement that your project is not officially associated with Cachet or its products +- Cachet reserves the right in its sole discretion to (i) terminate, revoke, modify, or otherwise change permission to use the trademarks at any time and; (ii) object to any use or misuse of the trademarks in any jurisdiction worldwide. All changes to these guidelines are effective immediately when posted and your continued use of the trademarks following the posting of revised guidelines signifies your acceptance of such revision. + +## To request the use of the trademarks + +Anyone wishing to use any of Cachet’s trademarks in a manner other than the acceptable uses listed above, including but not limited to marketing, promotion or advertising, or on software derivative of Cachet software, must obtain Cachet’s express, written permission in advance. + +To request the use of the trademarks in a manner or for a purpose not expressly permitted in these guidelines, including use for any purpose of the logos, please email [hello@cachethq.io](mailto:hello@cachethq.io) to discuss. If you need clarification on whether your use qualifies, please ask. + +## To report misuse + +If you want to report misuse of a Cachet trademark, please email [hello@cachethq.io](mailto:hello@cachethq.io). + +Last updated: November 25 2024 + +These guidelines are based on the Model Trademark Guidelines, available at http://www.modeltrademarkguidelines.org., used under a Creative Commons Attribution 3.0 Unported license: https://creativecommons.org/licenses/by/3.0/deed.en_US \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 60b3983..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "module": "esnext", - "target": "esnext", - "moduleResolution": "node", - "esModuleInterop": true, - "strict": true, - "skipLibCheck": true, - "noUnusedLocals": true, - "resolveJsonModule": true, - "verbatimModuleSyntax": true, - "jsx": "preserve", - "lib": ["esnext", "dom", "dom.iterable"] - }, - "exclude": ["**/node_modules/**", "**/dist/**", "template"] -} \ No newline at end of file diff --git a/src/client-libraries.md b/v2.x/client-libraries.mdx similarity index 88% rename from src/client-libraries.md rename to v2.x/client-libraries.mdx index 4577209..6ac7bc7 100644 --- a/src/client-libraries.md +++ b/v2.x/client-libraries.mdx @@ -1,4 +1,7 @@ -# Client Libraries +--- +title: 'Client Libraries' +description: 'A list of third party libraries for the Cachet API.' +--- There are various third party libraries for the Cachet API. @@ -18,3 +21,4 @@ If you've made any libraries that consume Cachet's library please let us know by | PHP | https://github.com/checkitonus/php-cachet-api | CheckItOn.us | | C# | https://github.com/BerkanYildiz/Cachet.NET | Berkan Yildiz | | Python | https://github.com/ZettaIO/cachet-client | Einar Forselv | +| PHP | https://github.com/successtar/cachet-manager | Hammed Osanyinpeju | diff --git a/src/component-statuses.md b/v2.x/component-statuses.mdx similarity index 90% rename from src/component-statuses.md rename to v2.x/component-statuses.mdx index bda8f78..43bff81 100644 --- a/src/component-statuses.md +++ b/v2.x/component-statuses.mdx @@ -1,8 +1,7 @@ -# Component Statuses - -[[toc]] - -## Statuses +--- +title: 'Component Statuses' +description: 'Learn about the different component statuses in Cachet.' +--- Unlike Incidents, Cachet indexes component statuses starting at `1`. When creating or updating a component, you'll need to specify a status for it. diff --git a/src/configuration/cors.md b/v2.x/configuration/cors.mdx similarity index 87% rename from src/configuration/cors.md rename to v2.x/configuration/cors.mdx index c22fa59..7ef3b44 100644 --- a/src/configuration/cors.md +++ b/v2.x/configuration/cors.mdx @@ -1,8 +1,8 @@ -# CORS - -[[toc]] - -## Configuring Cors +--- +title: 'CORS' +description: 'Learn how to configure CORS in Cachet.' +icon: 'check' +--- By default, Cachet can be **accessed by any** third-party server. This may not be ideal for security reasons, so we recommend you configure CORS to only allow access from your own domains. diff --git a/src/configuration/github-oauth-token.md b/v2.x/configuration/github-oauth-token.mdx similarity index 90% rename from src/configuration/github-oauth-token.md rename to v2.x/configuration/github-oauth-token.mdx index 9cb47f1..efc217d 100644 --- a/src/configuration/github-oauth-token.md +++ b/v2.x/configuration/github-oauth-token.mdx @@ -1,6 +1,8 @@ -# GitHub OAuth Token - -[[toc]] +--- +title: 'GitHub OAuth Token' +description: 'How to enable GitHub Emoji support in Cachet.' +icon: 'face-smile' +--- ## Overview diff --git a/src/configuration/mail.md b/v2.x/configuration/mail.mdx similarity index 93% rename from src/configuration/mail.md rename to v2.x/configuration/mail.mdx index d4dd7cb..925907e 100644 --- a/src/configuration/mail.md +++ b/v2.x/configuration/mail.mdx @@ -1,8 +1,8 @@ -# Mail - -[[toc]] - -## Configuring Mail +--- +title: 'Mail' +description: 'Learn how to configure mail in Cachet.' +icon: 'envelope' +--- Your `.env` file will need to include the following setting keys. diff --git a/src/configuration/prerequisites.md b/v2.x/configuration/prerequisites.mdx similarity index 88% rename from src/configuration/prerequisites.md rename to v2.x/configuration/prerequisites.mdx index ebffd97..98a017a 100644 --- a/src/configuration/prerequisites.md +++ b/v2.x/configuration/prerequisites.mdx @@ -1,8 +1,10 @@ -# Prerequisites +--- +title: 'Prerequisites' +description: 'Prerequisites for installing Cachet.' +icon: 'list-check' +--- -[[toc]] - -## Application Prerequisites +## Cachet Prerequisites You'll need at least the following installed on your server: diff --git a/src/configuration/queue.md b/v2.x/configuration/queue.mdx similarity index 80% rename from src/configuration/queue.md rename to v2.x/configuration/queue.mdx index e490ce2..9cba9b1 100644 --- a/src/configuration/queue.md +++ b/v2.x/configuration/queue.mdx @@ -1,6 +1,8 @@ -# Queue - -[[toc]] +--- +title: 'Queue' +description: 'Learn how to configure the queue in Cachet.' +icon: 'gears' +--- ## Overview @@ -14,7 +16,7 @@ The recommended setup for the queue is to use [Supervisor](https://www.digitaloc ## Cachet v2.4 -``` +```ini /etc/supervisor.d/conf/cachet.conf [program:cachet-queue] command=php artisan queue:work --delay=1 --sleep=1 --timeout=1800 --tries=3 directory=/var/www/cachet/ @@ -28,7 +30,7 @@ user=cachet You should create a Supervisor configuration file named `/etc/supervisor.d/conf/cachet.conf` -``` +```ini /etc/supervisor.d/conf/cachet.conf [program:cachet-queue] command=php artisan queue:work --daemon --delay=2 --sleep=1 --tries=3 directory=/var/www/cachet/ @@ -38,21 +40,13 @@ autorestart=true user=cachet ``` -[block:callout] -{ - "type": "info", - "title": "Update to your configuration!", - "body": "Be sure to update the values in the example configuration above to match your installation setup." -} -[/block] - ## Queues Using The Scheduler The default installation of Cachet sets the queue type to `database` which means that all jobs are stored within your database and is then processed by a cron job which calls an artisan command from within the project directory. You'll need to create a new cron job, in Ubuntu it's a case of running `crontab -e` and adding this line: -``` +```bash /etc/crontab * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1 ``` @@ -62,12 +56,12 @@ Close the file and the cron job will now begin running, processing any confirmat If you cannot add a queue job, another alternative is to process all of the *jobs* immediately after they are created. -:::warning Not suitable for larger installations! -This setup is not ideal for larger installs with hundreds of subscribers as each email can take a few seconds to send and would slow down your interaction with the system. -::: + + This setup is not ideal for larger installs with hundreds of subscribers as each email can take a few seconds to send and would slow down your interaction with the system. + To set this up change the `.env` file with the following setting: -```ini +```ini .env QUEUE_DRIVER=sync ``` \ No newline at end of file diff --git a/v2.x/configuration/subscribers.mdx b/v2.x/configuration/subscribers.mdx new file mode 100644 index 0000000..8a7bda5 --- /dev/null +++ b/v2.x/configuration/subscribers.mdx @@ -0,0 +1,19 @@ +--- +title: 'Subscribers' +description: 'Learn how to configure subscribers in Cachet.' +icon: 'envelopes' +--- + +## Overview + +One of the most powerful features of Cachet is the ability to automatically send notification emails to anybody who has subscribed to your status page whenever an incident is created. + +## Configuring Subscribers + + + Before going any further, ensure that you've [configured the mail](/v2.x/configuration/mail) and the [queue](/v2.x/configuration/queue). + + +Once you've [configured mail](/v2.x/configuration/mail), you'll need to log in to your dashboard and enable the **Allow people to sign up to email notifications?** setting found in the **Application Setup** panel. + +Once you've enabled this setting you'll see a **Subscribe** button in the footer of your status page. \ No newline at end of file diff --git a/src/faq.md b/v2.x/faq.mdx similarity index 74% rename from src/faq.md rename to v2.x/faq.mdx index 07305ae..85a8128 100644 --- a/src/faq.md +++ b/v2.x/faq.mdx @@ -1,10 +1,11 @@ -# Frequently Asked Questions - -[[toc]] +--- +title: 'Frequently Asked Questions' +description: 'Common questions and answers about Cachet.' +--- ## Do you provide installations? -We offer a professional installation service. [Email us](mailto:support@cachethq.io?subject=Cachet%20Installation) with your requirements, and we'll be happy to get everything set up for you! +We can offer a professional installation service. [Email us](mailto:support@cachethq.io?subject=Cachet%20Installation) with your requirements, and we'll be happy to get everything set up for you! ## How do I reset a forgotten password? diff --git a/src/incident-statuses.md b/v2.x/incident-statuses.mdx similarity index 89% rename from src/incident-statuses.md rename to v2.x/incident-statuses.mdx index 2b5e1e5..7a9722d 100644 --- a/src/incident-statuses.md +++ b/v2.x/incident-statuses.mdx @@ -1,8 +1,7 @@ -# Incident Statuses - -[[toc]] - -## Statuses +--- +title: 'Incident Statuses' +description: 'Learn about the different incident statuses in Cachet.' +--- Cachet uses a zero-based numbering scheme to identify incident statuses. When creating or updating an incident, it's important that you specify the `status` of the incident. diff --git a/src/installation/beacons.md b/v2.x/installation/beacons.mdx similarity index 69% rename from src/installation/beacons.md rename to v2.x/installation/beacons.mdx index a8f009b..af9e4f2 100644 --- a/src/installation/beacons.md +++ b/v2.x/installation/beacons.mdx @@ -1,12 +1,14 @@ -# Beacons - -[[toc]] +--- +title: 'Beacons' +description: "Learn about Cachet's beacon system." +icon: 'bell' +--- Cachet can optionally periodically communicate with our remote server. This is done so that we're able to gather information about the current version of Cachet and will later be used for system announcements. -:::tip v2.4 -Beacons are only available in Cachet v2.4 and above. -::: + + Beacons are only available in Cachet v2.4 and above. + ## What's Reported? @@ -14,7 +16,7 @@ We report the following information to our server: - A unique installation ID - The current version of Cachet -- A support contact email (the first enabled admin's email) +- A support contact email (the first enabled administrator's email address) - Anonymous statistics (the number of users, incidents, components and metrics) ## Disabling Beacons diff --git a/src/installation/docker.md b/v2.x/installation/docker.mdx similarity index 95% rename from src/installation/docker.md rename to v2.x/installation/docker.mdx index 7310b6c..947c8cd 100644 --- a/src/installation/docker.md +++ b/v2.x/installation/docker.mdx @@ -1,6 +1,8 @@ -# Docker - -[[toc]] +--- +title: 'Docker' +description: 'Learn how to install Cachet on your server with Docker.' +icon: 'docker' +--- ## Overview diff --git a/src/installation/guide.md b/v2.x/installation/guide.mdx similarity index 78% rename from src/installation/guide.md rename to v2.x/installation/guide.mdx index 06df8b7..380ecd9 100644 --- a/src/installation/guide.md +++ b/v2.x/installation/guide.mdx @@ -1,6 +1,8 @@ -# Installation - -[[toc]] +--- +title: 'Installation' +description: 'Learn how to install Cachet on your server.' +icon: 'download' +--- ## Prerequisites @@ -24,9 +26,9 @@ composer install --no-dev -o ## Installing Cachet -:::warning Check out the latest version -The tags below are examples of what will be shown. You should always run `git checkout` on the latest tag. -::: + + The tags below are examples of what will be shown. You should always run `git checkout` on the latest tag. + ```bash cd /var/www # Or wherever you chose to install web applications to @@ -49,9 +51,9 @@ By default, Cachet comes with a `.env.example` file. You'll need to rename this It's now just a case of editing this new `.env` file and setting the values of your setup. -:::tip Environment Configuration -Any values with spaces in them should be contained within double quotes. -::: + + Any values with spaces in them should be contained within double quotes. + ```ini APP_ENV=production @@ -87,9 +89,9 @@ REDIS_PORT=null GITHUB_TOKEN=null ``` -:::tip SQLite -If you're using SQLite then your `.env` file should not contain a `DB_HOST` key. You'll also need to `touch ./database/database.sqlite` and give it the required permissions. -::: + + If you're using SQLite then your `.env` file should not contain a `DB_HOST` key. You'll also need to `touch ./database/database.sqlite` and give it the required permissions. + ### Setting the application key @@ -112,9 +114,9 @@ Cachet comes with an installation command that will do the following for you: php artisan app:install ``` -:::warning `APP_KEY` Changes -Never change the `APP_KEY` after installation on production environment. This will result in all encrypted/hashed data being lost. -::: + + Never change the `APP_KEY` after installation on production environment. This will result in all encrypted/hashed data being lost. + ## Installation Difficulties diff --git a/src/installation/upgrading.md b/v2.x/installation/upgrading.mdx similarity index 90% rename from src/installation/upgrading.md rename to v2.x/installation/upgrading.mdx index ec103ec..a3e6f30 100644 --- a/src/installation/upgrading.md +++ b/v2.x/installation/upgrading.mdx @@ -1,6 +1,8 @@ -# Upgrading - -[[toc]] +--- +title: 'Upgrading' +description: 'Learn how to upgrade Cachet to the latest version.' +icon: 'square-plus' +--- ## Overview diff --git a/src/installation/windows.md b/v2.x/installation/windows.mdx similarity index 95% rename from src/installation/windows.md rename to v2.x/installation/windows.mdx index 56b71f9..23926ae 100644 --- a/src/installation/windows.md +++ b/v2.x/installation/windows.mdx @@ -1,6 +1,8 @@ -# Windows - -[[toc]] +--- +title: 'Windows' +description: 'Learn how to install Cachet on your Windows server.' +icon: 'windows' +--- ## Overview @@ -63,9 +65,9 @@ REDIS_PORT=null GITHUB_TOKEN=null ``` -:::tip SQLite -If you're using SQLite then your `.env` file should not contain a `DB_HOST` key. You'll also need to `touch ./database/database.sqlite` and give it the required permissions. -::: + + If you're using SQLite then your `.env` file should not contain a `DB_HOST` key. You'll also need to `touch ./database/database.sqlite` and give it the required permissions. + After installation, don't forget to set `APP_DEBUG` to `false` to avoid other people to see your application info! @@ -102,9 +104,9 @@ Cachet comes with an installation command that will: php artisan app:install ``` -:::warning `APP_KEY` Changes -Never change the `APP_KEY` after installation on production environment. This will result in all encrypted/hashed data being lost. -::: + + Never change the `APP_KEY` after installation on production environment. This will result in all encrypted/hashed data being lost. + ## `php.ini` Config diff --git a/src/integrations.md b/v2.x/integrations.mdx similarity index 91% rename from src/integrations.md rename to v2.x/integrations.mdx index d3c275f..726811f 100644 --- a/src/integrations.md +++ b/v2.x/integrations.mdx @@ -1,4 +1,15 @@ -# Integrations +--- +title: 'Third-Party Integrations' +description: 'Discover third-party integrations with Cachet.' +--- + + + These integrations are not maintained by the Cachet team. Please refer to the respective repositories for support. + + +## Cachet 2.x + +These integrations are compatible with Cachet 2.x. | Name | Link | Description | |-------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| diff --git a/src/introduction.md b/v2.x/introduction.mdx similarity index 77% rename from src/introduction.md rename to v2.x/introduction.mdx index a12c08f..6d46045 100644 --- a/src/introduction.md +++ b/v2.x/introduction.mdx @@ -1,10 +1,11 @@ -# Cachet +--- +title: Introduction +description: 'Cachet is a beautiful and powerful open source status page system.' +--- 🚦 The open-source status page system. -[[toc]] - -## Features +## Key Features ### JSON API @@ -15,5 +16,5 @@ Sometimes it's simply not possible to manually update your status page with inci It can't be avoided, sometimes you just need to perform maintenance. With Cachet, you can schedule events ahead of time. Once the maintenance time has passed, the incident drops into the timeline for posterity. ### Metrics - -Within the dashboard you're able to set up metrics - a way to measure something, whether it's uptime, error rates or something completely random like "cups of coffee drank today". + +Within the dashboard you're able to set up metrics - a way to measure something, whether it's uptime, error rates or something completely random like "cups of coffee drank today". \ No newline at end of file diff --git a/v3.x/change-log.mdx b/v3.x/change-log.mdx new file mode 100644 index 0000000..dbe3a2e --- /dev/null +++ b/v3.x/change-log.mdx @@ -0,0 +1,26 @@ +--- +title: 'Change Log' +description: 'Learn about the changes in Cachet.' +--- + + + # Added + + - (Core) Oh Dear Integration [#134](https://github.com/cachethq/core/pull/134) + + # Changed + + - (Core) Improved database seeder [`1f43fb`](https://github.com/cachethq/core/commit/1f43fb32696576036596914391f56feb79be76ff) + + + + # Added + + - (Core) Scribe API Annotations [#130](https://github.com/cachethq/core/pull/130) + + # Changed + + - (Core) Time Controlled Status for Scheduled Maintenance [#119](https://github.com/cachethq/core/pull/119) + - (Docs) Documentation is now powered by [Mintlify](https://mintlify.com). + - API reference for v3.x is available. + \ No newline at end of file diff --git a/v3.x/configuration/api-keys.mdx b/v3.x/configuration/api-keys.mdx new file mode 100644 index 0000000..00aa369 --- /dev/null +++ b/v3.x/configuration/api-keys.mdx @@ -0,0 +1,43 @@ +--- +title: 'API Keys' +description: 'Learn how to create and manage API keys in Cachet.' +icon: 'key' +--- + +API keys are used to authenticate requests to the [Cachet API](/api-reference). You can create multiple API keys with different +permissions to control access to the API. This is particularly useful if you want to give third-party services +access to your Cachet data without granting them full access to your status page. + +## Creating an API Key + +To create an API key, follow these steps: + + + Go to the "Manage API Keys" page in the Cachet dashboard. This is located under the "Settings" navigation group. + + + Click the "New API Key" button. You will need to provide a name for the API key. This can be any name that helps + you identify the key. + + You may select an expiration date for the token. This provides an extra layer of security as tokens will no longer + work after the expiration date. You may choose to leave this blank to create a token that never expires. + + Finally, select the permissions for the API key. You may leave the permissions empty to select give full permissions. + + + Cachet will display the token in plain text. Make sure to copy the token and store it in a secure location. + + + Cachet will not display the token again. If you lose the token, you will need to create a new API key. + + + + +## Revoking Tokens + +If you no longer need an API key, you can revoke it. To revoke an API key, click the "Revoke" button next to the key. + + + Revoking an API key is irreversible. Once you revoke a key, it can no longer be used to authenticate requests to + the Cachet API. + \ No newline at end of file diff --git a/v3.x/configuration/beacon.mdx b/v3.x/configuration/beacon.mdx new file mode 100644 index 0000000..8774718 --- /dev/null +++ b/v3.x/configuration/beacon.mdx @@ -0,0 +1,41 @@ +--- +title: 'Beacon' +description: "Learn how to configure Cachet's beacon." +icon: 'lighthouse' +--- + +Cachet's "beacon" system is an optional telemetry system that allows you to send anonymous usage data to Cachet. +This data helps us to understand how Cachet is being used and how we can improve it. + +## Configuration + +By default, Cachet's beacon is turned off. You can opt in by setting the `CACHET_BEACON` environment variable to `true`. + +```ini .env +CACHET_BEACON=true +``` + + + If you're limiting outbound requests on your server and you'd like to opt into the beacon, you'll need to allow outbound requests to `https://cachethq.io`. + + +### Configuring the scheduler + +Cachet automatically registers the `cachet:beacon` command to run daily at `00:00`. You will need to configure your server +to run the scheduler every minute using a cron job. To do so, you can do this by adding the following cron entry: + +```bash /etc/crontab +* * * * * php /path/to/cachet/artisan schedule:run >> /dev/null 2>&1 +``` + + + Be sure to replace `/path/to/cachet` with the actual path to your Cachet installation. + + +## What data is collected? + +- **Install ID**: An anonymous identifier for your Cachet installation. +- **Cachet Version**: The version of Cachet you're running. +- **Docker**: Whether you're running Cachet in a Docker container. +- **Database**: The type of database you're using. +- **Usage Data**: How you're using Cachet, such as the number of incidents, components, subscribers, etc. \ No newline at end of file diff --git a/v3.x/configuration/cachet.mdx b/v3.x/configuration/cachet.mdx new file mode 100644 index 0000000..98c4ae4 --- /dev/null +++ b/v3.x/configuration/cachet.mdx @@ -0,0 +1,81 @@ +--- +title: 'Cachet' +description: 'Learn how to manage Cachet.' +icon: 'circle-check' +--- + +Cachet provides the ability to customize various settings to suit your needs. To manage Cachet, navigate to the +"Settings" section found in your Cachet dashboard. + +## Site Name + +You may change the name of your status page by updating the "Site Name" field. This is the name that will be displayed +in the title and header of your status page. + +## About Section + +The "About" section allows you to provide a brief description of your status page. This is an ideal section to provide +information about your organization, services, or status page. + + + The "About This Site" section supports Markdown formatting. + + +## Timezone + +The "Timezone" setting allows you to set the timezone for your status page. This is used to display the correct time +for incidents and scheduled maintenance. The status page will always display timestamps in the user's local time. + +## Incident Days + +This setting allows you to specify the number of days to display incidents on your status page. Incidents older than the +specified number of days will be pushed into separate pages. + +We recommend that you set this value to a reasonable number of days to ensure that your status page remains performant +and does not overload users with too much information. + +## Major Outage Threshold + +The "Major Outage Threshold" setting allows you to configure how many components (as a % of your total components) must +be down before the system status is marked as "Major Outage". + +When the number of down components exceeds the specified threshold, the status page will display a "Major Outage" banner. + +## Automatically Refresh Page + +The "Automatically Refresh Page" setting allows you to enable or disable the automatic refresh of your status page. When enabled, the status page will automatically refresh at the specified interval. + +The provided number will be the number of seconds between each refresh. + +## Other Settings + +Cachet also provides additional settings to customize your status page. + +### Support Cachet + +The "Support Cachet" setting allows you to enable or disable the "Powered by Cachet" link in the footer of your status page. + +We’d really appreciate it if you could leave this enabled to help spread the word about Cachet 💚 + +### Display Graphs + +The "Display Graphs" setting allows you to enable or disable the display of graphs on your status page. When enabled, the +status page will display graphs for metrics such as uptime and response time. + + + Metrics are not fully supported in Cachet v3.x. This setting will have no effect until metrics are implemented. + + +### Show Timezone + +The "Show Timezone" setting allows you to enable or disable the display of the timezone on your status page. When enabled, +the status page will display the timezone in the footer. + +### Only Show Disrupted Days + +The "Only Show Disrupted Days" setting allows you to enable or disable the display of days with incidents on your status +page. When enabled, the status page will only display days with incidents. By default, all days are displayed. + +### Show Dashboard Link + +The "Show Dashboard Link" setting allows you to enable or disable the display of the "Dashboard" link in the header of your status page. When enabled, the status page will display a link to the Cachet dashboard. \ No newline at end of file diff --git a/v3.x/configuration/customization.mdx b/v3.x/configuration/customization.mdx new file mode 100644 index 0000000..7cff349 --- /dev/null +++ b/v3.x/configuration/customization.mdx @@ -0,0 +1,82 @@ +--- +title: 'Customization' +description: 'Learn how to customize Cachet.' +icon: 'palette' +--- + +Cachet provides the ability to customize your status page with custom HTML and CSS. To customize your status page, +navigate to the "Manage Customization" section which is found under "Settings" in your Cachet dashboard. + +## Custom Header HTML + +From here, you can add custom HTML including scripts and styles into the header of your status page. This is an ideal +section to add custom analytics scripts. + +HTML or scripts placed in this section will be added to the `` of your status page. + +### Fathom Analytics + +We recommend [Fathom Analytics](https://usefathom.com/james) for privacy-focused analytics. To add Fathom Analytics to +your status page, you can use the following script: + +```html + +``` + + + The Fathom link above is a referral link. If you sign up using the link, you'll receive $10 credit. + This helps support the Cachet project. + + +## Custom Footer HTML + +Add custom HTML to the footer of your status page to personalize scripts or styles. + +HTML or scripts placed in this section will be added to the end of the `` of your status page. + +## Custom CSS + +Add custom CSS to your status page to personalize the design. You do not need to include `