diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 927d11c..0000000 --- a/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["@antfu", "./.eslintrc-auto-import.json"], - "rules": { - "vue/component-name-in-template-casing": ["error", "kebab-case"] - } -} diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json deleted file mode 100644 index 8a135a3..0000000 --- a/.eslintrc-auto-import.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "globals": { - "Component": true, - "ComponentPublicInstance": true, - "ComputedRef": true, - "EffectScope": true, - "InjectionKey": true, - "PropType": true, - "Ref": true, - "VNode": true, - "computed": true, - "createApp": true, - "customRef": true, - "defineAsyncComponent": true, - "defineComponent": true, - "effectScope": true, - "getCurrentInstance": true, - "getCurrentScope": true, - "h": true, - "inject": true, - "isProxy": true, - "isReactive": true, - "isReadonly": true, - "isRef": true, - "markRaw": true, - "nextTick": true, - "onActivated": true, - "onBeforeMount": true, - "onBeforeRouteLeave": true, - "onBeforeRouteUpdate": true, - "onBeforeUnmount": true, - "onBeforeUpdate": true, - "onDeactivated": true, - "onErrorCaptured": true, - "onMounted": true, - "onRenderTracked": true, - "onRenderTriggered": true, - "onScopeDispose": true, - "onServerPrefetch": true, - "onUnmounted": true, - "onUpdated": true, - "provide": true, - "reactive": true, - "readonly": true, - "ref": true, - "resolveComponent": true, - "shallowReactive": true, - "shallowReadonly": true, - "shallowRef": true, - "toRaw": true, - "toRef": true, - "toRefs": true, - "toValue": true, - "triggerRef": true, - "unref": true, - "useAttrs": true, - "useCssModule": true, - "useCssVars": true, - "useLink": true, - "useRoute": true, - "useRouter": true, - "useSlots": true, - "watch": true, - "watchEffect": true, - "watchPostEffect": true, - "watchSyncEffect": true - } -} diff --git a/.firebaserc b/.firebaserc deleted file mode 100644 index 4153daa..0000000 --- a/.firebaserc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "projects": { - "prod": "byte-builders", - "default": "kubedb-new-e7965" - }, - "targets": { - "kubedb-new-e7965": { - "hosting": { - "nuxt": [ - "bb-docs-qa" - ] - } - }, - "byte-builders": { - "hosting": { - "nuxt": [ - "byte-builders-docs" - ] - } - } - } -} diff --git a/.github/.kodiak.toml b/.github/.kodiak.toml index ded81e4..b64a5f6 100644 --- a/.github/.kodiak.toml +++ b/.github/.kodiak.toml @@ -15,4 +15,4 @@ strip_html_comments = true # default: false always = true # default: false [approve] -auto_approve_usernames = ["1gtm", "tamalsaha"] +auto_approve_usernames = ["tamalsaha", "1gtm", "1gtm-app[bot]"] \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c2f87f8..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - open-pull-requests-limit: 0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2842e96..da5934d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,7 @@ name: CI on: pull_request: branches: - - '*' + - "*" push: branches: - master @@ -14,48 +14,55 @@ concurrency: cancel-in-progress: true jobs: - label-detector: - name: Runner Label - runs-on: label-detector - outputs: - runs-on: ${{ steps.detector.outputs.label }} - steps: - - name: Detect Label - id: detector - run: | - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs - echo "label=$(curl -fsSL https://this-is-nats.appscode.ninja/runs-on/${{ github.repository_owner }}?visibility=${{ github.repository_visibility }})" >> $GITHUB_OUTPUT - build: name: Build - needs: label-detector - runs-on: "${{ needs.label-detector.outputs.runs-on }}" - + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/setup-node@v4 + - name: Install kubectl + run: | + curl -LO https://dl.k8s.io/release/v1.32.1/bin/linux/amd64/kubectl + chmod +x ./kubectl + sudo mv ./kubectl /usr/local/bin/kubectl + + - name: Install link checker + run: | + curl -fsSL -o liche https://github.com/appscodelabs/liche/releases/download/v0.1.0/liche-linux-amd64 + chmod +x liche + sudo mv liche /usr/local/bin/liche + + - name: Create Kubernetes cluster + id: kind + uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0 with: - node-version: '22' - check-latest: true + version: v0.31.0 - - name: Prepare git - env: - GITHUB_USER: 1gtm - GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + - name: Prepare cluster for testing + id: local-path run: | - set -x - git config --global user.name "${GITHUB_USER}" - git config --global user.email "${GITHUB_USER}@appscode.com" - git config --global \ - url."https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com".insteadOf \ - "https://github.com" - - - name: Build - env: - CI: true + echo "waiting for nodes to be ready ..." + kubectl wait --for=condition=Ready nodes --all --timeout=5m + kubectl get nodes + echo + echo "install helm 3" + curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash + + - name: Check links run: | - npm ci - npm run build + liche -r docs -d $(pwd) -c 10 -p -h -l -x '^(.*golang.org.*|.*github.com.*|.*api.slack.com.*|.*twitter.com.*|.*linode.com.*|.*helm.sh.*|.*k8s.io.*|.*percona.com.*|.*kubernetes.io.*|.*search-guard.com.*|.*hub.docker.com.*|.*appscode.com.*|.*mongodb.com.*|.*community.arm.com.*|.*cluster.com.*|.*proxysql.com.*|.*postgresql.org.*|.*kafka.com.*|.*stackoverflow.com.*|.*redis.io.*|.*elastic.co.*|.*mysql.*|.*developer.hashicorp.com.*|.*pgpool.net.*|.*clickhouse.com.*)$' + max_retries=5 + retry_count=0 + while [ $retry_count -lt $max_retries ]; do + if liche -r docs -d $(pwd) -c 10 -p -h -l -x '^(.*golang.org.*|.*github.com.*|.*api.slack.com.*|.*twitter.com.*|.*linode.com.*|.*helm.sh.*|.*k8s.io.*|.*percona.com.*|.*kubernetes.io.*|.*search-guard.com.*|.*hub.docker.com.*|.*appscode.com.*|.*mongodb.com.*|.*community.arm.com.*|.*cluster.com.*|.*proxysql.com.*|.*postgresql.org.*|.*kafka.com.*|.*stackoverflow.com.*|.*redis.io.*|.*elastic.co.*|.*mysql.*|.*developer.hashicorp.com.*|.*pgpool.net.*|.*clickhouse.com.*)$'; then + echo "Link check passed" + exit 0 + fi + retry_count=$((retry_count + 1)) + if [ $retry_count -lt $max_retries ]; then + echo "Link check failed, retrying... (attempt $((retry_count + 1))/$max_retries)" + sleep 5 + fi + done + echo "Link check failed after $max_retries attempts" + exit 1 diff --git a/.github/workflows/preview-website.yml b/.github/workflows/preview-website.yml index 9e5e52e..922a7b0 100644 --- a/.github/workflows/preview-website.yml +++ b/.github/workflows/preview-website.yml @@ -11,56 +11,82 @@ concurrency: cancel-in-progress: true jobs: - label-detector: - name: Runner Label - runs-on: label-detector - outputs: - runs-on: ${{ steps.detector.outputs.label }} - steps: - - name: Detect Label - id: detector - run: | - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs - echo "label=$(curl -fsSL https://this-is-nats.appscode.ninja/runs-on/${{ github.repository_owner }}?visibility=${{ github.repository_visibility }})" >> $GITHUB_OUTPUT - build: name: Build - needs: label-detector - runs-on: "${{ needs.label-detector.outputs.runs-on }}" + runs-on: ubuntu-latest + permissions: + contents: read + checks: write + pull-requests: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: - persist-credentials: false + submodules: true + + - name: Set up Go 1.x + uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0 + with: + go-version: '1.25' + id: go - name: Use Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: '22' - check-latest: true - - name: Prepare git + - name: Install yq + run: | + curl -fsSL -o yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + chmod +x yq + sudo mv yq /usr/local/bin/yq + + - name: Install Hugo + run: | + curl -fsSL -o hugo_extended.deb https://github.com/gohugoio/hugo/releases/download/v0.128.2/hugo_extended_0.128.2_linux-amd64.deb + sudo dpkg -i hugo_extended.deb + rm hugo_extended.deb + + - name: Install Hugo Tools + run: | + curl -fsSL -o hugo-tools https://github.com/appscodelabs/hugo-tools/releases/download/v0.2.23/hugo-tools-linux-amd64 + chmod +x hugo-tools + sudo mv hugo-tools /usr/local/bin/hugo-tools + + - name: Clone website repository env: - GITHUB_USER: 1gtm - GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + GITHUB_USER: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WEBSITE_REPOSITORY: ${{ secrets.WEBSITE_REPOSITORY }} run: | - set -x - git config --global user.name "${GITHUB_USER}" - git config --global user.email "${GITHUB_USER}@appscode.com" - git config --global \ - url."https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com".insteadOf \ - "https://github.com" + url="https://${GITHUB_USER}:${GITHUB_TOKEN}@${WEBSITE_REPOSITORY}.git" + cd $RUNNER_WORKSPACE + git clone --recurse-submodules $url + cd $(basename $WEBSITE_REPOSITORY) + git config user.name "${GITHUB_USER}" + git config user.email "${GITHUB_USER}@appscode.com" - name: Update docs + env: + GITHUB_USER: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WEBSITE_REPOSITORY: ${{ secrets.WEBSITE_REPOSITORY }} run: | - npm ci - npm run build + set -x + export WEBSITE_ROOT=$RUNNER_WORKSPACE/$(basename $WEBSITE_REPOSITORY) + cd $WEBSITE_ROOT + npm install + make assets + hugo-tools update-branch --filename=./data/products/kubedbplatform.json --branch=${{ github.event.pull_request.head.sha }} + rm -rf content/docs + make docs-platform + make gen-prod - - uses: FirebaseExtended/action-hosting-deploy@v0 + - uses: FirebaseExtended/action-hosting-deploy@092436dca3ec6dacb231d965ae56f7ff6c09f258 # v0 with: repoToken: '${{ secrets.GITHUB_TOKEN }}' firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_QA }}' projectId: kubedb-new-e7965 # target: kubedb-new-e7965 - # entryPoint: '.' + entryPoint: '../website' env: FIREBASE_CLI_PREVIEWS: hostingchannels diff --git a/.github/workflows/release-tracker.yml b/.github/workflows/release-tracker.yml index d46b567..e831425 100644 --- a/.github/workflows/release-tracker.yml +++ b/.github/workflows/release-tracker.yml @@ -10,46 +10,28 @@ concurrency: cancel-in-progress: true jobs: - label-detector: - name: Runner Label - runs-on: label-detector - outputs: - runs-on: ${{ steps.detector.outputs.label }} - steps: - - name: Detect Label - id: detector - run: | - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs - echo "label=$(curl -fsSL https://this-is-nats.appscode.ninja/runs-on/${{ github.repository_owner }}?visibility=${{ github.repository_visibility }})" >> $GITHUB_OUTPUT - build: + if: github.event.pull_request.merged == true name: Build - needs: label-detector - runs-on: "${{ needs.label-detector.outputs.runs-on }}" - + runs-on: ubuntu-latest + permissions: + contents: read steps: - - uses: actions/checkout@v4 - - - name: Prepare git - env: - GITHUB_USER: 1gtm - GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} - run: | - git config --global user.name "${GITHUB_USER}" - git config --global user.email "${GITHUB_USER}@appscode.com" - git remote set-url origin https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git - - - name: Install GitHub CLI - run: | - curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1 - sudo mv bin/hub /usr/local/bin + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + + - name: Generate LGTM App token + id: lgtm-app-token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + with: + client-id: ${{ secrets.LGTM_APP_CLIENT_ID }} + private-key: ${{ secrets.LGTM_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + repositories: CHANGELOG + permission-pull-requests: write - name: Update release tracker - if: | - github.event.action == 'closed' && - github.event.pull_request.merged == true env: - GITHUB_USER: 1gtm - GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + GITHUB_USER: ${{ github.actor }} + GITHUB_TOKEN: ${{ steps.lgtm-app-token.outputs.token }} run: | ./hack/scripts/update-release-tracker.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 31ae067..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Release - -on: - push: - tags: - - "*.*" - branches: - - master - schedule: - - cron: '0 0 * * *' - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true - -jobs: - label-detector: - name: Runner Label - runs-on: label-detector - outputs: - runs-on: ${{ steps.detector.outputs.label }} - steps: - - name: Detect Label - id: detector - run: | - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs - echo "label=$(curl -fsSL https://this-is-nats.appscode.ninja/runs-on/${{ github.repository_owner }}?visibility=${{ github.repository_visibility }})" >> $GITHUB_OUTPUT - - build: - name: Build - needs: label-detector - runs-on: "${{ needs.label-detector.outputs.runs-on }}" - steps: - - uses: actions/checkout@v1 - - - name: Check tag matches package version - run: | - PKG_VERSION=$(jq -r '.version' package.json) - GIT_TAG=$(git describe --exact-match --abbrev=0 2>/dev/null || echo "") - test "v${PKG_VERSION}" = "${GIT_TAG}" - - - name: Prepare git - env: - GITHUB_USER: 1gtm - GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} - run: | - set -x - git config --global user.name "${GITHUB_USER}" - git config --global user.email "${GITHUB_USER}@appscode.com" - git config --global \ - url."https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com".insteadOf \ - "https://github.com" - - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version: '22' - check-latest: true - - - name: Install Firebase CLI - run: | - npm i -g firebase-tools@v11.14.1 - - # - name: QA - # env: - # FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} - # if: startsWith(github.event.ref, 'refs/tags/') && (contains(github.ref, '-alpha.') || contains(github.ref, '-beta.')) - # run: | - # npm install - # npm run deploy:qa - - - name: Release - env: - FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} - # if: startsWith(github.event.ref, 'refs/tags/') && (contains(github.ref, '-alpha.') || contains(github.ref, '-beta.')) == false - run: | - npm install - npm run deploy:prod - - - name: Update search index - env: - MEILISEARCH_ADMIN_API_KEY: ${{ secrets.MEILISEARCH_ADMIN_API_KEY }} - if: startsWith(github.event.ref, 'refs/tags/') && (contains(github.ref, '-alpha.') || contains(github.ref, '-beta.')) == false - run: | - curl \ - -X POST 'https://search.docs.appscode.com/indexes' \ - -H "Authorization: Bearer $MEILISEARCH_ADMIN_API_KEY" \ - -H 'Content-Type: application/json' \ - --data-binary '{ - "uid": "acedocs", - "primaryKey": "documentId" - }' - curl \ - -X POST 'https://search.docs.appscode.com/indexes/acedocs/documents' \ - -H "Authorization: Bearer $MEILISEARCH_ADMIN_API_KEY" \ - -H 'Content-Type: application/json' \ - --data-binary @.vitepress/dist/index.json diff --git a/.gitignore b/.gitignore index 60016c8..9f11b75 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -.DS_Store -dist -dist-ssr -coverage -*.local -.vitepress/cache - -/cypress/videos/ -/cypress/screenshots/ - -# Editor directories and files -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -.vitepress/dist -.vitepress/.temp -.firebase -*.tsbuildinfo +.idea/ diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index 83a27bf..0000000 --- a/.stylelintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["stylelint-config-standard", "stylelint-config-standard-scss", "stylelint-config-recommended-vue", "stylelint-config-recommended-vue/scss"] -} diff --git a/.vitepress/config.ts b/.vitepress/config.ts deleted file mode 100644 index fb3079a..0000000 --- a/.vitepress/config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { defineConfigWithTheme } from 'vitepress' -import type { ThemeConfig } from '@bytebuilders/docs-base' -import baseConfig from '@bytebuilders/docs-base/config' -import HeaderLinks from './header-links' - -const head: [string, Record][] = HeaderLinks.map(hl => ['link', hl]) -// https://vitepress.dev/reference/site-config -export default defineConfigWithTheme({ - extends: baseConfig, - title: 'AppsCode Docs', - titleTemplate: 'AppsCode', - description: 'A documentation website for AppsCode Platform.', - head, - vite: { - resolve: { - alias: { - '@vueuse/integrations/useCookies': '@vueuse/integrations/useCookies.mjs', - }, - }, - server: { - allowedHosts: ['bb.test'], - }, - }, -}) diff --git a/.vitepress/header-links.ts b/.vitepress/header-links.ts deleted file mode 100644 index 9564ac5..0000000 --- a/.vitepress/header-links.ts +++ /dev/null @@ -1,75 +0,0 @@ -export default [ - { - rel: 'apple-touch-icon', - sizes: '57x57', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-57x57.png', - }, - { - rel: 'apple-touch-icon', - sizes: '60x60', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-60x60.png', - }, - { - rel: 'apple-touch-icon', - sizes: '72x72', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-72x72.png', - }, - { - rel: 'apple-touch-icon', - sizes: '76x76', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-76x76.png', - }, - { - rel: 'apple-touch-icon', - sizes: '114x114', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-114x114.png', - }, - { - rel: 'apple-touch-icon', - sizes: '120x120', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-120x120.png', - }, - { - rel: 'apple-touch-icon', - sizes: '144x144', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-144x144.png', - }, - { - rel: 'apple-touch-icon', - sizes: '152x152', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-152x152.png', - }, - { - rel: 'apple-touch-icon', - sizes: '180x180', - href: 'https://cdn.appscode.com/images/products/appscode/icons/apple-icon-180x180.png', - }, - { - rel: 'icon', - type: 'image/png', - sizes: '192x192', - href: 'https://cdn.appscode.com/images/products/appscode/icons/android-icon-192x192.png', - }, - { - rel: 'icon', - type: 'image/png', - sizes: '32x32', - href: 'https://cdn.appscode.com/images/products/appscode/icons/favicon-32x32.png', - }, - { - rel: 'icon', - type: 'image/png', - sizes: '96x96', - href: 'https://cdn.appscode.com/images/products/appscode/icons/favicon-96x96.png', - }, - { - rel: 'icon', - type: 'image/png', - sizes: '16x16', - href: 'https://cdn.appscode.com/images/products/appscode/icons/favicon-16x16.png', - }, - { - rel: 'manifest', - href: 'https://cdn.appscode.com/images/products/appscode/icons/manifest.json', - }, -] as Record[] diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts deleted file mode 100644 index dc872f1..0000000 --- a/.vitepress/theme/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseLayout } from '@bytebuilders/docs-base' -import { createPinia } from 'pinia' -import { createI18n } from 'vue-i18n' -import type { Theme } from 'vitepress' - -export default { - Layout: BaseLayout, - enhanceApp({ app, router, siteData }) { - app.use(createPinia()) - app.use(createI18n({ legacy: false, ...siteData.value.themeConfig.i18n })) - // ... - }, - -} satisfies Theme diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index c9bf6e4..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "recommendations": [ - "dbaeumer.vscode-eslint", - "vue.volar", - "streetsidesoftware.code-spell-checker", - "richie5um2.vscode-sort-json", - "unional.vscode-sort-package-json", - "reliutg.bulma-css-class-completion", - "stylelint.vscode-stylelint" - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 3b73da3..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "prettier.enable": false, - "editor.formatOnSave": false, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.fixAll.stylelint": "explicit" - }, - "css.validate": false, - "less.validate": false, - "scss.validate": false, - "stylelint.enable": true, - "stylelint.validate": ["css", "scss", "sass", "less", "postcss", "vue"] -} diff --git a/DCO b/DCO new file mode 100644 index 0000000..716561d --- /dev/null +++ b/DCO @@ -0,0 +1,36 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/auto-imports.d.ts b/auto-imports.d.ts deleted file mode 100644 index 918aad8..0000000 --- a/auto-imports.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-auto-import -export {} -declare global { - -} diff --git a/cspell.json b/cspell.json deleted file mode 100644 index 867a669..0000000 --- a/cspell.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": "0.2", - "ignorePaths": [], - "dictionaryDefinitions": [], - "dictionaries": [], - "words": [ - "antfu", - "bulma", - "kubedb", - "meilisearch", - "nihal", - "nuxt", - "pinia", - "unplugin", - "Vite", - "vitepress", - "vueuse", - "vuex" - ], - "ignoreWords": [], - "import": [] -} diff --git a/docs/platform/CHANGELOG-v2026.6.19.md b/docs/platform/CHANGELOG-v2026.6.19.md new file mode 100644 index 0000000..3841824 --- /dev/null +++ b/docs/platform/CHANGELOG-v2026.6.19.md @@ -0,0 +1,102 @@ +--- +title: Changelog | ACE +description: Changelog +menu: + docs_{{.version}}: + identifier: changelog-ace-v2026.6.19 + name: Changelog-v2026.6.19 + parent: welcome + weight: 20260619 +product_name: ace +menu_name: docs_{{.version}} +section_menu_id: welcome +url: /docs/{{.version}}/welcome/changelog-v2026.6.19/ +aliases: + - /docs/{{.version}}/CHANGELOG-v2026.6.19/ +--- + +# ACE v2026.6.19 (2026-06-21) + + +## [appscode-cloud/b3](https://github.com/appscode-cloud/b3) + +### [v2026.6.19](https://github.com/appscode-cloud/b3/releases/tag/v2026.6.19) + + + + +## [appscode-cloud/installer](https://github.com/appscode-cloud/installer) + +### [v2026.6.19](https://github.com/appscode-cloud/installer/releases/tag/v2026.6.19) + + + + +## [appscode-cloud/ui-wizards](https://github.com/appscode-cloud/ui-wizards) + +### [v0.35.0](https://github.com/appscode-cloud/ui-wizards/releases/tag/v0.35.0) + +- [0a9c4c10](https://github.com/appscode-cloud/ui-wizards/commit/0a9c4c104) Prepare for release v0.35.0 (#1062) + + + +## [appscode/website](https://github.com/appscode/website) + +### [v2026.6.19](https://github.com/appscode/website/releases/tag/v2026.6.19) + +- [01f7f216](https://github.com/appscode/website/commit/01f7f216) Prepare for release v2026.6.19 (#215) +- [f184b71b](https://github.com/appscode/website/commit/f184b71b) Pin Node to 22.22.3 to fix firebase preview deploy auth (#216) + + + +## [kmodules/image-packer](https://github.com/kmodules/image-packer) + +### [v2026.6.19](https://github.com/kmodules/image-packer/releases/tag/v2026.6.19) + +- [d6091139](https://github.com/kmodules/image-packer/commit/d6091139) Prepare for release v2026.6.19 (#55) + + + +## [kmodules/resource-metadata](https://github.com/kmodules/resource-metadata) + +### [v0.47.0](https://github.com/kmodules/resource-metadata/releases/tag/v0.47.0) + +- [fcd907ae](https://github.com/kmodules/resource-metadata/commit/fcd907ae6) Prepare for release v0.47.0 (#650) +- [85c67bcb](https://github.com/kmodules/resource-metadata/commit/85c67bcb0) Update to KubeDB and KubeStash v2026.6.19 +- [e86f70f4](https://github.com/kmodules/resource-metadata/commit/e86f70f4c) Resync kubedb & kubestash CRDs +- [776d5e81](https://github.com/kmodules/resource-metadata/commit/776d5e816) Update KubeDB and KubeStash for v2026.6.18-rc.2 +- [25abe419](https://github.com/kmodules/resource-metadata/commit/25abe4197) Sync up missing editors +- [a7af825c](https://github.com/kmodules/resource-metadata/commit/a7af825c9) Update kubedb & catalog CRDs +- [4ac7c73a](https://github.com/kmodules/resource-metadata/commit/4ac7c73ae) Add `observability-cluster` clusterprofile (#646) +- [05ae8ec7](https://github.com/kmodules/resource-metadata/commit/05ae8ec76) Fix documentdb & import kubedb crds (#648) +- [791189ee](https://github.com/kmodules/resource-metadata/commit/791189ee6) Add documentdb in menu +- [45589858](https://github.com/kmodules/resource-metadata/commit/455898580) Remove FerretDB support (#647) + + + +## [kubeops/installer](https://github.com/kubeops/installer) + +### [v2026.6.19](https://github.com/kubeops/installer/releases/tag/v2026.6.19) + +- [ed4648dd](https://github.com/kubeops/installer/commit/ed4648dd) Prepare for release v2026.6.19 (#490) + + + +## [kubeops/ui-server](https://github.com/kubeops/ui-server) + +### [v0.5.0](https://github.com/kubeops/ui-server/releases/tag/v0.5.0) + + + + +## [kubepack/lib-app](https://github.com/kubepack/lib-app) + +### [v0.23.0](https://github.com/kubepack/lib-app/releases/tag/v0.23.0) + +- [c12c4ce7](https://github.com/kubepack/lib-app/commit/c12c4ce7b) Prepare for release v0.23.0 (#172) +- [6840206e](https://github.com/kubepack/lib-app/commit/6840206e0) Update vulnerable dependencies (#171) +- [6dcb8a92](https://github.com/kubepack/lib-app/commit/6dcb8a924) Remove FerretDB support (#169) + + + + diff --git a/docs/platform/README.md b/docs/platform/README.md new file mode 100644 index 0000000..ebcd8b7 --- /dev/null +++ b/docs/platform/README.md @@ -0,0 +1,32 @@ +--- +layout: docs +title: Welcome | KubeDB Platform +menu: + docsplatform_{{.version}}: + identifier: platform-readme + name: Welcome + parent: welcome + weight: -1 +menu_name: docsplatform_{{.version}} +section_menu_id: welcome +url: /docs/platform/{{.version}}/welcome/ +aliases: +- /docs/platform/{{.version}}/ +- /docs/platform/{{.version}}/README/ +--- + +# KubeDB Platform Documentation + +This page is the entry point for KubeDB Platform documentation. + +## Core sections + +- [Selfhost Setup](./selfhost-setup/) +- [Guides](./guides/) + +## Contributor resources + +- [Contributing](./contributing.md) +- [Support](./support.md) + +Use [Guides](./guides/) for day-to-day workflows, then continue to [Selfhost Setup](./selfhost-setup/) for deployment-specific instructions. diff --git a/docs/platform/_index.md b/docs/platform/_index.md new file mode 100644 index 0000000..6b42572 --- /dev/null +++ b/docs/platform/_index.md @@ -0,0 +1,10 @@ +--- +title: KubeDB Platform +layout: docs +menu: + docsplatform_{{.version}}: + identifier: welcome + name: Welcome + weight: 10 +menu_name: docsplatform_{{.version}} +--- diff --git a/src/en/welcome/contributing.md b/docs/platform/contributing.md similarity index 79% rename from src/en/welcome/contributing.md rename to docs/platform/contributing.md index 632f795..31bab14 100644 --- a/src/en/welcome/contributing.md +++ b/docs/platform/contributing.md @@ -1,15 +1,15 @@ --- -layout: 'guide' +layout: docs menu: - welcome_docs_menu: - identifier: welcome-contributing + docsplatform_{{.version}}: + identifier: platform-contributing name: Contributing + parent: welcome weight: 10 -menu_name: welcome_docs_menu -section_menu: welcome +menu_name: docsplatform_{{.version}} +section_menu_id: welcome --- - # Contribution Guidelines Want to contribute to KubeDB? diff --git a/docs/platform/guides/README.md b/docs/platform/guides/README.md new file mode 100644 index 0000000..7bd5891 --- /dev/null +++ b/docs/platform/guides/README.md @@ -0,0 +1,32 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: guides-readme + name: Guides + parent: guides + weight: -1 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +url: /docs/platform/{{.version}}/guides/ +aliases: +- /docs/platform/{{.version}}/guides/README/ +--- + +# Platform Guides + +This section contains practical, task-oriented guides for operating and managing the platform. + +## Guide categories + +- [Account Management](./account-management/) +- [Billing and Usage Guide](./billing-and-usage-guide/) +- [Cluster Management](./cluster-management/) +- [Database Management](./database-management/) +- [Get Started](./get-started/) +- [Integrations](./integrations/) +- [License Management](./license-management/) + +## Recommended path + +For first-time users, start with [Get Started](./get-started/) and then move to the specific management areas relevant to your workflow. diff --git a/docs/platform/guides/_index.md b/docs/platform/guides/_index.md new file mode 100644 index 0000000..81b0021 --- /dev/null +++ b/docs/platform/guides/_index.md @@ -0,0 +1,10 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: guides + name: Guides + weight: 30 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- diff --git a/src/en/guides/account-management/_index.md b/docs/platform/guides/account-management/_index.md similarity index 64% rename from src/en/guides/account-management/_index.md rename to docs/platform/guides/account-management/_index.md index 1386cf4..84ce71b 100644 --- a/src/en/guides/account-management/_index.md +++ b/docs/platform/guides/account-management/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management name: Account Management + parent: guides description: Basic Account Management icon: https://img.icons8.com/00994A/ios/50/database--v1.png popular: true weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/account-management/access-tokens.md b/docs/platform/guides/account-management/access-tokens.md similarity index 79% rename from src/en/guides/account-management/access-tokens.md rename to docs/platform/guides/account-management/access-tokens.md index 5a4633e..4a1b147 100644 --- a/src/en/guides/account-management/access-tokens.md +++ b/docs/platform/guides/account-management/access-tokens.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-accesstokens name: Tokens parent: account-management weight: 50 - home_menu: - identifier: home-account-accesstokens - name: Tokens - parent: home-account - weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -22,7 +17,7 @@ Manage your access and NATS tokens to securely connect external applications and ## Access and Overview -![Tokens Overview](images/token-1.png) +![Tokens Overview](../images/token-1.png) Go to **USER SETTINGS > Tokens** to manage your credentials. @@ -32,7 +27,7 @@ Go to **USER SETTINGS > Tokens** to manage your credentials. ## Generate a New Access Token -![Generate New Token](images/token-2.png) +![Generate New Token](../images/token-2.png) Click **Generate Token** to create a new credential. @@ -43,7 +38,7 @@ Click **Generate Token** to create a new credential. ## Secure Your Token -![Token Created Successfully](images/token-3.png) +![Token Created Successfully](../images/token-3.png) A success banner will confirm the token is created. diff --git a/src/en/guides/account-management/delete-account.md b/docs/platform/guides/account-management/delete-account.md similarity index 80% rename from src/en/guides/account-management/delete-account.md rename to docs/platform/guides/account-management/delete-account.md index d70ff72..0465658 100644 --- a/src/en/guides/account-management/delete-account.md +++ b/docs/platform/guides/account-management/delete-account.md @@ -1,26 +1,21 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-deleteaccount name: Delete Account parent: account-management weight: 20 - home_menu: - identifier: home-account-deleteaccount - name: Delete Account - parent: home-account - weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- -# Deleting Your AppsCode Account +# Deleting Your KubeDB Platform Account -![Delete Account](images/delete-account.png) +![Delete Account](../images/delete-account.png) -This guide provides step-by-step instructions for permanently removing your personal account from the AppsCode platform. +This guide provides step-by-step instructions for permanently removing your personal account from the KubeDB Platform. 1. **Navigate to Account Settings:** - Log in to your account. diff --git a/src/en/guides/account-management/images/Branding.png b/docs/platform/guides/account-management/images/Branding.png similarity index 100% rename from src/en/guides/account-management/images/Branding.png rename to docs/platform/guides/account-management/images/Branding.png diff --git a/src/en/guides/account-management/images/OAuth1.png b/docs/platform/guides/account-management/images/OAuth1.png similarity index 100% rename from src/en/guides/account-management/images/OAuth1.png rename to docs/platform/guides/account-management/images/OAuth1.png diff --git a/src/en/guides/account-management/images/OAuth2.png b/docs/platform/guides/account-management/images/OAuth2.png similarity index 100% rename from src/en/guides/account-management/images/OAuth2.png rename to docs/platform/guides/account-management/images/OAuth2.png diff --git a/src/en/guides/account-management/images/OAuth3.png b/docs/platform/guides/account-management/images/OAuth3.png similarity index 100% rename from src/en/guides/account-management/images/OAuth3.png rename to docs/platform/guides/account-management/images/OAuth3.png diff --git a/src/en/guides/account-management/images/OAuth4.png b/docs/platform/guides/account-management/images/OAuth4.png similarity index 100% rename from src/en/guides/account-management/images/OAuth4.png rename to docs/platform/guides/account-management/images/OAuth4.png diff --git a/src/en/guides/account-management/images/authentication-sources.png b/docs/platform/guides/account-management/images/authentication-sources.png similarity index 100% rename from src/en/guides/account-management/images/authentication-sources.png rename to docs/platform/guides/account-management/images/authentication-sources.png diff --git a/src/en/guides/account-management/images/client-org-1.png b/docs/platform/guides/account-management/images/client-org-1.png similarity index 100% rename from src/en/guides/account-management/images/client-org-1.png rename to docs/platform/guides/account-management/images/client-org-1.png diff --git a/src/en/guides/account-management/images/client-org-2.png b/docs/platform/guides/account-management/images/client-org-2.png similarity index 100% rename from src/en/guides/account-management/images/client-org-2.png rename to docs/platform/guides/account-management/images/client-org-2.png diff --git a/src/en/guides/account-management/images/client-org-3.png b/docs/platform/guides/account-management/images/client-org-3.png similarity index 100% rename from src/en/guides/account-management/images/client-org-3.png rename to docs/platform/guides/account-management/images/client-org-3.png diff --git a/src/en/guides/account-management/images/client-org-4.png b/docs/platform/guides/account-management/images/client-org-4.png similarity index 100% rename from src/en/guides/account-management/images/client-org-4.png rename to docs/platform/guides/account-management/images/client-org-4.png diff --git a/src/en/guides/account-management/images/client-org-5.png b/docs/platform/guides/account-management/images/client-org-5.png similarity index 100% rename from src/en/guides/account-management/images/client-org-5.png rename to docs/platform/guides/account-management/images/client-org-5.png diff --git a/src/en/guides/account-management/images/credentials/Hetzner.png b/docs/platform/guides/account-management/images/credentials/Hetzner.png similarity index 100% rename from src/en/guides/account-management/images/credentials/Hetzner.png rename to docs/platform/guides/account-management/images/credentials/Hetzner.png diff --git a/src/en/guides/account-management/images/credentials/Scaleway.png b/docs/platform/guides/account-management/images/credentials/Scaleway.png similarity index 100% rename from src/en/guides/account-management/images/credentials/Scaleway.png rename to docs/platform/guides/account-management/images/credentials/Scaleway.png diff --git a/src/en/guides/account-management/images/credentials/azureStorage.png b/docs/platform/guides/account-management/images/credentials/azureStorage.png similarity index 100% rename from src/en/guides/account-management/images/credentials/azureStorage.png rename to docs/platform/guides/account-management/images/credentials/azureStorage.png diff --git a/src/en/guides/account-management/images/credentials/cloudflareStorage.png b/docs/platform/guides/account-management/images/credentials/cloudflareStorage.png similarity index 100% rename from src/en/guides/account-management/images/credentials/cloudflareStorage.png rename to docs/platform/guides/account-management/images/credentials/cloudflareStorage.png diff --git a/src/en/guides/account-management/images/credentials/vultr.png b/docs/platform/guides/account-management/images/credentials/vultr.png similarity index 100% rename from src/en/guides/account-management/images/credentials/vultr.png rename to docs/platform/guides/account-management/images/credentials/vultr.png diff --git a/src/en/guides/account-management/images/delete-account.png b/docs/platform/guides/account-management/images/delete-account.png similarity index 100% rename from src/en/guides/account-management/images/delete-account.png rename to docs/platform/guides/account-management/images/delete-account.png diff --git a/src/en/guides/account-management/images/external-authentication.png b/docs/platform/guides/account-management/images/external-authentication.png similarity index 100% rename from src/en/guides/account-management/images/external-authentication.png rename to docs/platform/guides/account-management/images/external-authentication.png diff --git a/src/en/guides/account-management/images/manage-profile-1.png b/docs/platform/guides/account-management/images/manage-profile-1.png similarity index 100% rename from src/en/guides/account-management/images/manage-profile-1.png rename to docs/platform/guides/account-management/images/manage-profile-1.png diff --git a/src/en/guides/account-management/images/manage-profile-2.png b/docs/platform/guides/account-management/images/manage-profile-2.png similarity index 100% rename from src/en/guides/account-management/images/manage-profile-2.png rename to docs/platform/guides/account-management/images/manage-profile-2.png diff --git a/src/en/guides/account-management/images/orgs-members-1.png b/docs/platform/guides/account-management/images/orgs-members-1.png similarity index 100% rename from src/en/guides/account-management/images/orgs-members-1.png rename to docs/platform/guides/account-management/images/orgs-members-1.png diff --git a/src/en/guides/account-management/images/orgs-members-2.png b/docs/platform/guides/account-management/images/orgs-members-2.png similarity index 100% rename from src/en/guides/account-management/images/orgs-members-2.png rename to docs/platform/guides/account-management/images/orgs-members-2.png diff --git a/src/en/guides/account-management/images/security-1.png b/docs/platform/guides/account-management/images/security-1.png similarity index 100% rename from src/en/guides/account-management/images/security-1.png rename to docs/platform/guides/account-management/images/security-1.png diff --git a/src/en/guides/account-management/images/security-2.png b/docs/platform/guides/account-management/images/security-2.png similarity index 100% rename from src/en/guides/account-management/images/security-2.png rename to docs/platform/guides/account-management/images/security-2.png diff --git a/src/en/guides/account-management/images/security-3.png b/docs/platform/guides/account-management/images/security-3.png similarity index 100% rename from src/en/guides/account-management/images/security-3.png rename to docs/platform/guides/account-management/images/security-3.png diff --git a/src/en/guides/account-management/images/sign-up-config-1.png b/docs/platform/guides/account-management/images/sign-up-config-1.png similarity index 100% rename from src/en/guides/account-management/images/sign-up-config-1.png rename to docs/platform/guides/account-management/images/sign-up-config-1.png diff --git a/src/en/guides/account-management/images/sign-up-config-2.png b/docs/platform/guides/account-management/images/sign-up-config-2.png similarity index 100% rename from src/en/guides/account-management/images/sign-up-config-2.png rename to docs/platform/guides/account-management/images/sign-up-config-2.png diff --git a/src/en/guides/account-management/images/site-admin-dashboard.png b/docs/platform/guides/account-management/images/site-admin-dashboard.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-dashboard.png rename to docs/platform/guides/account-management/images/site-admin-dashboard.png diff --git a/src/en/guides/account-management/images/site-admin-deleted-account-1.png b/docs/platform/guides/account-management/images/site-admin-deleted-account-1.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-deleted-account-1.png rename to docs/platform/guides/account-management/images/site-admin-deleted-account-1.png diff --git a/src/en/guides/account-management/images/site-admin-deleted-account-2.png b/docs/platform/guides/account-management/images/site-admin-deleted-account-2.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-deleted-account-2.png rename to docs/platform/guides/account-management/images/site-admin-deleted-account-2.png diff --git a/src/en/guides/account-management/images/site-admin-organizations-1.png b/docs/platform/guides/account-management/images/site-admin-organizations-1.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-organizations-1.png rename to docs/platform/guides/account-management/images/site-admin-organizations-1.png diff --git a/src/en/guides/account-management/images/site-admin-organizations-2.png b/docs/platform/guides/account-management/images/site-admin-organizations-2.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-organizations-2.png rename to docs/platform/guides/account-management/images/site-admin-organizations-2.png diff --git a/src/en/guides/account-management/images/site-admin-user-account-1.png b/docs/platform/guides/account-management/images/site-admin-user-account-1.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-user-account-1.png rename to docs/platform/guides/account-management/images/site-admin-user-account-1.png diff --git a/src/en/guides/account-management/images/site-admin-user-account-2.png b/docs/platform/guides/account-management/images/site-admin-user-account-2.png similarity index 100% rename from src/en/guides/account-management/images/site-admin-user-account-2.png rename to docs/platform/guides/account-management/images/site-admin-user-account-2.png diff --git a/src/en/guides/account-management/images/token-1.png b/docs/platform/guides/account-management/images/token-1.png similarity index 100% rename from src/en/guides/account-management/images/token-1.png rename to docs/platform/guides/account-management/images/token-1.png diff --git a/src/en/guides/account-management/images/token-2.png b/docs/platform/guides/account-management/images/token-2.png similarity index 100% rename from src/en/guides/account-management/images/token-2.png rename to docs/platform/guides/account-management/images/token-2.png diff --git a/src/en/guides/account-management/images/token-3.png b/docs/platform/guides/account-management/images/token-3.png similarity index 100% rename from src/en/guides/account-management/images/token-3.png rename to docs/platform/guides/account-management/images/token-3.png diff --git a/src/en/guides/account-management/images/upgrade-version-1.png b/docs/platform/guides/account-management/images/upgrade-version-1.png similarity index 100% rename from src/en/guides/account-management/images/upgrade-version-1.png rename to docs/platform/guides/account-management/images/upgrade-version-1.png diff --git a/src/en/guides/account-management/images/upgrade-version-2.png b/docs/platform/guides/account-management/images/upgrade-version-2.png similarity index 100% rename from src/en/guides/account-management/images/upgrade-version-2.png rename to docs/platform/guides/account-management/images/upgrade-version-2.png diff --git a/src/en/guides/account-management/images/upgrade-version-3.png b/docs/platform/guides/account-management/images/upgrade-version-3.png similarity index 100% rename from src/en/guides/account-management/images/upgrade-version-3.png rename to docs/platform/guides/account-management/images/upgrade-version-3.png diff --git a/src/en/guides/account-management/images/upgrade-version-4.png b/docs/platform/guides/account-management/images/upgrade-version-4.png similarity index 100% rename from src/en/guides/account-management/images/upgrade-version-4.png rename to docs/platform/guides/account-management/images/upgrade-version-4.png diff --git a/src/en/guides/account-management/kubernetes/index.md b/docs/platform/guides/account-management/kubernetes/_index.md similarity index 58% rename from src/en/guides/account-management/kubernetes/index.md rename to docs/platform/guides/account-management/kubernetes/_index.md index 3d04599..78d9466 100644 --- a/src/en/guides/account-management/kubernetes/index.md +++ b/docs/platform/guides/account-management/kubernetes/_index.md @@ -1,12 +1,12 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-kubernetes name: Kubernetes weight: 100 parent: account-management pre: dropdown -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/account-management/kubernetes/credentials.md b/docs/platform/guides/account-management/kubernetes/credentials.md similarity index 85% rename from src/en/guides/account-management/kubernetes/credentials.md rename to docs/platform/guides/account-management/kubernetes/credentials.md index 23eab1c..719bfe9 100644 --- a/src/en/guides/account-management/kubernetes/credentials.md +++ b/docs/platform/guides/account-management/kubernetes/credentials.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-kubernetes-creds name: Credentials parent: account-management-kubernetes weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -29,12 +29,12 @@ Supported Credential Types include: - [Scaleway](#scaleway) - [Vultr](#vultr) -Visit https://home.appscode.com/user/settings/credentials to manage credential. +Visit https://appscode.com/id/{user}/user/settings/credentials to manage credential. ## AWS -To create or import EKS clusters to [AppsCode Dashboard](https://console.appscode.com/), you need to create a access-key with the following policies. +To create or import EKS clusters to [Platform Console](https://console.appscode.com/), you need to create a access-key with the following policies. - AmazonEC2FullAccess (AWS Managed Policy) - AWSCloudFormationFullAccess (AWS Managed Policy) - EKSAllAccess @@ -261,11 +261,11 @@ Details: aws iam create-access-key --user-name "eks-cluster" ``` -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create) you got from previous step. +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create) you got from previous step. - +![Aws Cred](../images/aws-cred.png) - + ## Azure @@ -281,10 +281,10 @@ To configure Azure credentials for accessing and managing Azure Kubernetes Servi - Save Credentials
The command will output a JSON response containing the service principal details, including clientId (Application ID), clientSecret (Client Secret), subscriptionId, tenantId, and other information. Save these credentials securely as they will be used to configure the AKS cluster. -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create). - +![Do Cred](../images/do-cred.png) ## Digital Ocean To access Digital Ocean Managed clusters, you need to create a API token from Digital Ocean. @@ -292,7 +292,7 @@ To access Digital Ocean Managed clusters, you need to create a API token from Di Ref: [How to Create a Personal Access Token](https://docs.digitalocean.com/reference/api/create-personal-access-token/) -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create) you got from Digital Ocean. +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create) you got from Digital Ocean.



@@ -322,14 +322,14 @@ To access GKE clusters, you need to create a GCP service account with with conta --iam-account $GKE_SA_EMAIL ``` -Then add the service account credentials [here](https://home.appscode.com/user/settings/credentials/create). +Then add the service account credentials [here](https://appscode.com/id/{user}/user/settings/credentials/create). - +![Gcp Oauth](../images/gcp-oauth.png) ## Google OAuth Simplest way to access GKE clusters is through creating `Google OAuth` type credential.
-Just head over [here](https://home.appscode.com/user/settings/credentials/create) and +Just head over [here](https://appscode.com/id/{user}/user/settings/credentials/create) and - Choose a `Name` - Select Credential Type: `Google OAuth` - Click `Continue with Google` @@ -339,7 +339,7 @@ This will create a credential, you will be able to access your k8s cluster with.


- +![Linode Cred](../images/linode-cred.png) ## Linode @@ -349,15 +349,15 @@ To access LKE clusters, you need to create a API token from Linode with the foll Ref: [Manage Linode Personal Access Tokens](https://www.linode.com/docs/products/tools/api/guides/manage-api-tokens/) -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create) you got from Linode. +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create) you got from Linode.


- +![Rancher Cred](../images/rancher-cred.png) ## Rancher -To access Rancher clusters through AppsCode, you need to create an API token in your Rancher system. Follow these steps: +To access Rancher clusters through KubeDB Platform, you need to create an API token in your Rancher system. Follow these steps: 1. In Rancher, click on the profile icon. 2. Select `Account & API Keys`. @@ -369,9 +369,9 @@ Reference: [Rancher API Keys](https://ranchermanager.docs.rancher.com/reference- Copy the generated access key, secret key, and API endpoint from the `Account & API Keys` overview page. -Next, add these credentials to the [AppsCode user settings credentials page](https://home.appscode.com/user/settings/credentials/create). +Next, add these credentials to the [KubeDB Platform user settings credentials page](https://appscode.com/id/{user}/user/settings/credentials/create). - +![Azure Storage](../../images/credentials/azureStorage.png) ## Azure Storage @@ -380,11 +380,11 @@ To access Azure Blob Storage, you need your Storage Account name and one of its - **Account:** Your Storage Account name, found in the Azure Portal under **Storage accounts**. - **Key:** One of the access keys (key1 or key2), found under **Security + networking > Access keys** in the storage account sidebar. Click **Show** to reveal the key value. -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create).



- +![Cloudflare Storage](../../images/credentials/cloudflareStorage.png) ## Cloudflare R2 Storage @@ -393,11 +393,11 @@ To access Cloudflare R2 Object Storage, you need your Account ID and an R2 API t - **Account ID:** Found on your Cloudflare Dashboard under **R2 > Overview** or in the sidebar. - **Access Key ID & Secret Access Key:** Generated by creating an R2 API token. Navigate to **R2 > Manage R2 API Tokens > Create API Token** and ensure the token has `Edit` permissions for the target bucket. -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create).



- +![Hetzner](../../images/credentials/Hetzner.png) ## Hetzner @@ -408,11 +408,11 @@ To access Hetzner Cloud resources, you need an API token and an SSH key. Ref: [Hetzner Cloud API Tokens](https://docs.hetzner.com/cloud/api/getting-started/generating-api-token/) -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create).


- +![Scaleway](../../images/credentials/Scaleway.png) ## Scaleway @@ -423,11 +423,11 @@ To access Scaleway resources, you need your Organization ID and an API secret ke Ref: [Scaleway API Keys](https://www.scaleway.com/en/docs/iam/api-keys/) -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create).


- +![Vultr](../../images/credentials/vultr.png) ## Vultr @@ -437,4 +437,4 @@ To access Vultr resources, you need a Vultr API key. Ref: [Vultr API](https://www.vultr.com/api/) -Then add the credential [here](https://home.appscode.com/user/settings/credentials/create). +Then add the credential [here](https://appscode.com/id/{user}/user/settings/credentials/create). diff --git a/src/public/images/aws-cred.png b/docs/platform/guides/account-management/kubernetes/images/aws-cred.png similarity index 100% rename from src/public/images/aws-cred.png rename to docs/platform/guides/account-management/kubernetes/images/aws-cred.png diff --git a/src/public/images/do-cred.png b/docs/platform/guides/account-management/kubernetes/images/do-cred.png similarity index 100% rename from src/public/images/do-cred.png rename to docs/platform/guides/account-management/kubernetes/images/do-cred.png diff --git a/src/public/images/gcp-oauth.png b/docs/platform/guides/account-management/kubernetes/images/gcp-oauth.png similarity index 100% rename from src/public/images/gcp-oauth.png rename to docs/platform/guides/account-management/kubernetes/images/gcp-oauth.png diff --git a/src/public/images/linode-cred.png b/docs/platform/guides/account-management/kubernetes/images/linode-cred.png similarity index 100% rename from src/public/images/linode-cred.png rename to docs/platform/guides/account-management/kubernetes/images/linode-cred.png diff --git a/src/public/images/rancher-cred.png b/docs/platform/guides/account-management/kubernetes/images/rancher-cred.png similarity index 100% rename from src/public/images/rancher-cred.png rename to docs/platform/guides/account-management/kubernetes/images/rancher-cred.png diff --git a/src/en/guides/account-management/manage-profile.md b/docs/platform/guides/account-management/manage-profile.md similarity index 71% rename from src/en/guides/account-management/manage-profile.md rename to docs/platform/guides/account-management/manage-profile.md index 43903ba..7dbcbc0 100644 --- a/src/en/guides/account-management/manage-profile.md +++ b/docs/platform/guides/account-management/manage-profile.md @@ -1,23 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-manageprofile name: Manage Profile, Emails, & Avatar parent: account-management weight: 10 - home_menu: - identifier: home-account-manageprofile - name: Manage Profile, Emails, & Avatar - parent: home-account - weight: 10 - section_menu: - identifier: account-management - name: Account Management - weight: 20 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -27,7 +17,7 @@ Personalize your account details and profile picture under **USER SETTINGS > Pro ## 1. Update Profile Info -![Update Profile Info](images/manage-profile-1.png) +![Update Profile Info](../images/manage-profile-1.png) Update your public identity and contact information in the **Manage Profile** section: @@ -45,7 +35,7 @@ You can choose between two methods for your profile picture: ### Option B: Custom Upload -![Custom Avatar Upload](images/manage-profile-2.png) +![Custom Avatar Upload](../images/manage-profile-2.png) - Select the **Custom** tab. - **Upload:** Drag and drop an image or select one from storage (Max: **1MB**, Max resolution: **4096 x 3072**). diff --git a/src/en/guides/account-management/manage-security.md b/docs/platform/guides/account-management/manage-security.md similarity index 80% rename from src/en/guides/account-management/manage-security.md rename to docs/platform/guides/account-management/manage-security.md index 8bdb5ab..f736665 100644 --- a/src/en/guides/account-management/manage-security.md +++ b/docs/platform/guides/account-management/manage-security.md @@ -1,19 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-security name: Manage Security weight: 30 parent: account-management pre: dropdown - home_menu: - identifier: home-account-security - name: Manage Security - parent: home-account - weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Account Security @@ -22,14 +17,14 @@ Manage your account's protection under **USER SETTINGS > Security** in the left- ## 1. Update Password & Linked Accounts -![Update Password and Linked Accounts](images/security-1.png) +![Update Password and Linked Accounts](../images/security-1.png) - **Change Password:** To update your credentials, provide your **Current Password**, followed by a **New Password** and a confirmation in the **Retype Password** field. - **Linked Accounts:** View external accounts (like Google or GitHub) used for authentication and manage their connection to your profile. ## 2. Enroll in Two-Factor Authentication (2FA) -![Two-Factor Authentication Setup](images/security-2.png) +![Two-Factor Authentication Setup](../images/security-2.png) Enable 2FA to require a second verification step during login for enhanced security. @@ -38,7 +33,7 @@ Enable 2FA to require a second verification step during login for enhanced secur ## 3. Manage 2FA & Security Keys -![Manage 2FA and Security Keys](images/security-3.png) +![Manage 2FA and Security Keys](../images/security-3.png) Once 2FA is active, you can manage emergency access and hardware keys. diff --git a/src/en/guides/account-management/oauth2-apps.md b/docs/platform/guides/account-management/oauth2-apps.md similarity index 82% rename from src/en/guides/account-management/oauth2-apps.md rename to docs/platform/guides/account-management/oauth2-apps.md index 8028421..1849bf2 100644 --- a/src/en/guides/account-management/oauth2-apps.md +++ b/docs/platform/guides/account-management/oauth2-apps.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-oauth2apps name: Setup OAuth2 Applications parent: account-management weight: 40 - home_menu: - identifier: home-account-oauth2apps - name: Setup OAuth2 Applications - parent: home-account - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Application Overview -![OAuth2 Applications Overview](images/OAuth1.png) +![OAuth2 Applications Overview](../images/OAuth1.png) Navigate to **User Settings > Applications** to manage how third-party services interact with your account. This page is divided into two sections: @@ -28,7 +23,7 @@ Navigate to **User Settings > Applications** to manage how third-party services ## Create a New Application -![Create New Application](images/OAuth2.png) +![Create New Application](../images/OAuth2.png) On the creation screen, you must provide the following required information: @@ -38,7 +33,7 @@ On the creation screen, you must provide the following required information: ## Secure Your Credentials & Customize -![Client Credentials and Customization](images/OAuth3.png) +![Client Credentials and Customization](../images/OAuth3.png) Once the application is generated, you will see your **Client ID** and **Client Secret**. @@ -49,6 +44,6 @@ Once the application is generated, you will see your **Client ID** and **Client ## Confirmation of Success -![Success Notification](images/OAuth4.png) +![Success Notification](../images/OAuth4.png) After saving your changes or creating an application, a green "Successfully updated" notification will appear at the top of the screen. Your new application will now be visible in the OAuth2 Applications list, ready for use with its assigned Client ID diff --git a/src/en/guides/account-management/orgs-members.md b/docs/platform/guides/account-management/orgs-members.md similarity index 80% rename from src/en/guides/account-management/orgs-members.md rename to docs/platform/guides/account-management/orgs-members.md index c3eeffa..5f84b04 100644 --- a/src/en/guides/account-management/orgs-members.md +++ b/docs/platform/guides/account-management/orgs-members.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-orgmembers name: Manage Organizations parent: account-management weight: 60 - home_menu: - identifier: home-account-orgmembers - name: Manage Organizations - parent: home-account - weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -22,7 +17,7 @@ Manage your collaborations and organizational structure via the **ORGANIZATIONS* ## 1. Viewing & Managing Organizations -![Organizations List](images/orgs-members-1.png) +![Organizations List](../images/orgs-members-1.png) The main list displays all organizations you belong to as a creator or member. @@ -31,7 +26,7 @@ The main list displays all organizations you belong to as a creator or member. ## 2. Creating a New Organization -![Create New Organization](images/orgs-members-2.png) +![Create New Organization](../images/orgs-members-2.png) Click **+ New Organization** to establish a new group. diff --git a/src/en/guides/account-management/site-administration/index.md b/docs/platform/guides/account-management/site-administration/_index.md similarity index 59% rename from src/en/guides/account-management/site-administration/index.md rename to docs/platform/guides/account-management/site-administration/_index.md index 1faa115..ee50752 100644 --- a/src/en/guides/account-management/site-administration/index.md +++ b/docs/platform/guides/account-management/site-administration/_index.md @@ -1,12 +1,12 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin name: Site Administration weight: 70 parent: account-management pre: dropdown -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/account-management/site-administration/ace-upgrade.md b/docs/platform/guides/account-management/site-administration/ace-upgrade.md similarity index 58% rename from src/en/guides/account-management/site-administration/ace-upgrade.md rename to docs/platform/guides/account-management/site-administration/ace-upgrade.md index 8cecb96..d15b160 100644 --- a/src/en/guides/account-management/site-administration/ace-upgrade.md +++ b/docs/platform/guides/account-management/site-administration/ace-upgrade.md @@ -1,19 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - v2_1_0_docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-ace-upgrade - name: ACE Upgrade + name: KubeDB Platform Upgrade parent: account-management-siteadmin weight: 60 -menu_name: v2_1_0_docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- -# ACE Upgrade +# KubeDB Platform Upgrade -Site administrators can upgrade the AppsCode Enterprise (ACE) management cluster directly from the platform UI by uploading a configuration file downloaded from the AppsCode portal. +Site administrators can upgrade the KubeDB Platform management cluster directly from the platform UI by uploading a configuration file downloaded from the AppsCode portal. --- @@ -27,21 +27,21 @@ Before starting the upgrade, download the required values file from the AppsCode --- -## Step 1 — Open ACE Upgrade +## Step 1 — Open KubeDB Platform Upgrade -![ACE Version Page](../images/upgrade-version-1.png) +![KubeDB Platform Version Page](../../images/upgrade-version-1.png) -Go to **SITE ADMINISTRATION > ACE Upgrade** from the left-hand menu. +Go to **SITE ADMINISTRATION > KubeDB Platform Upgrade** from the left-hand menu. -The page displays the current ACE version and the upgrade status of all platform components. Click the **Upgrade Version** button at the top right to begin. +The page displays the current KubeDB Platform version and the upgrade status of all platform components. Click the **Upgrade Version** button at the top right to begin. --- ## Step 2 — Upload the Values File -![Upload Values File](../images/upgrade-version-2.png) +![Upload Values File](../../images/upgrade-version-2.png) -On the **Upgrade ACE** screen: +On the **Upgrade KubeDB Platform** screen: - Click **Upload values file...** and select the `values.yaml` file downloaded from the AppsCode portal. - Click **Update Version** to start the upgrade process. @@ -50,7 +50,7 @@ On the **Upgrade ACE** screen: ## Step 3 — Monitor Upgrade Progress -![Upgrade In Progress](../images/upgrade-version-3.png) +![Upgrade In Progress](../../images/upgrade-version-3.png) The platform will upgrade individual components one by one. You can track progress directly on this page: @@ -62,6 +62,6 @@ The platform will upgrade individual components one by one. You can track progre ## Step 4 — Verify Completion -![Upgrade Complete](../images/upgrade-version-4.png) +![Upgrade Complete](../../images/upgrade-version-4.png) Once all components have been updated, the status changes to **Updated**. Confirm that the new version number is correctly reflected at the top of the page. diff --git a/src/en/guides/account-management/site-administration/authentication-sources.md b/docs/platform/guides/account-management/site-administration/authentication-sources.md similarity index 93% rename from src/en/guides/account-management/site-administration/authentication-sources.md rename to docs/platform/guides/account-management/site-administration/authentication-sources.md index c6746fb..1095bb6 100644 --- a/src/en/guides/account-management/site-administration/authentication-sources.md +++ b/docs/platform/guides/account-management/site-administration/authentication-sources.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-authentication-sources name: Authentication Sources parent: account-management-siteadmin weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ Site administrators can configure external authentication backends (such as LDAP ## Add an Authentication Source -![Add Authentication Source](../images/authentication-sources.png) +![Add Authentication Source](../../images/authentication-sources.png) Go to **SITE ADMINISTRATION > Authentication Sources** and configure a new source using the form below. diff --git a/src/en/guides/account-management/site-administration/branding.md b/docs/platform/guides/account-management/site-administration/branding.md similarity index 87% rename from src/en/guides/account-management/site-administration/branding.md rename to docs/platform/guides/account-management/site-administration/branding.md index 2079e88..1e4f11a 100644 --- a/src/en/guides/account-management/site-administration/branding.md +++ b/docs/platform/guides/account-management/site-administration/branding.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-branding name: Branding parent: account-management-siteadmin weight: 70 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ Site administrators can customize the platform's appearance and identity — inc ## Configure Branding -![Configure Branding](../images/Branding.png) +![Configure Branding](../../images/Branding.png) Go to **SITE ADMINISTRATION > Branding** to update the platform's visual identity. diff --git a/src/en/guides/account-management/site-administration/client-org.md b/docs/platform/guides/account-management/site-administration/client-org.md similarity index 89% rename from src/en/guides/account-management/site-administration/client-org.md rename to docs/platform/guides/account-management/site-administration/client-org.md index 0d4570f..d2e6a02 100644 --- a/src/en/guides/account-management/site-administration/client-org.md +++ b/docs/platform/guides/account-management/site-administration/client-org.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-clientorg name: Client Organization parent: account-management-siteadmin weight: 75 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -35,13 +35,13 @@ Once your Hub is ready and your Spoke is licensed, you can create the organizati > **Note:** Make sure the user who will be the organization admin already exists. If not, create one first via **SITE ADMINISTRATION > User Accounts**. -![Client Organizations List](../images/client-org-4.png) +![Client Organizations List](../../images/client-org-4.png) Go to **USER SETTINGS > Client Organizations** and click **+ Add Organization**. ### Step 1 — Basic Info -![Basic Info](../images/client-org-1.png) +![Basic Info](../../images/client-org-1.png) - **Organization Name:** Enter a display name for the organization (e.g., `test-final`). - **Custom Annotations:** Optionally add key-value annotations applied to the organization's namespace. @@ -51,7 +51,7 @@ Go to **USER SETTINGS > Client Organizations** and click **+ Add Organization**. ### Step 2 — Select Cluster -![Select Cluster and Node Pool](../images/client-org-2.png) +![Select Cluster and Node Pool](../../images/client-org-2.png) - **Hub Cluster:** Select the Hub cluster to use as the management plane. - **Spoke Cluster:** Select the licensed Spoke cluster where the organization's workloads will run. @@ -60,7 +60,7 @@ Go to **USER SETTINGS > Client Organizations** and click **+ Add Organization**. ### Step 3 — Gateway Configuration -![Gateway Configuration](../images/client-org-3.png) +![Gateway Configuration](../../images/client-org-3.png) - **Use Shared Gateway:** No dedicated gateway configuration is applied. The organization shares the existing gateway. - **Use Dedicated Gateway:** Select from available gateway configurations to assign a dedicated gateway for this organization. @@ -70,7 +70,7 @@ Go to **USER SETTINGS > Client Organizations** and click **+ Add Organization**. ## Verification -![Organization Details](../images/client-org-5.png) +![Organization Details](../../images/client-org-5.png) After submission, the organization is created and visible in the list. Clicking on it shows its details — including the assigned Spoke cluster and its status. diff --git a/src/en/guides/account-management/site-administration/dashboard.md b/docs/platform/guides/account-management/site-administration/dashboard.md similarity index 82% rename from src/en/guides/account-management/site-administration/dashboard.md rename to docs/platform/guides/account-management/site-administration/dashboard.md index 23b13a3..986d70b 100644 --- a/src/en/guides/account-management/site-administration/dashboard.md +++ b/docs/platform/guides/account-management/site-administration/dashboard.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-dashboard name: Dashboard parent: account-management-siteadmin weight: 10 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ The Site Admin Dashboard gives administrators a high-level overview of the entir ## Accessing the Dashboard -![Site Administration Dashboard](../images/site-admin-dashboard.png) +![Site Administration Dashboard](../../images/site-admin-dashboard.png) Navigate to **SITE ADMINISTRATION > Dashboard** from the top navigation bar. diff --git a/src/en/guides/account-management/site-administration/delete-account.md b/docs/platform/guides/account-management/site-administration/delete-account.md similarity index 79% rename from src/en/guides/account-management/site-administration/delete-account.md rename to docs/platform/guides/account-management/site-administration/delete-account.md index 564bd96..820e100 100644 --- a/src/en/guides/account-management/site-administration/delete-account.md +++ b/docs/platform/guides/account-management/site-administration/delete-account.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-deleteaccount name: Delete Account parent: account-management-siteadmin weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ When a user account is deleted from the **User Accounts** list, it is soft-delet ## 1. View Deleted Accounts -![View Deleted Accounts](../images/site-admin-deleted-account-1.png) +![View Deleted Accounts](../../images/site-admin-deleted-account-1.png) Go to **SITE ADMINISTRATION > Deleted Accounts** to see the list of deleted user accounts. @@ -26,7 +26,7 @@ Go to **SITE ADMINISTRATION > Deleted Accounts** to see the list of deleted user ## 2. Confirm Reactivation -![Confirm Account Reactivation](../images/site-admin-deleted-account-2.png) +![Confirm Account Reactivation](../../images/site-admin-deleted-account-2.png) Clicking **Reactive** opens a confirmation dialog. diff --git a/src/en/guides/account-management/site-administration/external-authentication-sources.md b/docs/platform/guides/account-management/site-administration/external-authentication-sources.md similarity index 89% rename from src/en/guides/account-management/site-administration/external-authentication-sources.md rename to docs/platform/guides/account-management/site-administration/external-authentication-sources.md index 75b6c8d..6e85004 100644 --- a/src/en/guides/account-management/site-administration/external-authentication-sources.md +++ b/docs/platform/guides/account-management/site-administration/external-authentication-sources.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-external-authentication-sources name: External Authentication Sources parent: account-management-siteadmin weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ Site administrators can enable third-party OAuth login providers (such as GitHub ## Add an External Authentication Source -![Add External Authentication Source](../images/external-authentication.png) +![Add External Authentication Source](../../images/external-authentication.png) Go to **SITE ADMINISTRATION > External Authentication Sources** and fill in the form. diff --git a/src/en/guides/account-management/site-administration/organizations.md b/docs/platform/guides/account-management/site-administration/organizations.md similarity index 86% rename from src/en/guides/account-management/site-administration/organizations.md rename to docs/platform/guides/account-management/site-administration/organizations.md index 44df71c..05e830a 100644 --- a/src/en/guides/account-management/site-administration/organizations.md +++ b/docs/platform/guides/account-management/site-administration/organizations.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-organizations name: Organizations parent: account-management-siteadmin weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ Site administrators can view all organizations on the platform and create new on ## 1. View All Organizations -![View All Organizations](../images/site-admin-organizations-1.png) +![View All Organizations](../../images/site-admin-organizations-1.png) Go to **SITE ADMINISTRATION > Organizations** to see the full list of organizations. @@ -28,7 +28,7 @@ Go to **SITE ADMINISTRATION > Organizations** to see the full list of organizati ## 2. Create a New Organization -![Create New Organization](../images/site-admin-organizations-2.png) +![Create New Organization](../../images/site-admin-organizations-2.png) Click **+ New Organization** to open the creation form. diff --git a/src/en/guides/account-management/site-administration/sign-up-configuration.md b/docs/platform/guides/account-management/site-administration/sign-up-configuration.md similarity index 84% rename from src/en/guides/account-management/site-administration/sign-up-configuration.md rename to docs/platform/guides/account-management/site-administration/sign-up-configuration.md index da63892..3409b15 100644 --- a/src/en/guides/account-management/site-administration/sign-up-configuration.md +++ b/docs/platform/guides/account-management/site-administration/sign-up-configuration.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-signupconfig name: Sign-up Configuration parent: account-management-siteadmin weight: 65 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ Site administrators can control who is allowed to register on the platform by ma ## Overview -![Sign-up Configuration Overview](../images/sign-up-config-1.png) +![Sign-up Configuration Overview](../../images/sign-up-config-1.png) Go to **SITE ADMINISTRATION > Sign-up Configuration** to manage registration settings. @@ -36,7 +36,7 @@ Restrict sign-ups to users with email addresses from specific approved domains. ## Add a New Allowed Domain -![Add Allowed Domain](../images/sign-up-config-2.png) +![Add Allowed Domain](../../images/sign-up-config-2.png) Click **+ Add Domains** to open the form. diff --git a/src/en/guides/account-management/site-administration/user-account.md b/docs/platform/guides/account-management/site-administration/user-account.md similarity index 85% rename from src/en/guides/account-management/site-administration/user-account.md rename to docs/platform/guides/account-management/site-administration/user-account.md index 1318807..5a32166 100644 --- a/src/en/guides/account-management/site-administration/user-account.md +++ b/docs/platform/guides/account-management/site-administration/user-account.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: account-management-siteadmin-useraccount name: User Accounts parent: account-management-siteadmin weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -17,7 +17,7 @@ As a site administrator, you can view all registered user accounts and create ne ## 1. View All Users -![View All User Accounts](../images/site-admin-user-account-1.png) +![View All User Accounts](../../images/site-admin-user-account-1.png) Go to **SITE ADMINISTRATION > User Accounts** to see the full list of registered accounts. @@ -28,7 +28,7 @@ Go to **SITE ADMINISTRATION > User Accounts** to see the full list of registered ## 2. Create a New User Account -![Create New User Account](../images/site-admin-user-account-2.png) +![Create New User Account](../../images/site-admin-user-account-2.png) Click **Create User Account** to open the new user form. diff --git a/src/en/guides/billing-and-usage-guide/_index.md b/docs/platform/guides/billing-and-usage-guide/_index.md similarity index 72% rename from src/en/guides/billing-and-usage-guide/_index.md rename to docs/platform/guides/billing-and-usage-guide/_index.md index efe2295..f2b9df2 100644 --- a/src/en/guides/billing-and-usage-guide/_index.md +++ b/docs/platform/guides/billing-and-usage-guide/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: billing-and-usage-guide name: Billing and Usage Guide + parent: guides description: Billing and Usage Guide for AppsCode's products icon: https://img.icons8.com/external-anggara-basic-outline-anggara-putra/96/external-stats-ui-anggara-basic-outline-anggara-putra.png popular: true weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/billing-and-usage-guide/cost-management.md b/docs/platform/guides/billing-and-usage-guide/cost-management.md similarity index 95% rename from src/en/guides/billing-and-usage-guide/cost-management.md rename to docs/platform/guides/billing-and-usage-guide/cost-management.md index 84ced1b..6fb8b17 100644 --- a/src/en/guides/billing-and-usage-guide/cost-management.md +++ b/docs/platform/guides/billing-and-usage-guide/cost-management.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: billing-and-usage-guide-cost-management name: Cost Management parent: billing-and-usage-guide weight: 40 - home_menu: - identifier: billing-and-usage-guide-cost-management - name: Cost Management - parent: home-billing - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- ## **Cluster and Namespace Configuration for Cost Management** diff --git a/src/en/guides/billing-and-usage-guide/dbaas-client-billing.md b/docs/platform/guides/billing-and-usage-guide/dbaas-client-billing.md similarity index 95% rename from src/en/guides/billing-and-usage-guide/dbaas-client-billing.md rename to docs/platform/guides/billing-and-usage-guide/dbaas-client-billing.md index 10af528..c9f288e 100644 --- a/src/en/guides/billing-and-usage-guide/dbaas-client-billing.md +++ b/docs/platform/guides/billing-and-usage-guide/dbaas-client-billing.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: billing-and-usage-guide-dbaas-client-billing name: DBaaS Client Billing parent: billing-and-usage-guide weight: 30 - home_menu: - identifier: billing-and-usage-guide-dbaas-client-billing - name: DBaaS Client Billing - parent: home-billing - weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- ### **DBaaS Provider Billing APIs** @@ -31,11 +26,11 @@ To use these APIs, you must authenticate your requests. Usage information is col 1. **Generate an Access Token:** Create a user-scoped API token from your account. - Go to User Settings and open the `Tokens` tab, then click on `Generate Token`. - ![Navigate to API Tokens](./images/create-token-ui-navigation.png) + ![Navigate to API Tokens](../images/create-token-ui-navigation.png) - Provide a token name and (optionally) an expiry, then click on `Generate`. - ![Create token options](./images/create-token-options.png) + ![Create token options](../images/create-token-options.png) - Copy the token and store it securely. It’s shown only once. - ![Copy the generated token](./images/created-token-result.png) + ![Copy the generated token](../images/created-token-result.png) 2. **Use as a Bearer Token:** This token must be included in the Authorization header of your API requests as a Bearer token. **Example Header:** Authorization: Bearer diff --git a/src/en/guides/billing-and-usage-guide/images/create-token-options.png b/docs/platform/guides/billing-and-usage-guide/images/create-token-options.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/create-token-options.png rename to docs/platform/guides/billing-and-usage-guide/images/create-token-options.png diff --git a/src/en/guides/billing-and-usage-guide/images/create-token-ui-navigation.png b/docs/platform/guides/billing-and-usage-guide/images/create-token-ui-navigation.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/create-token-ui-navigation.png rename to docs/platform/guides/billing-and-usage-guide/images/create-token-ui-navigation.png diff --git a/src/en/guides/billing-and-usage-guide/images/created-token-result.png b/docs/platform/guides/billing-and-usage-guide/images/created-token-result.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/created-token-result.png rename to docs/platform/guides/billing-and-usage-guide/images/created-token-result.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-billable-usage-home.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-billable-usage-home.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-billable-usage-home.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-billable-usage-home.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-home.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-home.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-home.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-home.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-prod-nonprod-usage-home.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-prod-nonprod-usage-home.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-prod-nonprod-usage-home.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-prod-nonprod-usage-home.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-product-dropdown.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-product-dropdown.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-product-dropdown.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-product-dropdown.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-select-month.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-select-month.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-select-month.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-select-month.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-usage-type-dropdown.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-usage-type-dropdown.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-usage-type-dropdown.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-usage-type-dropdown.png diff --git a/src/en/guides/billing-and-usage-guide/images/usage-section-view-by-dropdown.png b/docs/platform/guides/billing-and-usage-guide/images/usage-section-view-by-dropdown.png similarity index 100% rename from src/en/guides/billing-and-usage-guide/images/usage-section-view-by-dropdown.png rename to docs/platform/guides/billing-and-usage-guide/images/usage-section-view-by-dropdown.png diff --git a/src/en/guides/billing-and-usage-guide/overview.md b/docs/platform/guides/billing-and-usage-guide/overview.md similarity index 82% rename from src/en/guides/billing-and-usage-guide/overview.md rename to docs/platform/guides/billing-and-usage-guide/overview.md index c9a9313..4e9a457 100644 --- a/src/en/guides/billing-and-usage-guide/overview.md +++ b/docs/platform/guides/billing-and-usage-guide/overview.md @@ -1,23 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: billing-and-usage-guide-overview name: Overview parent: billing-and-usage-guide weight: 10 - home_menu: - identifier: billing-and-usage-guide-overview - name: Overview - parent: home-billing - weight: 10 - section_menu: - identifier: billing-and-usage-guide - name: Billing and Usage Guide - weight: 50 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # **Billing and Usage Guide** @@ -30,21 +20,21 @@ The AppsCode Billing Console is a web-based hub at [AppsCode Billing Console](ht This section focuses on the **Usage** dashboard, which shows the resources consumed by downstream AppsCode services like KubeDB running in your clusters. -![usage-dashboard](images/usage-section-home.png) +![usage-dashboard](../images/usage-section-home.png) ### **Billing View (Month, Product, Usage, View By)** * **Month:** Our billing is month-specific. Pick the month to review and the dashboard refreshes all charts and tables to that month. -![usage-month-selector](images/usage-section-select-month.png) +![usage-month-selector](../images/usage-section-select-month.png) * **Product:** Use the Product dropdown to scope data to one product (KubeDB, KubeStash, Voyager, KubeVault). -![usage-product-selector](images/usage-section-product-dropdown.png) +![usage-product-selector](../images/usage-section-product-dropdown.png) * **Usage Types:** * **Total Usage**: total consumption for the selected scope, measured primarily in `Core-Minute` and `GiB-Minute`. * **Billable Usage**: the portion that is billable, measured primarily in `Core-Month` and `GiB-Month`. Billable is computed only if your organization has a paid contract for the selected product. If there’s no paid contract, a 30‑day free contract is applied and usage during this period is counted as `free usage`. See the [Contract docs](http://appscode.com/docs/en/guides/license-management/contract.html) for details. -![usage-usage-type-selector](images/usage-section-usage-type-dropdown.png) +![usage-usage-type-selector](../images/usage-section-usage-type-dropdown.png) * **View By:** * Choose how data is grouped. For Database view, you can drill down **Kinds → Clusters → Deployments** (for example, `kubedb.com/Postgres` → `clusters running Postgres` → `individual database deployments`). -![usage-view-by-selector](images/usage-section-view-by-dropdown.png) +![usage-view-by-selector](../images/usage-section-view-by-dropdown.png) Additional View By filters - **View By: Cluster** — Start at clusters to see per‑cluster usage, then drill down **Clusters → Kinds → Deployments** (for example, `cluster-prod` → `kubedb.com/Postgres` → `individual postgres database deployments in cluster-prod`). @@ -53,12 +43,12 @@ Additional View By filters ### **Billable Usage and Cost Management** Billable shows the chargeable portion of usage for the selected month and product, reported in `Core-Month` and `GiB-Month`. -![billable-usage-home](images/usage-section-billable-usage-home.png) +![billable-usage-home](../images/usage-section-billable-usage-home.png) What you’ll see in the Billable table - **Billable Usage:** total chargeable usage for the month after applying contracts and rules. - **PROD/NON-PROD usage:** billable usage split by cluster mode—clusters marked `prod` are priced at the `PROD` rate; clusters marked `qa`, `staging`, or `dev` are priced at the `NON‑PROD` rate. -![usage-billable-prod-nonprod](images/usage-section-prod-nonprod-usage-home.png) +![usage-billable-prod-nonprod](../images/usage-section-prod-nonprod-usage-home.png) - **Free usage:** usage that isn’t billed. This includes: - **Trial usage** from namespaces annotated `ace.appscode.com/enable-resource-trial=true` (`first one‑month` free per database starting from its creation in that namespace). - Usage covered by the **30‑day free contract** when there’s no paid contract for the selected product. diff --git a/docs/platform/guides/cluster-management/_index.md b/docs/platform/guides/cluster-management/_index.md new file mode 100644 index 0000000..529a078 --- /dev/null +++ b/docs/platform/guides/cluster-management/_index.md @@ -0,0 +1,12 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management + name: Cluster Management + parent: guides + popular: true + weight: 30 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- diff --git a/src/en/guides/cluster-management/add-cluster/_index.md b/docs/platform/guides/cluster-management/add-cluster/_index.md similarity index 58% rename from src/en/guides/cluster-management/add-cluster/_index.md rename to docs/platform/guides/cluster-management/add-cluster/_index.md index ca320f0..2efea62 100644 --- a/src/en/guides/cluster-management/add-cluster/_index.md +++ b/docs/platform/guides/cluster-management/add-cluster/_index.md @@ -1,12 +1,12 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-add name: Adding a Cluster weight: 10 parent: cluster-management pre: dropdown -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/cluster-management/add-cluster/create-vendor-managed.md b/docs/platform/guides/cluster-management/add-cluster/create-vendor-managed.md similarity index 65% rename from src/en/guides/cluster-management/add-cluster/create-vendor-managed.md rename to docs/platform/guides/cluster-management/add-cluster/create-vendor-managed.md index 7e842b5..aee2045 100644 --- a/src/en/guides/cluster-management/add-cluster/create-vendor-managed.md +++ b/docs/platform/guides/cluster-management/add-cluster/create-vendor-managed.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-add-createvendormanaged name: Create Vendor Managed Clusters parent: cluster-management-add weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/docs/platform/guides/cluster-management/add-cluster/import-rancher-cluster.md b/docs/platform/guides/cluster-management/add-cluster/import-rancher-cluster.md new file mode 100644 index 0000000..ec69d41 --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/import-rancher-cluster.md @@ -0,0 +1,33 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-rancher + name: Import Rancher Managed Clusters + parent: cluster-management-add + weight: 15 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Adding a Rancher Managed Cluster to Platform Console + +Importing a `Rancher-Managed` cluster requires a Rancher Type Credential and a Rancher Managed Organization. + +## Create Rancher Type Credential + +Add a credential of type "Rancher" — see [Credentials Management](../../account-management/kubernetes/credentials.md#rancher). + +## Create a Rancher Managed Organization + +Rancher clusters belong to Rancher Managed organizations, not personal accounts. Follow [Create a New Organization](../../account-management/orgs-members.md#create-a-new-organization) with these settings: + +1. Set the organization's Origin to `Rancher Managed`. +2. Provide the Rancher `API Endpoint` (found on the `Account & API Keys` page). +3. Click `Create`. + +## Import the Cluster + +1. Switch to the Rancher organization: in the [AppsCode Console](https://console.appscode.com), click your profile, choose `Switch Account`, and select the Rancher organization. +2. Follow the standard import process in [Import Vendor Managed Clusters](import-vendor-managed.md). diff --git a/docs/platform/guides/cluster-management/add-cluster/import-vendor-managed.md b/docs/platform/guides/cluster-management/add-cluster/import-vendor-managed.md new file mode 100644 index 0000000..4b7d568 --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/import-vendor-managed.md @@ -0,0 +1,34 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-vendormanaged + name: Import Vendor Managed Clusters + parent: cluster-management-add + weight: 10 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Adding a Vendor-Managed Cluster to Platform Console + +1. Go to the [Platform Console](https://console.appscode.com/) and click `Add Cluster`. + +### Choose Provider + +2. In the `Vendor Managed` section, select the provider hosting your cluster. + +### Select Credential + +3. Choose a credential with permission to access and import the cluster, then click `Next`. To create one, use the `+Create Credential` button (see [Credentials](../../account-management/kubernetes/credentials.html)). + +### Select Cluster + +4. Selection depends on the provider: + - `Linode` / `Digital Ocean`: select the cluster directly. + - `AKS` / `EKS` / `GKE`: choose the `Resource Group`, `Region`, or `Project`, then select the cluster. + +### Customize Features and Import + +5. Click `Import` to bring the cluster into the Platform Console, then explore it in the dashboard. \ No newline at end of file diff --git a/docs/platform/guides/cluster-management/add-cluster/overview.md b/docs/platform/guides/cluster-management/add-cluster/overview.md new file mode 100644 index 0000000..6269c79 --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/overview.md @@ -0,0 +1,25 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-overview + name: Overview + parent: cluster-management-add + weight: 1 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + +# Adding a Cluster to Platform Console + +Adding a Kubernetes cluster to the Platform Console takes two steps: + +## Step 1: Select the Cluster + +- **Vendor-Managed:** [Import Vendor Managed Clusters](import-vendor-managed.md) +- **Rancher-Managed:** [Import Rancher Managed Clusters](import-rancher-cluster.md) +- **Self-Managed:** [Import Self-Managed Clusters](self-managed/import-self-managed.md) + +## Step 2: Customize Features + +Choose the features to install during import. The selected features are deployed into the cluster as part of the import process. \ No newline at end of file diff --git a/docs/platform/guides/cluster-management/add-cluster/self-managed/_index.md b/docs/platform/guides/cluster-management/add-cluster/self-managed/_index.md new file mode 100644 index 0000000..6e0b127 --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/self-managed/_index.md @@ -0,0 +1,11 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-selfmanaged + name: Import Self-Managed Clusters + parent: cluster-management-add + weight: 20 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- \ No newline at end of file diff --git a/docs/platform/guides/cluster-management/add-cluster/self-managed/import-private.md b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-private.md new file mode 100644 index 0000000..d90e85b --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-private.md @@ -0,0 +1,33 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-importprivatecluster + name: Import Private Clusters + parent: cluster-management-add-selfmanaged + weight: 40 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Adding a Private Self-Managed Cluster to Platform Console + +1. Go to the [Platform Console](https://console.appscode.com/) and click `Add Cluster`. + +### Select Cluster Type + +2. In the `Self Managed` section, choose the private/air-gapped cluster option. + +### Provide Kubeconfig and Get Import Link + +3. Provide the kubeconfig for your cluster and click `Get Import Link`. Run either of the two returned commands inside your cluster. + +### Customize Features + +4. The UI then moves to the feature customization step. + +### Explore + +5. Once imported, explore the cluster in the Platform Console. + diff --git a/docs/platform/guides/cluster-management/add-cluster/self-managed/import-public.md b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-public.md new file mode 100644 index 0000000..ee764ca --- /dev/null +++ b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-public.md @@ -0,0 +1,33 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-add-importpubliccluster + name: Import Public Clusters + parent: cluster-management-add-selfmanaged + weight: 30 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Adding a Public Self-Managed Cluster to Platform Console + +1. Go to the [Platform Console](https://console.appscode.com/) and click `Add Cluster`. + +### Select Cluster Type + +2. In the `Self Managed` section, choose the public cluster option. + +### Provide Kubeconfig + +3. Provide the kubeconfig for your cluster. + +### Customize Features + +4. Proceed to the feature customization step. + +### Explore + +5. Once imported, explore the cluster in the Platform Console. + diff --git a/src/en/guides/cluster-management/add-cluster/self-managed/import-self-managed.md b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-self-managed.md similarity index 62% rename from src/en/guides/cluster-management/add-cluster/self-managed/import-self-managed.md rename to docs/platform/guides/cluster-management/add-cluster/self-managed/import-self-managed.md index a038aaf..2841e9f 100644 --- a/src/en/guides/cluster-management/add-cluster/self-managed/import-self-managed.md +++ b/docs/platform/guides/cluster-management/add-cluster/self-managed/import-self-managed.md @@ -1,18 +1,18 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-add-selfmanaged-overview name: Overview parent: cluster-management-add-selfmanaged weight: 10 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- -# Adding a Self-Managed Cluster to AppsCode Dashboard +# Adding a Self-Managed Cluster to Platform Console -If you possess a kubeconfig for either a public Kubernetes cluster or an air-gapped cluster, categorically referred to as self-managed clusters, here are the guides to seamlessly import these clusters into the AppsCode Dashboard: +A self-managed cluster is any cluster you have a kubeconfig for — public or air-gapped. Use the guides below to import it into the Platform Console:
diff --git a/src/en/guides/cluster-management/cluster-features.md b/docs/platform/guides/cluster-management/cluster-features.md similarity index 85% rename from src/en/guides/cluster-management/cluster-features.md rename to docs/platform/guides/cluster-management/cluster-features.md index 314d8c4..6079db8 100644 --- a/src/en/guides/cluster-management/cluster-features.md +++ b/docs/platform/guides/cluster-management/cluster-features.md @@ -1,18 +1,20 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-feature name: Manage Feature Sets parent: cluster-management weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Manage Feature Sets -**Feature Sets** are groups of AppsCode product capabilities that you can install or remove on any connected cluster. This page walks you through all 18 available Feature Sets and shows a step-by-step enable flow for the two most commonly used ones: **Backup & Recovery** and **Databases**. +**Feature Sets** are groups of AppsCode product capabilities that you can install or remove on any connected cluster. This page covers all 19 available Feature Sets and shows the enable flow for two common ones: **Backup & Recovery** and **Databases**. + +> For a per-feature breakdown of every Feature Set — what each feature does, why you'd enable it, and its prerequisites — see the [Feature Set Reference](feature-reference.md). --- @@ -20,7 +22,7 @@ section_menu: guides The Feature Sets grid on the Cluster Overview page shows all available product modules and their current installation status. -![Feature Sets overview grid — all 18 Feature Sets with their status badges](images/cluster-features/features.png) +![Feature Sets overview grid — all 18 Feature Sets with their status badges](../images/cluster-features/features.png) | Feature Set | Description | |---|---| @@ -37,7 +39,7 @@ The Feature Sets grid on the Cluster Overview page shows all available product m | **Multicluster Spoke** | Connect this cluster as a spoke to an existing Multicluster Hub. | | **Networking Addons** | Various networking plugins and extensions for Kubernetes. | | **Observability** | Cluster monitoring, metrics, and dashboards using Prometheus and Grafana. | -| **Opscenter Tools** | DevOps tooling and management utilities for ACE. | +| **Opscenter Tools** | DevOps tooling and management utilities for KubeDB Platform. | | **Policy Management** | Platform-level policy enforcement tools. | | **Secret Management** | Tools for secure secret storage and distribution across namespaces. | | **Security** | TLS certificate management, secret scanning, and image vulnerability tooling. | @@ -47,7 +49,7 @@ The Feature Sets grid on the Cluster Overview page shows all available product m Once you have enabled some Feature Sets, the Cluster Overview grid reflects the updated statuses — cards previously showing **Not Installed** will update to **Ready**. -![Cluster Overview Feature Sets grid after enabling Backup & Recovery and Databases — both show Ready](images/cluster-features/features-after-enable-some-features.png) +![Cluster Overview Feature Sets grid after enabling Backup & Recovery and Databases — both show Ready](../images/cluster-features/features-after-enable-some-features.png) --- @@ -62,7 +64,7 @@ From the Cluster Overview, click the **Backup & Recovery** card. The Feature Set - A **Components** section with three cards: **Stash 2.0** *(Recommended)*, **Stash Presets** *(Recommended)*, and **Stash** - A green **Enable** button on each component card, and a master **Enable** button at the top-right -![Backup & Recovery Feature Set page — Components listed with individual Enable buttons](images/cluster-features/features-backup1.png) +![Backup & Recovery Feature Set page — Components listed with individual Enable buttons](../images/cluster-features/features-backup1.png) ### Step 2 — Select Components and Configure the Preset @@ -81,19 +83,19 @@ Click the top-right **Enable** button to open the **Enable Feature Set modal**. Fill in all required fields and click **Preview** to advance. -![Backup & Recovery Enable modal — component checkboxes and Preset Configuration form](images/cluster-features/features-backup2.png) +![Backup & Recovery Enable modal — component checkboxes and Preset Configuration form](../images/cluster-features/features-backup2.png) ### Step 3 — Review the Generated Helm Values The modal advances to the **Values Preview** step: -- The **left panel** lists each generated Helm release file (e.g., `helm_release_kubestash.yaml`, `helm_release_stash_presets.yaml`) +- The **left panel** lists each generated Helm release file (e.g., `kubestash.yaml`, `stash_presets.yaml`) - The **right panel** shows the full YAML values for the selected file - Switch between **Edit** and **Preview Changes** tabs to review or compare against defaults - Click **Compare default values** to diff against the out-of-the-box configuration - Click **← Previous** to go back, or **Deploy** to apply -![Values preview — Helm release YAML editor with Edit/Preview Changes tabs and Deploy button](images/cluster-features/features-backup3.png) +![Values preview — Helm release YAML editor with Edit/Preview Changes tabs and Deploy button](../images/cluster-features/features-backup3.png) ### Step 4 — Deploy and Monitor Progress @@ -105,17 +107,17 @@ Enabling FeatureSet `opscenter-backup` started! Wait for the log stream to complete, then close the modal. -![Deploy progress modal showing live log output for Backup & Recovery](images/cluster-features/features-backup4.png) +![Deploy progress modal showing live log output for Backup & Recovery](../images/cluster-features/features-backup4.png) ### Step 5 — Verify the Feature Set Status After deployment, the Feature Set page shows the updated component statuses. If a dependency is still being pulled, a banner reads: *"Feature 'stash-presets' is enabled but not ready."* The affected component cards show a ⚠️ warning icon with a tooltip *"Required workload does not exist."* -![Backup & Recovery page in partially-ready state — warning icons on components still initializing](images/cluster-features/features-backup5.png) +![Backup & Recovery page in partially-ready state — warning icons on components still initializing](../images/cluster-features/features-backup5.png) Once all components are running, all cards show a green ✓ checkmark and both **Configure** and **Disable** buttons appear at the top-right — confirming the Feature Set is fully **Ready**. -![Backup & Recovery page fully Ready — all components show green checkmarks, Configure and Disable buttons visible](images/cluster-features/features-backup6.png) +![Backup & Recovery page fully Ready — all components show green checkmarks, Configure and Disable buttons visible](../images/cluster-features/features-backup6.png) --- @@ -130,7 +132,7 @@ Click the **Databases** card on the Cluster Overview. The Feature Set page opens - A single **KubeDB** component card *(Recommended)* with sub-components: `KubeDB`, `KubeDB Opscenter`, `KubeDB UI Presets`, and **More** - A green **Enable** button on the component card and at the top-right -![Databases Feature Set page — KubeDB component with Enable button](images/cluster-features/feature-databases1.png) +![Databases Feature Set page — KubeDB component with Enable button](../images/cluster-features/feature-databases1.png) ### Step 2 — Select Database Types @@ -143,18 +145,18 @@ Click the **Enable** button to open the **Enable Feature Set modal**. The modal Select your required database types and click **Preview**. -![Databases Enable modal — KubeDB component checkboxes and database type multi-select](images/cluster-features/feature-databases2.png) +![Databases Enable modal — KubeDB component checkboxes and database type multi-select](../images/cluster-features/feature-databases2.png) ### Step 3 — Review the Generated Helm Values The modal advances to the YAML values preview. Three Helm release files are listed on the left: -- `helm_release_kubedb.yaml` -- `helm_release_kubedb_opscenter.yaml` -- `helm_release_kubedb_ui_presets.yaml` +- `kubedb.yaml` +- `kubedb_opscenter.yaml` +- `kubedb_ui_presets.yaml` The YAML editor on the right shows the `featureGates` configuration — each selected database type is set to `true`, others to `false`. Use **Edit / Preview Changes** tabs to review, then click **Deploy**. -![Databases Values preview — featureGates YAML showing enabled database types](images/cluster-features/feature-databases3.png) +![Databases Values preview — featureGates YAML showing enabled database types](../images/cluster-features/feature-databases3.png) ### Step 4 — Deploy and Monitor Progress @@ -167,17 +169,17 @@ Deploying resources for FeatureSet `opscenter-datastore` started! Wait for the log to complete, then close the modal. -![Databases deploy progress modal showing live log output](images/cluster-features/feature-databases4.png) +![Databases deploy progress modal showing live log output](../images/cluster-features/feature-databases4.png) ### Step 5 — Verify the Feature Set Status After deployment, the Databases page shows the KubeDB component status. While resources are still initializing, the banner reads: *"Feature 'kubedb' is enabled but not ready."* The component card shows a ⚠️ warning icon and tooltip *"Required workload does not exist."* -![Databases page in partially-ready state — KubeDB component showing warning with tooltip](images/cluster-features/feature-databases5.png) +![Databases page in partially-ready state — KubeDB component showing warning with tooltip](../images/cluster-features/feature-databases5.png) Once KubeDB is fully running, the component card shows a green ✓ checkmark and the page header shows **Configure** and **Disable** buttons — confirming the Feature Set is fully **Ready**. -![Databases page fully Ready — KubeDB component showing green checkmark](images/cluster-features/feature-databases6.png) +![Databases page fully Ready — KubeDB component showing green checkmark](../images/cluster-features/feature-databases6.png) --- diff --git a/docs/platform/guides/cluster-management/cluster-helm-charts.md b/docs/platform/guides/cluster-management/cluster-helm-charts.md new file mode 100644 index 0000000..d0c3747 --- /dev/null +++ b/docs/platform/guides/cluster-management/cluster-helm-charts.md @@ -0,0 +1,36 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-helmcharts + name: Manage Cluster Helm Charts + parent: cluster-management + weight: 50 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Manage Helm Charts in Platform Console + +Platform Console's Helm Chart Management lets you manage Helm releases within your Kubernetes clusters — installing new charts, modifying existing releases, and rolling back versions from the UI. + +## Accessing Helm Chart Management + +To navigate to the Helm Chart Management page: + +1. From the [Platform Console](https://console.appscode.com), click on your imported cluster to go to the Cluster Overview page. +2. In the left sidebar, under **Helm**, select **Releases** to access the Helm Chart Management page. + +## Helm Chart Management Features + +### Install New Charts + +1. **Choose Chart Source:** Select a chart source from publicly available URLs or provide a custom URL. +2. **Select Chart and Version:** Browse and choose the desired chart and version. +3. **Customize Installation:** Provide a custom release name, namespace, and specify a custom values file during installation. + +### Interact with Existing Releases + +- **Modify Releases:** Adjust existing Helm releases based on evolving requirements. +- **Rollback to Previous Versions:** Revert to previous versions of Helm releases if needed. diff --git a/src/en/guides/cluster-management/cluster-overview.md b/docs/platform/guides/cluster-management/cluster-overview.md similarity index 85% rename from src/en/guides/cluster-management/cluster-overview.md rename to docs/platform/guides/cluster-management/cluster-overview.md index 1f23676..9142c42 100644 --- a/src/en/guides/cluster-management/cluster-overview.md +++ b/docs/platform/guides/cluster-management/cluster-overview.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-overview name: Cluster Overview parent: cluster-management weight: 10 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Cluster Overview @@ -18,11 +18,11 @@ The **Cluster Overview** page is your primary dashboard for a connected Kubernet ## Step 1 — Open Your Cluster -From the **AppsCode Console UI** home screen, you will see the **ALL CLUSTERS** grid. Each cluster card shows its name, status badge (e.g., **Active**), Kubernetes version, provider, number of nodes, and age. +From the **KubeDB Platform Console UI** home screen, you will see the **ALL CLUSTERS** grid. Each cluster card shows its name, status badge (e.g., **Active**), Kubernetes version, provider, number of nodes, and age. Click on any cluster card to open its Overview page. -![AppsCode home screen showing the cluster list — click a cluster card to open its Overview](images/cluster-overview/cluster-overview-1.png) +![KubeDB Platform home screen showing the cluster list — click a cluster card to open its Overview](../images/cluster-overview/cluster-overview-1.png) > The **+ Add Cluster** tile lets you import a new cluster at any time. @@ -38,7 +38,7 @@ The **Basic** section at the top displays the cluster's core identity: | Field | Description | |---|---| -| **Name** | The cluster name as registered in AppsCode | +| **Name** | The cluster name as registered in KubeDB Platform | | **Endpoint** | The Kubernetes API server address | | **UID** | The unique identifier of this cluster | | **Provider** | Cloud or infrastructure provider (e.g., Generic, AWS, GCP) | @@ -48,9 +48,9 @@ The **Basic** section at the top displays the cluster's core identity: Two action buttons appear top-right inside this section: - **Connect** — Downloads a KubeConfig for direct `kubectl` access -- **Remove** — Disconnects and removes the cluster from AppsCode +- **Remove** — Disconnects and removes the cluster from KubeDB Platform -![Cluster Overview page showing Basic info, Feature Sets grid, and Nodes section](images/cluster-overview/cluster-overview-2.png) +![Cluster Overview page showing Basic info, Feature Sets grid, and Nodes section](../images/cluster-overview/cluster-overview-2.png) --- @@ -63,7 +63,7 @@ Click the **Connect** button to open the **Kube Config** modal. This dialog show You can use this kubeconfig with `kubectl` to interact directly with the cluster from your terminal. -![Kube Config modal showing the cluster kubeconfig YAML with Download and Copy buttons](images/cluster-overview/cluster-overview-3.png) +![Kube Config modal showing the cluster kubeconfig YAML with Download and Copy buttons](../images/cluster-overview/cluster-overview-3.png) --- @@ -88,7 +88,7 @@ Scroll down past the **Basic** section to see the **Feature Sets** grid. Each ca | **Multicluster Spoke** | Connect this cluster as a spoke to a hub | | **Networking Addons** | Various networking addons for Kubernetes | | **Observability** | Cluster monitoring with Prometheus and Grafana | -| **Opscenter Tools** | DevOps tools for ACE | +| **Opscenter Tools** | DevOps tools for KubeDB Platform | | **Policy Management** | Platform policy management tools | | **Secret Management** | Tools for secret management | | **Security** | TLS, secret scanning, and vulnerability tools | @@ -103,7 +103,7 @@ Each Feature Set card shows a status badge: Hover over any **Not Installed** card to see a tooltip like *"No feature enabled yet for this feature set."* -![Feature Sets grid with status badges — Ready (green) and Not Installed (red)](images/cluster-overview/cluster-overview-4.png) +![Feature Sets grid with status badges — Ready (green) and Not Installed (red)](../images/cluster-overview/cluster-overview-4.png) Click any Feature Set card to open the **Feature Set Management** page where you can enable or configure its components. See [Feature Management](cluster-features.md) for a full walkthrough. @@ -122,7 +122,7 @@ Scroll past the **Feature Sets** grid to the **Nodes** section. Each registered Click **Nodes** in the left sidebar to open the dedicated **Nodes list page**, which shows all nodes with their labels and annotations in a table format. -![Nodes list page showing the cluster nodes with labels and annotations](images/cluster-overview/cluster-nodes-1.png) +![Nodes list page showing the cluster nodes with labels and annotations](../images/cluster-overview/cluster-nodes-1.png) --- @@ -135,7 +135,7 @@ Click on a node's name in the Nodes list to open the **Node Detail** page. This Use the **Edit** button (top-right) to modify the node spec, or **Delete** to remove the node from the cluster. -![Node detail page showing Basic info — Name, Namespace, Labels, and Annotations](images/cluster-overview/cluster-nodes-2.png) +![Node detail page showing Basic info — Name, Namespace, Labels, and Annotations](../images/cluster-overview/cluster-nodes-2.png) ### Editing a Node @@ -146,7 +146,7 @@ Clicking **Edit** opens a structured form where you can modify: Switch between **Form**, **YAML**, and **JSON** views using the tabs at the top-right of the editor. -![Node edit form showing Pod CIDRs, Taints, and the Unschedulable toggle](images/cluster-overview/cluster-nodes-edit-1.png) +![Node edit form showing Pod CIDRs, Taints, and the Unschedulable toggle](../images/cluster-overview/cluster-nodes-edit-1.png) --- diff --git a/src/en/guides/cluster-management/cluster-presets.md b/docs/platform/guides/cluster-management/cluster-presets.md similarity index 83% rename from src/en/guides/cluster-management/cluster-presets.md rename to docs/platform/guides/cluster-management/cluster-presets.md index 37dcf87..646aebc 100644 --- a/src/en/guides/cluster-management/cluster-presets.md +++ b/docs/platform/guides/cluster-management/cluster-presets.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-preset name: Manage Presets parent: cluster-management weight: 70 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Manage Cluster Presets @@ -26,13 +26,13 @@ Each row shows: - **Annotations** — Key labels attached to the preset (e.g., `ace.appscode.com/managed: true`, `app.kubernetes.io/managed-by`) - **Age** — How long ago the preset was created -![Cluster Presets list page — showing presets with their names, annotations, and age](images/cluster-presets/preset.png) +![Cluster Presets list page — showing presets with their names, annotations, and age](../images/cluster-presets/preset.png) > Presets are automatically created when you enable a Feature Set that requires preset configuration (such as Backup & Recovery). After enabling a Feature Set, you may see a new preset appear in this list. > -> ![Feature Set list — pointing to the "Backup & Recovery" feature](images/cluster-presets/preset-enable.png) +> ![Feature Set list — pointing to the "Backup & Recovery" feature](../images/cluster-presets/preset-enable.png) -![Cluster Presets list after enabling a new Feature Set — "stash-presets" and "kubedb-ui-presets" visible](images/cluster-presets/presets-after-feature-enable.png) +![Cluster Presets list after enabling a new Feature Set — "stash-presets" and "kubedb-ui-presets" visible](../images/cluster-presets/presets-after-feature-enable.png) --- @@ -47,7 +47,7 @@ The **Basic Info** tab also shows a **Namespace Presets** table with all namespa A green **Extend to Namespace** button (top-right) creates a namespace-scoped copy of this preset. -![Preset detail page — Basic Info tab showing Name, UID, and an empty Namespace Presets table](images/cluster-presets/present-basic-info.png) +![Preset detail page — Basic Info tab showing Name, UID, and an empty Namespace Presets table](../images/cluster-presets/present-basic-info.png) --- @@ -66,7 +66,7 @@ The edit form presents each configurable section as a collapsible card. For exam Update the values as needed and click **Preview** to advance to the review step. -![Edit Values form — collapsible sections for Encryption Secret, Retention Policy, Storage Ref, and Schedule](images/cluster-presets/stash-preset-edit-values1.png) +![Edit Values form — collapsible sections for Encryption Secret, Retention Policy, Storage Ref, and Schedule](../images/cluster-presets/stash-preset-edit-values1.png) ### Preview the Generated YAML @@ -75,7 +75,7 @@ After clicking **Preview**, the page displays the full generated `stash-presets` Click **Submit** to apply the updated preset values to the cluster. -![Preview step — full YAML spec rendered in the editor with Submit button at bottom-right](images/cluster-presets/stash-preset-edit-values2.png) +![Preview step — full YAML spec rendered in the editor with Submit button at bottom-right](../images/cluster-presets/stash-preset-edit-values2.png) --- @@ -90,41 +90,41 @@ The KubeDB preset configuration is organized into four main sections: 3. **Monitoring & Backups specifics** — Configure monitoring agents and default backup settings. 4. **Extras** — Additional configuration fields. -![KubeDB Edit Values form — overview of Machine, Database, and Monitoring sections](images/cluster-presets/db-preset-edit-values1.png) +![KubeDB Edit Values form — overview of Machine, Database, and Monitoring sections](../images/cluster-presets/db-preset-edit-values1.png) ### Machine Specifics In this section, you can define if users are allowed to modify the deployment type, cluster tier, and node placement. You can also specify the available options and default values for these fields. -![Machine Specifics — configuring Deployment Type and Cluster Tier defaults](images/cluster-presets/db-preset-edit-values2.png) +![Machine Specifics — configuring Deployment Type and Cluster Tier defaults](../images/cluster-presets/db-preset-edit-values2.png) ### Database Specifics The **Database Specifics** section is where you manage settings for different database engines. You can enable or disable specific versions and modes for each database type. -![Database Specifics — list of supported databases in the preset](images/cluster-presets/db-preset-edit-values3.png) +![Database Specifics — list of supported databases in the preset](../images/cluster-presets/db-preset-edit-values3.png) For example, in the **Postgres** subsection, you can toggle which versions (e.g., 13.x, 14.x) and modes (Standalone, Cluster) are available to users. -![Postgres settings — enabling specific versions and replica modes](images/cluster-presets/db-preset-edit-values4.png) +![Postgres settings — enabling specific versions and replica modes](../images/cluster-presets/db-preset-edit-values4.png) You can also configure default **Auth Credentials**, **Storage Classes**, and **TLS** settings that will be applied to new database instances. -![Additional Database settings — Auth Credentials, Custom Configuration, and Storage Class](images/cluster-presets/db-preset-edit-values5.png) +![Additional Database settings — Auth Credentials, Custom Configuration, and Storage Class](../images/cluster-presets/db-preset-edit-values5.png) ### Monitoring & Backup Specifics Configure the default monitoring agent and resources (CPU/Memory). You can also enable or disable backups by default and specify if they should be managed via `BackupConfiguration` or `BackupBlueprint`. -![Monitoring & Backups — setting up Prometheus agent and default backup behavior](images/cluster-presets/db-preset-edit-values6.png) -![Backup and Archiver settings — Point In Time Recovery configuration](images/cluster-presets/db-preset-edit-values7.png) +![Monitoring & Backups — setting up Prometheus agent and default backup behavior](../images/cluster-presets/db-preset-edit-values6.png) +![Backup and Archiver settings — Point In Time Recovery configuration](../images/cluster-presets/db-preset-edit-values7.png) ### Preview and Submit After completing your changes, click **Preview** to review the generated YAML specification. -![KubeDB Preset Preview — reviewing the final YAML before submission](images/cluster-presets/db-preset-edit-values8.png) +![KubeDB Preset Preview — reviewing the final YAML before submission](../images/cluster-presets/db-preset-edit-values8.png) Click **Submit** to update the `kubedb-ui-presets` configuration in your cluster. @@ -138,11 +138,11 @@ A **Presetless Namespace** dropdown appears, listing all namespaces in the clust Select the target namespace from the list. -![Extend to Namespace page — dropdown listing available namespaces for the preset to be applied to](images/cluster-presets/preset-extend-to-namespace1.png) +![Extend to Namespace page — dropdown listing available namespaces for the preset to be applied to](../images/cluster-presets/preset-extend-to-namespace1.png) After selecting the namespace, a **Preset Values** editor appears (YAML/JSON). You can customize the values specifically for this namespace before applying. Click **Apply** to create the namespace-scoped preset copy. -![Preset Values editor — namespace-specific YAML with Apply button at the bottom](images/cluster-presets/preset-extend-to-namespace2.png) +![Preset Values editor — namespace-specific YAML with Apply button at the bottom](../images/cluster-presets/preset-extend-to-namespace2.png) --- diff --git a/src/en/guides/cluster-management/cluster-sidebar.md b/docs/platform/guides/cluster-management/cluster-sidebar.md similarity index 78% rename from src/en/guides/cluster-management/cluster-sidebar.md rename to docs/platform/guides/cluster-management/cluster-sidebar.md index ce77c71..7b229b6 100644 --- a/src/en/guides/cluster-management/cluster-sidebar.md +++ b/docs/platform/guides/cluster-management/cluster-sidebar.md @@ -1,26 +1,26 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-sidebar name: Customize Cluster Sidebar parent: cluster-management weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Customize the Cluster Sidebar -The **Cluster Sidebar** is your primary navigation panel inside a connected cluster. By default, it shows a curated set of Kubernetes workloads and AppsCode custom resources. The **Sidebar Settings** page lets you fully customize which menu items appear, so you can tailor the experience to your team's needs. +The **Cluster Sidebar** is the navigation panel inside a connected cluster. By default it shows a set of Kubernetes workloads and AppsCode custom resources. The **Sidebar Settings** page lets you customize which menu items appear. --- ## Step 1 — Open the Cluster Overview -From the AppsCode console, click on your cluster (e.g., `default`) to open the **Cluster Overview** page. The left sidebar shows the default set of sections: **Kubernetes**, **Workloads**, **Helm**, **Datastore**, **Service & Discovery**, **Config**, **Storage**, **Monitoring**, **Security**, and **Admin**. +From the platform console, click on your cluster (e.g., `default`) to open the **Cluster Overview** page. The left sidebar shows the default set of sections: **Kubernetes**, **Workloads**, **Helm**, **Datastore**, **Service & Discovery**, **Config**, **Storage**, **Monitoring**, **Security**, and **Admin**. -![The default Cluster Overview page with the default sidebar navigation](images/cluster-sidebar/sidebar-before-update.png) +![The default Cluster Overview page with the default sidebar navigation](../images/cluster-sidebar/sidebar-before-update.png) > **Tip:** The default sidebar already covers the most common resources. You only need to open Sidebar Settings if you want to add, remove, or rearrange menu items. @@ -41,7 +41,7 @@ At the top-right of the page are two action buttons: - **Default** — Resets the sidebar back to the original default layout - **Save** — Saves your current changes -![Sidebar Settings page showing Available Menus on the left and Updated List on the right](images/cluster-sidebar/sidebar-1.png) +![Sidebar Settings page showing Available Menus on the left and Updated List on the right](../images/cluster-sidebar/sidebar-1.png) --- @@ -51,7 +51,7 @@ The **All Available Menus** panel lists hundreds of resource types grouped by AP For example, typing `cert` instantly filters the list and highlights all matches — such as **Cert Manager → Certificate**, **Certificate → CertificateSigningRequest**, and so on. A result counter (e.g., *Found 4 Search Results for 'cert'*) and pagination controls help you navigate through matches. -![Search bar in action — typing "cert" narrows the list and highlights matching resources](images/cluster-sidebar/sidebar-search-menu.png) +![Search bar in action — typing "cert" narrows the list and highlights matching resources](../images/cluster-sidebar/sidebar-search-menu.png) > **Note:** The search is case-insensitive. Matched groups and items are highlighted in green so they stand out clearly. @@ -59,11 +59,11 @@ For example, typing `cert` instantly filters the list and highlights all matches ## Step 4 — Add or Rearrange Items (Drag & Drop) -To add a resource to your sidebar, simply **drag** it from the **All Available Menus** panel on the left and **drop** it into the **Updated List** panel on the right at the position you prefer. +To add a resource to your sidebar, **drag** it from the **All Available Menus** panel on the left and **drop** it into the **Updated List** panel on the right at the position you prefer. In the example below, the user is dragging **Appscode K8s Management → ProjectQuota** into the current sidebar layout. You can see it appearing as a floating drag indicator (`⠿`) in the left panel. -![Dragging "ProjectQuota" from Available Menus into the Updated List](images/cluster-sidebar/sidebar-updating.png) +![Dragging "ProjectQuota" from Available Menus into the Updated List](../images/cluster-sidebar/sidebar-updating.png) You can also drag existing items within the **Updated List** panel to reorder them according to your workflow preferences. @@ -75,7 +75,7 @@ Once you are satisfied with your layout, click the green **Save** button in the The sidebar of the cluster will immediately reflect your changes. In the example below, after saving, the **Appscode K8s Management** group with **ProjectQuota** now appears in the cluster sidebar on the left. -![The Cluster Overview page after saving — the sidebar now shows ProjectQuota under Appscode K8s Management](images/cluster-sidebar/sidebar-after-update.png) +![The Cluster Overview page after saving — the sidebar now shows ProjectQuota under Appscode K8s Management](../images/cluster-sidebar/sidebar-after-update.png) --- diff --git a/docs/platform/guides/cluster-management/cluster-upgrade.md b/docs/platform/guides/cluster-management/cluster-upgrade.md new file mode 100644 index 0000000..2029835 --- /dev/null +++ b/docs/platform/guides/cluster-management/cluster-upgrade.md @@ -0,0 +1,208 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-upgrade + name: Upgrade Cluster + parent: cluster-management + weight: 80 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Upgrading Your KubeDB Platform: Management, Imported, and Spoke Clusters + +## Overview + +Upgrade a **KubeDB Platform** deployment across all cluster tiers: the base management cluster, the KubeDB Platform cluster, general imported clusters, and spoke clusters. The example below upgrades from release `2025.5.16` to `2025.6.x`. + +--- + +## Architecture + +``` + ┌─────────────────────────────────┐ + │ Management Cluster │ + │ (KubeDB Platform control plane) │ + └────────────────┬────────────────┘ + │ + ┌──────────────────┼──────────────────┐ + │ │ │ + ┌──────────────▼──────┐ ┌────────▼────────┐ ┌─────▼──────────┐ + │ KubeDB Platform │ │ Imported Cluster │ │ Spoke Cluster │ + │ Cluster (management)│ │ (generic import) │ │ (generic import│ + └─────────────────────┘ └─────────────────┘ └────────────────┘ +``` + +Each tier is upgraded separately; the order matters. + +--- + +## Pre-checks + +Before starting, verify your current installer version and target release. + +1. Log in to [appscode.com](https://appscode.com) and switch to your organization. +2. Navigate to your installer and click **View Details**. +3. Note the **current version** (e.g., `2025.5.16`) and confirm the **target version** + (e.g., `2025.6.x`). + +```bash +# Confirm current Helm release versions on the management cluster +helm list -A | grep opscenter-features + +# Watch releases during upgrade +kubectl get helmreleases -A -w +``` + +--- + +## Upgrade Flow + +### Step 1 — Download the new installer archive + +1. On the installer page, click **Upgrade to **. +2. Click **Download** to get the updated `.values` (val) file. +3. The downloaded archive lands in your local archive folder (e.g., `archive2/`). + +```bash +# Optional: inspect the downloaded values file before applying +cat ~/Downloads/.values.yaml +``` + +--- + +### Step 2 — Apply the upgrade via Platform UI + +1. Switch from the **Console UI** to the **Platform UI**. +2. Go to **User Settings → Upgrade**. +3. Select the val file downloaded in Step 1. +4. Click **Update Version**. + +The platform creates a background job that updates Helm releases one by one. + +```bash +# Monitor the upgrade job on the management cluster +kubectl get jobs -n ace -w + +# Watch Helm releases roll forward +kubectl get helmreleases -A -w +``` + +> **Expected state:** `current version: 5.16 → update in progress: 6.16` + +Once the job completes, verify the op-center feature set reflects the new version. + +--- + +### Step 3 — Upgrade spoke clusters + +Spoke clusters are imported as **generic DBaaS** generally. Update them individually before +updating the cluster set. + +1. In the Console, go to **Your Organization → Hub Cluster → KubeDB Platform**. +2. Select the correct **Cluster set** (how you imported). For example, Generic DBaaS. +3. Select your spoke cluster. +4. Click **Update KubeDB Platform Resources → Update Version → Yes**. + +![Upgrade](../images/upgrade/upgrade_1.png) + +```bash +# After triggering, watch the QB operator start the upgrade on the spoke +kubectl get helmreleases -A -w --context + +# Wait for all pods to return to Running +kubectl get pods -A --context +``` + +The cluster set manifest (which holds metadata about all spoke clusters) updates +almost instantly. The underlying Helm releases take longer — wait for them to +reconcile before moving on. + +--- + +### Step 4 — Upgrade general imported clusters + +1. In the Console, select the **General Imported Cluster**. +2. Open its **Settings** page and click **Update Version**. + +```bash +# Verify on the imported cluster +kubectl get helmreleases -A --context +``` + +This path updates Helm releases directly (not via a cluster set), so progress is +visible immediately. + +--- + +### Step 5 — Update the cluster set + +After **all** individual clusters are on the new version: + +1. In the Console, go to **Your Organization → Hub Cluster → KubeDB Platform**. +2. Select the correct **Cluster set** (how you imported). For example, Generic DBaaS. +3. Click **Update Cluster Set**. + +```bash +# Confirm cluster set version +kubectl get clusterset -A +``` + +> Before clicking **Update Cluster Set**, you will see the cluster set still shows the old version (e.g., `5.6`). +> After the update it will be marked as **unaligned** briefly, then reconcile. + +--- + +### Step 6 — Verify + +```bash +# Check every Helm release is at the new version across all clusters +for ctx in management spoke imported; do + echo "=== $ctx ===" + helm list -A --kube-context $ctx | grep -v DEPLOYED +done + +# Spot-check the search manager (may self-update from the cluster side) +kubectl get deployment search-manager -n ace -o jsonpath='{.spec.template.spec.containers[0].image}' +``` + +All clusters should report version `6.6.16` (or your target release). + +--- + +## Lessons Learned + +| Observation | Takeaway | +|---|---| +| One Helm release failed to update via the job | It had already reconciled from the cluster side — not always an error | +| Cluster set update is near-instant | It only patches a manifest, not the releases themselves — releases follow async | +| Search manager self-updated | Some components pull their version from the cluster operator, not the installer job | +| Upgrade order matters | Always update individual clusters **before** the cluster set | +| Ports need time after upgrade | Wait for all pods to reach `Running` before declaring success | + +--- + +## Quick Reference + +``` +appscode.com → Download val file + ↓ +Platform UI → Update Version (Management / Platform cluster) + ↓ +Console → Generic DBaaS → Update KubeDB Platform Resources (each spoke) + ↓ +Console → Generic DBaaS → Update Cluster Set + ↓ +Console → Imported Cluster → Settings → Update Version + ↓ +Verify: helm list -A across all contexts +``` + +No downtime during upgrade procedure — the platform performs rolling Helm release updates and +most workloads stay running throughout. + +--- +Here is a sample video on how you can setup the full platform: + \ No newline at end of file diff --git a/src/en/guides/cluster-management/cluster-workload.md b/docs/platform/guides/cluster-management/cluster-workload.md similarity index 73% rename from src/en/guides/cluster-management/cluster-workload.md rename to docs/platform/guides/cluster-management/cluster-workload.md index 1ede361..62e4f2c 100644 --- a/src/en/guides/cluster-management/cluster-workload.md +++ b/docs/platform/guides/cluster-management/cluster-workload.md @@ -1,26 +1,21 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-k8sworkloads name: Kubernetes Workload Management parent: cluster-management weight: 40 - home_menu: - identifier: home-cluster-k8sworkloads - name: Kubernetes Workload Management - parent: home-cluster - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Kubernetes Workload Management -The Kubernetes Workload Management section in the AppsCode Dashboard offers robust capabilities for managing Kubernetes resources. Follow these steps to leverage this functionality: +The Kubernetes Workload Management section in the Platform Console manages Kubernetes resources. -1. Navigate to the [AppsCode Dashboard](https://console.appscode.com). +1. Navigate to the [Platform Console](https://console.appscode.com). 2. Click on your imported cluster to access the Cluster Overview page. ## Cluster Overview Page @@ -99,8 +94,6 @@ Select any resource from the left sidebar to list the resources. From there, you - Graph of Connected Resources - Resource Manifest -The `Datastore` section is dedicated to KubeDB, an AppsCode product, providing management capabilities for various types of databases. You can create new databases, explore overviews, components, connected resources, and manifests for each database. +The `Datastore` section is dedicated to KubeDB, an AppsCode product, for managing various types of databases. You can create new databases, explore overviews, components, connected resources, and manifests for each database. You can also create new resources directly from any resource list page by clicking the `➕ Create` button, filling out the form, and submitting to create the resource. - -Explore the power of Kubernetes workload management in the AppsCode Dashboard for a seamless and efficient experience. diff --git a/docs/platform/guides/cluster-management/constraints-violations.md b/docs/platform/guides/cluster-management/constraints-violations.md new file mode 100644 index 0000000..3306af8 --- /dev/null +++ b/docs/platform/guides/cluster-management/constraints-violations.md @@ -0,0 +1,14 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-gatekeeper + name: Constraints & Violations + parent: cluster-management + weight: 90 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Constraints & Violations diff --git a/docs/platform/guides/cluster-management/feature-reference.md b/docs/platform/guides/cluster-management/feature-reference.md new file mode 100644 index 0000000..a298e73 --- /dev/null +++ b/docs/platform/guides/cluster-management/feature-reference.md @@ -0,0 +1,283 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: cluster-management-feature-reference + name: Feature Set Reference + parent: cluster-management + weight: 31 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + +# Feature Set Reference + +This page lists every feature available in each Feature Set, why you would enable it, and the features it depends on. Use it to decide what to turn on and to understand what gets pulled in automatically. + +> **Prerequisites auto-enable.** When you enable a feature, every feature in its **Prerequisites** column is enabled for you if not already present. The chain is transitive — a prerequisite's own prerequisites are pulled in too. + +--- + +## Opscenter Core *(Required)* + +Core platform capabilities. Must be installed before any other Feature Set. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Kube UI Server** *(Required)* | The core Server that renders the UI of this particular cluster | — | +| **License Proxyserver** *(Recommended)* | Fetches and serves AppsCode product licenses. Required by KubeDB, KubeStash, Panopticon, KubeVault, Scanner. | — | +| **FluxCD** *(Recommended)* | GitOps engine for declaratively syncing manifests from Git. All features are actually deployed in the cluster via flux HelmRelease. | — | +| **OpenShift Adapter** | Adapts the platform to OpenShift. Enable only on OpenShift clusters. | — | +| **Opscenter Features** *(Required)* | Internal configurator that renders feature definitions. Platform-managed. | — | + +Note: If you are an ArgoCD user, AppsCode provides a way to convert the flux HelmRelease to an Argo Application via a custom operator called FargoCD. This is configurable in the [selfhost](../../selfhost-setup/install/_index.md) page. + +--- + +## Backup & Recovery + +Scheduled backup and recovery for Kubernetes applications and databases. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Stash 2.0** *(Recommended)* | Backup and restore of apps and databases via KubeStash. The current backup engine. | License Proxyserver | +| **Stash Presets** *(Recommended)* | Ready-made backup storage and retention policy configurations. | — | +| **Stash** | Legacy backup operator (Stash 1.0). Enable only to keep existing Stash 1.0 setups working. | License Proxyserver | +| **Stash Opscenter** | UI and Grafana monitoring for Stash. | Stash, Panopticon, Grafana Operator | + +--- + +## Databases + +Production-grade database management powered by KubeDB. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **KubeDB** *(Recommended)* | Operator to provision and manage production databases (MongoDB, Postgres, MySQL, Redis, Kafka, etc.). | License Proxyserver | +| **KubeDB Opscenter** *(Recommended)* | UI and monitoring dashboards for KubeDB. | KubeDB, Panopticon, Grafana Operator | +| **KubeDB UI Presets** *(Recommended)* | Default presets for the database creation forms. | — | +| **Prepare Cluster** | Pre-pulls images and prepares nodes for KubeDB. | — | + +--- + +## Observability + +Cluster monitoring, metrics, and dashboards. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Monitoring Operator** *(Recommended)* | Foundation operator that wires up cluster monitoring. Prerequisite for most observability features. | — | +| **Kube Prometheus Stack** *(Recommended)* | Prometheus, Grafana, and alerting bundle for Kubernetes-native monitoring. | Monitoring Operator | +| **Grafana Operator** *(Recommended)* | Manage Grafana dashboards as Kubernetes resources. | Monitoring Operator | +| **Panopticon** *(Recommended)* | Generates metrics from any Kubernetes resource (generic kube-state-metrics). | License Proxyserver | +| **Kubernetes Metrics Server** | Container CPU/memory metrics for `kubectl top` and built-in autoscaling. | — | +| **Prometheus Metrics Adapter** *(Recommended)* | Exposes Prometheus metrics to the Kubernetes custom-metrics API. | Kube Prometheus Stack | +| **Kubernetes Grafana Dashboards** *(Recommended)* | Prebuilt Kubernetes Grafana dashboards. | Grafana Operator | +| **AppsCode OTEL Stack** *(Recommended)* | OpenTelemetry collectors and pipelines for traces, metrics, and logs. | Monitoring Operator | +| **Thanos Operator** *(Recommended)* | Long-term, highly available Prometheus storage and global querying. | — | +| **Prometheus Label Proxy** *(Recommended)* | Enforces label-based tenant isolation on Prometheus queries. | Thanos Operator, Gateway API, Service Catalog | +| **Tenant Operator** *(Recommended)* | Isolates monitoring resources and access per tenant. | Prometheus Label Proxy, Thanos Operator | +| **Inbox Agent / Server / UI** *(ALPHA)* | Cluster event inbox components. | — | + +--- + +## Cost Management + +Measure and allocate infrastructure and container costs. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Keda** *(Recommended)* | Event-driven autoscaling of workloads. | — | +| **Keda HTTP Addon** *(Recommended)* | Scale workloads based on HTTP traffic. | Keda | +| **Opencost** *(ALPHA)* | Measure and allocate infrastructure and container costs. | Kube Prometheus Stack, Monitoring Operator | +| **OpenCost Grafana Dashboards** | Cost visualization dashboards. | Opencost, Grafana Operator | + +--- + +## Security + +TLS certificates, runtime security, and image scanning. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Scanner** *(Recommended)* | Scans image vulnerabilities and generates security reports. | License Proxyserver, Grafana Operator | +| **Cert Manager** | X.509 certificate issuance and renewal. | Gateway API | +| **CA Cert CSI Driver** | CSI driver that adds CA certificates to the OS trusted certificate issuers | Cert Manager | +| **Falco** | Container-native runtime threat detection. | — | +| **Falco UI Server** | UI for Falco runtime alerts. | Falco, Grafana Operator | + +--- + +## Secret Management + +Secure secret storage, syncing, and distribution. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **External Secrets** | Sync secrets from external managers (AWS/GCP/Azure/Vault) into Kubernetes Secrets. | — | +| **Kubevault** | Operator to run and manage HashiCorp Vault. | License Proxyserver | +| **Kubevault Opscenter** | UI and monitoring for KubeVault. | Kubevault, Grafana Operator | +| **Config Syncer** | Sync ConfigMaps and Secrets across namespaces and clusters. | License Proxyserver | +| **Reloader** | Roll workloads automatically on ConfigMap/Secret changes. | — | +| **Sealed Secrets** | One-way encrypted Secrets safe to store in Git. | — | +| **Vault Secrets Operator** | Consume Vault secrets natively as Kubernetes Secrets. | — | +| **Secrets Store CSI Driver** | Mount secrets from external stores as CSI volumes. | — | +| **Azure Key Vault provider** | Azure Key Vault backend for the CSI driver. | Secrets Store CSI Driver | +| **AWS provider** | AWS Secrets Manager / SSM Parameter Store backend for the CSI driver. | Secrets Store CSI Driver | +| **Google Secret Manager provider** | Google Secret Manager backend for the CSI driver. | Secrets Store CSI Driver | +| **HashiCorp Vault provider** | HashiCorp Vault backend for the CSI driver. | Secrets Store CSI Driver | +| **Virtual Secrets** *(ALPHA)* | Virtual Secrets server for not to actually keep the secrets in k8s level. | — | +| **Virtual Secrets provider** *(ALPHA)* | Virtual Secrets backend for the CSI driver. | Virtual Secrets, Secrets Store CSI Driver | + +--- + +## Policy Management + +Platform-level policy enforcement. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Gatekeeper** | OPA-based policy controller. | — | +| **Gatekeeper Templates** | OPA Gatekeeper policy template library. | Gatekeeper | +| **Gatekeeper Constraints** | OPA Gatekeeper policy constraint library. | Gatekeeper, Gatekeeper Templates | +| **GateKeeper Policy Grafana Dashboards** | Policy compliance dashboards. | Gatekeeper, Grafana Operator | +| **Kyverno** | Kubernetes-native policy management. | — | +| **Kyverno Policies** | Pod Security Standards implemented as Kyverno policies. | Kyverno | + +--- + +## Storage Addons + +Additional storage drivers and integrations. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **NFS CSI driver** | Access NFS servers as Kubernetes volumes. | — | +| **Longhorn** | Cloud-native distributed block storage. | — | +| **CSI Volume Snapshotter** | Snapshot controller and validation webhook for CSI volumes. | — | +| **TopoLVM** | Local LVM-backed CSI storage. | — | + +--- + +## Networking Addons + +Networking plugins and extensions. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Kubernetes Gateway API** *(Recommended)* | Installs the Gateway API CRDs and controller. | — | +| **External DNS Operator** | Manage external DNS records for Services and Ingresses. | — | +| **Voyager Ingress** | HAProxy-based ingress controller. | — | +| **Voyager Gateway** | Envoy-based gateway distro by AppsCode. | — | + +--- + +## Opscenter Tools + +DevOps tooling and management utilities. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Supervisor** *(Recommended)* | Day-2 operations — upgrade recommendations and maintenance windows. | — | +| **Sidekick** *(Recommended)* | Run a one-off container as a pod (sidecar-as-a-pod). | — | +| **Operator Shard Manager** *(Recommended)* | Scale operators by sharding responsibility across instances. | — | + +--- + +## Cluster Management + +Cluster provisioning and management tools (Cluster API core). + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **CAPI Catalog** | Catalog of Cluster API cluster templates. | — | +| **CAPI Ops Manager** | Day-2 operations for Cluster API clusters. | — | +| **Cluster Presets** | Preset configurations for cluster provisioning. Work with cloud NodePools | — | + +--- + +## Cluster API AWS (CAPA) + +Lifecycle management for clusters running on AWS. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **AWS Credential Manager** *(Recommended)* | Manage AWS credentials used by CAPA. | — | +| **AWS EBS CSI Driver** *(Recommended)* | EBS-backed storage for provisioned clusters. | — | +| **AWS Load Balancer Controller** *(Recommended)* | Provision AWS load balancers for EKS clusters. | — | +| **AWS VPC Peering Operator** *(Recommended)* | Manage AWS VPC peering connections. | — | +| **Cluster Autoscaler** *(Recommended)* | Node autoscaling for Cluster API clusters. | — | + +--- + +## Cluster API GCP (CAPG) + +Lifecycle management for clusters running on GCP. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **GCP Credential Manager** *(Recommended)* | Manage GCP credentials used by CAPG. | — | + +--- + +## Cluster API Azure (CAPZ) + +Lifecycle management for clusters running on Azure. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Azure Credential Manager** *(Recommended)* | Manage Azure credentials used by CAPZ. | — | + +--- + +## Crossplane + +Control-plane framework for infrastructure as code. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Crossplane** *(Recommended)* | The cloud-native control plane for provisioning infrastructure via Kubernetes APIs. | — | +| **KubeDB AWS Provider** | Provision KubeDB databases on AWS through Crossplane. | Crossplane | +| **KubeDB Azure Provider** | Provision KubeDB databases on Azure through Crossplane. | Crossplane | +| **KubeDB GCP Provider** | Provision KubeDB databases on GCP through Crossplane. | Crossplane | + +--- + +## Multicluster Hub + +Central hub for managing a fleet of clusters. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Multicluster Hub** *(Recommended)* | Core hub components. Foundation for all other hub features. | — | +| **Managed ServiceAccount Manager** *(Recommended)* | Manage service accounts on spoke clusters. | Multicluster Hub | +| **Cluster Auth Manager** *(Recommended)* | Authentication and authorization across the fleet. | Multicluster Hub, Managed ServiceAccount Manager | +| **Cluster Profile Manager** *(Recommended)* | Manage cluster profiles across the fleet. | Multicluster Hub, Cluster Auth Manager | +| **Cluster Proxy Manager** *(Recommended)* | Proxy traffic to spoke clusters. | Multicluster Hub, Cluster Profile Manager | +| **Cluster Gateway Manager** *(Recommended)* | API gateway for reaching spoke clusters. | Multicluster Hub, Cluster Profile Manager, Managed ServiceAccount Manager, Cluster Proxy Manager | +| **FluxCD Manager** *(Recommended)* | GitOps delivery across the fleet. | Multicluster Hub, Cluster Profile Manager | +| **License Proxyserver Manager** *(Recommended)* | Distribute AppsCode licenses to spoke clusters. | Multicluster Hub, Cluster Profile Manager | +| **Hub Cluster Robot** *(Recommended)* | Automation account for hub-driven operations. | Multicluster Hub, Cluster Auth Manager | + +--- + +## Multicluster Spoke + +Connect this cluster as a spoke to an existing hub. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Multicluster Spoke** *(Recommended)* | Register this cluster as a spoke of a Multicluster Hub. | — | + +--- + +## Kubernetes Native Service + +Components for Kubernetes-native service patterns. + +| Feature | Why enable | Prerequisites | +|---|---|---| +| **Service Catalog** *(Recommended)* | Exposes the Databases with gateway. Controls all the gw component provisioning for all modes including client orgs | Cert Manager, KubeDB | +| **Service Gateway Presets** *(Recommended)* | A preset that holds the root 'ace' gateway configurations | Cert Manager, External DNS Operator | +| **Service Connector Backend** | Backend for the service connector. | — | +| **Service Provider** | Service provider component. | — | diff --git a/src/en/guides/cluster-management/hub-ui/_index.md b/docs/platform/guides/cluster-management/hub-ui/_index.md similarity index 66% rename from src/en/guides/cluster-management/hub-ui/_index.md rename to docs/platform/guides/cluster-management/hub-ui/_index.md index d2fb987..007c9ff 100644 --- a/src/en/guides/cluster-management/hub-ui/_index.md +++ b/docs/platform/guides/cluster-management/hub-ui/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui name: Hub UI + parent: cluster-management description: Know how to use Hub UI icon: https://img.icons8.com/external-anggara-basic-outline-anggara-putra/96/external-stats-ui-anggara-basic-outline-anggara-putra.png popular: true weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- \ No newline at end of file diff --git a/src/en/guides/cluster-management/hub-ui/cluster-and-clusterset.md b/docs/platform/guides/cluster-management/hub-ui/cluster-and-clusterset.md similarity index 63% rename from src/en/guides/cluster-management/hub-ui/cluster-and-clusterset.md rename to docs/platform/guides/cluster-management/hub-ui/cluster-and-clusterset.md index 8097445..c03a068 100644 --- a/src/en/guides/cluster-management/hub-ui/cluster-and-clusterset.md +++ b/docs/platform/guides/cluster-management/hub-ui/cluster-and-clusterset.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-cluster name: Cluster & Clusterset parent: hub-ui weight: 70 - home_menu: - identifier: hub-ui-cluster - name: Cluster & Clusterset - parent: hub-ui - weight: 70 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Important Note @@ -33,7 +28,7 @@ ClusterSets group multiple clusters together. 1. Go to **ClusterSets** 2. Click **Add ClusterSet** -![ClusterSet](../images/cluster_and_clusterset/clusterset.png) +![ClusterSet](../../images/cluster_and_clusterset/clusterset.png) 3. Provide a name @@ -45,9 +40,9 @@ ClusterSets group multiple clusters together. * Select any feature you want to change in all of your connected spokes -![ClusterSet](../images/cluster_and_clusterset/clusterset_feature_1.png) +![ClusterSet](../../images/cluster_and_clusterset/clusterset_feature_1.png) -![ClusterSet](../images/cluster_and_clusterset/clusterset_feature_2.png) +![ClusterSet](../../images/cluster_and_clusterset/clusterset_feature_2.png) * Apply configurations across all clusters @@ -57,11 +52,11 @@ ClusterSets group multiple clusters together. ### Unaligned cluster: If any spoke cluster has extra features enabled than hub that's unaligned -![Unaligned](../images/cluster_and_clusterset/unaligned.png) +![Unaligned](../../images/cluster_and_clusterset/unaligned.png) Like in the image secret management have 1 unaligned cluster -![Unaligned](../images/cluster_and_clusterset/unaligned_2.png) +![Unaligned](../../images/cluster_and_clusterset/unaligned_2.png) You can see config-syncer is enabled in spoke but not in hub @@ -74,11 +69,11 @@ You can see config-syncer is enabled in spoke but not in hub You can add cluster from another clusterset if you want -![ClusterSet](../images/cluster_and_clusterset/add_cluster_1.png) +![ClusterSet](../../images/cluster_and_clusterset/add_cluster_1.png) 1. Select cluster(s) -![ClusterSet](../images/cluster_and_clusterset/add_cluster_2.png) +![ClusterSet](../../images/cluster_and_clusterset/add_cluster_2.png) 2. Add to ClusterSet diff --git a/src/en/guides/cluster-management/hub-ui/create.md b/docs/platform/guides/cluster-management/hub-ui/create.md similarity index 64% rename from src/en/guides/cluster-management/hub-ui/create.md rename to docs/platform/guides/cluster-management/hub-ui/create.md index f78ca0e..3232fb8 100644 --- a/src/en/guides/cluster-management/hub-ui/create.md +++ b/docs/platform/guides/cluster-management/hub-ui/create.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-create name: Create Hub Cluster parent: hub-ui weight: 40 - home_menu: - identifier: hub-ui-create - name: Create Hub Cluster - parent: hub-ui - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -23,27 +18,27 @@ section_menu: guides ### Steps 1. Go to import cluster and choose your preferred method -![Hub & Spoke Model](../images/import/select-cluster.png) +![Hub & Spoke Model](../../images/import/select-cluster.png) 2. After filling up necessary steps for your preferred method Choose Generic as cluster profile -![Cluster Profile](../images/import/cluster-profile.png) +![Cluster Profile](../../images/import/cluster-profile.png) 3. Open **Cluster Details** You won't see the hub UI button initially -![Cluster Details](../images/import/cluster-details.png) +![Cluster Details](../../images/import/cluster-details.png) 4. Go to **Feature Set Settings** 5. Select **OCM Hub Feature Set** All the features will be white leveled if you are enabling it for the first time. -![Cluster Feature-set](../images/import/feature-set.png) +![Cluster Feature-set](../../images/import/feature-set.png) In the top right corner there will be enable button. 1. Click in the enable button 2. Select all features ( will be auto-selected) 3. Click Preview then Deploy -![Deploy](../images/import/deploy.png) +![Deploy](../../images/import/deploy.png) diff --git a/src/en/guides/cluster-management/hub-ui/introduction.md b/docs/platform/guides/cluster-management/hub-ui/introduction.md similarity index 76% rename from src/en/guides/cluster-management/hub-ui/introduction.md rename to docs/platform/guides/cluster-management/hub-ui/introduction.md index 303fc92..ea1ade7 100644 --- a/src/en/guides/cluster-management/hub-ui/introduction.md +++ b/docs/platform/guides/cluster-management/hub-ui/introduction.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-introduction name: Introduction parent: hub-ui weight: 30 - home_menu: - identifier: hub-ui-introduction - name: Introduction - parent: hub-ui - weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Hub UI -Hub UI is to manage multiple cluster from a single point. In this guide we will see how you can do that +Hub UI lets you manage multiple clusters from a single point. -![Hub & Spoke Model](../images/introduction/hub-spoke-model.png) +![Hub & Spoke Model](../../images/introduction/hub-spoke-model.png) ### What is OCM? diff --git a/src/en/guides/cluster-management/hub-ui/license-management.md b/docs/platform/guides/cluster-management/hub-ui/license-management.md similarity index 50% rename from src/en/guides/cluster-management/hub-ui/license-management.md rename to docs/platform/guides/cluster-management/hub-ui/license-management.md index a7aebfe..c5e523a 100644 --- a/src/en/guides/cluster-management/hub-ui/license-management.md +++ b/docs/platform/guides/cluster-management/hub-ui/license-management.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-license name: License Management parent: hub-ui weight: 60 - home_menu: - identifier: hub-ui-license - name: License Management - parent: hub-ui - weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -24,19 +19,19 @@ You can: * Add licenses -![License](../images/license/add_license.png) +![License](../../images/license/add_license.png) -![License](../images/license/license_modal.png) +![License](../../images/license/license_modal.png) * Upon clicking on the link you will redirected to billing UI -![License](../images/license/contract.png) +![License](../../images/license/contract.png) * After selecting a contract add your cluster there -![License](../images/license/contract_1.png) +![License](../../images/license/contract_1.png) -![License](../images/license/contract_1.png) +![License](../../images/license/contract_1.png) * Copy and paste your license * Assign to namespaces diff --git a/src/en/guides/cluster-management/hub-ui/permission.md b/docs/platform/guides/cluster-management/hub-ui/permission.md similarity index 66% rename from src/en/guides/cluster-management/hub-ui/permission.md rename to docs/platform/guides/cluster-management/hub-ui/permission.md index b46ee6f..00a8207 100644 --- a/src/en/guides/cluster-management/hub-ui/permission.md +++ b/docs/platform/guides/cluster-management/hub-ui/permission.md @@ -1,23 +1,18 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-permission name: User Permission parent: hub-ui weight: 60 - home_menu: - identifier: hub-ui-permission - name: User Permission - parent: hub-ui - weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # User Access Management -![permission](../images/permission/permission.png) +![permission](../../images/permission/permission.png) Here you can assign a user one cluster or many cluster (clusterset) and grant access of different level @@ -36,20 +31,20 @@ Here you can assign a user one cluster or many cluster (clusterset) and grant ac 1. Go to **Platform UI** -![go to platform](../images/permission/go_to_platform.png) +![go to platform](../../images/permission/go_to_platform.png) 2. Create a **Team** -![create team](../images/permission/create_team.png) +![create team](../../images/permission/create_team.png) 3. Add members -![Add Member](../images/permission/add_member.png) +![Add Member](../../images/permission/add_member.png) 4. Go to Hub → **Access** 5. Click **Assign Permission** -![Grant Permission](../images/permission/grant_permission.png) +![Grant Permission](../../images/permission/grant_permission.png) ### Fields Explained diff --git a/src/en/guides/cluster-management/hub-ui/spoke.md b/docs/platform/guides/cluster-management/hub-ui/spoke.md similarity index 59% rename from src/en/guides/cluster-management/hub-ui/spoke.md rename to docs/platform/guides/cluster-management/hub-ui/spoke.md index 915108b..a086b64 100644 --- a/src/en/guides/cluster-management/hub-ui/spoke.md +++ b/docs/platform/guides/cluster-management/hub-ui/spoke.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: hub-ui-spoke name: Connect Spoke Cluster parent: hub-ui weight: 50 - home_menu: - identifier: hub-ui-spoke - name: Connect Spoke Cluster - parent: hub-ui - weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Creating a Spoke Cluster @@ -21,28 +16,24 @@ section_menu: guides ### Steps -1. Go to **Import Cluster** like before and do the necessary steps +1. Go to **Import Cluster** and complete the necessary steps 2. Select an existing hub cluster before importing -![Spoke](../images/spoke/spoke.png) +![Spoke](../../images/spoke/spoke.png) 3. Complete import ✅ Spoke cluster is created and linked -![Homepage](../images/spoke/homepage.png) - - -This method can be started from Hub cluster as well - - +![Homepage](../../images/spoke/homepage.png) +This method can also be started from the Hub cluster: 1. Go to Hub → **Cluster List** 2. Click **Import Managed Cluster** -![Homepage](../images/spoke/import_spoke.png) +![Homepage](../../images/spoke/import_spoke.png) 3. Follow import steps @@ -56,11 +47,11 @@ This method can be started from Hub cluster as well 1. Go to cluster → Feature Set 2. Enable **OCM Spoke** (initially your features will be white leveled) -![featureset](../images/spoke/featureset.png) +![featureset](../../images/spoke/featureset.png) 3. Select Hub Cluster -![select](../images/spoke/select.png) +![select](../../images/spoke/select.png) 4. Provide a name 5. Enable @@ -69,11 +60,11 @@ Then: * Enter into your hub cluster then Click Go to Hub -![request](../images/spoke/request.png) +![request](../../images/spoke/request.png) * Click **Accept Spoke** The select the spoke from which the connection request was sent before -![accept](../images/spoke/accept.png) +![accept](../../images/spoke/accept.png) * Approve the request diff --git a/docs/platform/guides/cluster-management/hub-ui/upgrade.md b/docs/platform/guides/cluster-management/hub-ui/upgrade.md new file mode 100644 index 0000000..65f1215 --- /dev/null +++ b/docs/platform/guides/cluster-management/hub-ui/upgrade.md @@ -0,0 +1,32 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: hub-ui-upgrade + name: Upgrade Spoke + parent: hub-ui + weight: 80 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + + + +# Upgrade spoke cluster + +1. Go to clusterset of the cluster that you want to upgrade to latest version + +![Upgrade](../../images/upgrade/upgrade_1.png) + +2. You will see the spoke featureset inside the hub + +![Upgrade](../../images/upgrade/upgrade_2.png) + +To give a spoke different features than the hub, configure them here. + +3. Go to **Upgrade Version** from the sidebar. If a latest version is available, click the upgrade button. + +![Upgrade](../../images/upgrade/upgrade_3.png) + + diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases1.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases1.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases1.png diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases2.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases2.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases2.png diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases3.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases3.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases3.png diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases4.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases4.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases4.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases4.png diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases5.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases5.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases5.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases5.png diff --git a/src/en/guides/cluster-management/images/cluster-features/feature-databases6.png b/docs/platform/guides/cluster-management/images/cluster-features/feature-databases6.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/feature-databases6.png rename to docs/platform/guides/cluster-management/images/cluster-features/feature-databases6.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-after-enable-some-features.png b/docs/platform/guides/cluster-management/images/cluster-features/features-after-enable-some-features.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-after-enable-some-features.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-after-enable-some-features.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup1.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup1.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup1.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup2.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup2.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup2.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup3.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup3.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup3.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup4.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup4.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup4.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup4.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup5.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup5.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup5.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup5.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features-backup6.png b/docs/platform/guides/cluster-management/images/cluster-features/features-backup6.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features-backup6.png rename to docs/platform/guides/cluster-management/images/cluster-features/features-backup6.png diff --git a/src/en/guides/cluster-management/images/cluster-features/features.png b/docs/platform/guides/cluster-management/images/cluster-features/features.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-features/features.png rename to docs/platform/guides/cluster-management/images/cluster-features/features.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-1.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-1.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-1.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-2.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-2.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-2.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-3.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-3.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-3.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-4.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-4.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-4.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-4.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-1.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-1.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-1.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-2.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-2.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-2.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-3.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-3.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-nodes-edit-3.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-overview-1.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-overview-1.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-1.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-overview-2.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-overview-2.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-2.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-overview-3.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-overview-3.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-3.png diff --git a/src/en/guides/cluster-management/images/cluster-overview/cluster-overview-4.png b/docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-4.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-overview/cluster-overview-4.png rename to docs/platform/guides/cluster-management/images/cluster-overview/cluster-overview-4.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values1.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values1.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values1.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values2.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values2.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values2.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values3.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values3.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values3.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values3.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values4.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values4.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values4.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values4.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values5.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values5.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values5.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values5.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values6.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values6.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values6.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values6.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values7.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values7.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values7.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values7.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values8.png b/docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values8.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/db-preset-edit-values8.png rename to docs/platform/guides/cluster-management/images/cluster-presets/db-preset-edit-values8.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/present-basic-info.png b/docs/platform/guides/cluster-management/images/cluster-presets/present-basic-info.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/present-basic-info.png rename to docs/platform/guides/cluster-management/images/cluster-presets/present-basic-info.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/preset-enable.png b/docs/platform/guides/cluster-management/images/cluster-presets/preset-enable.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/preset-enable.png rename to docs/platform/guides/cluster-management/images/cluster-presets/preset-enable.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace1.png b/docs/platform/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace1.png rename to docs/platform/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace1.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace2.png b/docs/platform/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace2.png rename to docs/platform/guides/cluster-management/images/cluster-presets/preset-extend-to-namespace2.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/preset.png b/docs/platform/guides/cluster-management/images/cluster-presets/preset.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/preset.png rename to docs/platform/guides/cluster-management/images/cluster-presets/preset.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/presets-after-feature-enable.png b/docs/platform/guides/cluster-management/images/cluster-presets/presets-after-feature-enable.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/presets-after-feature-enable.png rename to docs/platform/guides/cluster-management/images/cluster-presets/presets-after-feature-enable.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/stash-preset-edit-values1.png b/docs/platform/guides/cluster-management/images/cluster-presets/stash-preset-edit-values1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/stash-preset-edit-values1.png rename to docs/platform/guides/cluster-management/images/cluster-presets/stash-preset-edit-values1.png diff --git a/src/en/guides/cluster-management/images/cluster-presets/stash-preset-edit-values2.png b/docs/platform/guides/cluster-management/images/cluster-presets/stash-preset-edit-values2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-presets/stash-preset-edit-values2.png rename to docs/platform/guides/cluster-management/images/cluster-presets/stash-preset-edit-values2.png diff --git a/src/en/guides/cluster-management/images/cluster-sidebar/sidebar-1.png b/docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-sidebar/sidebar-1.png rename to docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-1.png diff --git a/src/en/guides/cluster-management/images/cluster-sidebar/sidebar-after-update.png b/docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-after-update.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-sidebar/sidebar-after-update.png rename to docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-after-update.png diff --git a/src/en/guides/cluster-management/images/cluster-sidebar/sidebar-before-update.png b/docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-before-update.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-sidebar/sidebar-before-update.png rename to docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-before-update.png diff --git a/src/en/guides/cluster-management/images/cluster-sidebar/sidebar-search-menu.png b/docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-search-menu.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-sidebar/sidebar-search-menu.png rename to docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-search-menu.png diff --git a/src/en/guides/cluster-management/images/cluster-sidebar/sidebar-updating.png b/docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-updating.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster-sidebar/sidebar-updating.png rename to docs/platform/guides/cluster-management/images/cluster-sidebar/sidebar-updating.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/add_cluster_1.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/add_cluster_1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/add_cluster_1.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/add_cluster_1.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/add_cluster_2.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/add_cluster_2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/add_cluster_2.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/add_cluster_2.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_1.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_1.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_1.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_1.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_2.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_2.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/clusterset_feature_2.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/unaligned.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/unaligned.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/unaligned.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/unaligned.png diff --git a/src/en/guides/cluster-management/images/cluster_and_clusterset/unaligned_2.png b/docs/platform/guides/cluster-management/images/cluster_and_clusterset/unaligned_2.png similarity index 100% rename from src/en/guides/cluster-management/images/cluster_and_clusterset/unaligned_2.png rename to docs/platform/guides/cluster-management/images/cluster_and_clusterset/unaligned_2.png diff --git a/src/en/guides/cluster-management/images/import/cluster-details.png b/docs/platform/guides/cluster-management/images/import/cluster-details.png similarity index 100% rename from src/en/guides/cluster-management/images/import/cluster-details.png rename to docs/platform/guides/cluster-management/images/import/cluster-details.png diff --git a/src/en/guides/cluster-management/images/import/cluster-profile.png b/docs/platform/guides/cluster-management/images/import/cluster-profile.png similarity index 100% rename from src/en/guides/cluster-management/images/import/cluster-profile.png rename to docs/platform/guides/cluster-management/images/import/cluster-profile.png diff --git a/src/en/guides/cluster-management/images/import/deploy.png b/docs/platform/guides/cluster-management/images/import/deploy.png similarity index 100% rename from src/en/guides/cluster-management/images/import/deploy.png rename to docs/platform/guides/cluster-management/images/import/deploy.png diff --git a/src/en/guides/cluster-management/images/import/feature-set.png b/docs/platform/guides/cluster-management/images/import/feature-set.png similarity index 100% rename from src/en/guides/cluster-management/images/import/feature-set.png rename to docs/platform/guides/cluster-management/images/import/feature-set.png diff --git a/src/en/guides/cluster-management/images/import/select-cluster.png b/docs/platform/guides/cluster-management/images/import/select-cluster.png similarity index 100% rename from src/en/guides/cluster-management/images/import/select-cluster.png rename to docs/platform/guides/cluster-management/images/import/select-cluster.png diff --git a/src/en/guides/cluster-management/images/introduction/hub-spoke-model.png b/docs/platform/guides/cluster-management/images/introduction/hub-spoke-model.png similarity index 100% rename from src/en/guides/cluster-management/images/introduction/hub-spoke-model.png rename to docs/platform/guides/cluster-management/images/introduction/hub-spoke-model.png diff --git a/src/en/guides/cluster-management/images/license/add_license.png b/docs/platform/guides/cluster-management/images/license/add_license.png similarity index 100% rename from src/en/guides/cluster-management/images/license/add_license.png rename to docs/platform/guides/cluster-management/images/license/add_license.png diff --git a/src/en/guides/cluster-management/images/license/contract.png b/docs/platform/guides/cluster-management/images/license/contract.png similarity index 100% rename from src/en/guides/cluster-management/images/license/contract.png rename to docs/platform/guides/cluster-management/images/license/contract.png diff --git a/src/en/guides/cluster-management/images/license/contract_1.png b/docs/platform/guides/cluster-management/images/license/contract_1.png similarity index 100% rename from src/en/guides/cluster-management/images/license/contract_1.png rename to docs/platform/guides/cluster-management/images/license/contract_1.png diff --git a/src/en/guides/cluster-management/images/license/contract_2.png b/docs/platform/guides/cluster-management/images/license/contract_2.png similarity index 100% rename from src/en/guides/cluster-management/images/license/contract_2.png rename to docs/platform/guides/cluster-management/images/license/contract_2.png diff --git a/src/en/guides/cluster-management/images/license/license_modal.png b/docs/platform/guides/cluster-management/images/license/license_modal.png similarity index 100% rename from src/en/guides/cluster-management/images/license/license_modal.png rename to docs/platform/guides/cluster-management/images/license/license_modal.png diff --git a/src/en/guides/cluster-management/images/permission/add_member.png b/docs/platform/guides/cluster-management/images/permission/add_member.png similarity index 100% rename from src/en/guides/cluster-management/images/permission/add_member.png rename to docs/platform/guides/cluster-management/images/permission/add_member.png diff --git a/src/en/guides/cluster-management/images/permission/create_team.png b/docs/platform/guides/cluster-management/images/permission/create_team.png similarity index 100% rename from src/en/guides/cluster-management/images/permission/create_team.png rename to docs/platform/guides/cluster-management/images/permission/create_team.png diff --git a/src/en/guides/cluster-management/images/permission/go_to_platform.png b/docs/platform/guides/cluster-management/images/permission/go_to_platform.png similarity index 100% rename from src/en/guides/cluster-management/images/permission/go_to_platform.png rename to docs/platform/guides/cluster-management/images/permission/go_to_platform.png diff --git a/src/en/guides/cluster-management/images/permission/grant_permission.png b/docs/platform/guides/cluster-management/images/permission/grant_permission.png similarity index 100% rename from src/en/guides/cluster-management/images/permission/grant_permission.png rename to docs/platform/guides/cluster-management/images/permission/grant_permission.png diff --git a/src/en/guides/cluster-management/images/permission/permission.png b/docs/platform/guides/cluster-management/images/permission/permission.png similarity index 100% rename from src/en/guides/cluster-management/images/permission/permission.png rename to docs/platform/guides/cluster-management/images/permission/permission.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-create1.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-create1.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-create1.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-create1.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-create2.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-create2.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-create2.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-create2.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-create3.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-create3.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-create3.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-create3.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-create4.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-create4.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-create4.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-create4.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-details.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-details.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-details.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-details.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota-edit.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota-edit.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota-edit.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota-edit.png diff --git a/src/en/guides/cluster-management/images/project-quota/project-quota.png b/docs/platform/guides/cluster-management/images/project-quota/project-quota.png similarity index 100% rename from src/en/guides/cluster-management/images/project-quota/project-quota.png rename to docs/platform/guides/cluster-management/images/project-quota/project-quota.png diff --git a/src/en/guides/cluster-management/images/spoke/accept.png b/docs/platform/guides/cluster-management/images/spoke/accept.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/accept.png rename to docs/platform/guides/cluster-management/images/spoke/accept.png diff --git a/src/en/guides/cluster-management/images/spoke/featureset.png b/docs/platform/guides/cluster-management/images/spoke/featureset.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/featureset.png rename to docs/platform/guides/cluster-management/images/spoke/featureset.png diff --git a/src/en/guides/cluster-management/images/spoke/homepage.png b/docs/platform/guides/cluster-management/images/spoke/homepage.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/homepage.png rename to docs/platform/guides/cluster-management/images/spoke/homepage.png diff --git a/src/en/guides/cluster-management/images/spoke/import_spoke.png b/docs/platform/guides/cluster-management/images/spoke/import_spoke.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/import_spoke.png rename to docs/platform/guides/cluster-management/images/spoke/import_spoke.png diff --git a/src/en/guides/cluster-management/images/spoke/request.png b/docs/platform/guides/cluster-management/images/spoke/request.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/request.png rename to docs/platform/guides/cluster-management/images/spoke/request.png diff --git a/src/en/guides/cluster-management/images/spoke/select.png b/docs/platform/guides/cluster-management/images/spoke/select.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/select.png rename to docs/platform/guides/cluster-management/images/spoke/select.png diff --git a/src/en/guides/cluster-management/images/spoke/spoke.png b/docs/platform/guides/cluster-management/images/spoke/spoke.png similarity index 100% rename from src/en/guides/cluster-management/images/spoke/spoke.png rename to docs/platform/guides/cluster-management/images/spoke/spoke.png diff --git a/src/en/guides/cluster-management/images/upgrade/upgrade_1.png b/docs/platform/guides/cluster-management/images/upgrade/upgrade_1.png similarity index 100% rename from src/en/guides/cluster-management/images/upgrade/upgrade_1.png rename to docs/platform/guides/cluster-management/images/upgrade/upgrade_1.png diff --git a/src/en/guides/cluster-management/images/upgrade/upgrade_2.png b/docs/platform/guides/cluster-management/images/upgrade/upgrade_2.png similarity index 100% rename from src/en/guides/cluster-management/images/upgrade/upgrade_2.png rename to docs/platform/guides/cluster-management/images/upgrade/upgrade_2.png diff --git a/src/en/guides/cluster-management/images/upgrade/upgrade_3.png b/docs/platform/guides/cluster-management/images/upgrade/upgrade_3.png similarity index 100% rename from src/en/guides/cluster-management/images/upgrade/upgrade_3.png rename to docs/platform/guides/cluster-management/images/upgrade/upgrade_3.png diff --git a/src/en/guides/cluster-management/project-quota.md b/docs/platform/guides/cluster-management/project-quota.md similarity index 85% rename from src/en/guides/cluster-management/project-quota.md rename to docs/platform/guides/cluster-management/project-quota.md index 53624c0..a6c13ff 100644 --- a/src/en/guides/cluster-management/project-quota.md +++ b/docs/platform/guides/cluster-management/project-quota.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-project-quota name: Project Quota parent: cluster-management weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Project Quota Management @@ -24,7 +24,7 @@ The **Project Quota** page lists all existing quotas. Each row shows the **Name* To delete an existing quota, click the red **Delete** button next to it. -![Project Quota list page showing existing quotas for "default" and "kubedb" namespaces](images/project-quota/project-quota.png) +![Project Quota list page showing existing quotas for "default" and "kubedb" namespaces](../images/project-quota/project-quota.png) --- @@ -36,7 +36,7 @@ Click the green **+ Create Quota** button in the top-right corner of the page to The first field is **Namespace** (required). Click the field to open a dropdown listing all namespaces in your cluster. Select the namespace you want to apply the quota to (for example, `kubeops`). -![Namespace dropdown open, showing available namespaces like default, kubedb, kubeops, kube-system, etc.](images/project-quota/project-quota-create1.png) +![Namespace dropdown open, showing available namespaces like default, kubedb, kubeops, kube-system, etc.](../images/project-quota/project-quota-create1.png) --- @@ -50,7 +50,7 @@ Click the **Group** dropdown. Choose the API group of the resource you want to l - `apps` — for standard Kubernetes workloads (Deployments, StatefulSets, etc.) - `kubedb.com` — for KubeDB-managed databases -![Group dropdown showing "apps" and "kubedb.com" options, with CPU Limit and Memory Limit fields below](images/project-quota/project-quota-create2.png) +![Group dropdown showing "apps" and "kubedb.com" options, with CPU Limit and Memory Limit fields below](../images/project-quota/project-quota-create2.png) ### Select the Resource Kind @@ -58,7 +58,7 @@ After choosing a group, click the **Kind** dropdown. The list is filtered to sho For example, with `kubedb.com` selected, you can choose from: **Elasticsearch**, **Kafka**, **MariaDB**, **MongoDB**, **MySQL**, **Postgres**, **Redis**, **RedisSentinel**, and more. -![Kind dropdown filtered to KubeDB resource types — Elasticsearch, Kafka, MongoDB, Postgres, Redis, etc.](images/project-quota/project-quota-create3.png) +![Kind dropdown filtered to KubeDB resource types — Elasticsearch, Kafka, MongoDB, Postgres, Redis, etc.](../images/project-quota/project-quota-create3.png) ### Set CPU and Memory Limits @@ -69,7 +69,7 @@ Once the Kind is selected, fill in the resource limits: | **CPU Limit** | Maximum CPU cores allowed for this resource kind in the namespace | `8` | | **Memory Limit** | Maximum memory allowed for this resource kind in the namespace | `24Gi` | -![Quota form fully filled in: Group = kubedb.com, Kind = Postgres, CPU Limit = 8, Memory Limit = 24Gi](images/project-quota/project-quota-create4.png) +![Quota form fully filled in: Group = kubedb.com, Kind = Postgres, CPU Limit = 8, Memory Limit = 24Gi](../images/project-quota/project-quota-create4.png) Click the green **Save** button (within the New Quota section) to stage this rule. @@ -83,7 +83,7 @@ A green toast notification confirms: **"Quota created successfully!"** You can click **+ Add Quota** to add more rules for other resource types in the same namespace. -![Quotas table showing the staged rule: kubedb.com / Postgres / CPU 8 / Memory 24Gi, with a success notification](images/project-quota/project-quota-details.png) +![Quotas table showing the staged rule: kubedb.com / Postgres / CPU 8 / Memory 24Gi, with a success notification](../images/project-quota/project-quota-details.png) Once you have added all your rules, click the main **Save** button to permanently apply the project quota to the selected namespace. @@ -97,7 +97,7 @@ An **Edit Quotas** inline form expands below the table. The **Group** and **Kind Update the limits as needed and click **Save** to apply the changes. -![Edit Quotas form expanded inline — showing CPU Used (0), Memory Used (0), and editable CPU/Memory limit fields](images/project-quota/project-quota-edit.png) +![Edit Quotas form expanded inline — showing CPU Used (0), Memory Used (0), and editable CPU/Memory limit fields](../images/project-quota/project-quota-edit.png) --- diff --git a/src/en/guides/cluster-management/remove-cluster.md b/docs/platform/guides/cluster-management/remove-cluster.md similarity index 56% rename from src/en/guides/cluster-management/remove-cluster.md rename to docs/platform/guides/cluster-management/remove-cluster.md index 7246018..682558a 100644 --- a/src/en/guides/cluster-management/remove-cluster.md +++ b/docs/platform/guides/cluster-management/remove-cluster.md @@ -1,22 +1,22 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-deletecluster name: Remove / Delete Cluster parent: cluster-management weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Remove / Delete Cluster -Removing an already imported cluster from the AppsCode Dashboard is a straightforward process, and you can also manage associated features during removal. Follow these steps to seamlessly remove a cluster: +You can remove an imported cluster from the Platform Console and manage its associated features during removal. 1. **Navigate to the Cluster Overview Page:** - - Go to the [AppsCode Dashboard](https://console.appscode.com). + - Go to the [Platform Console](https://console.appscode.com). - Click on your imported cluster to access the Cluster Overview page. **OR** @@ -31,9 +31,6 @@ Removing an already imported cluster from the AppsCode Dashboard is a straightfo 4. **Manage Features:** - During the removal process, you have the option to disable features associated with the cluster. - - Utilize this feature to tailor your AppsCode Dashboard environment based on your evolving requirements. - -This streamlined process ensures efficient cluster management within the AppsCode Dashboard, providing flexibility and control over your Kubernetes clusters. --- diff --git a/src/en/guides/cluster-management/security-report.md b/docs/platform/guides/cluster-management/security-report.md similarity index 60% rename from src/en/guides/cluster-management/security-report.md rename to docs/platform/guides/cluster-management/security-report.md index 41349ad..94599ec 100644 --- a/src/en/guides/cluster-management/security-report.md +++ b/docs/platform/guides/cluster-management/security-report.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: cluster-management-securityreport name: Security Report parent: cluster-management weight: 80 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/database-management/_index.md b/docs/platform/guides/database-management/_index.md similarity index 65% rename from src/en/guides/database-management/_index.md rename to docs/platform/guides/database-management/_index.md index 6904efe..8b90491 100644 --- a/src/en/guides/database-management/_index.md +++ b/docs/platform/guides/database-management/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management name: Database Management + parent: guides description: Basic database information description icon: https://img.icons8.com/00994A/ios/50/database--v1.png popular: true weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/database-management/backup-configuration.md b/docs/platform/guides/database-management/backup-configuration.md similarity index 91% rename from src/en/guides/database-management/backup-configuration.md rename to docs/platform/guides/database-management/backup-configuration.md index a8ab029..63719b1 100644 --- a/src/en/guides/database-management/backup-configuration.md +++ b/docs/platform/guides/database-management/backup-configuration.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-backup-configuration name: Backup Configuration parent: database-management weight: 120 - home_menu: - identifier: home-database-backup-configuration - name: Backup Configuration - parent: home-database - weight: 120 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Backup Configuration -This guide explains how to view and create **BackupConfiguration** resources using the AppsCode console. A BackupConfiguration defines a complete backup policy for a database — including the storage backend, retention policy, backup sessions with their schedules and tasks, and the target database to back up. +This guide explains how to view and create **BackupConfiguration** resources using the platform console. A BackupConfiguration defines a complete backup policy for a database — including the storage backend, retention policy, backup sessions with their schedules and tasks, and the target database to back up. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **Backup Configuration**. The list page shows all BackupConfigurations across namespaces. Use the **Select Namespace** dropdown in the top-right to filter by namespace, or click **Create New Instance** to create a new one. -![BackupConfiguration list page showing existing configurations with Name, Namespace, Schedule, Repository, BackupStorage, Target, Task, RetentionPolicy, Phase, and Age columns](./images/backup/config-dbs-overview.png) +![BackupConfiguration list page showing existing configurations with Name, Namespace, Schedule, Repository, BackupStorage, Target, Task, RetentionPolicy, Phase, and Age columns](../images/backup/config-dbs-overview.png) | Column | Description | |---|---| @@ -52,13 +47,13 @@ The list page shows all BackupConfigurations across namespaces. Use the **Select ## 3. Viewing a BackupConfiguration -Click on any BackupConfiguration name in the list to open its detail page. The detail page is divided into several panels giving a full picture of the configuration's state and linked resources. +Click on any BackupConfiguration name in the list to open its detail page. ### 3.1 - Overview The detail page opens on the **Overview** tab, which shows the following sections: -![BackupConfiguration detail page showing Basic info, Backup Sessions table, Retention Policies table, and Target section](./images/backup/config-db-overview.png) +![BackupConfiguration detail page showing Basic info, Backup Sessions table, Retention Policies table, and Target section](../images/backup/config-db-overview.png) **Basic** — Core metadata for the resource: @@ -102,7 +97,7 @@ The detail page opens on the **Overview** tab, which shows the following section Scroll down on the detail page to view the linked infrastructure resources. -![Detail page lower section showing Repository, BackupStorage, and CronJobs tables](./images/backup/config-db-repository.png) +![Detail page lower section showing Repository, BackupStorage, and CronJobs tables](../images/backup/config-db-repository.png) **Repository** — The backup repository storing snapshots for this configuration: @@ -153,13 +148,13 @@ To create a new BackupConfiguration, click **Create New Instance** from the list - **Sessions** — One or more backup sessions defining schedule, addon, and tasks. - **Target** — The database resource this BackupConfiguration applies to. -![Create BackupConfiguration form showing Namespace, Name, Storage Ref, Retention Policy, Sessions, and Target sections](./images/backup/configuration-overview.png) +![Create BackupConfiguration form showing Namespace, Name, Storage Ref, Retention Policy, Sessions, and Target sections](../images/backup/configuration-overview.png) ### 4.1 - Basic Information The top section captures the core identity and storage references for the BackupConfiguration. -![Basic fields showing Namespace set to demo, Name to test-name, Storage Ref to stash/default, and Retention Policy to stash/default](./images/backup/config-name-namespace.png) +![Basic fields showing Namespace set to demo, Name to test-name, Storage Ref to stash/default, and Retention Policy to stash/default](../images/backup/config-name-namespace.png) | Field | Description | |---|---| @@ -172,9 +167,9 @@ The top section captures the core identity and storage references for the Backup ### 4.2 - Labels & Annotations -Expand the **Labels & Annotations** panel to attach custom metadata to the BackupConfiguration resource for organization, filtering, or integration with other Kubernetes tools. +Expand the **Labels & Annotations** panel to attach custom metadata to the BackupConfiguration resource. -![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](./images/backup/config-label-annotation.png) +![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](../images/backup/config-label-annotation.png) - Use **+ Add new** under **Labels** to add key-value label pairs. - Use **+ Add new** under **Annotations** to add key-value annotation pairs. @@ -184,7 +179,7 @@ Expand the **Labels & Annotations** panel to attach custom metadata to the Backu The **Sessions** section defines one or more backup sessions. Each session specifies when the backup runs, which addon to use, and what tasks to execute. Click **+ Add new** to add a session entry. -![Sessions panel showing a session entry with Session Name, Schedule, Security Context, Addon Name, and Tasks fields](./images/backup/config-sessions.png) +![Sessions panel showing a session entry with Session Name, Schedule, Security Context, Addon Name, and Tasks fields](../images/backup/config-sessions.png) | Field | Description | |---|---| @@ -199,7 +194,7 @@ Use the **Delete** button at the bottom of a session entry to remove it. Each session must have at least one **Task** defined. Tasks describe the actual backup operation to perform. Click **Add new** inside the Tasks section to add a task entry. -![Tasks entry showing Task Name required dropdown and Params code editor](./images/backup/config-session-task.png) +![Tasks entry showing Task Name required dropdown and Params code editor](../images/backup/config-session-task.png) | Field | Description | |---|---| @@ -215,7 +210,7 @@ Each session must have at least one **Task** defined. Tasks describe the actual The **Target** section identifies the database resource that this BackupConfiguration will back up. -![Target panel showing Api Group kubedb.com, Kind MongoDB, Namespace demo, and Name mongodb](./images/backup/config-target.png) +![Target panel showing Api Group kubedb.com, Kind MongoDB, Namespace demo, and Name mongodb](../images/backup/config-target.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/backup-storage.md b/docs/platform/guides/database-management/backup-storage.md similarity index 91% rename from src/en/guides/database-management/backup-storage.md rename to docs/platform/guides/database-management/backup-storage.md index a69299a..2456e09 100644 --- a/src/en/guides/database-management/backup-storage.md +++ b/docs/platform/guides/database-management/backup-storage.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-backup-storage name: Backup Storage parent: database-management weight: 130 - home_menu: - identifier: home-database-backup-storage - name: Backup Storage - parent: home-database - weight: 130 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Backup Storage -This guide explains how to view and create **BackupStorage** resources using the AppsCode console. A BackupStorage defines the storage backend (cloud provider, credentials, bucket, and connection settings) where database backups are stored and can be retrieved for restoration. +This guide explains how to view and create **BackupStorage** resources using the platform console. A BackupStorage defines the storage backend (cloud provider, credentials, bucket, and connection settings) where database backups are stored and can be retrieved for restoration. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **BackupStorage**. This o The list page displays all BackupStorage resources configured in your cluster. Use the **Select Namespace** dropdown to filter by namespace, or click **Create New Instance** to add a new storage backend. -![BackupStorage list page showing resources with Name, Namespace, Provider, Size, No. of Connected Repositories, Status, and Age columns](./images/backup/storage-overview.png) +![BackupStorage list page showing resources with Name, Namespace, Provider, Size, No. of Connected Repositories, Status, and Age columns](../images/backup/storage-overview.png) | Column | Description | |---|---| @@ -54,7 +49,7 @@ Click on any BackupStorage name in the list to open its detail page. The detail The detail page shows all relevant information about the storage backend: -![BackupStorage detail page showing Basic info, Repositories, and BackupConfigurations tables](./images/backup/storage-db-overview.png) +![BackupStorage detail page showing Basic info, Repositories, and BackupConfigurations tables](../images/backup/storage-db-overview.png) **Basic** — Core metadata for the storage: @@ -105,7 +100,7 @@ To add a new storage backend, click **Create New Instance** from the BackupStora The form starts with basic identity fields: -![Create BackupStorage form showing Namespace, Name, Labels & Annotations, Deletion Policy, Security Context, and Backend sections](./images/backup/storage-create-overview.png) +![Create BackupStorage form showing Namespace, Name, Labels & Annotations, Deletion Policy, Security Context, and Backend sections](../images/backup/storage-create-overview.png) | Field | Description | |---|---| @@ -116,9 +111,9 @@ The form starts with basic identity fields: ### 4.2 - Labels & Annotations -Expand the **Labels & Annotations** section to attach custom metadata for organization and integration: +Expand the **Labels & Annotations** section to attach custom metadata: -![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](./images/backup/storage-label-annotation.png) +![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](../images/backup/storage-label-annotation.png) - Use **+ Add new** under **Labels** to add key-value label pairs. - Use **+ Add new** under **Annotations** to add key-value annotation pairs. @@ -126,9 +121,9 @@ Expand the **Labels & Annotations** section to attach custom metadata for organi ### 4.3 - Backend Configuration -The **Backend** section defines the storage provider and its credentials. This is where you configure the actual cloud storage connection. +The **Backend** section defines the storage provider and its credentials. -![Backend section showing Provider dropdown (azure selected) with Auth and Spec sub-panels for Azure storage configuration](./images/backup/storage-create-backend.png) +![Backend section showing Provider dropdown (azure selected) with Auth and Spec sub-panels for Azure storage configuration](../images/backup/storage-create-backend.png) #### Backend Provider diff --git a/src/en/guides/database-management/backup.md b/docs/platform/guides/database-management/backup.md similarity index 83% rename from src/en/guides/database-management/backup.md rename to docs/platform/guides/database-management/backup.md index be1591a..6acb0af 100644 --- a/src/en/guides/database-management/backup.md +++ b/docs/platform/guides/database-management/backup.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-backup name: Configure Backups parent: database-management weight: 40 - home_menu: - identifier: home-database-backup - name: Configure Backups - parent: home-database - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Configure Backups @@ -23,12 +18,12 @@ This guide covers how to use the **Configure Backup** interface to manage data p ## 1. Getting Started -To begin, select **Configure Backup** from the left sidebar. This selection determines the available settings and workflow. +Select **Configure Backup** from the left sidebar. This selection determines the available settings and workflow. - **BackupConfig:** Use this to create, delete, or modify specific backup tasks. - **BackupBlueprint:** Use this to manage high-level templates for enabling or disabling backups across multiple resources. -![Configure Backup section showing BackupConfig and BackupBlueprint options](./images/backup-config.png) +![Configure Backup section showing BackupConfig and BackupBlueprint options](../images/backup-config.png) --- @@ -40,7 +35,7 @@ When **BackupConfig** is selected, define the **Select Context** to indicate the Use this context to set up a new automated backup schedule. -![Create BackupConfig form with Schedule field](./images/backup-config-create.png) +![Create BackupConfig form with Schedule field](../images/backup-config-create.png) 1. **Select Context:** Choose **Create** from the dropdown menu. 1. **Schedule:** Enter a cron expression to define the backup frequency. For example, `*/15 * * * *` triggers a backup every 15 minutes. @@ -53,7 +48,7 @@ Use this context to set up a new automated backup schedule. Use this context to update the settings or status of an active backup. -![Modify BackupConfig form with Schedule and Paused toggle](./images/backup-config-modify.png) +![Modify BackupConfig form with Schedule and Paused toggle](../images/backup-config-modify.png) 1. **Select Context:** Choose **Modify**. 1. **Select BackupConfig:** Pick the specific configuration you want to edit (e.g., `mongodb`) from the dropdown list. @@ -63,7 +58,7 @@ Use this context to update the settings or status of an active backup. 1. **Preview:** Click **Preview** to see how the changes will impact your system. 1. **Submit:** Once satisfied, click **Submit** to apply the changes. -![Submit button on the Preview page confirming the backup configuration update](./images/backup-config-submit.png) +![Submit button on the Preview page confirming the backup configuration update](../images/backup-config-submit.png) > **Note:** After every **Preview**, you must click **Submit** to save your changes. This applies across all backup operations. @@ -73,7 +68,7 @@ Use this context to update the settings or status of an active backup. Use this context to permanently remove a backup configuration. -![Delete BackupConfig form with configuration selection](./images/backup-config-delete.png) +![Delete BackupConfig form with configuration selection](../images/backup-config-delete.png) 1. **Select Context:** Choose **Delete**. 1. **Select BackupConfig:** Select the configuration you wish to remove (e.g., `mongodb`). @@ -87,7 +82,7 @@ Use this context to permanently remove a backup configuration. Selecting the **BackupBlueprint** type allows you to toggle predefined backup templates for your environment. -![BackupBlueprint panel with Enable Backup Blueprint toggle](./images/backup-config-blueprint.png) +![BackupBlueprint panel with Enable Backup Blueprint toggle](../images/backup-config-blueprint.png) 1. **Enable Backup Blueprint Toggle:** Switching on activates the selected blueprint, applying its settings to the relevant resources. Switching off deactivates it. 1. **Preview:** Click **Preview** to confirm which configurations will be affected before the change takes effect. diff --git a/src/en/guides/database-management/contraint-violations.md b/docs/platform/guides/database-management/contraint-violations.md similarity index 63% rename from src/en/guides/database-management/contraint-violations.md rename to docs/platform/guides/database-management/contraint-violations.md index 9b9af11..0fd416d 100644 --- a/src/en/guides/database-management/contraint-violations.md +++ b/docs/platform/guides/database-management/contraint-violations.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-gatekeeper name: Database Contraint Violations parent: database-management weight: 100 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/database-management/create-database.md b/docs/platform/guides/database-management/create-database.md similarity index 84% rename from src/en/guides/database-management/create-database.md rename to docs/platform/guides/database-management/create-database.md index a480dcc..758d890 100644 --- a/src/en/guides/database-management/create-database.md +++ b/docs/platform/guides/database-management/create-database.md @@ -1,29 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-create name: Creating a Database parent: database-management weight: 10 - home_menu: - identifier: home-database-create - name: Creating a Database - parent: home-database - weight: 10 - section_menu: - identifier: database-management - name: Database Management - weight: 40 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Creating a Database -This guide explains how to create a new managed database instance using the AppsCode console. The creation process is a multi-step wizard that walks you through selecting a database engine, setting a name and namespace, configuring topology and resources, and enabling optional features like monitoring, TLS, and backups. +Creating a database is a multi-step wizard: select a database engine, set a name and namespace, configure topology and resources, and enable optional features like monitoring, TLS, and backups. --- @@ -33,7 +23,7 @@ Navigate to the **Datastore** section in the left sidebar. The **Datastore Overv To create a new database, click the green **+ Create New Instance** button in the top-right corner of the page. -![Datastore Overview page showing existing database instances and the Create New Instance button](./images/db-create/overview-create.png) +![Datastore Overview page showing existing database instances and the Create New Instance button](../images/db-create/overview-create.png) --- @@ -41,9 +31,9 @@ To create a new database, click the green **+ Create New Instance** button in th You will be presented with a grid of all supported database engines. Click on the engine you want to provision. -![Database type selection grid showing all supported engines including MongoDB, PostgreSQL, MySQL, Redis, and more](./images/db-create/db-type-select.png) +![Database type selection grid showing all supported engines including MongoDB, PostgreSQL, MySQL, Redis, and more](../images/db-create/db-type-select.png) -> **Tip:** The console supports a wide range of engines including relational, document, key-value, search, and time-series databases. Select the engine that best fits your workload. +> **Tip:** Supported engines include relational, document, key-value, search, and time-series databases. --- @@ -51,7 +41,7 @@ You will be presented with a grid of all supported database engines. Click on th After selecting the database type, you will be prompted to choose a namespace and provide a name for the new instance. -![Choose Namespace and Name step showing Select Namespace dropdown and Name field](./images/db-create/name-namespace-select.png) +![Choose Namespace and Name step showing Select Namespace dropdown and Name field](../images/db-create/name-namespace-select.png) 1. **Select Namespace:** Choose the Kubernetes namespace where the database will be deployed. If the namespace has resource quotas, available CPU and memory will be shown to help you stay within limits. 1. **Name:** Enter a unique name for the database instance. The name must start with a lowercase letter and can contain letters, numbers, or dashes. @@ -66,11 +56,11 @@ Click **Next** to proceed to the configuration step. The main configuration page shows all settings for the new database. At the top, the namespace and name you chose are displayed as a breadcrumb (e.g., `demo / mongo-test`). -![Create MongoDB configuration page showing Database Version, Database Mode cards, Machine Profile, Storage Class, Advanced Configuration, and Additional Options](./images/db-create/create-overview-page.png) +![Create MongoDB configuration page showing Database Version, Database Mode cards, Machine Profile, Storage Class, Advanced Configuration, and Additional Options](../images/db-create/create-overview-page.png) ### 4.1 - Database Version -Select the database engine version from the **Database Version** dropdown. The version determines the engine features, compatibility, and runtime behaviour of your cluster. +Select the database engine version from the **Database Version** dropdown. The version determines engine features, compatibility, and runtime behaviour. ### 4.2 - Database Mode @@ -84,7 +74,7 @@ Select the topology for your database under **Database Mode**. Three modes are a When **Replicated Cluster** is selected, two additional fields appear: -![Replicated Cluster mode selected showing Replicaset Name (rs0) and Replicaset Number (3) fields](./images/db-create/replicaset-mode.png) +![Replicated Cluster mode selected showing Replicaset Name (rs0) and Replicaset Number (3) fields](../images/db-create/replicaset-mode.png) | Field | Description | |---|---| @@ -96,11 +86,11 @@ When **Replicated Cluster** is selected, two additional fields appear: When **Sharded Cluster** is selected, three subsections appear — **Shard Nodes**, **Config Server**, and **Mongos** — each configurable independently. -![Sharded Cluster mode selected showing Shard Nodes, Config Server, and Mongos collapsible panels](./images/db-create/shard-mode.png) +![Sharded Cluster mode selected showing Shard Nodes, Config Server, and Mongos collapsible panels](../images/db-create/shard-mode.png) **Shard Nodes** — Configure how MongoDB data is partitioned, replicated, and resourced across your cluster. -![Shard Nodes panel showing Shards, Replicaset Number, Storage size, Machine, CPU, and Memory fields](./images/db-create/shard-nodes.png) +![Shard Nodes panel showing Shards, Replicaset Number, Storage size, Machine, CPU, and Memory fields](../images/db-create/shard-nodes.png) | Field | Description | |---|---| @@ -113,7 +103,7 @@ When **Sharded Cluster** is selected, three subsections appear — **Shard Nodes **Config Server** — Stores metadata about the sharded cluster including chunk distribution and shard configuration. Must run as a replica set. -![Config Server panel showing Replicaset Number, Storage size, Machine, CPU, and Memory fields](./images/db-create/config-server.png) +![Config Server panel showing Replicaset Number, Storage size, Machine, CPU, and Memory fields](../images/db-create/config-server.png) | Field | Description | |---|---| @@ -125,7 +115,7 @@ When **Sharded Cluster** is selected, three subsections appear — **Shard Nodes **Mongos** — Acts as the query router for the sharded cluster, directing client requests to the appropriate shards based on metadata from Config Servers. -![Mongos panel showing Replicaset number, Machine, CPU, and Memory fields](./images/db-create/mongos-mode.png) +![Mongos panel showing Replicaset number, Machine, CPU, and Memory fields](../images/db-create/mongos-mode.png) | Field | Description | |---|---| @@ -138,7 +128,7 @@ When **Sharded Cluster** is selected, three subsections appear — **Shard Nodes The **Machine Profile** dropdown lets you select a preset CPU and memory configuration for your database nodes. Choose `custom` to enter specific CPU and memory values manually. -![Machine Profile dropdown showing preset options alongside the Storage Class and Advanced Configuration panels](./images/db-create/machine-profile.png) +![Machine Profile dropdown showing preset options alongside the Storage Class and Advanced Configuration panels](../images/db-create/machine-profile.png) > **Tip:** Preset profiles are named by size (e.g., `db.t4large`). Use `custom` when your workload requires resources that do not match any preset. @@ -146,7 +136,7 @@ The **Machine Profile** dropdown lets you select a preset CPU and memory configu Select the Kubernetes **Storage Class** that will back the database persistent volumes, and enter the required **Storage size**. -![Storage Class dropdown showing local-path, longhorn, and longhorn-static options, alongside the Storage size field set to 2Gi](./images/db-create/storage-class.png) +![Storage Class dropdown showing local-path, longhorn, and longhorn-static options, alongside the Storage size field set to 2Gi](../images/db-create/storage-class.png) | Field | Description | |---|---| @@ -161,9 +151,9 @@ Expand the **Advanced Configuration** panel (labelled *Configure Credentials, De ### 5.1 - Labels & Annotations -Add custom Kubernetes labels and annotations to the database resources for organization, monitoring, and integration with other tools and services. +Add custom Kubernetes labels and annotations to the database resources. -![Advanced Configuration panel showing Labels and Annotations sections each with Key-Value input rows and Add new buttons](./images/db-create/advance-lavel-annotation.png) +![Advanced Configuration panel showing Labels and Annotations sections each with Key-Value input rows and Add new buttons](../images/db-create/advance-lavel-annotation.png) - Use **+ Add new** under **Labels** to attach key-value label pairs. - Use **+ Add new** under **Annotations** to attach key-value annotation pairs. @@ -173,7 +163,7 @@ Add custom Kubernetes labels and annotations to the database resources for organ The **Deletion Policy** dropdown controls what happens to the database resources when the database object is deleted from Kubernetes. -![Deletion Policy dropdown showing Delete, Halt, WipeOut, and DoNotTerminate options](./images/db-create/deletion-policy.png) +![Deletion Policy dropdown showing Delete, Halt, WipeOut, and DoNotTerminate options](../images/db-create/deletion-policy.png) | Option | Behaviour | |---|---| @@ -188,7 +178,7 @@ The **Deletion Policy** dropdown controls what happens to the database resources Configure how the database root credentials are managed. -![Authentication Credentials section showing Provide Authentication Credentials toggle, Refer existing Secret toggle, Secret dropdown, Password field, Configure Database toggle, and Configuration textarea](./images/db-create/auth-creds.png) +![Authentication Credentials section showing Provide Authentication Credentials toggle, Refer existing Secret toggle, Secret dropdown, Password field, Configure Database toggle, and Configuration textarea](../images/db-create/auth-creds.png) | Field | Description | |---|---| @@ -201,7 +191,7 @@ Configure how the database root credentials are managed. Enable **Point in-time Recovery** to restore the new database from a previous backup to an exact timestamp. -![Point in-time Recovery toggle and form showing Namespace, Name, and Recovery Timestamp fields](./images/db-create/point-in-time-recovery.png) +![Point in-time Recovery toggle and form showing Namespace, Name, and Recovery Timestamp fields](../images/db-create/point-in-time-recovery.png) 1. **Namespace:** The namespace where the source backup resides. Required. 1. **Name:** The name of the source database to recover from. Required. @@ -215,7 +205,7 @@ Enable **Point in-time Recovery** to restore the new database from a previous ba Expand the **Additional Options** panel (labelled *Enable Backup, Monitoring, TLS etc.*) to enable integrated platform features for the new database. -![Additional Options panel showing Enable Monitoring with Alert Options, Enable Backup, Enable TLS with Cluster Issuers, and Expose via Gateway toggles](./images/db-create/Additional-option.png) +![Additional Options panel showing Enable Monitoring with Alert Options, Enable Backup, Enable TLS with Cluster Issuers, and Expose via Gateway toggles](../images/db-create/Additional-option.png) | Option | Description | |---|---| diff --git a/src/en/guides/database-management/database-usage-insight.md b/docs/platform/guides/database-management/database-usage-insight.md similarity index 88% rename from src/en/guides/database-management/database-usage-insight.md rename to docs/platform/guides/database-management/database-usage-insight.md index 0cda6e2..a21022d 100644 --- a/src/en/guides/database-management/database-usage-insight.md +++ b/docs/platform/guides/database-management/database-usage-insight.md @@ -1,19 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-insights name: Database Usage & Insights parent: database-management weight: 20 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Database Usage & Insights -This guide explains how to use the **Overview**, **Insights**, and **Users** pages available on every database detail page in the AppsCode console. These pages give you a live view of your database's connection details, performance metrics, query analytics, and access control bindings. +Every database detail page has **Overview**, **Insights**, and **Users** pages. They give a live view of the database's connection details, performance metrics, query analytics, and access control bindings. --- @@ -29,9 +29,9 @@ From the **Datastore** section in the left sidebar, click on any database engine ## 2. Overview -The **Overview** tab is the landing page for any database instance. It is divided into two panels — **Connection Details** and **Insights** — and a **Nodes** table at the bottom. +The **Overview** tab has two panels — **Connection Details** and **Insights** — and a **Nodes** table at the bottom. -![Database Overview page showing Connection Details, Insights summary panel, and Nodes table](./images/db-overview.png) +![Database Overview page showing Connection Details, Insights summary panel, and Nodes table](../images/db-overview.png) ### 2.1 - Connection Details @@ -69,9 +69,9 @@ The **Nodes** table at the bottom lists every pod in the database cluster with i ## 3. Insights -The **Insights** tab provides a deeper view into database performance — including Grafana dashboards, slow query analysis, and collection-level storage metrics. +The **Insights** tab provides Grafana dashboards, slow query analysis, and collection-level storage metrics. -![Insights tab showing stat summary, Grafana Dashboards section, Slow Queries table, and Top Collections table](./images/db-insights.png) +![Insights tab showing stat summary, Grafana Dashboards section, Slow Queries table, and Top Collections table](../images/db-insights.png) ### 3.1 - Insights Summary Row @@ -81,7 +81,7 @@ A condensed stat row at the top mirrors the key metrics from the Overview panel The **Grafana Dashboards** section embeds pre-built dashboards for your database directly in the console. If Grafana integration is not yet configured, an error message will indicate that the dashboard link is missing and provide instructions to set it up. -> **Tip:** To enable Grafana dashboards, ensure the Grafana datasource is configured in your cluster and the correct dashboard URL is registered in your AppsCode settings. +> **Tip:** To enable Grafana dashboards, ensure the Grafana datasource is configured in your cluster and the correct dashboard URL is registered in your KubeDB Platform settings. ### 3.3 - Slow Queries @@ -115,7 +115,7 @@ The **Top Collections** table lists collections ranked by total storage size, he The **Users** tab shows all access credentials, bindings, and KubeVault-managed secrets associated with the database instance. -![Users tab showing Root User, AppBinding, VaultServers, and SecretEngines sections](./images/db-users.png) +![Users tab showing Root User, AppBinding, VaultServers, and SecretEngines sections](../images/db-users.png) ### 4.1 - Root User @@ -148,7 +148,7 @@ The **AppBinding** section lists `AppBinding` resources that expose this databas The lower sections of the **Users** tab are powered by **KubeVault** and provide dynamic secret management for your database. -![Users tab lower sections showing VaultServers, SecretEngines, MongoDBRoles, and SecretAccessRequests — all requiring kubevault to be enabled](./images/db-users-kubevault.png) +![Users tab lower sections showing VaultServers, SecretEngines, MongoDBRoles, and SecretAccessRequests — all requiring kubevault to be enabled](../images/db-users-kubevault.png) | Section | Description | |---|---| diff --git a/src/en/guides/database-management/delete-database.md b/docs/platform/guides/database-management/delete-database.md similarity index 76% rename from src/en/guides/database-management/delete-database.md rename to docs/platform/guides/database-management/delete-database.md index 0f4fd58..dcfab2b 100644 --- a/src/en/guides/database-management/delete-database.md +++ b/docs/platform/guides/database-management/delete-database.md @@ -1,19 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-delete name: Delete Database parent: database-management weight: 110 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Delete Database -This guide explains how to delete a database instance from the AppsCode console. There are two ways to trigger a deletion — from the **Datastore Overview** page (bulk or single) or from inside the **individual database page**. Both methods lead to the same confirmation step. +There are two ways to delete a database — from the **Datastore Overview** page (bulk or single) or from inside the **individual database page**. Both lead to the same confirmation step. > **Warning:** Deleting a database is a permanent and irreversible action. Ensure you have a valid backup before proceeding. @@ -27,30 +27,30 @@ Navigate to the **Datastore** section from the left sidebar and select your data ## 2. Deleting from the Datastore Overview -Use this method to delete one or more databases at once directly from the instance list. +Use this method to delete one or more databases at once from the instance list. -![Datastore Overview page with a database instance selected and the Delete Selected button highlighted](./images/delete-overview.png) +![Datastore Overview page with a database instance selected and the Delete Selected button highlighted](../images/delete-overview.png) 1. **Select Namespace:** Use the **Select Namespace** dropdown in the top-right to filter instances by namespace if needed. 1. **Select Instance(s):** Check the checkbox next to each database instance you want to delete (e.g., `mongodb demo`). 1. **Delete Selected:** Click the red **Delete Selected** button that appears in the top-right of the Overview table. 1. **Confirm:** A confirmation modal will appear asking *"Are you sure you want to delete the selected databases?"* Click **Yes** to proceed, or **Cancel** to abort. -![Bulk delete confirmation modal on the Datastore Overview page](./images/delete-overview-modal.png) +![Bulk delete confirmation modal on the Datastore Overview page](../images/delete-overview-modal.png) --- ## 3. Deleting from the Database Detail Page -Use this method to delete a specific database while viewing its detail page. +Use this method to delete a specific database from its detail page. -![MongoDB database detail page showing the Delete button in the top-right navbar](./images/delete.png) +![MongoDB database detail page showing the Delete button in the top-right navbar](../images/delete.png) 1. From the **Datastore Overview**, click on the name of the database instance you want to delete to open its detail page. 1. **Delete:** Click the red **Delete** button in the top-right corner of the page. 1. **Confirm:** A confirmation modal will appear showing the name of the database. Click **Yes** to permanently delete it, or **Cancel** to abort. -![Delete confirmation modal asking "Do you want to delete mongodb?" with Cancel and Yes buttons](./images/delete-modal.png) +![Delete confirmation modal asking "Do you want to delete mongodb?" with Cancel and Yes buttons](../images/delete-modal.png) > **Warning:** Clicking **Yes** immediately and permanently removes the database. There is no undo. Confirm you have a backup before proceeding. diff --git a/src/en/guides/database-management/expose-via-gateway.md b/docs/platform/guides/database-management/expose-via-gateway.md similarity index 65% rename from src/en/guides/database-management/expose-via-gateway.md rename to docs/platform/guides/database-management/expose-via-gateway.md index ee24b1e..4b4bb86 100644 --- a/src/en/guides/database-management/expose-via-gateway.md +++ b/docs/platform/guides/database-management/expose-via-gateway.md @@ -1,34 +1,27 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-expose-via-gateway name: Expose via Gateway parent: database-management weight: 77 - home_menu: - identifier: home-database-expose-via-gateway - name: Expose via Gateway - parent: home-database - weight: 77 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Expose via Gateway -This guide explains how to use the **Expose via Gateway** interface to control whether your database is exposed externally through the gateway. Enabling this makes your database accessible outside the cluster via the configured gateway endpoint. +Control whether your database is exposed externally through the gateway. Enabling this makes your database accessible outside the cluster via the configured gateway endpoint. --- ## 1. Getting Started -To begin, select **Expose via Gateway** from the **Operations** section in the left sidebar. - -You will land on a simple form with a single toggle that controls the gateway exposure state of your database. +Select **Expose via Gateway** from the **Operations** section in the left sidebar. The form has a single toggle that controls the gateway exposure state of your database. -![Expose via Gateway page showing the Expose Database toggle and Deploy button](./images/expose-via-gateway.png) +![Expose via Gateway page showing the Expose Database toggle and Deploy button](../images/expose-via-gateway.png) --- diff --git a/src/en/guides/database-management/images/auto-scaling-nodetopology.png b/docs/platform/guides/database-management/images/auto-scaling-nodetopology.png similarity index 100% rename from src/en/guides/database-management/images/auto-scaling-nodetopology.png rename to docs/platform/guides/database-management/images/auto-scaling-nodetopology.png diff --git a/src/en/guides/database-management/images/auto-scaling-readiness.png b/docs/platform/guides/database-management/images/auto-scaling-readiness.png similarity index 100% rename from src/en/guides/database-management/images/auto-scaling-readiness.png rename to docs/platform/guides/database-management/images/auto-scaling-readiness.png diff --git a/src/en/guides/database-management/images/auto-scaling-standalone.png b/docs/platform/guides/database-management/images/auto-scaling-standalone.png similarity index 100% rename from src/en/guides/database-management/images/auto-scaling-standalone.png rename to docs/platform/guides/database-management/images/auto-scaling-standalone.png diff --git a/src/en/guides/database-management/images/auto-scaling.png b/docs/platform/guides/database-management/images/auto-scaling.png similarity index 100% rename from src/en/guides/database-management/images/auto-scaling.png rename to docs/platform/guides/database-management/images/auto-scaling.png diff --git a/src/en/guides/database-management/images/backup-config-blueprint.png b/docs/platform/guides/database-management/images/backup-config-blueprint.png similarity index 100% rename from src/en/guides/database-management/images/backup-config-blueprint.png rename to docs/platform/guides/database-management/images/backup-config-blueprint.png diff --git a/src/en/guides/database-management/images/backup-config-create.png b/docs/platform/guides/database-management/images/backup-config-create.png similarity index 100% rename from src/en/guides/database-management/images/backup-config-create.png rename to docs/platform/guides/database-management/images/backup-config-create.png diff --git a/src/en/guides/database-management/images/backup-config-delete.png b/docs/platform/guides/database-management/images/backup-config-delete.png similarity index 100% rename from src/en/guides/database-management/images/backup-config-delete.png rename to docs/platform/guides/database-management/images/backup-config-delete.png diff --git a/src/en/guides/database-management/images/backup-config-modify.png b/docs/platform/guides/database-management/images/backup-config-modify.png similarity index 100% rename from src/en/guides/database-management/images/backup-config-modify.png rename to docs/platform/guides/database-management/images/backup-config-modify.png diff --git a/src/en/guides/database-management/images/backup-config-submit.png b/docs/platform/guides/database-management/images/backup-config-submit.png similarity index 100% rename from src/en/guides/database-management/images/backup-config-submit.png rename to docs/platform/guides/database-management/images/backup-config-submit.png diff --git a/src/en/guides/database-management/images/backup-config.png b/docs/platform/guides/database-management/images/backup-config.png similarity index 100% rename from src/en/guides/database-management/images/backup-config.png rename to docs/platform/guides/database-management/images/backup-config.png diff --git a/src/en/guides/database-management/images/backup/config-db-overview.png b/docs/platform/guides/database-management/images/backup/config-db-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-db-overview.png rename to docs/platform/guides/database-management/images/backup/config-db-overview.png diff --git a/src/en/guides/database-management/images/backup/config-db-repository.png b/docs/platform/guides/database-management/images/backup/config-db-repository.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-db-repository.png rename to docs/platform/guides/database-management/images/backup/config-db-repository.png diff --git a/src/en/guides/database-management/images/backup/config-dbs-overview.png b/docs/platform/guides/database-management/images/backup/config-dbs-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-dbs-overview.png rename to docs/platform/guides/database-management/images/backup/config-dbs-overview.png diff --git a/src/en/guides/database-management/images/backup/config-label-annotation.png b/docs/platform/guides/database-management/images/backup/config-label-annotation.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-label-annotation.png rename to docs/platform/guides/database-management/images/backup/config-label-annotation.png diff --git a/src/en/guides/database-management/images/backup/config-name-namespace.png b/docs/platform/guides/database-management/images/backup/config-name-namespace.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-name-namespace.png rename to docs/platform/guides/database-management/images/backup/config-name-namespace.png diff --git a/src/en/guides/database-management/images/backup/config-session-task.png b/docs/platform/guides/database-management/images/backup/config-session-task.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-session-task.png rename to docs/platform/guides/database-management/images/backup/config-session-task.png diff --git a/src/en/guides/database-management/images/backup/config-sessions.png b/docs/platform/guides/database-management/images/backup/config-sessions.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-sessions.png rename to docs/platform/guides/database-management/images/backup/config-sessions.png diff --git a/src/en/guides/database-management/images/backup/config-target.png b/docs/platform/guides/database-management/images/backup/config-target.png similarity index 100% rename from src/en/guides/database-management/images/backup/config-target.png rename to docs/platform/guides/database-management/images/backup/config-target.png diff --git a/src/en/guides/database-management/images/backup/configuration-overview.png b/docs/platform/guides/database-management/images/backup/configuration-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/configuration-overview.png rename to docs/platform/guides/database-management/images/backup/configuration-overview.png diff --git a/src/en/guides/database-management/images/backup/recent-backup-create.png b/docs/platform/guides/database-management/images/backup/recent-backup-create.png similarity index 100% rename from src/en/guides/database-management/images/backup/recent-backup-create.png rename to docs/platform/guides/database-management/images/backup/recent-backup-create.png diff --git a/src/en/guides/database-management/images/backup/recent-backup-overview.png b/docs/platform/guides/database-management/images/backup/recent-backup-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/recent-backup-overview.png rename to docs/platform/guides/database-management/images/backup/recent-backup-overview.png diff --git a/src/en/guides/database-management/images/backup/recent-create-form.png b/docs/platform/guides/database-management/images/backup/recent-create-form.png similarity index 100% rename from src/en/guides/database-management/images/backup/recent-create-form.png rename to docs/platform/guides/database-management/images/backup/recent-create-form.png diff --git a/src/en/guides/database-management/images/backup/recent-db-overview.png b/docs/platform/guides/database-management/images/backup/recent-db-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/recent-db-overview.png rename to docs/platform/guides/database-management/images/backup/recent-db-overview.png diff --git a/src/en/guides/database-management/images/backup/repository-app-ref.png b/docs/platform/guides/database-management/images/backup/repository-app-ref.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-app-ref.png rename to docs/platform/guides/database-management/images/backup/repository-app-ref.png diff --git a/src/en/guides/database-management/images/backup/repository-create-overview.png b/docs/platform/guides/database-management/images/backup/repository-create-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-create-overview.png rename to docs/platform/guides/database-management/images/backup/repository-create-overview.png diff --git a/src/en/guides/database-management/images/backup/repository-db-overview.png b/docs/platform/guides/database-management/images/backup/repository-db-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-db-overview.png rename to docs/platform/guides/database-management/images/backup/repository-db-overview.png diff --git a/src/en/guides/database-management/images/backup/repository-db-snapshot.png b/docs/platform/guides/database-management/images/backup/repository-db-snapshot.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-db-snapshot.png rename to docs/platform/guides/database-management/images/backup/repository-db-snapshot.png diff --git a/src/en/guides/database-management/images/backup/repository-label-annotation.png b/docs/platform/guides/database-management/images/backup/repository-label-annotation.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-label-annotation.png rename to docs/platform/guides/database-management/images/backup/repository-label-annotation.png diff --git a/src/en/guides/database-management/images/backup/repository-overview.png b/docs/platform/guides/database-management/images/backup/repository-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-overview.png rename to docs/platform/guides/database-management/images/backup/repository-overview.png diff --git a/src/en/guides/database-management/images/backup/repository-ref-secret.png b/docs/platform/guides/database-management/images/backup/repository-ref-secret.png similarity index 100% rename from src/en/guides/database-management/images/backup/repository-ref-secret.png rename to docs/platform/guides/database-management/images/backup/repository-ref-secret.png diff --git a/src/en/guides/database-management/images/backup/restore-config.png b/docs/platform/guides/database-management/images/backup/restore-config.png similarity index 100% rename from src/en/guides/database-management/images/backup/restore-config.png rename to docs/platform/guides/database-management/images/backup/restore-config.png diff --git a/src/en/guides/database-management/images/backup/restore-create-overview.png b/docs/platform/guides/database-management/images/backup/restore-create-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/restore-create-overview.png rename to docs/platform/guides/database-management/images/backup/restore-create-overview.png diff --git a/src/en/guides/database-management/images/backup/restore-overview.png b/docs/platform/guides/database-management/images/backup/restore-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/restore-overview.png rename to docs/platform/guides/database-management/images/backup/restore-overview.png diff --git a/src/en/guides/database-management/images/backup/restore-target.png b/docs/platform/guides/database-management/images/backup/restore-target.png similarity index 100% rename from src/en/guides/database-management/images/backup/restore-target.png rename to docs/platform/guides/database-management/images/backup/restore-target.png diff --git a/src/en/guides/database-management/images/backup/snapshot-delete.png b/docs/platform/guides/database-management/images/backup/snapshot-delete.png similarity index 100% rename from src/en/guides/database-management/images/backup/snapshot-delete.png rename to docs/platform/guides/database-management/images/backup/snapshot-delete.png diff --git a/src/en/guides/database-management/images/backup/snapshot-operation-view.png b/docs/platform/guides/database-management/images/backup/snapshot-operation-view.png similarity index 100% rename from src/en/guides/database-management/images/backup/snapshot-operation-view.png rename to docs/platform/guides/database-management/images/backup/snapshot-operation-view.png diff --git a/src/en/guides/database-management/images/backup/snapshot-overview.png b/docs/platform/guides/database-management/images/backup/snapshot-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/snapshot-overview.png rename to docs/platform/guides/database-management/images/backup/snapshot-overview.png diff --git a/src/en/guides/database-management/images/backup/storage-create-backend.png b/docs/platform/guides/database-management/images/backup/storage-create-backend.png similarity index 100% rename from src/en/guides/database-management/images/backup/storage-create-backend.png rename to docs/platform/guides/database-management/images/backup/storage-create-backend.png diff --git a/src/en/guides/database-management/images/backup/storage-create-overview.png b/docs/platform/guides/database-management/images/backup/storage-create-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/storage-create-overview.png rename to docs/platform/guides/database-management/images/backup/storage-create-overview.png diff --git a/src/en/guides/database-management/images/backup/storage-db-overview.png b/docs/platform/guides/database-management/images/backup/storage-db-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/storage-db-overview.png rename to docs/platform/guides/database-management/images/backup/storage-db-overview.png diff --git a/src/en/guides/database-management/images/backup/storage-label-annotation.png b/docs/platform/guides/database-management/images/backup/storage-label-annotation.png similarity index 100% rename from src/en/guides/database-management/images/backup/storage-label-annotation.png rename to docs/platform/guides/database-management/images/backup/storage-label-annotation.png diff --git a/src/en/guides/database-management/images/backup/storage-overview.png b/docs/platform/guides/database-management/images/backup/storage-overview.png similarity index 100% rename from src/en/guides/database-management/images/backup/storage-overview.png rename to docs/platform/guides/database-management/images/backup/storage-overview.png diff --git a/src/en/guides/database-management/images/db-create/Additional-option.png b/docs/platform/guides/database-management/images/db-create/Additional-option.png similarity index 100% rename from src/en/guides/database-management/images/db-create/Additional-option.png rename to docs/platform/guides/database-management/images/db-create/Additional-option.png diff --git a/src/en/guides/database-management/images/db-create/advance-lavel-annotation.png b/docs/platform/guides/database-management/images/db-create/advance-lavel-annotation.png similarity index 100% rename from src/en/guides/database-management/images/db-create/advance-lavel-annotation.png rename to docs/platform/guides/database-management/images/db-create/advance-lavel-annotation.png diff --git a/src/en/guides/database-management/images/db-create/auth-creds.png b/docs/platform/guides/database-management/images/db-create/auth-creds.png similarity index 100% rename from src/en/guides/database-management/images/db-create/auth-creds.png rename to docs/platform/guides/database-management/images/db-create/auth-creds.png diff --git a/src/en/guides/database-management/images/db-create/config-server.png b/docs/platform/guides/database-management/images/db-create/config-server.png similarity index 100% rename from src/en/guides/database-management/images/db-create/config-server.png rename to docs/platform/guides/database-management/images/db-create/config-server.png diff --git a/src/en/guides/database-management/images/db-create/create-overview-page.png b/docs/platform/guides/database-management/images/db-create/create-overview-page.png similarity index 100% rename from src/en/guides/database-management/images/db-create/create-overview-page.png rename to docs/platform/guides/database-management/images/db-create/create-overview-page.png diff --git a/src/en/guides/database-management/images/db-create/db-type-select.png b/docs/platform/guides/database-management/images/db-create/db-type-select.png similarity index 100% rename from src/en/guides/database-management/images/db-create/db-type-select.png rename to docs/platform/guides/database-management/images/db-create/db-type-select.png diff --git a/src/en/guides/database-management/images/db-create/deletion-policy.png b/docs/platform/guides/database-management/images/db-create/deletion-policy.png similarity index 100% rename from src/en/guides/database-management/images/db-create/deletion-policy.png rename to docs/platform/guides/database-management/images/db-create/deletion-policy.png diff --git a/src/en/guides/database-management/images/db-create/machine-profile.png b/docs/platform/guides/database-management/images/db-create/machine-profile.png similarity index 100% rename from src/en/guides/database-management/images/db-create/machine-profile.png rename to docs/platform/guides/database-management/images/db-create/machine-profile.png diff --git a/src/en/guides/database-management/images/db-create/mongos-mode.png b/docs/platform/guides/database-management/images/db-create/mongos-mode.png similarity index 100% rename from src/en/guides/database-management/images/db-create/mongos-mode.png rename to docs/platform/guides/database-management/images/db-create/mongos-mode.png diff --git a/src/en/guides/database-management/images/db-create/name-namespace-select.png b/docs/platform/guides/database-management/images/db-create/name-namespace-select.png similarity index 100% rename from src/en/guides/database-management/images/db-create/name-namespace-select.png rename to docs/platform/guides/database-management/images/db-create/name-namespace-select.png diff --git a/src/en/guides/database-management/images/db-create/overview-create.png b/docs/platform/guides/database-management/images/db-create/overview-create.png similarity index 100% rename from src/en/guides/database-management/images/db-create/overview-create.png rename to docs/platform/guides/database-management/images/db-create/overview-create.png diff --git a/src/en/guides/database-management/images/db-create/point-in-time-recovery.png b/docs/platform/guides/database-management/images/db-create/point-in-time-recovery.png similarity index 100% rename from src/en/guides/database-management/images/db-create/point-in-time-recovery.png rename to docs/platform/guides/database-management/images/db-create/point-in-time-recovery.png diff --git a/src/en/guides/database-management/images/db-create/replicaset-mode.png b/docs/platform/guides/database-management/images/db-create/replicaset-mode.png similarity index 100% rename from src/en/guides/database-management/images/db-create/replicaset-mode.png rename to docs/platform/guides/database-management/images/db-create/replicaset-mode.png diff --git a/src/en/guides/database-management/images/db-create/shard-mode.png b/docs/platform/guides/database-management/images/db-create/shard-mode.png similarity index 100% rename from src/en/guides/database-management/images/db-create/shard-mode.png rename to docs/platform/guides/database-management/images/db-create/shard-mode.png diff --git a/src/en/guides/database-management/images/db-create/shard-nodes.png b/docs/platform/guides/database-management/images/db-create/shard-nodes.png similarity index 100% rename from src/en/guides/database-management/images/db-create/shard-nodes.png rename to docs/platform/guides/database-management/images/db-create/shard-nodes.png diff --git a/src/en/guides/database-management/images/db-create/storage-class.png b/docs/platform/guides/database-management/images/db-create/storage-class.png similarity index 100% rename from src/en/guides/database-management/images/db-create/storage-class.png rename to docs/platform/guides/database-management/images/db-create/storage-class.png diff --git a/src/en/guides/database-management/images/db-insights.png b/docs/platform/guides/database-management/images/db-insights.png similarity index 100% rename from src/en/guides/database-management/images/db-insights.png rename to docs/platform/guides/database-management/images/db-insights.png diff --git a/src/en/guides/database-management/images/db-overview.png b/docs/platform/guides/database-management/images/db-overview.png similarity index 100% rename from src/en/guides/database-management/images/db-overview.png rename to docs/platform/guides/database-management/images/db-overview.png diff --git a/src/en/guides/database-management/images/db-users-kubevault.png b/docs/platform/guides/database-management/images/db-users-kubevault.png similarity index 100% rename from src/en/guides/database-management/images/db-users-kubevault.png rename to docs/platform/guides/database-management/images/db-users-kubevault.png diff --git a/src/en/guides/database-management/images/db-users.png b/docs/platform/guides/database-management/images/db-users.png similarity index 100% rename from src/en/guides/database-management/images/db-users.png rename to docs/platform/guides/database-management/images/db-users.png diff --git a/src/en/guides/database-management/images/delete-modal.png b/docs/platform/guides/database-management/images/delete-modal.png similarity index 100% rename from src/en/guides/database-management/images/delete-modal.png rename to docs/platform/guides/database-management/images/delete-modal.png diff --git a/src/en/guides/database-management/images/delete-overview-modal.png b/docs/platform/guides/database-management/images/delete-overview-modal.png similarity index 100% rename from src/en/guides/database-management/images/delete-overview-modal.png rename to docs/platform/guides/database-management/images/delete-overview-modal.png diff --git a/src/en/guides/database-management/images/delete-overview.png b/docs/platform/guides/database-management/images/delete-overview.png similarity index 100% rename from src/en/guides/database-management/images/delete-overview.png rename to docs/platform/guides/database-management/images/delete-overview.png diff --git a/src/en/guides/database-management/images/delete.png b/docs/platform/guides/database-management/images/delete.png similarity index 100% rename from src/en/guides/database-management/images/delete.png rename to docs/platform/guides/database-management/images/delete.png diff --git a/src/en/guides/database-management/images/expose-via-gateway.png b/docs/platform/guides/database-management/images/expose-via-gateway.png similarity index 100% rename from src/en/guides/database-management/images/expose-via-gateway.png rename to docs/platform/guides/database-management/images/expose-via-gateway.png diff --git a/src/en/guides/database-management/images/horizontal-scale-form.png b/docs/platform/guides/database-management/images/horizontal-scale-form.png similarity index 100% rename from src/en/guides/database-management/images/horizontal-scale-form.png rename to docs/platform/guides/database-management/images/horizontal-scale-form.png diff --git a/src/en/guides/database-management/images/instant-backup-form.png b/docs/platform/guides/database-management/images/instant-backup-form.png similarity index 100% rename from src/en/guides/database-management/images/instant-backup-form.png rename to docs/platform/guides/database-management/images/instant-backup-form.png diff --git a/src/en/guides/database-management/images/instant-backup.png b/docs/platform/guides/database-management/images/instant-backup.png similarity index 100% rename from src/en/guides/database-management/images/instant-backup.png rename to docs/platform/guides/database-management/images/instant-backup.png diff --git a/src/en/guides/database-management/images/monitoring-env-config.png b/docs/platform/guides/database-management/images/monitoring-env-config.png similarity index 100% rename from src/en/guides/database-management/images/monitoring-env-config.png rename to docs/platform/guides/database-management/images/monitoring-env-config.png diff --git a/src/en/guides/database-management/images/monitoring-env-secret.png b/docs/platform/guides/database-management/images/monitoring-env-secret.png similarity index 100% rename from src/en/guides/database-management/images/monitoring-env-secret.png rename to docs/platform/guides/database-management/images/monitoring-env-secret.png diff --git a/src/en/guides/database-management/images/monitoring-exporter.png b/docs/platform/guides/database-management/images/monitoring-exporter.png similarity index 100% rename from src/en/guides/database-management/images/monitoring-exporter.png rename to docs/platform/guides/database-management/images/monitoring-exporter.png diff --git a/src/en/guides/database-management/images/monitoring-scrapper.png b/docs/platform/guides/database-management/images/monitoring-scrapper.png similarity index 100% rename from src/en/guides/database-management/images/monitoring-scrapper.png rename to docs/platform/guides/database-management/images/monitoring-scrapper.png diff --git a/src/en/guides/database-management/images/monitoring.png b/docs/platform/guides/database-management/images/monitoring.png similarity index 100% rename from src/en/guides/database-management/images/monitoring.png rename to docs/platform/guides/database-management/images/monitoring.png diff --git a/src/en/guides/database-management/images/motoring-prometheus.png b/docs/platform/guides/database-management/images/motoring-prometheus.png similarity index 100% rename from src/en/guides/database-management/images/motoring-prometheus.png rename to docs/platform/guides/database-management/images/motoring-prometheus.png diff --git a/src/en/guides/database-management/images/motoring-service-monitor.png b/docs/platform/guides/database-management/images/motoring-service-monitor.png similarity index 100% rename from src/en/guides/database-management/images/motoring-service-monitor.png rename to docs/platform/guides/database-management/images/motoring-service-monitor.png diff --git a/src/en/guides/database-management/images/reconfigure-apply.png b/docs/platform/guides/database-management/images/reconfigure-apply.png similarity index 100% rename from src/en/guides/database-management/images/reconfigure-apply.png rename to docs/platform/guides/database-management/images/reconfigure-apply.png diff --git a/src/en/guides/database-management/images/reconfigure-create-secret.png b/docs/platform/guides/database-management/images/reconfigure-create-secret.png similarity index 100% rename from src/en/guides/database-management/images/reconfigure-create-secret.png rename to docs/platform/guides/database-management/images/reconfigure-create-secret.png diff --git a/src/en/guides/database-management/images/reconfigure-new-secret.png b/docs/platform/guides/database-management/images/reconfigure-new-secret.png similarity index 100% rename from src/en/guides/database-management/images/reconfigure-new-secret.png rename to docs/platform/guides/database-management/images/reconfigure-new-secret.png diff --git a/src/en/guides/database-management/images/reconfigure-remove.png b/docs/platform/guides/database-management/images/reconfigure-remove.png similarity index 100% rename from src/en/guides/database-management/images/reconfigure-remove.png rename to docs/platform/guides/database-management/images/reconfigure-remove.png diff --git a/src/en/guides/database-management/images/reconfigure.png b/docs/platform/guides/database-management/images/reconfigure.png similarity index 100% rename from src/en/guides/database-management/images/reconfigure.png rename to docs/platform/guides/database-management/images/reconfigure.png diff --git a/src/en/guides/database-management/images/restart-preview.png b/docs/platform/guides/database-management/images/restart-preview.png similarity index 100% rename from src/en/guides/database-management/images/restart-preview.png rename to docs/platform/guides/database-management/images/restart-preview.png diff --git a/src/en/guides/database-management/images/restart-submit.png b/docs/platform/guides/database-management/images/restart-submit.png similarity index 100% rename from src/en/guides/database-management/images/restart-submit.png rename to docs/platform/guides/database-management/images/restart-submit.png diff --git a/src/en/guides/database-management/images/restart.png b/docs/platform/guides/database-management/images/restart.png similarity index 100% rename from src/en/guides/database-management/images/restart.png rename to docs/platform/guides/database-management/images/restart.png diff --git a/src/en/guides/database-management/images/restore-config.png b/docs/platform/guides/database-management/images/restore-config.png similarity index 100% rename from src/en/guides/database-management/images/restore-config.png rename to docs/platform/guides/database-management/images/restore-config.png diff --git a/src/en/guides/database-management/images/restore.png b/docs/platform/guides/database-management/images/restore.png similarity index 100% rename from src/en/guides/database-management/images/restore.png rename to docs/platform/guides/database-management/images/restore.png diff --git a/src/en/guides/database-management/images/storage-autoscaling.png b/docs/platform/guides/database-management/images/storage-autoscaling.png similarity index 100% rename from src/en/guides/database-management/images/storage-autoscaling.png rename to docs/platform/guides/database-management/images/storage-autoscaling.png diff --git a/src/en/guides/database-management/images/storage-scale-readiness.png b/docs/platform/guides/database-management/images/storage-scale-readiness.png similarity index 100% rename from src/en/guides/database-management/images/storage-scale-readiness.png rename to docs/platform/guides/database-management/images/storage-scale-readiness.png diff --git a/src/en/guides/database-management/images/storage-scale-standalone.png b/docs/platform/guides/database-management/images/storage-scale-standalone.png similarity index 100% rename from src/en/guides/database-management/images/storage-scale-standalone.png rename to docs/platform/guides/database-management/images/storage-scale-standalone.png diff --git a/src/en/guides/database-management/images/storage-scale-volume.png b/docs/platform/guides/database-management/images/storage-scale-volume.png similarity index 100% rename from src/en/guides/database-management/images/storage-scale-volume.png rename to docs/platform/guides/database-management/images/storage-scale-volume.png diff --git a/src/en/guides/database-management/images/storage-scale.png b/docs/platform/guides/database-management/images/storage-scale.png similarity index 100% rename from src/en/guides/database-management/images/storage-scale.png rename to docs/platform/guides/database-management/images/storage-scale.png diff --git a/src/en/guides/database-management/images/tls-certificate-details.png b/docs/platform/guides/database-management/images/tls-certificate-details.png similarity index 100% rename from src/en/guides/database-management/images/tls-certificate-details.png rename to docs/platform/guides/database-management/images/tls-certificate-details.png diff --git a/src/en/guides/database-management/images/tls-certificate.png b/docs/platform/guides/database-management/images/tls-certificate.png similarity index 100% rename from src/en/guides/database-management/images/tls-certificate.png rename to docs/platform/guides/database-management/images/tls-certificate.png diff --git a/src/en/guides/database-management/images/tls-operation.png b/docs/platform/guides/database-management/images/tls-operation.png similarity index 100% rename from src/en/guides/database-management/images/tls-operation.png rename to docs/platform/guides/database-management/images/tls-operation.png diff --git a/src/en/guides/database-management/images/tls.png b/docs/platform/guides/database-management/images/tls.png similarity index 100% rename from src/en/guides/database-management/images/tls.png rename to docs/platform/guides/database-management/images/tls.png diff --git a/src/en/guides/database-management/images/update-version-preview.png b/docs/platform/guides/database-management/images/update-version-preview.png similarity index 100% rename from src/en/guides/database-management/images/update-version-preview.png rename to docs/platform/guides/database-management/images/update-version-preview.png diff --git a/src/en/guides/database-management/images/update-version-submit.png b/docs/platform/guides/database-management/images/update-version-submit.png similarity index 100% rename from src/en/guides/database-management/images/update-version-submit.png rename to docs/platform/guides/database-management/images/update-version-submit.png diff --git a/src/en/guides/database-management/images/update-version.png b/docs/platform/guides/database-management/images/update-version.png similarity index 100% rename from src/en/guides/database-management/images/update-version.png rename to docs/platform/guides/database-management/images/update-version.png diff --git a/src/en/guides/database-management/images/vertical-exporter.png b/docs/platform/guides/database-management/images/vertical-exporter.png similarity index 100% rename from src/en/guides/database-management/images/vertical-exporter.png rename to docs/platform/guides/database-management/images/vertical-exporter.png diff --git a/src/en/guides/database-management/images/vertical-machine-profile.png b/docs/platform/guides/database-management/images/vertical-machine-profile.png similarity index 100% rename from src/en/guides/database-management/images/vertical-machine-profile.png rename to docs/platform/guides/database-management/images/vertical-machine-profile.png diff --git a/src/en/guides/database-management/images/vertical-machine-profile2.png b/docs/platform/guides/database-management/images/vertical-machine-profile2.png similarity index 100% rename from src/en/guides/database-management/images/vertical-machine-profile2.png rename to docs/platform/guides/database-management/images/vertical-machine-profile2.png diff --git a/src/en/guides/database-management/images/vertical-node-selection.png b/docs/platform/guides/database-management/images/vertical-node-selection.png similarity index 100% rename from src/en/guides/database-management/images/vertical-node-selection.png rename to docs/platform/guides/database-management/images/vertical-node-selection.png diff --git a/src/en/guides/database-management/images/vertical-scaling.png b/docs/platform/guides/database-management/images/vertical-scaling.png similarity index 100% rename from src/en/guides/database-management/images/vertical-scaling.png rename to docs/platform/guides/database-management/images/vertical-scaling.png diff --git a/src/en/guides/database-management/instant-backup-restore.md b/docs/platform/guides/database-management/instant-backup-restore.md similarity index 78% rename from src/en/guides/database-management/instant-backup-restore.md rename to docs/platform/guides/database-management/instant-backup-restore.md index bc30b32..3f6342b 100644 --- a/src/en/guides/database-management/instant-backup-restore.md +++ b/docs/platform/guides/database-management/instant-backup-restore.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-instant-backup-restore name: Instant Backup & Restore parent: database-management weight: 45 - home_menu: - identifier: home-database-instant-backup-restore - name: Instant Backup & Restore - parent: home-database - weight: 45 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- @@ -24,7 +19,7 @@ This guide covers two workflows: using the **Instant Backup** interface to trigg ## 1. Getting Started -To begin, select **Instant Backup** or **Restore** from the left sidebar under **Operations**. +Select **Instant Backup** or **Restore** from the left sidebar under **Operations**. - **Instant Backup:** Use this to immediately trigger a backup using an existing backup configuration and session. - **Restore:** Use this to recover data from a specific backup snapshot. @@ -33,9 +28,9 @@ To begin, select **Instant Backup** or **Restore** from the left sidebar under * ## 2. Instant Backup -The **Instant Backup** form lets you trigger an on-demand backup right away by selecting an existing backup configuration and one or more backup sessions. +The **Instant Backup** form triggers an on-demand backup by selecting an existing backup configuration and one or more backup sessions. -![Instant Backup form showing Backup Configuration and Backup Sessions fields](./images/instant-backup.png) +![Instant Backup form showing Backup Configuration and Backup Sessions fields](../images/instant-backup.png) ### 2.1 - Selecting a Backup Configuration @@ -45,7 +40,7 @@ The **Instant Backup** form lets you trigger an on-demand backup right away by s 1. **Backup Sessions:** Select one or more backup sessions to trigger (e.g., `full-backup`). Sessions are defined within the chosen backup configuration. This field is required. -![Instant Backup form filled with Backup Configuration demo/mongodb and Backup Sessions full-backup selected](./images/instant-backup-form.png) +![Instant Backup form filled with Backup Configuration demo/mongodb and Backup Sessions full-backup selected](../images/instant-backup-form.png) > **Tip:** You can select multiple backup sessions from the dropdown if your configuration defines more than one session type (e.g., `full-backup`, `incremental-backup`). @@ -57,9 +52,9 @@ The **Instant Backup** form lets you trigger an on-demand backup right away by s ## 3. Configuring a Restore -The **Restore Configuration** form allows you to define exactly which data you want to recover and where it should come from. +The **Restore Configuration** form defines which data to recover and its source. -![Restore Configuration form with Repository and Snapshot fields](./images/restore-config.png) +![Restore Configuration form with Repository and Snapshot fields](../images/restore-config.png) 1. **Repository:** Select the backup repository that contains your data (e.g., **demo/mongodb**). 1. **Select Snapshot:** Choose the specific point-in-time backup you wish to restore. diff --git a/docs/platform/guides/database-management/manage-recommendations.md b/docs/platform/guides/database-management/manage-recommendations.md new file mode 100644 index 0000000..2e2827b --- /dev/null +++ b/docs/platform/guides/database-management/manage-recommendations.md @@ -0,0 +1,14 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: database-management-recommendation + name: Manage Recommendations + parent: database-management + weight: 80 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Manage Recommendations diff --git a/src/en/guides/database-management/monitoring.md b/docs/platform/guides/database-management/monitoring.md similarity index 88% rename from src/en/guides/database-management/monitoring.md rename to docs/platform/guides/database-management/monitoring.md index a6893c9..c30975a 100644 --- a/src/en/guides/database-management/monitoring.md +++ b/docs/platform/guides/database-management/monitoring.md @@ -1,38 +1,31 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-monitoring name: Configure Monitoring parent: database-management weight: 75 - home_menu: - identifier: home-database-monitoring - name: Configure Monitoring - parent: home-database - weight: 75 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Configure Monitoring -This guide explains how to use the **Monitoring** interface to enable and configure Prometheus-based monitoring for your database. You can choose from three monitoring methods and optionally customize the metrics exporter sidecar that is injected alongside your database. +This guide explains how to use the **Monitoring** interface to enable and configure Prometheus-based monitoring for your database. You can choose from three monitoring methods and optionally customize the metrics exporter sidecar injected alongside your database. --- ## 1. Getting Started -To begin, select **Monitoring** from the left sidebar. - -You will land on the **Monitoring** form, which is divided into the following sections: +Select **Monitoring** from the left sidebar. The **Monitoring** form is divided into the following sections: - **Enable Monitoring** — Master toggle to turn monitoring on or off. - **Select a Monitoring Method** — Choose how Prometheus scrapes your database metrics. - **Exporter Configuration** — Optionally customize the metrics exporter sidecar container. -![Monitoring form overview showing Enable Monitoring toggle, monitoring method selection, and Exporter Configuration](./images/monitoring.png) +![Monitoring form overview showing Enable Monitoring toggle, monitoring method selection, and Exporter Configuration](../images/monitoring.png) > **Note:** To update the Exporter Resource section, click on **Create OpsRequest** at the top of the page. @@ -56,7 +49,7 @@ Selecting this method expands the **ServiceMonitor Configuration** panel: - **Scrapping Interval:** How frequently Prometheus scrapes metrics from the database (e.g., `30s`). Defaults to `30s` if left unchanged. -![Prometheus Operator method selected with ServiceMonitor Configuration showing Scrapping Interval of 30s](./images/motoring-prometheus.png) +![Prometheus Operator method selected with ServiceMonitor Configuration showing Scrapping Interval of 30s](../images/motoring-prometheus.png) > **Tip:** Use **Prometheus Operator** if you already have the Prometheus Operator installed in your cluster — it handles `ServiceMonitor` creation automatically. @@ -75,7 +68,7 @@ Selecting this method expands an **Endpoints** panel and a **Labels** panel for Use **+ Add new** in the **Labels** panel to attach additional key-value labels to the `ServiceMonitor`. You can also add multiple endpoints using **+ Add new** button in **Endpoints** panel. -![Custom ServiceMonitor method selected showing Endpoints panel with Honor Labels, Interval, Path, and Port fields, and a Labels section](./images/motoring-service-monitor.png) +![Custom ServiceMonitor method selected showing Endpoints panel with Honor Labels, Interval, Path, and Port fields, and a Labels section](../images/motoring-service-monitor.png) > **Note:** `Interval`, `Path` and `Port` fields are mandatory in **Endpoints** section. @@ -83,7 +76,7 @@ Use **+ Add new** in the **Labels** panel to attach additional key-value labels **Custom Scrapper** injects the metrics exporter sidecar and adds Prometheus scraping annotations directly to the stats `Service`, instead of creating a `ServiceMonitor`. Use this method with setups that rely on annotation-based service discovery rather than the Prometheus Operator. -![Custom Scrapper method selected](./images/monitoring-scrapper.png) +![Custom Scrapper method selected](../images/monitoring-scrapper.png) --- @@ -91,7 +84,7 @@ Use **+ Add new** in the **Labels** panel to attach additional key-value labels The **Exporter Configuration** section allows you to customize the metrics exporter sidecar container that is injected into your database pod. Toggle **Customize Exporter Sidecar** to expand the configuration options. -![Exporter Configuration section expanded showing Security Context, Args, and Environment Variables with Input value source selected](./images/monitoring-exporter.png) +![Exporter Configuration section expanded showing Security Context, Args, and Environment Variables with Input value source selected](../images/monitoring-exporter.png) ### 4.1 - Security Context @@ -116,7 +109,7 @@ Use the **Environment Variables** section to inject environment variables into t **Secret** — Pull the value from a Kubernetes Secret: -![Environment Variable with Secret source selected, showing Secret Name and Secret Key fields](./images/monitoring-env-secret.png) +![Environment Variable with Secret source selected, showing Secret Name and Secret Key fields](../images/monitoring-env-secret.png) | Field | Description | |---|---| @@ -125,7 +118,7 @@ Use the **Environment Variables** section to inject environment variables into t **ConfigMap** — Pull the value from a Kubernetes ConfigMap: -![Environment Variable with ConfigMap source selected, showing ConfigMap Name and ConfigMap Key fields](./images/monitoring-env-config.png) +![Environment Variable with ConfigMap source selected, showing ConfigMap Name and ConfigMap Key fields](../images/monitoring-env-config.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/recent-backups.md b/docs/platform/guides/database-management/recent-backups.md similarity index 88% rename from src/en/guides/database-management/recent-backups.md rename to docs/platform/guides/database-management/recent-backups.md index 9a2c9cf..683acc1 100644 --- a/src/en/guides/database-management/recent-backups.md +++ b/docs/platform/guides/database-management/recent-backups.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-recent-backups name: Recent Backups parent: database-management weight: 125 - home_menu: - identifier: home-database-recent-backups - name: Recent Backups - parent: home-database - weight: 125 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Recent Backups -This guide explains how to view and manage **BackupSessions** — individual backup job executions triggered by BackupConfigurations or manually created on-demand. Each BackupSession represents a single point-in-time snapshot of your database. +A **BackupSession** is a single backup job execution — triggered by a BackupConfiguration or created manually on-demand — that produces a point-in-time snapshot of your database. This guide explains how to view and manage BackupSessions. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **Recent Backups**. This The list page displays all BackupSessions in your cluster, both scheduled (from BackupConfigurations) and on-demand. Use the **Select Namespace** dropdown to filter by namespace. -![BackupSession list page showing sessions with Name, Namespace, BackupConfiguration, Invoker Kind, Invoker Name, Session, Timeout, Phase, Duration, and Age columns](./images/backup/recent-backup-overview.png) +![BackupSession list page showing sessions with Name, Namespace, BackupConfiguration, Invoker Kind, Invoker Name, Session, Timeout, Phase, Duration, and Age columns](../images/backup/recent-backup-overview.png) | Column | Description | |---|---| @@ -51,13 +46,13 @@ The list page displays all BackupSessions in your cluster, both scheduled (from ## 3. Viewing a BackupSession -Click on any BackupSession name in the list to open its detail page. The detail page shows the session's metadata, linked configuration, and all snapshots created. +Click on any BackupSession name in the list to open its detail page. ### 3.1 - Overview -The detail page opens on the **Overview** tab showing: +The detail page opens on the **Overview** tab showing the session's metadata, linked configuration, and all snapshots created: -![BackupSession detail page showing Basic info, Backup Configuration table, and Snapshots table](./images/backup/recent-db-overview.png) +![BackupSession detail page showing Basic info, Backup Configuration table, and Snapshots table](../images/backup/recent-db-overview.png) **Basic** — Core metadata for the session: @@ -106,11 +101,11 @@ To manually trigger an on-demand backup (without waiting for a scheduled BackupC The **Create BackupSession** form will open with the following fields: -![Create BackupSession form showing Namespace, Labels & Annotations, Invoker Kind, Invoker Name, Session, and Timeout fields](./images/backup/recent-backup-create.png) +![Create BackupSession form showing Namespace, Labels & Annotations, Invoker Kind, Invoker Name, Session, and Timeout fields](../images/backup/recent-backup-create.png) ### 4.1 - Basic Fields -![Create BackupSession form fields showing all required and optional sections](./images/backup/recent-create-form.png) +![Create BackupSession form fields showing all required and optional sections](../images/backup/recent-create-form.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/reconfigure-database.md b/docs/platform/guides/database-management/reconfigure-database.md similarity index 78% rename from src/en/guides/database-management/reconfigure-database.md rename to docs/platform/guides/database-management/reconfigure-database.md index c558cad..f8b777f 100644 --- a/src/en/guides/database-management/reconfigure-database.md +++ b/docs/platform/guides/database-management/reconfigure-database.md @@ -1,41 +1,39 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-reconfigure name: Reconfigure Databases parent: database-management weight: 65 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Reconfigure Databases -This guide explains how to use the **Reconfigure** interface to update your database configuration. You can select a new configuration secret, apply a custom configuration directly, or remove an existing configuration — all through a `MongoDBOpsRequest` that is safely tracked in your cluster. +The **Reconfigure** interface updates your database configuration. You can select a new configuration secret, apply a custom configuration directly, or remove an existing configuration — all through a `MongoDBOpsRequest` that is tracked in your cluster. --- ## 1. Getting Started -To begin, select **Reconfigure** from the **Operations** section in the left sidebar. - -You will land on the **Reconfigure** form, which provides three operation modes via tabs: +Select **Reconfigure** from the **Operations** section in the left sidebar. The **Reconfigure** form provides three operation modes via tabs: - **New Config Secret** — Select an existing Kubernetes secret or create a new one to use as your database configuration. - **Apply Config** — Define custom configuration key-value pairs inline, without needing a pre-existing secret. - **Remove** — Remove an existing configuration secret from your database. -![Reconfigure form showing the three operation tabs: New Config Secret, Apply Config, and Remove](./images/reconfigure.png) +![Reconfigure form showing the three operation tabs: New Config Secret, Apply Config, and Remove](../images/reconfigure.png) --- ## 2. New Config Secret -The **New Config Secret** tab lets you attach a Kubernetes secret containing your database configuration. Use this when you already have a configuration secret in your cluster or want to create one from scratch. +The **New Config Secret** tab attaches a Kubernetes secret containing your database configuration. Use this when you already have a configuration secret in your cluster or want to create one from scratch. -![New Config Secret tab showing the Config Secret dropdown and YAML preview panel](./images/reconfigure-new-secret.png) +![New Config Secret tab showing the Config Secret dropdown and YAML preview panel](../images/reconfigure-new-secret.png) 1. **Config Secret:** Click the **Config Secret** dropdown to select an existing secret from the list. - Use the **refresh** icon to reload the available secrets if your list is stale. @@ -46,7 +44,7 @@ The **New Config Secret** tab lets you attach a Kubernetes secret containing you If you choose **+ Create a new Secret**, a form will expand below the dropdown: -![Create a New Config Secret form with Secret Name and String Data fields](./images/reconfigure-create-secret.png) +![Create a New Config Secret form with Secret Name and String Data fields](../images/reconfigure-create-secret.png) 1. **Secret Name\*:** Enter a name for the new Kubernetes secret (e.g., `secret_name`). 2. **String Data\*:** Add one or more key-value pairs that define your configuration: @@ -62,9 +60,9 @@ If you choose **+ Create a new Secret**, a form will expand below the dropdown: ## 3. Apply Config -The **Apply Config** tab lets you define custom database configuration parameters directly as key-value pairs, without needing a pre-existing secret. These parameters will overwrite the current settings. +The **Apply Config** tab defines custom database configuration parameters directly as key-value pairs, without needing a pre-existing secret. These parameters will overwrite the current settings. -![Apply Config tab showing the Configuration dropdown and YAML preview panel](./images/reconfigure-apply.png) +![Apply Config tab showing the Configuration dropdown and YAML preview panel](../images/reconfigure-apply.png) 1. **Configuration:** Click the **Configuration** dropdown to select an existing configuration or leave it unselected to start from scratch. 2. Enter the configuration parameters you want to apply (e.g., `max_connections`). Each parameter is defined as a key-value pair and will directly overwrite the corresponding existing setting. @@ -76,9 +74,9 @@ The **Apply Config** tab lets you define custom database configuration parameter ## 4. Remove -The **Remove** tab lets you detach and remove an existing configuration secret from your database, reverting it to its default settings. +The **Remove** tab detaches an existing configuration secret from your database, reverting it to its default settings. -![Remove tab showing the Configuration dropdown for selecting the secret to remove](./images/reconfigure-remove.png) +![Remove tab showing the Configuration dropdown for selecting the secret to remove](../images/reconfigure-remove.png) 1. **Configuration:** Click the **Configuration** dropdown and select the configuration secret you want to remove. 2. Review the generated manifest in the preview panel on the right to confirm the correct secret is being targeted. diff --git a/src/en/guides/database-management/repository.md b/docs/platform/guides/database-management/repository.md similarity index 88% rename from src/en/guides/database-management/repository.md rename to docs/platform/guides/database-management/repository.md index 62abf3b..a5d9451 100644 --- a/src/en/guides/database-management/repository.md +++ b/docs/platform/guides/database-management/repository.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-repository name: Backup Repository parent: database-management weight: 135 - home_menu: - identifier: home-database-repository - name: Repository - parent: home-database - weight: 135 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Repository -This guide explains how to view and create **Repository** resources using the AppsCode console. A Repository is the logical backup repository that stores individual snapshots of a database within a BackupStorage backend. It acts as the bridge between BackupConfigurations and the actual cloud storage. +A **Repository** is the logical backup repository that stores individual snapshots of a database within a BackupStorage backend, acting as the bridge between BackupConfigurations and the cloud storage. This guide explains how to view and create Repository resources using the platform console. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **Repository**. This open The list page displays all Repository resources configured across your cluster. Use the **Select Namespace** dropdown to filter by namespace, or click **Create New Instance** to add a new repository. -![Repository list page showing resources with Name, Namespace, BackupStorage, Target, Size, Phase, and Age columns](./images/backup/repository-overview.png) +![Repository list page showing resources with Name, Namespace, BackupStorage, Target, Size, Phase, and Age columns](../images/backup/repository-overview.png) | Column | Description | |---|---| @@ -48,13 +43,13 @@ The list page displays all Repository resources configured across your cluster. ## 3. Viewing a Repository -Click on any Repository name in the list to open its detail page. The detail page displays repository metadata and all snapshots stored within it. +Click on any Repository name in the list to open its detail page. ### 3.1 - Overview -The detail page shows comprehensive information about the repository: +The detail page displays repository metadata and all snapshots stored within it: -![Repository detail page showing Basic info, Backup Storage, Snapshots, and linked resources](./images/backup/repository-db-overview.png) +![Repository detail page showing Basic info, Backup Storage, Snapshots, and linked resources](../images/backup/repository-db-overview.png) **Basic** — Core metadata for the repository: @@ -83,7 +78,7 @@ The detail page shows comprehensive information about the repository: **Snapshots** — Individual backup snapshots stored in this repository: -![Backup Configuration and Snapshots tables showing all stored snapshots](./images/backup/repository-db-snapshot.png) +![Backup Configuration and Snapshots tables showing all stored snapshots](../images/backup/repository-db-snapshot.png) **Backup Configuration** — BackupConfigurations using this repository: @@ -124,7 +119,7 @@ To create a new Repository, click **Create New Instance** from the Repository li The form starts with identity and deletion policy fields: -![Create Repository form showing Namespace, Repository Name, Labels & Annotations, Deletion Policy, Storage Ref, Encryption Secret, Path, and App Ref sections](./images/backup/repository-create-overview.png) +![Create Repository form showing Namespace, Repository Name, Labels & Annotations, Deletion Policy, Storage Ref, Encryption Secret, Path, and App Ref sections](../images/backup/repository-create-overview.png) | Field | Description | |---|---| @@ -136,7 +131,7 @@ The form starts with identity and deletion policy fields: Expand the **Labels & Annotations** section to attach custom metadata: -![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](./images/backup/repository-label-annotation.png) +![Labels and Annotations panel showing Labels and Annotations each with Key-Value input rows and Add new buttons](../images/backup/repository-label-annotation.png) - Use **+ Add new** under **Labels** to add key-value label pairs. - Use **+ Add new** under **Annotations** to add key-value annotation pairs. @@ -146,7 +141,7 @@ Expand the **Labels & Annotations** section to attach custom metadata: The **Storage Ref**, **Encryption Secret**, and **Path** sections configure where and how snapshots are stored. -![Storage Ref and Encryption Secret sections showing Namespace/Name fields and Path field](./images/backup/repository-ref-secret.png) +![Storage Ref and Encryption Secret sections showing Namespace/Name fields and Path field](../images/backup/repository-ref-secret.png) **Storage Ref** — Reference to the BackupStorage backend: @@ -172,7 +167,7 @@ The **Storage Ref**, **Encryption Secret**, and **Path** sections configure wher The **App Ref** section identifies the database resource this repository backs up. -![App Ref section showing Api Group, Kind, Namespace, and Name dropdowns](./images/backup/repository-app-ref.png) +![App Ref section showing Api Group, Kind, Namespace, and Name dropdowns](../images/backup/repository-app-ref.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/restart-database.md b/docs/platform/guides/database-management/restart-database.md similarity index 78% rename from src/en/guides/database-management/restart-database.md rename to docs/platform/guides/database-management/restart-database.md index 44527f9..df2f702 100644 --- a/src/en/guides/database-management/restart-database.md +++ b/docs/platform/guides/database-management/restart-database.md @@ -1,31 +1,29 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-restart name: Database Restarts parent: database-management weight: 60 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Database Restarts -This guide explains how to use the **Restart** interface to perform a rolling restart of your database. The operation is managed through a `MongoDBOpsRequest`, which ensures the restart is carried out safely and tracked in your cluster. +The **Restart** interface performs a rolling restart of your database. The operation is managed through a `MongoDBOpsRequest`, which carries out the restart safely and tracks it in your cluster. --- ## 1. Getting Started -To begin, select **Restart** from the **Operations** section in the left sidebar. - -You will land on the **Restart** form, which contains one main section: +Select **Restart** from the **Operations** section in the left sidebar. The **Restart** form contains one main section: - **OpsRequest Options** — Configure how the restart operation is executed, including timeout and apply policy. -![Restart form showing OpsRequest Options panel](./images/restart.png) +![Restart form showing OpsRequest Options panel](../images/restart.png) --- @@ -38,7 +36,7 @@ Expand the **OpsRequest Options** panel to configure the restart operation. - **IfReady** — The restart will only be applied if the database is in a ready state. This is the recommended option. - **Always** — The OpsRequest will be applied regardless of the database's current state. -![Restart form filled with Timeout 1h and Apply set to IfReady](./images/restart-preview.png) +![Restart form filled with Timeout 1h and Apply set to IfReady](../images/restart-preview.png) > **Tip:** Use **IfReady** to avoid triggering a restart on an already unhealthy database, which could worsen its state. @@ -48,9 +46,9 @@ Expand the **OpsRequest Options** panel to configure the restart operation. ## 3. Review and Submit -The Preview page displays the full `MongoDBOpsRequest` manifest that will be applied to your cluster. Review it carefully to confirm all settings are correct. +The Preview page displays the full `MongoDBOpsRequest` manifest that will be applied to your cluster. -![Preview page showing the generated MongoDBOpsRequest YAML manifest for Restart](./images/restart-submit.png) +![Preview page showing the generated MongoDBOpsRequest YAML manifest for Restart](../images/restart-submit.png) - The manifest is shown in **YAML** view by default. Use the **JSON** button to switch to JSON format if preferred. - Use the **Copy** button to copy the manifest to your clipboard. diff --git a/src/en/guides/database-management/restore.md b/docs/platform/guides/database-management/restore.md similarity index 87% rename from src/en/guides/database-management/restore.md rename to docs/platform/guides/database-management/restore.md index 224a921..e6755e8 100644 --- a/src/en/guides/database-management/restore.md +++ b/docs/platform/guides/database-management/restore.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-restore name: Backup Restore parent: database-management weight: 140 - home_menu: - identifier: home-database-restore - name: Restore - parent: home-database - weight: 140 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Restore -This guide explains how to view and create **Restore** resources using the AppsCode console. A Restore represents a database recovery operation that restores data from a previously captured snapshot or backup to a target database instance. +This guide explains how to view and create **Restore** resources using the platform console. A Restore represents a database recovery operation that restores data from a previously captured snapshot or backup to a target database instance. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **Restore**. This opens t The list page displays all Restore resources in your cluster, including both scheduled and manually triggered restores. Use the **Select Namespace** dropdown to filter by namespace. -![Restore list page showing restore operations with Name, Namespace, Target, Task, Repository, Snapshot, Total components, Duration, Phase, and Age columns](./images/backup/restore-overview.png) +![Restore list page showing restore operations with Name, Namespace, Target, Task, Repository, Snapshot, Total components, Duration, Phase, and Age columns](../images/backup/restore-overview.png) | Column | Description | |---|---| @@ -55,7 +50,7 @@ To manually trigger a restore operation, click **Create New Instance** from the The **Create Restore** form will open with the following fields: -![Create Restore form showing Namespace, Labels & Annotations, Source Snapshot, and Target Database sections](./images/backup/restore-create-overview.png) +![Create Restore form showing Namespace, Labels & Annotations, Source Snapshot, and Target Database sections](../images/backup/restore-create-overview.png) ### 3.1 - Basic Fields @@ -77,7 +72,7 @@ Use the **Labels & Annotations** section to attach custom metadata: The **Source Snapshot** section specifies which backup snapshot to restore from. -![Source Snapshot panel showing Repository Namespace/Name and Snapshot Name fields](./images/backup/restore-config.png) +![Source Snapshot panel showing Repository Namespace/Name and Snapshot Name fields](../images/backup/restore-config.png) | Field | Description | |---|---| @@ -89,7 +84,7 @@ The **Source Snapshot** section specifies which backup snapshot to restore from. The **Target Database** section identifies where the data will be restored. -![Target Database panel showing Api Group, Kind, Namespace, and Name fields](./images/backup/restore-target.png) +![Target Database panel showing Api Group, Kind, Namespace, and Name fields](../images/backup/restore-target.png) | Field | Description | |---|---| @@ -114,7 +109,7 @@ Once all required fields are filled, click **Preview** to review the generated ` 1. **Submit:** Once satisfied, click **Submit** to create the Restore and begin the restoration process. -> **Note:** After submitting, the restore operation will begin immediately. Monitor the restore status on the detail page. The target database will be updated with the restored data once the operation completes successfully. +> **Note:** After submitting, the restore operation begins immediately. Monitor the status on the detail page; the target database is updated with the restored data once the operation completes successfully. --- diff --git a/src/en/guides/database-management/scaling-storage.md b/docs/platform/guides/database-management/scaling-storage.md similarity index 85% rename from src/en/guides/database-management/scaling-storage.md rename to docs/platform/guides/database-management/scaling-storage.md index cea6138..ab3eb19 100644 --- a/src/en/guides/database-management/scaling-storage.md +++ b/docs/platform/guides/database-management/scaling-storage.md @@ -1,37 +1,30 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-scaling-storage name: Scaling Storages parent: database-management weight: 35 - home_menu: - identifier: home-database-scaling-storage - name: Scaling Storages - parent: home-database - weight: 35 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Scaling Storages -This guide explains how to use the **Expand Volume** interface to increase the storage capacity of your database. Two approaches are available — a manual **Expand Volume** operation for an immediate one-time resize, and **Storage Autoscaling** which automatically expands storage based on usage thresholds. +Increase the storage capacity of your database. Two approaches are available — a manual **Expand Volume** operation for an immediate one-time resize, and **Storage Autoscaling** which automatically expands storage based on usage thresholds. --- ## 1. Getting Started -To begin, select **Scale Storage** from the **Operations** section in the left sidebar. - -You will land on the **Expand Volume** form, which contains two method cards at the top: +Select **Scale Storage** from the **Operations** section in the left sidebar. The **Expand Volume** form contains two method cards at the top: - **Expand Volume** — Manually increase the database storage volume to a specified size. - **Storage Autoscaling** — Automatically scale storage capacity based on configurable usage thresholds. -![Expand Volume form showing method selection cards, Mode dropdown, Standalone volume expansion, and OpsRequest Options](./images/storage-scale.png) +![Expand Volume form showing method selection cards, Mode dropdown, Standalone volume expansion, and OpsRequest Options](../images/storage-scale.png) --- @@ -39,7 +32,7 @@ You will land on the **Expand Volume** form, which contains two method cards at Use this method to perform an immediate, one-time expansion of your database storage to a specific size. -![Expand Volume method selected showing Mode dropdown and Standalone current-to-new storage size input](./images/storage-scale-volume.png) +![Expand Volume method selected showing Mode dropdown and Standalone current-to-new storage size input](../images/storage-scale-volume.png) ### 2.1 - Selecting the Mode @@ -70,7 +63,7 @@ The **Standalone** panel specifies how much storage to allocate: Use this method to configure automatic storage expansion. The system monitors storage usage and expands capacity automatically when defined thresholds are crossed. -![Storage Autoscaling method selected showing Trigger toggle, Expansion Mode, Standalone, Readiness Criteria, Timeout, and Apply sections](./images/storage-autoscaling.png) +![Storage Autoscaling method selected showing Trigger toggle, Expansion Mode, Standalone, Readiness Criteria, Timeout, and Apply sections](../images/storage-autoscaling.png) ### 3.1 - Trigger @@ -87,7 +80,7 @@ Choose how the autoscaler expands storage when a threshold is triggered: The **Standalone** panel defines the usage threshold and scaling rules for standalone database nodes. -![Standalone panel showing UsageThreshold slider, Scaling Rules with Initial Storage and percentage steps, and UpperBound field](./images/storage-scale-standalone.png) +![Standalone panel showing UsageThreshold slider, Scaling Rules with Initial Storage and percentage steps, and UpperBound field](../images/storage-scale-standalone.png) | Field | Description | |---|---| @@ -102,7 +95,7 @@ Use **Add New Rule** to define additional scaling steps for different storage si The **Readiness Criteria** panel defines conditions that must be met before the autoscaler considers the database ready to accept a storage expansion. -![Readiness Criteria panel showing Objects Count Diff Percentage slider and Oplog Max Lag Seconds field](./images/storage-scale-readiness.png) +![Readiness Criteria panel showing Objects Count Diff Percentage slider and Oplog Max Lag Seconds field](../images/storage-scale-readiness.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/scaling.md b/docs/platform/guides/database-management/scaling.md similarity index 86% rename from src/en/guides/database-management/scaling.md rename to docs/platform/guides/database-management/scaling.md index c3cc152..61613aa 100644 --- a/src/en/guides/database-management/scaling.md +++ b/docs/platform/guides/database-management/scaling.md @@ -1,39 +1,32 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-scale name: Scaling Databases parent: database-management weight: 30 - home_menu: - identifier: home-database-scale - name: Scaling Databases - parent: home-database - weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Scaling Databases -This guide explains how to use the **Scale Vertically** interface to adjust the computational resources and replica count of your database. Three scaling approaches are available — **Vertical Scaling** for manual CPU and memory adjustments, **Compute Autoscaling** for policy-driven automatic resource management, and **Horizontal Scaling** for changing the number of database replicas. +Adjust the computational resources and replica count of your database. Three scaling approaches are available — **Vertical Scaling** for manual CPU and memory adjustments, **Compute Autoscaling** for policy-driven automatic resource management, and **Horizontal Scaling** for changing the number of database replicas. --- ## 1. Getting Started -To begin, select **Scale Vertically** from the **Operations** section in the left sidebar. - -You will land on the scaling form, which shows two method cards at the top: +Select **Scale Vertically** from the **Operations** section in the left sidebar. The scaling form shows two method cards at the top: - **Vertical Scaling** — Manually adjust CPU and memory allocated to your database nodes. - **Compute Autoscaling** — Automatically scale CPU and memory in response to workload demands using predefined policies. Below the method cards, the form contains sections for **Configure Your Machine Profile**, **Node Selection**, **Exporter**, and **OpsRequest Options**. -![Vertical Scale form overview showing method cards, Machine Profile, Node Selection, Exporter, and OpsRequest Options sections](./images/vertical-scaling.png) +![Vertical Scale form overview showing method cards, Machine Profile, Node Selection, Exporter, and OpsRequest Options sections](../images/vertical-scaling.png) --- @@ -45,12 +38,12 @@ Use this method to manually set the CPU and memory resources for your database n The **Configure Your Machine Profile** panel lets you compare your current resource allocation with the proposed new configuration before applying it. -![Machine Profile panel showing Current Machine profile (250m CPU, 512Mi Memory) and New Machine profile with custom resource dropdown](./images/vertical-machine-profile.png) +![Machine Profile panel showing Current Machine profile (250m CPU, 512Mi Memory) and New Machine profile with custom resource dropdown](../images/vertical-machine-profile.png) - **Current Machine Profile** — Displays the existing CPU and memory allocation (read-only, shown for reference). - **New Machine Profile** — Select a preset resource profile from the **Resources** dropdown, or choose **custom** to enter CPU and Memory values manually. -![Machine Profile with Resources dropdown expanded showing available preset CPU and Memory options](./images/vertical-machine-profile2.png) +![Machine Profile with Resources dropdown expanded showing available preset CPU and Memory options](../images/vertical-machine-profile2.png) > **Tip:** Use a preset profile for common workload sizes. Switch to **custom** if you need precise control over CPU and memory values beyond the available presets. @@ -58,7 +51,7 @@ The **Configure Your Machine Profile** panel lets you compare your current resou The **Node Selection** panel controls which Kubernetes nodes the database pods are scheduled onto after scaling. -![Node Selection panel showing Node Selection Policy dropdown, Label Selector and Taints hint, and Topology key-value fields](./images/vertical-node-selection.png) +![Node Selection panel showing Node Selection Policy dropdown, Label Selector and Taints hint, and Topology key-value fields](../images/vertical-node-selection.png) | Field | Description | |---|---| @@ -70,7 +63,7 @@ The **Node Selection** panel controls which Kubernetes nodes the database pods a The **Exporter** panel sets the CPU and memory resources allocated to the metrics exporter sidecar container. -![Exporter panel showing CPU field set to 100m and Memory field set to 256Mi](./images/vertical-exporter.png) +![Exporter panel showing CPU field set to 100m and Memory field set to 256Mi](../images/vertical-exporter.png) | Field | Description | |---|---| @@ -94,7 +87,7 @@ Expand **OpsRequest Options** to configure the timeout and apply policy for the Use this method to automatically adjust CPU and memory based on actual workload demands. The autoscaler monitors resource usage and applies changes according to the policies you configure. -![Compute Autoscaling method selected showing Trigger toggle, Pod Lifetime Threshold, Standalone, NodeTopology, and OpsRequest Options sections](./images/auto-scaling.png) +![Compute Autoscaling method selected showing Trigger toggle, Pod Lifetime Threshold, Standalone, NodeTopology, and OpsRequest Options sections](../images/auto-scaling.png) ### 3.1 - Trigger and Pod Lifetime Threshold @@ -105,7 +98,7 @@ Use this method to automatically adjust CPU and memory based on actual workload The **Standalone** panel defines the resource boundaries and scaling sensitivity for standalone database nodes. -![Standalone panel showing ResourceDiff slider at 20%, Min Allowed and Max Allowed CPU and Memory, Controlled Resources, and Container Controlled Values](./images/auto-scaling-standalone.png) +![Standalone panel showing ResourceDiff slider at 20%, Min Allowed and Max Allowed CPU and Memory, Controlled Resources, and Container Controlled Values](../images/auto-scaling-standalone.png) | Field | Description | |---|---| @@ -121,7 +114,7 @@ The **Standalone** panel defines the resource boundaries and scaling sensitivity The **NodeTopology** panel lets you constrain autoscaling decisions to a specific node topology group, ensuring recommendations stay within the resource limits of a particular node class. -![NodeTopology panel showing Select NodeTopology dropdown](./images/auto-scaling-nodetopology.png) +![NodeTopology panel showing Select NodeTopology dropdown](../images/auto-scaling-nodetopology.png) 1. **Select NodeTopology:** Choose a node topology from the dropdown to scope the autoscaler's resource recommendations to the capacity of nodes in that topology. @@ -129,7 +122,7 @@ The **NodeTopology** panel lets you constrain autoscaling decisions to a specifi The **Readiness Criteria** panel defines conditions that must be met before the autoscaler applies a scaling recommendation. -![Readiness Criteria panel showing Objects Count Diff Percentage slider at 50% and Oplog Max Lag Seconds field set to 10](./images/auto-scaling-readiness.png) +![Readiness Criteria panel showing Objects Count Diff Percentage slider at 50% and Oplog Max Lag Seconds field set to 10](../images/auto-scaling-readiness.png) | Field | Description | |---|---| @@ -153,7 +146,7 @@ Expand **OpsRequest Options** to configure how the autoscaling OpsRequest is app Use **Horizontal Scale** to increase or decrease the number of database replicas. More replicas improve fault tolerance and distribute read load; fewer replicas conserve cluster resources. -![Horizontal Scale form showing Current Replicas (3) and New Replicas spinner input](./images/horizontal-scale-form.png) +![Horizontal Scale form showing Current Replicas (3) and New Replicas spinner input](../images/horizontal-scale-form.png) 1. **Current Replicas:** Displays the current replica count (read-only, shown for reference). 1. **New Replicas:** Enter the desired replica count using the spinner or by typing directly. Each replica is an independent copy of your database — for example, setting this to `3` creates three copies for improved availability. diff --git a/src/en/guides/database-management/security-report.md b/docs/platform/guides/database-management/security-report.md similarity index 62% rename from src/en/guides/database-management/security-report.md rename to docs/platform/guides/database-management/security-report.md index 20431e1..07004f8 100644 --- a/src/en/guides/database-management/security-report.md +++ b/docs/platform/guides/database-management/security-report.md @@ -1,13 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-security name: Database Security Report parent: database-management weight: 90 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/database-management/snapshot.md b/docs/platform/guides/database-management/snapshot.md similarity index 83% rename from src/en/guides/database-management/snapshot.md rename to docs/platform/guides/database-management/snapshot.md index 8b501d8..326b57e 100644 --- a/src/en/guides/database-management/snapshot.md +++ b/docs/platform/guides/database-management/snapshot.md @@ -1,24 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-snapshot name: Backup Snapshot parent: database-management weight: 145 - home_menu: - identifier: home-database-snapshot - name: Snapshot - parent: home-database - weight: 145 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Snapshot -This guide explains how to view and manage **Snapshot** resources using the AppsCode console. A Snapshot represents a point-in-time backup of a database stored in a backup repository, capturing the complete state of the database at the moment of creation. +A **Snapshot** is a point-in-time backup of a database stored in a backup repository. This guide explains how to view and manage Snapshot resources using the platform console. --- @@ -32,7 +27,7 @@ Navigate to **Backups** in the left sidebar and select **Snapshot**. This opens The list page displays all Snapshot resources in your cluster. Use the **Select Namespace** dropdown to filter by namespace, or view detailed information about stored snapshots. -![Snapshot list page showing snapshots with Name, Namespace, Repository, Invoker Kind, Invoker Name, Backend Repository, Creation Timestamp, Deletion Policy, Phase, Verification Status, and Age columns](./images/backup/snapshot-overview.png) +![Snapshot list page showing snapshots with Name, Namespace, Repository, Invoker Kind, Invoker Name, Backend Repository, Creation Timestamp, Deletion Policy, Phase, Verification Status, and Age columns](../images/backup/snapshot-overview.png) | Column | Description | |---|---| @@ -52,13 +47,13 @@ The list page displays all Snapshot resources in your cluster. Use the **Select ## 3. Viewing a Snapshot -Click on any Snapshot name in the list to open its detail page. The detail page shows snapshot metadata, verification status, and the repository it belongs to. +Click on any Snapshot name in the list to open its detail page. ### 3.1 - Overview -The detail page shows comprehensive snapshot information: +The detail page shows snapshot metadata, verification status, and the repository it belongs to: -![Snapshot detail page showing Basic info, Repository reference, and Invoker information](./images/backup/snapshot-operation-view.png) +![Snapshot detail page showing Basic info, Repository reference, and Invoker information](../images/backup/snapshot-operation-view.png) **Basic** — Core metadata for the snapshot: @@ -97,13 +92,13 @@ The detail page shows comprehensive snapshot information: ## 4. Deleting a Snapshot -To delete a snapshot, click on the snapshot name to open its detail page, then locate the delete action. The delete operation confirms your intention to remove the snapshot from the repository. +To delete a snapshot, click on the snapshot name to open its detail page, then locate the delete action. ### 4.1 - Delete Confirmation When initiating a delete operation, a confirmation dialog appears: -![Delete Snapshot confirmation dialog showing deletion policy and confirmation options](./images/backup/snapshot-delete.png) +![Delete Snapshot confirmation dialog showing deletion policy and confirmation options](../images/backup/snapshot-delete.png) | Field | Description | |---|---| diff --git a/src/en/guides/database-management/tls.md b/docs/platform/guides/database-management/tls.md similarity index 86% rename from src/en/guides/database-management/tls.md rename to docs/platform/guides/database-management/tls.md index 9556638..53d7ba6 100644 --- a/src/en/guides/database-management/tls.md +++ b/docs/platform/guides/database-management/tls.md @@ -1,32 +1,25 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-tls name: Configure TLS parent: database-management weight: 70 - home_menu: - identifier: home-database-tls - name: Configure TLS - parent: home-database - weight: 70 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Configure TLS -This guide explains how to use the **TLS Configure** interface to manage TLS settings for your database. You can update TLS certificates, rotate existing ones, or remove TLS entirely — all managed through a `OpsRequest` that is applied safely to your cluster. +Manage TLS settings for your database. You can update TLS certificates, rotate existing ones, or remove TLS entirely — all managed through a `OpsRequest` applied to your cluster. --- ## 1. Getting Started -To begin, select **TLS Configure** from the **Operations** section in the left sidebar. - -You will land on the **TLS Configure** form, which is divided into the following sections: +Select **TLS Configure** from the **Operations** section in the left sidebar. The **TLS Configure** form is divided into the following sections: - **TLS Operation** — Choose the type of TLS action to perform. - **Remove TLS** — Toggle to strip TLS from the database entirely. @@ -35,7 +28,7 @@ You will land on the **TLS Configure** form, which is divided into the following - **Certificates** — Define one or more certificates with custom subject and SAN details. - **OpsRequest Options** — Configure timeout and apply policy for the operation. -![TLS Configure form showing all sections including TLS Operation, Issuer Reference, Certificates, and OpsRequest Options](./images/tls.png) +![TLS Configure form showing all sections including TLS Operation, Issuer Reference, Certificates, and OpsRequest Options](../images/tls.png) --- @@ -59,7 +52,7 @@ Expand the **Issuer Reference** panel to specify which cert-manager issuer shoul 1. **Kind:** Select the type of issuer — typically `ClusterIssuer` for cluster-wide issuers or `Issuer` for namespace-scoped ones. 1. **Name:** Enter the name of the issuer (e.g., `ace-incluster`). -![TLS Configure form filled with Operation set to Update and Issuer Reference expanded showing ClusterIssuer ace-incluster](./images/tls-operation.png) +![TLS Configure form filled with Operation set to Update and Issuer Reference expanded showing ClusterIssuer ace-incluster](../images/tls-operation.png) > **Note:** The Issuer Reference is required when the **Update** operation is selected. Ensure the issuer exists in your cluster before proceeding. @@ -69,7 +62,7 @@ Expand the **Issuer Reference** panel to specify which cert-manager issuer shoul The **Certificates** section allows you to define one or more certificates that will be managed by the TLS configuration. Click **+ Add new** to add a certificate entry. -![Certificates panel showing an empty certificate entry with all available fields](./images/tls-certificate.png) +![Certificates panel showing an empty certificate entry with all available fields](../images/tls-certificate.png) Each certificate entry contains the following fields: @@ -96,7 +89,7 @@ The **Alias** dropdown identifies the role of the certificate within the databas - **client** — The certificate used by clients connecting to the database. - **metrics-exporter** — The certificate used by the metrics exporter for secure scraping. -![Certificates panel showing the Alias dropdown expanded with server, client, and metrics-exporter options, and sample Organizations and Countries fields filled in](./images/tls-certificate-details.png) +![Certificates panel showing the Alias dropdown expanded with server, client, and metrics-exporter options, and sample Organizations and Countries fields filled in](../images/tls-certificate-details.png) > **Note:** Fields marked with a red asterisk are required. The filed with `+ Add new` button validates entries on input — leaving an added row empty will show an "Item cannot be empty" warning. Also You can add multiple instance of them. diff --git a/src/en/guides/database-management/upgrade-version.md b/docs/platform/guides/database-management/upgrade-version.md similarity index 79% rename from src/en/guides/database-management/upgrade-version.md rename to docs/platform/guides/database-management/upgrade-version.md index 1de9d94..55e03ef 100644 --- a/src/en/guides/database-management/upgrade-version.md +++ b/docs/platform/guides/database-management/upgrade-version.md @@ -1,37 +1,30 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: database-management-update name: Upgrade Database Version parent: database-management weight: 50 - home_menu: - identifier: home-database-update - name: Upgrade Database Version - parent: home-database - weight: 50 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Upgrade Database Version -This guide explains how to use the **Update Version** interface to upgrade your database to a newer version. The operation is managed through a `MongoDBOpsRequest`, which handles the upgrade process safely and tracks its status in your cluster. +Upgrade your database to a newer version. The operation is managed through a `MongoDBOpsRequest`, which handles the upgrade process and tracks its status in your cluster. --- ## 1. Getting Started -To begin, select **Update Version** from the **Operations** section in the left sidebar. - -You will land on the **Update Version** form, which has two main sections: +Select **Update Version** from the **Operations** section in the left sidebar. The **Update Version** form has two main sections: - **Version** — Select the target version you want to upgrade your database to. - **OpsRequest Options** — Configure advanced settings such as timeout and apply policy. -![Update Version form showing Version selector and OpsRequest Options](./images/update-version.png) +![Update Version form showing Version selector and OpsRequest Options](../images/update-version.png) --- @@ -54,7 +47,7 @@ Expand the **OpsRequest Options** panel to configure how the upgrade operation i - **IfReady** — The upgrade will only be applied if the database is in a ready state. This is the recommended option. - **Always** — The OpsRequest will be applied regardless of the database's current state. -![Update Version form filled with Target Version 8.0.10, Timeout 2h, and Apply set to IfReady](./images/update-version-preview.png) +![Update Version form filled with Target Version 8.0.10, Timeout 2h, and Apply set to IfReady](../images/update-version-preview.png) > **Tip:** Use **IfReady** unless you have a specific reason to force the operation, as it prevents upgrades from running on an unhealthy database. @@ -64,9 +57,9 @@ Expand the **OpsRequest Options** panel to configure how the upgrade operation i ## 3. Review and Submit -The Preview page displays the full `MongoDBOpsRequest` manifest that will be applied to your cluster. Review it carefully to confirm all settings are correct. +The Preview page displays the full `MongoDBOpsRequest` manifest that will be applied to your cluster. -![Preview page showing the generated MongoDBOpsRequest YAML manifest](./images/update-version-submit.png) +![Preview page showing the generated MongoDBOpsRequest YAML manifest](../images/update-version-submit.png) - The manifest is shown in **YAML** view by default. Use the **JSON** button to switch to JSON format if preferred. - Use the **Copy** button to copy the manifest to your clipboard. diff --git a/src/en/guides/get-started/_index.md b/docs/platform/guides/get-started/_index.md similarity index 59% rename from src/en/guides/get-started/_index.md rename to docs/platform/guides/get-started/_index.md index fa01969..e7d2804 100644 --- a/src/en/guides/get-started/_index.md +++ b/docs/platform/guides/get-started/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-start name: Get Started - description: Basic information and instructions for first-time users of AppsCode + parent: guides + description: Basic information and instructions for first-time users of KubeDB Platform icon: https://img.icons8.com/00994A/ios/50/rocket--v1.png popular: true weight: 10 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/get-started/add-cluster.md b/docs/platform/guides/get-started/add-cluster.md similarity index 61% rename from src/en/guides/get-started/add-cluster.md rename to docs/platform/guides/get-started/add-cluster.md index 226cdf3..3c94e77 100644 --- a/src/en/guides/get-started/add-cluster.md +++ b/docs/platform/guides/get-started/add-cluster.md @@ -1,29 +1,23 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-start-cluster name: Add a Kubernetes Cluster parent: guide-start weight: 30 - home_menu: - identifier: home-start-cluster - name: Add a Kubernetes Cluster - parent: home-start - popular: true - weight: 30 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Add a Kubernetes Cluster -With your credentials in place, it's time to connect your Kubernetes cluster to the AppsCode Dashboard. This step allows AppsCode to seamlessly manage and provide insights into your cluster. +With your credentials in place, it's time to connect your Kubernetes cluster to the Platform Console. This step allows KubeDB Platform to seamlessly manage and provide insights into your cluster. Follow these steps to import your Kubernetes cluster: -1. Visit the [AppsCode Dashboard](https://console.appscode.com/). +1. Visit the [Platform Console](https://console.appscode.com/). 2. Click on the `Add Cluster` button. 3. Choose your cluster type and provider. 4. Select the credentials you added in the previous step. @@ -31,4 +25,4 @@ Follow these steps to import your Kubernetes cluster: For detailed instructions and troubleshooting tips, refer to our comprehensive [Import Kubernetes Cluster Guide](../cluster-management/add-cluster/overview.md). -Once your cluster is imported, you can explore its details and capabilities directly from the AppsCode Dashboard. +Once your cluster is imported, you can explore its details and capabilities directly from the Platform Console. diff --git a/docs/platform/guides/get-started/add-credential.md b/docs/platform/guides/get-started/add-credential.md new file mode 100644 index 0000000..c38e551 --- /dev/null +++ b/docs/platform/guides/get-started/add-credential.md @@ -0,0 +1,26 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: guide-start-credential + name: Add a Credential + parent: guide-start + weight: 20 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Add Credential + +Now that you have successfully registered and logged in to the Platform Console, let's take the next step in setting up your environment. The first crucial task is to add credentials for your Kubernetes clusters. This ensures a secure connection and allows KubeDB Platform to seamlessly manage your clusters. + +Follow these steps to add your credentials: + +1. Navigate to the [Add Credential Page](https://appscode.com/id/{user}/user/settings/credentials/create). +2. Choose your `Credential Type` or authentication method and enter the required details. +3. Click on the `Done` button to securely save your credentials. + +For detailed documentation refer to [Credential Management](../account-management/kubernetes/credentials.md) + +After adding your credentials, you'll be ready to import your Kubernetes cluster and unlock a world of possibilities within the platform. diff --git a/src/en/guides/get-started/architecture.md b/docs/platform/guides/get-started/architecture.md similarity index 60% rename from src/en/guides/get-started/architecture.md rename to docs/platform/guides/get-started/architecture.md index 093ea48..dff0c6e 100644 --- a/src/en/guides/get-started/architecture.md +++ b/docs/platform/guides/get-started/architecture.md @@ -1,28 +1,28 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-architecture name: Architecture parent: guide-start weight: 12 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Architecture Let's first discuss some basic terminologies, those will be repeated many times throughout the whole docs. The below picture will help in describing the terminologies: -![architecture](images/architecture.png) +![architecture](../images/architecture.png) -### ACE -ACE is the central management cluster where we will deploy all the ui-components. Namely the `backend server(ace-platform-api)`, `kubedb-ui`, `cluster-ui`, `billing-ui`, `platform-ui`, `grafana-ui`, ingresses etc. This will be mainly used by the administrators & devops engineers. +### KubeDB Platform +KubeDB Platform is the central management cluster where we will deploy all the ui-components. Namely the `backend server(ace-platform-api)`, `kubedb-ui`, `cluster-ui`, `billing-ui`, `platform-ui`, `grafana-ui`, ingresses etc. This will be mainly used by the administrators & devops engineers. As this is the central point of management, we call it `Management cluster`. As all the UI-components installed in this, we sometimes call `UI cluster`. We also have native-integration of [OCM hub-spoke model](https://open-cluster-management.io/docs/concepts/architecture/). This is by-default enabled. This integration enables the cluster-manager to easily do similar changes(for example: installing a feature) centrally. -ACE is used as the hub of OCM mode. Thats why we call this `Hub cluster` too. +KubeDB Platform is used as the hub of OCM mode. Thats why we call this `Hub cluster` too. -The ACE cluster can be a single-node k3s cluster for staging or development. Or a full-fledged multi-node cluster for prod. +The KubeDB Platform cluster can be a single-node k3s cluster for staging or development. Or a full-fledged multi-node cluster for prod. The installer page on the `selfhost-ui` on appscode.com provides instructions for quickly setting up a K3s cluster to get started immediately. @@ -32,4 +32,4 @@ While importing, if someone make it a spoke, then cluster-manager-spoke features If you don't want to manage it from the hub, we can just import it as a general cluster. In that case, that auto-sync from hub will not happen. -Both ACE & DBaaS clusters can be of any vendors like AWS, Azure, Google Cloud etc. It can be an on-prem cluster too. \ No newline at end of file +Both KubeDB Platform & DBaaS clusters can be of any vendors like AWS, Azure, Google Cloud etc. It can be an on-prem cluster too. \ No newline at end of file diff --git a/src/en/guides/get-started/enable-features.md b/docs/platform/guides/get-started/enable-features.md similarity index 52% rename from src/en/guides/get-started/enable-features.md rename to docs/platform/guides/get-started/enable-features.md index 67010ef..773ccce 100644 --- a/src/en/guides/get-started/enable-features.md +++ b/docs/platform/guides/get-started/enable-features.md @@ -1,31 +1,26 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-start-features name: Enable Features parent: guide-start weight: 40 - home_menu: - identifier: home-start-features - name: Enable Features - parent: home-start - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # Enable Features -Once your cluster is imported, you can enable or disable AppsCode features based on your requirements. +Once your cluster is imported, you can enable or disable KubeDB Platform features based on your requirements. -1. Navigate to your Cluster Overview page, selecting your imported cluster in the [AppsCode Dashboard](https://console.appscode.com/). +1. Navigate to your Cluster Overview page, selecting your imported cluster in the [Platform Console](https://console.appscode.com/). 2. In the "Feature Sets" section, you'll find a list of FeatureSets associated with your cluster, along with their current status. 3. Click on any FeatureSet in the list to go to the FeatureSet Management page. 4. On the FeatureSet Management page, you can enable or disable specific features according to your needs. -Managing features in the AppsCode Dashboard is a straightforward process that allows you to tailor your AppsCode Dashboard to meet your cluster's requirements. Feel free to explore the features and capabilities offered by AppsCode. +Managing features in the Platform Console is a straightforward process that allows you to tailor your Platform Console to meet your cluster's requirements. Feel free to explore the features and capabilities offered by KubeDB Platform. For more advanced configurations and detailed documentation, check out the [Features in Details](../cluster-management/cluster-features.md). diff --git a/src/en/guides/get-started/images/architecture.png b/docs/platform/guides/get-started/images/architecture.png similarity index 100% rename from src/en/guides/get-started/images/architecture.png rename to docs/platform/guides/get-started/images/architecture.png diff --git a/src/en/guides/get-started/images/selfhost.png b/docs/platform/guides/get-started/images/selfhost.png similarity index 100% rename from src/en/guides/get-started/images/selfhost.png rename to docs/platform/guides/get-started/images/selfhost.png diff --git a/docs/platform/guides/get-started/manage-databases.md b/docs/platform/guides/get-started/manage-databases.md new file mode 100644 index 0000000..7d05f20 --- /dev/null +++ b/docs/platform/guides/get-started/manage-databases.md @@ -0,0 +1,14 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: guide-start-databases + name: Manage Databases + parent: guide-start + weight: 50 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- + + +# Manage Databases diff --git a/src/en/guides/get-started/register-login.md b/docs/platform/guides/get-started/register-login.md similarity index 51% rename from src/en/guides/get-started/register-login.md rename to docs/platform/guides/get-started/register-login.md index bca6935..19a45a4 100644 --- a/src/en/guides/get-started/register-login.md +++ b/docs/platform/guides/get-started/register-login.md @@ -1,30 +1,25 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-start-register name: Get Started (Register & Login) parent: guide-start weight: 10 - section_menu: - identifier: guide-start - name: Get Started - weight: 10 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- -# Get Started with AppsCode +# Get Started with KubeDB Platform ## Register and Login -Welcome to AppsCode! This is a new version Follow these quick steps to get started: +Welcome to KubeDB Platform! This is a new version Follow these quick steps to get started: ### 1. Register for an Account -1. Navigate to the [AppsCode Registration Page](https://accounts.appscode.com/user/sign_up). +1. Navigate to the [KubeDB Platform Registration Page](https://accounts.appscode.com/user/sign_up). 2. Provide the following information: - Username - Email @@ -38,20 +33,20 @@ Welcome to AppsCode! This is a new version Follow these quick steps to get start ### 2. Verify Your Email -After registration, check your email inbox for a verification email from AppsCode. +After registration, check your email inbox for a verification email from KubeDB Platform. 1. Open the verification email. 2. Click on the verification link to confirm your account. -### 3. Log In to AppsCode +### 3. Log In to KubeDB Platform -1. Once your account is verified, go to the [AppsCode Login Page](https://accounts.appscode.com/user/login). +1. Once your account is verified, go to the [KubeDB Platform Login Page](https://accounts.appscode.com/user/login). 2. Enter your registered `Username` or `Email Address` and `Password`. 3. Click on the `Sign In` button. 4. Optionally, you can sign in using your connected External accounts. -### 4. Explore AppsCode Dashboard +### 4. Explore Platform Console -You are now logged in to the AppsCode Dashboard! Take a moment to explore the features and navigate through the dashboard. +You are now logged in to the Platform Console! Take a moment to explore the features and navigate through the dashboard. -Congratulations! You have successfully registered, verified your email, and logged in to AppsCode. If you encounter any issues or have questions, refer to the [AppsCode Documentation](https://appscode.com/docs/) for detailed guidance. \ No newline at end of file +Congratulations! You have successfully registered, verified your email, and logged in to KubeDB Platform. If you encounter any issues or have questions, refer to the [KubeDB Platform Documentation](https://appscode.com/docs/) for detailed guidance. \ No newline at end of file diff --git a/src/en/guides/get-started/requirements.md b/docs/platform/guides/get-started/requirements.md similarity index 76% rename from src/en/guides/get-started/requirements.md rename to docs/platform/guides/get-started/requirements.md index 13a8e35..b1d9aa5 100644 --- a/src/en/guides/get-started/requirements.md +++ b/docs/platform/guides/get-started/requirements.md @@ -1,19 +1,19 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: guide-ace-requirements - name: ACE Requirements + name: KubeDB Platform Requirements parent: guide-start weight: 14 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- -# Requirements to deploy ACE -We will discuss the resources requirements. networking requirements & best practices for deploying your first ACE & DBaaS cluster. It is highly recommended to read the [architecture](https://appscode.com/docs/en/guides/get-started/architecture.html) doc first before continuing. +# Requirements to deploy KubeDB Platform +We will discuss the resources requirements. networking requirements & best practices for deploying your first KubeDB Platform & DBaaS cluster. It is highly recommended to read the [architecture](https://appscode.com/docs/en/guides/get-started/architecture.html) doc first before continuing. -## Requirements for ACE Cluster +## Requirements for KubeDB Platform Cluster ### 1. Resources **Minimum**: Single node with 4 cpu, 16 GB ram, 100 GB disk attached. A k3s cluster will be deployed on that VM. And then the ui-components will be installed. @@ -40,7 +40,7 @@ These are the required connectivities to everything work correctly: 3. 4222 - NATS.io port 4. 4224 - s3-proxy service port -Here is a sample video on how you can setup ACE: +Here is a sample video on how you can setup KubeDB Platform: ## Requirements for DBaaS Cluster @@ -52,7 +52,7 @@ Minimum: Kubernetes cluster with 3 worker nodes, each with 8- 16GB ram, PVC supp Note that, The largest node must be able to fit the largest DB Pod(in terms of CPU, memory). ### 2. Networking -Literally all the Networking requirements described for ACE are also applicable here, except the `Port Requiements` part. -Only one additional requirement here is that the DBaaS cluster should be accessible from the management/ACE cluster. +Literally all the Networking requirements described for KubeDB Platform are also applicable here, except the `Port Requiements` part. +Only one additional requirement here is that the DBaaS cluster should be accessible from the management/KubeDB Platform cluster. -You now have an overall idea on the requirements. So, [Login](https://appscode.com/docs/en/guides/get-started/register-login.html) into your account & get going with our [installer](https://appscode.com/selfhost/). Happy ACE! +You now have an overall idea on the requirements. So, [Login](https://appscode.com/docs/en/guides/get-started/register-login.html) into your account & get going with our [installer](https://appscode.com/selfhost/). Happy KubeDB Platform! diff --git a/docs/platform/guides/integrations/_index.md b/docs/platform/guides/integrations/_index.md new file mode 100644 index 0000000..b9d4adf --- /dev/null +++ b/docs/platform/guides/integrations/_index.md @@ -0,0 +1,14 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: integrations + name: Integrations + parent: guides + description: Integrate KubeDB Platform into your Kubernetes platform + icon: https://img.icons8.com/?size=100&id=80695&format=png&color=000000 + popular: true + weight: 40 +menu_name: docsplatform_{{.version}} +section_menu_id: guides +--- diff --git a/src/en/guides/integrations/images/ace-url.png b/docs/platform/guides/integrations/images/ace-url.png similarity index 100% rename from src/en/guides/integrations/images/ace-url.png rename to docs/platform/guides/integrations/images/ace-url.png diff --git a/src/en/guides/integrations/images/acer-proxy-installer.png b/docs/platform/guides/integrations/images/acer-proxy-installer.png similarity index 100% rename from src/en/guides/integrations/images/acer-proxy-installer.png rename to docs/platform/guides/integrations/images/acer-proxy-installer.png diff --git a/src/en/guides/integrations/images/create-repo.png b/docs/platform/guides/integrations/images/create-repo.png similarity index 100% rename from src/en/guides/integrations/images/create-repo.png rename to docs/platform/guides/integrations/images/create-repo.png diff --git a/src/en/guides/integrations/images/extensions.png b/docs/platform/guides/integrations/images/extensions.png similarity index 100% rename from src/en/guides/integrations/images/extensions.png rename to docs/platform/guides/integrations/images/extensions.png diff --git a/src/en/guides/integrations/images/install-ext.png b/docs/platform/guides/integrations/images/install-ext.png similarity index 100% rename from src/en/guides/integrations/images/install-ext.png rename to docs/platform/guides/integrations/images/install-ext.png diff --git a/src/en/guides/integrations/images/kubedb-in-list.png b/docs/platform/guides/integrations/images/kubedb-in-list.png similarity index 100% rename from src/en/guides/integrations/images/kubedb-in-list.png rename to docs/platform/guides/integrations/images/kubedb-in-list.png diff --git a/src/en/guides/integrations/images/kubedb-in-rancher.png b/docs/platform/guides/integrations/images/kubedb-in-rancher.png similarity index 100% rename from src/en/guides/integrations/images/kubedb-in-rancher.png rename to docs/platform/guides/integrations/images/kubedb-in-rancher.png diff --git a/src/en/guides/integrations/images/manage-repo.png b/docs/platform/guides/integrations/images/manage-repo.png similarity index 100% rename from src/en/guides/integrations/images/manage-repo.png rename to docs/platform/guides/integrations/images/manage-repo.png diff --git a/src/en/guides/integrations/images/organization-create.png b/docs/platform/guides/integrations/images/organization-create.png similarity index 100% rename from src/en/guides/integrations/images/organization-create.png rename to docs/platform/guides/integrations/images/organization-create.png diff --git a/src/en/guides/integrations/images/organization-settings-generate-installer.png b/docs/platform/guides/integrations/images/organization-settings-generate-installer.png similarity index 100% rename from src/en/guides/integrations/images/organization-settings-generate-installer.png rename to docs/platform/guides/integrations/images/organization-settings-generate-installer.png diff --git a/src/en/guides/integrations/images/organization-settings-sync-users.png b/docs/platform/guides/integrations/images/organization-settings-sync-users.png similarity index 100% rename from src/en/guides/integrations/images/organization-settings-sync-users.png rename to docs/platform/guides/integrations/images/organization-settings-sync-users.png diff --git a/src/en/guides/integrations/images/organization-settings.png b/docs/platform/guides/integrations/images/organization-settings.png similarity index 100% rename from src/en/guides/integrations/images/organization-settings.png rename to docs/platform/guides/integrations/images/organization-settings.png diff --git a/src/en/guides/integrations/images/repo-info.png b/docs/platform/guides/integrations/images/repo-info.png similarity index 100% rename from src/en/guides/integrations/images/repo-info.png rename to docs/platform/guides/integrations/images/repo-info.png diff --git a/src/en/guides/integrations/images/three-dot.png b/docs/platform/guides/integrations/images/three-dot.png similarity index 100% rename from src/en/guides/integrations/images/three-dot.png rename to docs/platform/guides/integrations/images/three-dot.png diff --git a/src/en/guides/integrations/rancher-extension.md b/docs/platform/guides/integrations/rancher-extension.md similarity index 63% rename from src/en/guides/integrations/rancher-extension.md rename to docs/platform/guides/integrations/rancher-extension.md index 12a64b9..1eae0c6 100644 --- a/src/en/guides/integrations/rancher-extension.md +++ b/docs/platform/guides/integrations/rancher-extension.md @@ -1,23 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: rancher-extension name: KubeDB Rancher Extension parent: integrations weight: 50 - home_menu: - identifier: home-integrations-rancher-extension - name: KubeDB Rancher Extension - parent: home-integrations - weight: 50 - section_menu: - identifier: integrations - name: KubeDB rancher-extension - weight: 20 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- # KubeDB Rancher Extension @@ -34,39 +24,39 @@ Before proceeding, make sure you have: - A Rancher setup with access to the **Local** cluster. - An account on [appscode.com](https://appscode.com/). -- The [ACE](https://appscode.com/docs/en/selfhost-setup/) platform deployed on your Rancher cluster. +- The [KubeDB Platform](https://appscode.com/docs/en/selfhost-setup/) deployed on your Rancher cluster. --- ## 2. Deploying the KubeDB Rancher Extension -### Step 1 – Deploy ACE +### Step 1 – Deploy KubeDB Platform 1. Create an account at [appscode.com](https://appscode.com/). -2. Follow the [self-hosting ACE guide](https://appscode.com/docs/en/selfhost-setup/) to deploy ACE on your Rancher cluster. - You can also watch this video tutorial for step-by-step instructions: [Self-Hosting ACE Video Guide](https://www.youtube.com/watch?v=1diG8qq73f4&list=PLoiT1Gv2KR1iqWFGkCozbLqYe31QMsQcX&index=2) +2. Follow the [self-hosting KubeDB Platform guide](https://appscode.com/docs/en/selfhost-setup/) to deploy KubeDB Platform on your Rancher cluster. + You can also watch this video tutorial for step-by-step instructions: [Self-Hosting KubeDB Platform Video Guide](https://www.youtube.com/watch?v=1diG8qq73f4&list=PLoiT1Gv2KR1iqWFGkCozbLqYe31QMsQcX&index=2) --- -### Step 2 – Create a Rancher-Type Organization in ACE -1. Visit your ACE URL and log in with your **admin account**. ![ACE URL](./images/ace-url.png) +### Step 2 – Create a Rancher-Type Organization in KubeDB Platform +1. Visit your KubeDB Platform URL and log in with your **admin account**. ![KubeDB Platform URL](../images/ace-url.png) 2. Navigate to **Organizations** and create a new organization with the type set to **Rancher**. 3. Provide a valid **Sync Token**. - > The Sync Token is used to synchronize Rancher users into the ACE platform. + > The Sync Token is used to synchronize Rancher users into the KubeDB Platform. -![Create Organization](./images/organization-create.png) +![Create Organization](../images/organization-create.png) --- ### Step 3 – Sync Rancher Users -1. Go to **Organization Settings → Rancher Extension**. ![Organization Settings](./images/organization-settings.png) -2. Click **Sync User** to import Rancher users into ACE. ![Sync User](./images/organization-settings-sync-users.png) +1. Go to **Organization Settings → Rancher Extension**. ![Organization Settings](../images/organization-settings.png) +2. Click **Sync User** to import Rancher users into KubeDB Platform. ![Sync User](../images/organization-settings-sync-users.png) --- ### Step 4 – Install the Rancher Proxy in Local Cluster -1. Click **Generate Rancher Proxy Installer** to generate the Rancher proxy installation command. ![Generate Rancher Proxy Installer](images/organization-settings-generate-installer.png) -2. First, Click the **Download** button to download the CA. We are passing it by --set-file in helm command. Then Copy the generated Helm installation command. ![Rancher Proxy Installer](./images/acer-proxy-installer.png) +1. Click **Generate Rancher Proxy Installer** to generate the Rancher proxy installation command. ![Generate Rancher Proxy Installer](../images/organization-settings-generate-installer.png) +2. First, Click the **Download** button to download the CA. We are passing it by --set-file in helm command. Then Copy the generated Helm installation command. ![Rancher Proxy Installer](../images/acer-proxy-installer.png) 3. Open a terminal connected to your Rancher **Local** cluster. 4. Run the copied Helm command to install the Rancher proxy. @@ -87,37 +77,37 @@ Follow these steps to install the KubeDB extension in Rancher: #### 1. Open Extensions Page In your Rancher UI, click on **Extensions**. - ![Extensions](./images/extensions.png) + ![Extensions](../images/extensions.png) #### 2. Open Managed Repositories In the list of available extensions, click the **three dots** menu (as shown below) and select **Managed Repositories**. - ![Three Dot](./images/three-dot.png) - ![Manage Repo](./images/manage-repo.png) + ![Three Dot](../images/three-dot.png) + ![Manage Repo](../images/manage-repo.png) #### 3. Create a New Repository Click the **Create** button. - ![Create Repo](./images/create-repo.png) + ![Create Repo](../images/create-repo.png) #### 4. Enter Repository Details Fill in the required fields as shown in the screenshot, then click **Create**. - ![Repo Info](./images/repo-info.png) + ![Repo Info](../images/repo-info.png) #### 5. Locate the KubeDB Extension After adding the repository, you will see **KubeDB** in the list of available extensions. - ![KubeDB Extension](./images/kubedb-in-list.png) + ![KubeDB Extension](../images/kubedb-in-list.png) #### 6. Install the Extension Click **Install** to add the KubeDB extension to Rancher. - ![Install KubeDB](./images/install-ext.png) + ![Install KubeDB](../images/install-ext.png) #### 7. Access KubeDB in a Cluster Open any cluster in Rancher — you will now see a **KubeDB** dropdown in the sidebar. From here, you can deploy, monitor, and manage your databases directly from the Rancher UI. - ![KubeDB In Rancher](./images/kubedb-in-rancher.png) + ![KubeDB In Rancher](../images/kubedb-in-rancher.png) --- ✅ Installation Complete! You can now deploy and manage your databases directly from the KubeDB menu in your cluster. -NB: Import your Rancher cluster into the ACE UI under the Rancher organization you created earlier before using the Rancher extension, or it won’t work. +NB: Import your Rancher cluster into the KubeDB Platform UI under the Rancher organization you created earlier before using the Rancher extension, or it won’t work. diff --git a/src/en/guides/license-management/_index.md b/docs/platform/guides/license-management/_index.md similarity index 66% rename from src/en/guides/license-management/_index.md rename to docs/platform/guides/license-management/_index.md index ddb5d41..6b180b9 100644 --- a/src/en/guides/license-management/_index.md +++ b/docs/platform/guides/license-management/_index.md @@ -1,13 +1,14 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: license-management name: License Management + parent: guides description: License Management for AppsCode's products icon: https://img.icons8.com/?size=100&id=80695&format=png&color=000000 popular: true weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- diff --git a/src/en/guides/license-management/contract.md b/docs/platform/guides/license-management/contract.md similarity index 82% rename from src/en/guides/license-management/contract.md rename to docs/platform/guides/license-management/contract.md index 8e59787..4a38541 100644 --- a/src/en/guides/license-management/contract.md +++ b/docs/platform/guides/license-management/contract.md @@ -1,34 +1,29 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: license-management-contract name: Contract parent: license-management weight: 40 - home_menu: - identifier: license-management-contract - name: Contract - parent: home-license - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- ## Contract A contract is basically a digital agreement of the licensing relationship between AppsCode and its customers. Each contract represents a formal agreement for the use of -specific AppsCode products, such as KubeDB or platform-enterprise, with defined validity periods and feature sets. +specific KubeDB Platform products, such as KubeDB or platform-enterprise, with defined validity periods and feature sets. The contract management system within the Billing Console provides comprehensive tools for creating, modifying, and monitoring contracts. Administrators can specify product details, validity periods, and associated features, ensuring that customers have access to the appropriate resources for their needs. -![contract-details](./images/contract-details.png) +![contract-details](../images/contract-details.png) Key information typically contained within a contract includes: -- **Product:** The specific AppsCode product or bundle covered by the contract (e.g., `kubedb-enterprise`, `platform-enterprise` etc.). +- **Product:** The specific KubeDB Platform product or bundle covered by the contract (e.g., `kubedb-enterprise`, `platform-enterprise` etc.). - **Org/User:** The organization or user account to which the contract is assigned. - **Status:** The current state of the contract (e.g., active, expired, revoked), managed by AppsCode administrators. - **Start Date:** The date from which the contract, and thus the license, becomes valid (not_before). @@ -39,7 +34,7 @@ Contracts ensure that product usage is aligned with the purchased entitlements, ### Managing Cluster Associations with Contracts -For AppsCode products to operate with a valid license on a Kubernetes cluster, customers must explicitly associate that cluster with one or more active contracts +For KubeDB Platform products to operate with a valid license on a Kubernetes cluster, customers must explicitly associate that cluster with one or more active contracts made available to them in the Billing Console. This capability is a key `self-service` feature, allowing customers to dynamically manage which of their Kubernetes environments are licensed under a given contract, within the overall terms and capacity of that agreement. @@ -48,12 +43,12 @@ environments are licensed under a given contract, within the overall terms and c To add a Kubernetes cluster to a contract and enable license validation within that environment, customers need to perform the following steps: 1. **Navigate to Contract Details:** Access the specific contract detail page within the Billing Console. -2. **Initiate Cluster Addition:** Locate the `Cluster` section on the contract page and `click on` the `Add Cluster` button. ![Add Cluster](./images/add-cluster-button-rectangle.png) +2. **Initiate Cluster Addition:** Locate the `Cluster` section on the contract page and `click on` the `Add Cluster` button. ![Add Cluster](../images/add-cluster-button-rectangle.png) 3. **Provide Cluster Information:** A dialog box will appear, prompting for cluster details. Customers need to provide: - **Cluster ID:** The unique identifier of the Kubernetes cluster. This can be retrieved using the command: `kubectl get ns kube-system -o=jsonpath='{.metadata.uid}`. - - **Cluster Name (optional):** A descriptive name, such as `dev-us-east-1` or `prod-us-east-2`, for easy identification within the console. Customers can enter multiple `ClusterID` and `ClusterName` pairs, each on a new line, separated by a space. ![Add Cluster Information](./images/add-cluster-information.png) -4. **Preview and Confirm:** After entering the details, selecting `Preview` will display the entered cluster(s) for verification. Once confirmed, click `Add` to finalize the association. ![Add Cluster Information](./images/add-cluster-preview.png) -5. **View Associated Clusters:** Upon successful addition, the cluster(s) will appear in the `Cluster` section of the contract's detail page, listed by their `Cluster ID` and `Name`. ![Add Cluster Information](./images/add-cluster-confirm.png) + - **Cluster Name (optional):** A descriptive name, such as `dev-us-east-1` or `prod-us-east-2`, for easy identification within the console. Customers can enter multiple `ClusterID` and `ClusterName` pairs, each on a new line, separated by a space. ![Add Cluster Information](../images/add-cluster-information.png) +4. **Preview and Confirm:** After entering the details, selecting `Preview` will display the entered cluster(s) for verification. Once confirmed, click `Add` to finalize the association. ![Add Cluster Information](../images/add-cluster-preview.png) +5. **View Associated Clusters:** Upon successful addition, the cluster(s) will appear in the `Cluster` section of the contract's detail page, listed by their `Cluster ID` and `Name`. ![Add Cluster Information](../images/add-cluster-confirm.png) ### Removing Clusters from Contracts @@ -61,11 +56,11 @@ To remove a cluster's authorization to use licensed products under a specific co 1. **Navigate to Contract Details:** Access the specific contract detail page within the Billing Console. 2. **Locate and Remove:** In the `Cluster` section, find the cluster in the associated clusters list that needs to be removed. -3. **Confirm Removal:** Select the `Remove` option (often represented by a `trash` icon) next to the cluster and confirm the action when prompted. ![Cluster Delete](./images/cluster-delete.png) +3. **Confirm Removal:** Select the `Remove` option (often represented by a `trash` icon) next to the cluster and confirm the action when prompted. ![Cluster Delete](../images/cluster-delete.png) -After removal, the cluster will no longer be authorized to use the licensed products associated with that contract. Any installed AppsCode products on that cluster may revert to their community or limited functionality, depending on their licensing model. +After removal, the cluster will no longer be authorized to use the licensed products associated with that contract. Any installed KubeDB Platform products on that cluster may revert to their community or limited functionality, depending on their licensing model. -**Audit Trail:** The Billing Console maintains an audit trail of changes to cluster associations, logging which user performed the action and when. This feature is vital for tracking, security, and troubleshooting. ![Audit Trail](./images/audits.png) +**Audit Trail:** The Billing Console maintains an audit trail of changes to cluster associations, logging which user performed the action and when. This feature is vital for tracking, security, and troubleshooting. ![Audit Trail](../images/audits.png) ### Cluster Contract Relationship @@ -91,6 +86,6 @@ The operational mode of a contract (`online` or `offline`) is a critical setting - When a contract is configured as `offline` by AppsCode's administrators, the `license-proxyserver` installer generated by the customer will include licenses covering the contract's entire duration. - These licenses do not require periodic online `validation` or `rotation`. - Any changes to the contract term requires the customer to generate & deploy a new offline License Proxy Server installer. -- In offline contract you can download the license file from the contract details page. ![Download Offline License](./images/download-offline-license.png) +- In offline contract you can download the license file from the contract details page. ![Download Offline License](../images/download-offline-license.png) > The Billing Console enables customers to generate the appropriate License Proxy Server installer based on the mode of their contract. diff --git a/src/en/guides/license-management/images/add-cluster-button-rectangle.png b/docs/platform/guides/license-management/images/add-cluster-button-rectangle.png similarity index 100% rename from src/en/guides/license-management/images/add-cluster-button-rectangle.png rename to docs/platform/guides/license-management/images/add-cluster-button-rectangle.png diff --git a/src/en/guides/license-management/images/add-cluster-confirm.png b/docs/platform/guides/license-management/images/add-cluster-confirm.png similarity index 100% rename from src/en/guides/license-management/images/add-cluster-confirm.png rename to docs/platform/guides/license-management/images/add-cluster-confirm.png diff --git a/src/en/guides/license-management/images/add-cluster-information.png b/docs/platform/guides/license-management/images/add-cluster-information.png similarity index 100% rename from src/en/guides/license-management/images/add-cluster-information.png rename to docs/platform/guides/license-management/images/add-cluster-information.png diff --git a/src/en/guides/license-management/images/add-cluster-preview.png b/docs/platform/guides/license-management/images/add-cluster-preview.png similarity index 100% rename from src/en/guides/license-management/images/add-cluster-preview.png rename to docs/platform/guides/license-management/images/add-cluster-preview.png diff --git a/src/en/guides/license-management/images/audits.png b/docs/platform/guides/license-management/images/audits.png similarity index 100% rename from src/en/guides/license-management/images/audits.png rename to docs/platform/guides/license-management/images/audits.png diff --git a/src/en/guides/license-management/images/cluster-delete.png b/docs/platform/guides/license-management/images/cluster-delete.png similarity index 100% rename from src/en/guides/license-management/images/cluster-delete.png rename to docs/platform/guides/license-management/images/cluster-delete.png diff --git a/src/en/guides/license-management/images/contract-details.png b/docs/platform/guides/license-management/images/contract-details.png similarity index 100% rename from src/en/guides/license-management/images/contract-details.png rename to docs/platform/guides/license-management/images/contract-details.png diff --git a/src/en/guides/license-management/images/download-offline-license.png b/docs/platform/guides/license-management/images/download-offline-license.png similarity index 100% rename from src/en/guides/license-management/images/download-offline-license.png rename to docs/platform/guides/license-management/images/download-offline-license.png diff --git a/src/en/guides/license-management/images/home-billing-console.png b/docs/platform/guides/license-management/images/home-billing-console.png similarity index 100% rename from src/en/guides/license-management/images/home-billing-console.png rename to docs/platform/guides/license-management/images/home-billing-console.png diff --git a/src/en/guides/license-management/images/license-proxy-apiservice-yaml-status.png b/docs/platform/guides/license-management/images/license-proxy-apiservice-yaml-status.png similarity index 100% rename from src/en/guides/license-management/images/license-proxy-apiservice-yaml-status.png rename to docs/platform/guides/license-management/images/license-proxy-apiservice-yaml-status.png diff --git a/src/en/guides/license-management/images/license-proxy-server-svc-check.png b/docs/platform/guides/license-management/images/license-proxy-server-svc-check.png similarity index 100% rename from src/en/guides/license-management/images/license-proxy-server-svc-check.png rename to docs/platform/guides/license-management/images/license-proxy-server-svc-check.png diff --git a/src/en/guides/license-management/images/license-status-free-contract.png b/docs/platform/guides/license-management/images/license-status-free-contract.png similarity index 100% rename from src/en/guides/license-management/images/license-status-free-contract.png rename to docs/platform/guides/license-management/images/license-status-free-contract.png diff --git a/src/en/guides/license-management/images/license-status-paid-contract.png b/docs/platform/guides/license-management/images/license-status-paid-contract.png similarity index 100% rename from src/en/guides/license-management/images/license-status-paid-contract.png rename to docs/platform/guides/license-management/images/license-status-paid-contract.png diff --git a/src/en/guides/license-management/images/offline-installer-cluster-selection.png b/docs/platform/guides/license-management/images/offline-installer-cluster-selection.png similarity index 100% rename from src/en/guides/license-management/images/offline-installer-cluster-selection.png rename to docs/platform/guides/license-management/images/offline-installer-cluster-selection.png diff --git a/src/en/guides/license-management/images/offline-installer-contract-selection.png b/docs/platform/guides/license-management/images/offline-installer-contract-selection.png similarity index 100% rename from src/en/guides/license-management/images/offline-installer-contract-selection.png rename to docs/platform/guides/license-management/images/offline-installer-contract-selection.png diff --git a/src/en/guides/license-management/images/offline-installer-scripts.png b/docs/platform/guides/license-management/images/offline-installer-scripts.png similarity index 100% rename from src/en/guides/license-management/images/offline-installer-scripts.png rename to docs/platform/guides/license-management/images/offline-installer-scripts.png diff --git a/src/en/guides/license-management/images/online-installer-scripts.png b/docs/platform/guides/license-management/images/online-installer-scripts.png similarity index 100% rename from src/en/guides/license-management/images/online-installer-scripts.png rename to docs/platform/guides/license-management/images/online-installer-scripts.png diff --git a/src/en/guides/license-management/images/online-installer.png b/docs/platform/guides/license-management/images/online-installer.png similarity index 100% rename from src/en/guides/license-management/images/online-installer.png rename to docs/platform/guides/license-management/images/online-installer.png diff --git a/src/en/guides/license-management/license-proxyserver.md b/docs/platform/guides/license-management/license-proxyserver.md similarity index 82% rename from src/en/guides/license-management/license-proxyserver.md rename to docs/platform/guides/license-management/license-proxyserver.md index e83bcb4..7bd0944 100644 --- a/src/en/guides/license-management/license-proxyserver.md +++ b/docs/platform/guides/license-management/license-proxyserver.md @@ -1,36 +1,31 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: license-management-license-proxyserver name: License Proxy Server parent: license-management weight: 40 - home_menu: - identifier: license-management-license-proxyserver - name: License Proxy Server - parent: home-license - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- ## The License Proxy Server -The `license-proxyserver` is a critical component of the AppsCode License Management System, deployed within customer Kubernetes clusters to validate and apply licenses to AppsCode products. +The `license-proxyserver` is a critical component of the AppsCode License Management System, deployed within customer Kubernetes clusters to validate and apply licenses to KubeDB Platform products. ### 1. Purpose and Architecture The primary purpose of the `license-proxyserver` is to: -- **Serve Licenses:** Provide valid license tokens to AppsCode products (e.g., KubeDB, KubeStash, KubeVault operators and provisioners) running within the same Kubernetes cluster. +- **Serve Licenses:** Provide valid license tokens to KubeDB Platform products (e.g., KubeDB, KubeStash, KubeVault operators and provisioners) running within the same Kubernetes cluster. - **Validate Licenses:** - In **Online Mode**, The `license-proxyserver` connects periodically to the Billing Server to validate and rotate licenses. This mode provides automatic license updates and ensures that changes to contract status are reflected promptly in the customer environment. - In **Offline Mode**, The `license-proxyserver` operates without connecting to the Billing Server. Instead, it uses `pre-generated` licenses embedded in the installer until the embedded licenses are expired. This mode is ideal for `air-gapped` environments or scenarios where external connections are restricted. -- **Centralized License Management within the Cluster:** Simplifies license management for multiple AppsCode products within a single cluster by acting as a common point for license queries. +- **Centralized License Management within the Cluster:** Simplifies license management for multiple KubeDB Platform products within a single cluster by acting as a common point for license queries. #### Architectural Flow -1. **AppsCode Product Request:** When an AppsCode product (e.g., KubeDB operator) starts or performs a licensed operation, it requests a license from the License Proxy Server running in its cluster. +1. **KubeDB Platform Product Request:** When a KubeDB Platform product (e.g., KubeDB operator) starts or performs a licensed operation, it requests a license from the License Proxy Server running in its cluster. 2. **License Proxy Server Response:** - **Online Mode:** If the `license-proxyserver` has a valid, cached license, it provides it immediately. If the license is nearing its expiration, has already expired, or is otherwise invalid, the `license-proxyserver` attempts to contact AppsCode `Billing Backend` to fetch a new license. This new license is based on the active contracts associated with that specific cluster. - **Offline Mode:** The `license-proxyserver` primarily uses the pre-generated licenses embedded in its installer. It operates without connecting to the Billing Console for routine validation. However, if all embedded licenses are found to be expired or have been revoked, the `license-proxyserver` will, as a fallback, attempt to fetch new licenses from the AppsCode billing backend. This means that even in air-gapped environments, a temporary or controlled outbound connection might be necessary for license renewal or recovery if the embedded licenses become invalid over time. @@ -50,8 +45,8 @@ Online mode is suitable for clusters with reliable internet connectivity, allowi ##### Installer Generation for Online Mode -When the `Online` option is selected for installer generation in the Billing Console, the system prepares a standard `license-proxyserver` installer. ![Online Installer](./images/online-installer.png) -This installer is typically provided as a `Helm` commands or `YAML files`, as seen in the `Scripts` pop-up. ![Online Installer Scripts](./images/online-installer-scripts.png) +When the `Online` option is selected for installer generation in the Billing Console, the system prepares a standard `license-proxyserver` installer. ![Online Installer](../images/online-installer.png) +This installer is typically provided as a `Helm` commands or `YAML files`, as seen in the `Scripts` pop-up. ![Online Installer Scripts](../images/online-installer-scripts.png) The generated installer configures the license-proxyserver to communicate with the AppsCode licensing backend. The cluster where this `license-proxyserver` is installed must be `associated with one or more online contracts` in the Billing Console for successful license acquisition. Key configurations embedded in the installer include: @@ -85,9 +80,9 @@ designated as `offline` type by an [AppsCode administrators](https://AppsCode.co Generating an installer for offline mode is a multi-step process, designed to embed specific licenses for a chosen cluster: 1. **Select Offline Mode:** In the `License Proxy Server` section of the Billing Console, choose the `Offline` option. -2. **Identify Target Cluster:** The console will then display a list of clusters that are associated with at least one `offline` contract, along with their `Name`, `UID`, and the `count` of Associated Contracts (e.g., `doc-preview` with `6 Contracts`, `prod-us-east-1` with `2 Contracts`). The administrator must select the specific cluster for which the offline installer is to be generated. ![Offline Installer Cluster Selection](./images/offline-installer-cluster-selection.png) Click on the `Associated Contracts` button next to the desired cluster to embed the licenses against the selected contracts.

-3. **Select Contracts for Embedding:** Once a cluster is chosen, the `Billing Console` shows all offline contracts currently linked to the selected cluster, allowing the administrator to choose which of these contracts' licenses should be embedded into the `license-proxyserver` installer. This provides granular control, especially if a cluster is associated with multiple offline contracts for different products or terms. ![Offline Installer Contract Selection](./images/offline-installer-contract-selection.png) After making the selections, click the `Generate License Proxy Installer` button within this pop-up to proceed.

-4. **Generate the Installer Bundle:** Upon clicking `Generate License Proxy Installer`, the Billing Console compiles the installer package. This package includes the `license-proxyserver` deployment manifests (typically `Helm` commands or `YAML` files) and the actual license data for the selected contracts. This license data is encoded (e.g., as a `Base64` string) and embedded directly within the configuration, as indicated by parameters like `-set encodeLicenses` in the generated scripts. ![Offline Installer Scripts](./images/offline-installer-scripts.png) The generated installer is then ready for download and deployment to the target cluster. +2. **Identify Target Cluster:** The console will then display a list of clusters that are associated with at least one `offline` contract, along with their `Name`, `UID`, and the `count` of Associated Contracts (e.g., `doc-preview` with `6 Contracts`, `prod-us-east-1` with `2 Contracts`). The administrator must select the specific cluster for which the offline installer is to be generated. ![Offline Installer Cluster Selection](../images/offline-installer-cluster-selection.png) Click on the `Associated Contracts` button next to the desired cluster to embed the licenses against the selected contracts.

+3. **Select Contracts for Embedding:** Once a cluster is chosen, the `Billing Console` shows all offline contracts currently linked to the selected cluster, allowing the administrator to choose which of these contracts' licenses should be embedded into the `license-proxyserver` installer. This provides granular control, especially if a cluster is associated with multiple offline contracts for different products or terms. ![Offline Installer Contract Selection](../images/offline-installer-contract-selection.png) After making the selections, click the `Generate License Proxy Installer` button within this pop-up to proceed.

+4. **Generate the Installer Bundle:** Upon clicking `Generate License Proxy Installer`, the Billing Console compiles the installer package. This package includes the `license-proxyserver` deployment manifests (typically `Helm` commands or `YAML` files) and the actual license data for the selected contracts. This license data is encoded (e.g., as a `Base64` string) and embedded directly within the configuration, as indicated by parameters like `-set encodeLicenses` in the generated scripts. ![Offline Installer Scripts](../images/offline-installer-scripts.png) The generated installer is then ready for download and deployment to the target cluster. #### License Characteristics in Offline Mode @@ -100,7 +95,7 @@ Generating an installer for offline mode is a multi-step process, designed to em ### 3. Verifying Product License Status -After the `license-proxyserver` is installed and AppsCode products are deployed, administrators can verify the license status directly within the Kubernetes cluster using `kubectl`. +After the `license-proxyserver` is installed and KubeDB Platform products are deployed, administrators can verify the license status directly within the Kubernetes cluster using `kubectl`. #### Using kubectl for License Verification @@ -110,17 +105,17 @@ The `license-proxyserver` component functions as an `extended API server` within kubectl get licensestatus ``` -This command will list the status of licenses being consumed by various AppsCode products within the cluster. +This command will list the status of licenses being consumed by various KubeDB Platform products within the cluster. ##### Interpreting licensestatus Output The output of `kubectl get licensestatus` provides several key pieces of information for each licensed component: - **ID:** A unique identifier for this specific license. -- **PRODUCT:** The name of the AppsCode product that this license status pertains to (e.g., `kubedb`, `kubestash`, `platform` etc.). -- **REQUESTER:** The specific `component` or `service account` within the cluster that requested and is utilizing this license. This helps pinpoint which part of an AppsCode product installation is covered by this license entry (e.g., `system:serviceaccount:kubedb:kubedb-kubedb-provisioner`). +- **PRODUCT:** The name of the KubeDB Platform product that this license status pertains to (e.g., `kubedb`, `kubestash`, `platform` etc.). +- **REQUESTER:** The specific `component` or `service account` within the cluster that requested and is utilizing this license. This helps pinpoint which part of a KubeDB Platform product installation is covered by this license entry (e.g., `system:serviceaccount:kubedb:kubedb-kubedb-provisioner`). - **CONTRACT:** This field indicates the identifier of the AppsCode contract which is utilized providing the license. There are two scenarios on how this field is populated:

- - If a cluster is not explicitly associated with any contract in the Billing Console, AppsCode automatically provides a `1-month (30-day)` free trial license. In such cases, the `CONTRACT` column in the `licensestatus` output will display `0`. This temporary license is particularly helpful for customers during initial testing and evaluation periods. Each cluster is eligible for this free trial only once. ![Free Trial License](./images/license-status-free-contract.png) - - Otherwise, if a cluster is associated with a specific contract, this column will display the actual `CONTRACT ID` from the Billing Console, allowing administrators to `cross-reference` the license with the detailed contract terms. ![Paid License](./images/license-status-paid-contract.png) + - If a cluster is not explicitly associated with any contract in the Billing Console, AppsCode automatically provides a `1-month (30-day)` free trial license. In such cases, the `CONTRACT` column in the `licensestatus` output will display `0`. This temporary license is particularly helpful for customers during initial testing and evaluation periods. Each cluster is eligible for this free trial only once. ![Free Trial License](../images/license-status-free-contract.png) + - Otherwise, if a cluster is associated with a specific contract, this column will display the actual `CONTRACT ID` from the Billing Console, allowing administrators to `cross-reference` the license with the detailed contract terms. ![Paid License](../images/license-status-paid-contract.png) - **VALID:** This field indicates the remaining validity period for the current license instance. - **ROTATES:** This field indicates when the license is next scheduled for rotation or renewal. diff --git a/src/en/guides/license-management/overview.md b/docs/platform/guides/license-management/overview.md similarity index 75% rename from src/en/guides/license-management/overview.md rename to docs/platform/guides/license-management/overview.md index d8520a3..935f673 100644 --- a/src/en/guides/license-management/overview.md +++ b/docs/platform/guides/license-management/overview.md @@ -1,33 +1,22 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: license-management-overview name: Overview parent: license-management weight: 10 - home_menu: - identifier: license-management-overview - name: Overview - parent: home-license - weight: 10 - section_menu: - identifier: license-management - name: License Management - weight: 30 - parent: guides -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- - ## Overview
The AppsCode License Management System simplifies managing product licenses for Kubernetes deployments. It offers a centralized billing console for efficient license administration and secure validation, supporting both online and offline modes to suit various needs. This guide explores the Billing Console, covering its key components, contract management, license-proxyserver deployment, and troubleshooting tips for common issues. By the end, you’ll know how to effectively manage licenses with this tool. -**Target Audience:** This guide is intended for `administrators` and `personnel` responsible for managing AppsCode's product licenses. +**Target Audience:** This guide is intended for `administrators` and `personnel` responsible for managing KubeDB Platform product licenses. ## AppsCode Billing Console
@@ -35,13 +24,13 @@ A centralized web-based platform serving as the primary interface for licensing While AppsCode administrators are responsible for the core lifecycle of contracts—including their `creation`, `modification`, `revocation`, and `extension`—customers retain the ability to perform specific operations pertinent to the licensing lifecycle. This includes `associating` and `disassociating` their Kubernetes clusters with allocated contracts, generating `installers` for the `license-proxyserver` through the console, and track the `clusters` for which licenses have been issued. -![home-billing-console](images/home-billing-console.png) +![home-billing-console](../images/home-billing-console.png) ### Key Components -- **Contracts:** Digital agreements, typically established by [AppsCode administrators](https://appsCode.com/contact/) within the Billing Console, that define the terms of AppsCode's product (e.g., ACE, KubeDB, KubeStash, KubeVault etc.) usage. This includes the specific AppsCode products which can be licensed, the duration of the contract, applicable features, and the clusters authorized to use these licenses. Contracts ensure that usage aligns with legal and financial terms, providing a foundation for all subsequent actions in the console. Contracts can be configured for either online or offline license validation. +- **Contracts:** Digital agreements, typically established by [AppsCode administrators](https://appsCode.com/contact/) within the Billing Console, that define the terms of AppsCode's product (e.g., KubeDB Platform, KubeDB, KubeStash, KubeVault etc.) usage. This includes the specific AppsCode products which can be licensed, the duration of the contract, applicable features, and the clusters authorized to use these licenses. Contracts ensure that usage aligns with legal and financial terms, providing a foundation for all subsequent actions in the console. Contracts can be configured for either online or offline license validation.

-- **Licensed cluster:** The `Licensed Cluster` section within the AppsCode Billing Console offers a comprehensive overview and detailed management capabilities for Kubernetes clusters that have been issued AppsCode product licenses. This component is pivotal for administrators to monitor the cluster(s) `licences` and `events` of licensed products across their infrastructure. +- **Licensed cluster:** The `Licensed Cluster` section within the AppsCode Billing Console offers a comprehensive overview and detailed management capabilities for Kubernetes clusters that have been issued KubeDB Platform product licenses. This component is pivotal for administrators to monitor the cluster(s) `licences` and `events` of licensed products across their infrastructure.

- **License Proxy Server:** A lightweight in-cluster component that validates licenses, either by connecting to AppsCode servers (online) or using preloaded licenses (offline). The console generates customized installers for deployment. Depending on the contract type (`online` or `offline`), it either periodically refreshes and validates licenses with AppsCode's central licensing servers or uses static preloaded licenses embedded during deployment for the full contract duration. diff --git a/src/en/guides/license-management/troubleshoots.md b/docs/platform/guides/license-management/troubleshoots.md similarity index 97% rename from src/en/guides/license-management/troubleshoots.md rename to docs/platform/guides/license-management/troubleshoots.md index 3317fb3..2c8e2e7 100644 --- a/src/en/guides/license-management/troubleshoots.md +++ b/docs/platform/guides/license-management/troubleshoots.md @@ -1,18 +1,13 @@ --- -layout: 'guide' +layout: docs menu: - docs_menu: + docsplatform_{{.version}}: identifier: license-management-license-proxyserver-troubleshoot name: Troubleshoot parent: license-management weight: 40 - home_menu: - identifier: license-management-license-proxyserver-troubleshoot - name: Troubleshoot - parent: home-license - weight: 40 -menu_name: docs_menu -section_menu: guides +menu_name: docsplatform_{{.version}} +section_menu_id: guides --- ## Troubleshooting License Proxy Server Issues @@ -26,7 +21,7 @@ kubectl get apiservice v1alpha1.proxyserver.licenses.AppsCode.com -o yaml ``` **Interpretation:** -Examine the `status.conditions` section of the output. Look for a condition with `type: Available` and `status: "True"`. ![APIService Status](./images/license-proxy-apiservice-yaml-status.png) +Examine the `status.conditions` section of the output. Look for a condition with `type: Available` and `status: "True"`. ![APIService Status](../images/license-proxy-apiservice-yaml-status.png) This indicates that the Kubernetes API aggregation layer is properly configured to route requests to the `license-proxyserver`. If this condition is `"False"` or `missing`, it suggests an issue with the APIService registration or the `license-proxyserver's` readiness. diff --git a/docs/platform/selfhost-setup/README.md b/docs/platform/selfhost-setup/README.md new file mode 100644 index 0000000..a894c5e --- /dev/null +++ b/docs/platform/selfhost-setup/README.md @@ -0,0 +1,37 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-setup-readme + name: Selfhost Setup + parent: selfhost-setup + weight: -1 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +url: /docs/platform/{{.version}}/selfhost-setup/ +aliases: +- /docs/platform/{{.version}}/selfhost-setup/README/ +--- + +# Host KubeDB Platform as Your Own + +Welcome to KubeDB Platform's Self-Hosted deployment! Whether you're looking for a quick trial in "Self Hosted Demo" mode or gearing up for a production-ready environment (`Self Hosted Production`), you're in control. + +Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers. + +![Installer Home](images/installer-home.png) +
+ +
+ +Click on the `Create New Installer` button to get started. You can either choose deployment type `Self Hosted Demo` or `Self Hosted Production`. Provide the required data and click `Done` button to generate the installer. Upon generation of the installer, you will get the documentation how to host KubeDB Platform Server on your own. +
+ +
+ +To get detailed documentation on `Self Hosted Demo` installer, head over to [Demo Deployment](install/selfhosted-demo.md). +
+ +
+ +To get detailed documentation on `Self Hosted Production` installer, head over to [Production Deployment](install/selfhosted-production.md). diff --git a/docs/platform/selfhost-setup/_index.md b/docs/platform/selfhost-setup/_index.md new file mode 100644 index 0000000..2049f7c --- /dev/null +++ b/docs/platform/selfhost-setup/_index.md @@ -0,0 +1,10 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-setup + name: Selfhost Setup + weight: 20 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- diff --git a/src/en/selfhost-setup/images/ace-dashboard.png b/docs/platform/selfhost-setup/images/ace-dashboard.png similarity index 100% rename from src/en/selfhost-setup/images/ace-dashboard.png rename to docs/platform/selfhost-setup/images/ace-dashboard.png diff --git a/src/en/selfhost-setup/images/ace-status.png b/docs/platform/selfhost-setup/images/ace-status.png similarity index 100% rename from src/en/selfhost-setup/images/ace-status.png rename to docs/platform/selfhost-setup/images/ace-status.png diff --git a/src/en/selfhost-setup/images/admin-setting.png b/docs/platform/selfhost-setup/images/admin-setting.png similarity index 100% rename from src/en/selfhost-setup/images/admin-setting.png rename to docs/platform/selfhost-setup/images/admin-setting.png diff --git a/src/en/selfhost-setup/images/awsStep1.png b/docs/platform/selfhost-setup/images/awsStep1.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep1.png rename to docs/platform/selfhost-setup/images/awsStep1.png diff --git a/src/en/selfhost-setup/images/awsStep2.png b/docs/platform/selfhost-setup/images/awsStep2.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep2.png rename to docs/platform/selfhost-setup/images/awsStep2.png diff --git a/src/en/selfhost-setup/images/awsStep3.png b/docs/platform/selfhost-setup/images/awsStep3.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep3.png rename to docs/platform/selfhost-setup/images/awsStep3.png diff --git a/src/en/selfhost-setup/images/awsStep4.png b/docs/platform/selfhost-setup/images/awsStep4.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep4.png rename to docs/platform/selfhost-setup/images/awsStep4.png diff --git a/src/en/selfhost-setup/images/awsStep5.png b/docs/platform/selfhost-setup/images/awsStep5.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep5.png rename to docs/platform/selfhost-setup/images/awsStep5.png diff --git a/src/en/selfhost-setup/images/awsStep7.png b/docs/platform/selfhost-setup/images/awsStep7.png similarity index 100% rename from src/en/selfhost-setup/images/awsStep7.png rename to docs/platform/selfhost-setup/images/awsStep7.png diff --git a/src/en/selfhost-setup/images/azureStep1.png b/docs/platform/selfhost-setup/images/azureStep1.png similarity index 100% rename from src/en/selfhost-setup/images/azureStep1.png rename to docs/platform/selfhost-setup/images/azureStep1.png diff --git a/src/en/selfhost-setup/images/azureStep2.png b/docs/platform/selfhost-setup/images/azureStep2.png similarity index 100% rename from src/en/selfhost-setup/images/azureStep2.png rename to docs/platform/selfhost-setup/images/azureStep2.png diff --git a/src/en/selfhost-setup/images/azureStep3.png b/docs/platform/selfhost-setup/images/azureStep3.png similarity index 100% rename from src/en/selfhost-setup/images/azureStep3.png rename to docs/platform/selfhost-setup/images/azureStep3.png diff --git a/src/en/selfhost-setup/images/azureStep4.png b/docs/platform/selfhost-setup/images/azureStep4.png similarity index 100% rename from src/en/selfhost-setup/images/azureStep4.png rename to docs/platform/selfhost-setup/images/azureStep4.png diff --git a/src/en/selfhost-setup/images/azureStep5.png b/docs/platform/selfhost-setup/images/azureStep5.png similarity index 100% rename from src/en/selfhost-setup/images/azureStep5.png rename to docs/platform/selfhost-setup/images/azureStep5.png diff --git a/src/en/selfhost-setup/images/branding.png b/docs/platform/selfhost-setup/images/branding.png similarity index 100% rename from src/en/selfhost-setup/images/branding.png rename to docs/platform/selfhost-setup/images/branding.png diff --git a/src/en/selfhost-setup/images/deployment-progress.png b/docs/platform/selfhost-setup/images/deployment-progress.png similarity index 100% rename from src/en/selfhost-setup/images/deployment-progress.png rename to docs/platform/selfhost-setup/images/deployment-progress.png diff --git a/src/en/selfhost-setup/images/domain-whitelisting.png b/docs/platform/selfhost-setup/images/domain-whitelisting.png similarity index 100% rename from src/en/selfhost-setup/images/domain-whitelisting.png rename to docs/platform/selfhost-setup/images/domain-whitelisting.png diff --git a/src/en/selfhost-setup/images/features.png b/docs/platform/selfhost-setup/images/features.png similarity index 100% rename from src/en/selfhost-setup/images/features.png rename to docs/platform/selfhost-setup/images/features.png diff --git a/src/en/selfhost-setup/images/ingress-gateway.png b/docs/platform/selfhost-setup/images/ingress-gateway.png similarity index 100% rename from src/en/selfhost-setup/images/ingress-gateway.png rename to docs/platform/selfhost-setup/images/ingress-gateway.png diff --git a/src/public/images/selfhost-setup/installer-home.png b/docs/platform/selfhost-setup/images/installer-home.png similarity index 100% rename from src/public/images/selfhost-setup/installer-home.png rename to docs/platform/selfhost-setup/images/installer-home.png diff --git a/docs/platform/selfhost-setup/images/ip-reconfigure-openshift.png b/docs/platform/selfhost-setup/images/ip-reconfigure-openshift.png new file mode 100644 index 0000000..2eb0545 Binary files /dev/null and b/docs/platform/selfhost-setup/images/ip-reconfigure-openshift.png differ diff --git a/src/en/selfhost-setup/images/managed-resources.png b/docs/platform/selfhost-setup/images/managed-resources.png similarity index 100% rename from src/en/selfhost-setup/images/managed-resources.png rename to docs/platform/selfhost-setup/images/managed-resources.png diff --git a/docs/platform/selfhost-setup/images/monitoring-alertmanager.png b/docs/platform/selfhost-setup/images/monitoring-alertmanager.png new file mode 100644 index 0000000..9031a62 Binary files /dev/null and b/docs/platform/selfhost-setup/images/monitoring-alertmanager.png differ diff --git a/src/en/selfhost-setup/images/nats.png b/docs/platform/selfhost-setup/images/nats.png similarity index 100% rename from src/en/selfhost-setup/images/nats.png rename to docs/platform/selfhost-setup/images/nats.png diff --git a/src/en/selfhost-setup/images/policy-1.png b/docs/platform/selfhost-setup/images/policy-1.png similarity index 100% rename from src/en/selfhost-setup/images/policy-1.png rename to docs/platform/selfhost-setup/images/policy-1.png diff --git a/src/en/selfhost-setup/images/policy-10.png b/docs/platform/selfhost-setup/images/policy-10.png similarity index 100% rename from src/en/selfhost-setup/images/policy-10.png rename to docs/platform/selfhost-setup/images/policy-10.png diff --git a/src/en/selfhost-setup/images/policy-2.png b/docs/platform/selfhost-setup/images/policy-2.png similarity index 100% rename from src/en/selfhost-setup/images/policy-2.png rename to docs/platform/selfhost-setup/images/policy-2.png diff --git a/src/en/selfhost-setup/images/policy-3.png b/docs/platform/selfhost-setup/images/policy-3.png similarity index 100% rename from src/en/selfhost-setup/images/policy-3.png rename to docs/platform/selfhost-setup/images/policy-3.png diff --git a/src/en/selfhost-setup/images/policy-4.png b/docs/platform/selfhost-setup/images/policy-4.png similarity index 100% rename from src/en/selfhost-setup/images/policy-4.png rename to docs/platform/selfhost-setup/images/policy-4.png diff --git a/src/en/selfhost-setup/images/policy-5.png b/docs/platform/selfhost-setup/images/policy-5.png similarity index 100% rename from src/en/selfhost-setup/images/policy-5.png rename to docs/platform/selfhost-setup/images/policy-5.png diff --git a/src/en/selfhost-setup/images/policy-7.png b/docs/platform/selfhost-setup/images/policy-7.png similarity index 100% rename from src/en/selfhost-setup/images/policy-7.png rename to docs/platform/selfhost-setup/images/policy-7.png diff --git a/src/en/selfhost-setup/images/policy-8.png b/docs/platform/selfhost-setup/images/policy-8.png similarity index 100% rename from src/en/selfhost-setup/images/policy-8.png rename to docs/platform/selfhost-setup/images/policy-8.png diff --git a/src/en/selfhost-setup/images/policy-9.png b/docs/platform/selfhost-setup/images/policy-9.png similarity index 100% rename from src/en/selfhost-setup/images/policy-9.png rename to docs/platform/selfhost-setup/images/policy-9.png diff --git a/src/en/selfhost-setup/images/resource-limit.png b/docs/platform/selfhost-setup/images/resource-limit.png similarity index 100% rename from src/en/selfhost-setup/images/resource-limit.png rename to docs/platform/selfhost-setup/images/resource-limit.png diff --git a/src/en/selfhost-setup/images/selfhost-deployment-option.png b/docs/platform/selfhost-setup/images/selfhost-deployment-option.png similarity index 100% rename from src/en/selfhost-setup/images/selfhost-deployment-option.png rename to docs/platform/selfhost-setup/images/selfhost-deployment-option.png diff --git a/src/en/selfhost-setup/images/tenant.png b/docs/platform/selfhost-setup/images/tenant.png similarity index 100% rename from src/en/selfhost-setup/images/tenant.png rename to docs/platform/selfhost-setup/images/tenant.png diff --git a/docs/platform/selfhost-setup/install/_index.md b/docs/platform/selfhost-setup/install/_index.md new file mode 100644 index 0000000..ccf31f2 --- /dev/null +++ b/docs/platform/selfhost-setup/install/_index.md @@ -0,0 +1,11 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhosted-installer + name: Self Hosted Installer + parent: selfhost-setup + weight: 10 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- diff --git a/src/en/selfhost-setup/install/aws-marketplace.md b/docs/platform/selfhost-setup/install/aws-marketplace.md similarity index 79% rename from src/en/selfhost-setup/install/aws-marketplace.md rename to docs/platform/selfhost-setup/install/aws-marketplace.md index 2aec5dd..b0f158c 100644 --- a/src/en/selfhost-setup/install/aws-marketplace.md +++ b/docs/platform/selfhost-setup/install/aws-marketplace.md @@ -1,28 +1,24 @@ --- -layout: 'guide' +layout: docs menu: - selfhost-setup_docs_menu: + docsplatform_{{.version}}: identifier: aws-marketplace name: AWS Marketplace parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup + weight: 6 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup --- -# Deploying AppsCode Platform: AWS Marketplace +# Deploying KubeDB Platform: AWS Marketplace -Welcome to the AppsCode Platform's **AWS Marketplace** deployment! This guide will walk you through the deployment process via the **AWS Marketplace**, ensuring your environment is configured correctly for a seamless installation. +Welcome to the KubeDB Platform's **AWS Marketplace** deployment! This guide will walk you through the deployment process via the **AWS Marketplace**, ensuring your environment is configured correctly for a seamless installation. -To install **ACE**, you need to have the permissions to manage **EC2**, **IAM**, **CloudFormation** etc. +To install **KubeDB Platform**, you need to have the permissions to manage **EC2**, **IAM**, **CloudFormation** etc. ### Prerequisite -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* **Worker Nodes**: At least one dedicated worker node. -* **CPU**: 4–6 vCPUs. -* **Memory**: 16 GB of RAM. -* **Networking**: A routable IP address for external connectivity. +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. You have to create an `Access Key` and `Secret Key` with following policies attached. Check out similar [eksctl docs](https://eksctl.io/usage/minimum-iam-policies/) for reference. @@ -242,9 +238,9 @@ AmazonS3FullAccess (AWS Managed Policy) ``` ## Application Deployment -### 1. Visit the AppsCode Self-Hosted Page +### 1. Visit the KubeDB Platform Self-Hosted Page -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
Click on the `Create New Installer` button to get started. ### 2. Choose Deployment Mode And Environment @@ -267,45 +263,34 @@ These credentials define the primary super-user and the initial organizational s For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint ### 4. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. +See [Registry](common-config.md#registry) in the Common Configuration guide for Docker registry proxies, Helm repositories, credentials, certs, and image pull secrets. -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry +### 5. Monitoring +See [Monitoring](common-config.md#monitoring) in the Common Configuration guide for Alertmanager email and webhook configuration. -### 5. Settings + +### 6. Settings #### Domain White List * You must specify the end users domains, the system will only allow users with those specified domains. You can Add multiple domain whitelists at the same time. * Put Login and Logout URL -### 6. Self Management +### 7. Self Management In this section you can enable or disable features. You can also create an initial `CAPI Cluster` from this section. -### 7. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. +### 8. Branding & UI Customization +See [Branding & UI Customization](common-config.md#branding--ui-customization) in the Common Configuration guide to re-brand the platform interface. -### 8. Generate Installer and Documentation +### 9. Generate Installer and Documentation -Click the "Next" button to submit your information. AppsCode will generate the installer and provide the necessary documentation and further installation guideline in details. +Click the "Next" button to submit your information. KubeDB Platform will generate the installer and provide the necessary documentation and further installation guideline in details. You will find an `Installer URL` for this installer. You have to give this URL in the AWS Marketplace application. -### 9. Deploy AppsCode Platform +### 10. Deploy KubeDB Platform The expiry time for this installer is 2 hours. You will find in detail deployment guideline after creating the installer. @@ -385,12 +370,14 @@ The expiry time for this installer is 2 hours. You will find in detail deploymen ```
- + +![Policy 1](../../images/policy-1.png) * Give the policy the name **AWSMarketplacePolicyForCloudFormation** and click **Create Policy**.
- + +![Policy 2](../../images/policy-2.png) @@ -400,20 +387,24 @@ The expiry time for this installer is 2 hours. You will find in detail deploymen * Select **Trusted entity** type: `AWS service`. * Select **Use case**: `CloudFormation` and click **Next**.
- + +![Policy 3](../../images/policy-3.png) * Search for and select the **AWSMarketplacePolicyForCloudFormation** policy you just created, then click **Next**.
- + +![Policy 4](../../images/policy-4.png) * Name the role **AWSMarketplaceMeteringRoleForCloudFormation** and click **Create role**.
- + +![Policy 5](../../images/policy-5.png) ### Step 3: PassRole Permission * Copy the **Role ARN** of the role you just created: `arn:aws:iam::xxxxxxxx:role/AWSMarketplaceMeteringRoleForCloudFormation`.
- + +![Policy 7](../../images/policy-7.png) @@ -439,7 +430,8 @@ The expiry time for this installer is 2 hours. You will find in detail deploymen ```
- + +![Policy 8](../../images/policy-8.png) @@ -448,7 +440,8 @@ The expiry time for this installer is 2 hours. You will find in detail deploymen * Provide a name for this policy (e.g., **AllowPassingMeterUsageRoleToCloudFormation**) and click **Create policy**.
- + +![Policy 9](../../images/policy-9.png) @@ -459,7 +452,8 @@ The expiry time for this installer is 2 hours. You will find in detail deploymen * Select the **AllowPassingMeterUsageRoleToCloudFormation** policy you just created to attach it.
- + +![Policy 10](../../images/policy-10.png) Now follow the steps to configure the stack @@ -470,14 +464,16 @@ and subscribe to **AppsCode Cloud w/Usage Billing** product. * Click on Continue To Configuration.
- + +![Aws Step 1](../../images/awsStep1.png) ### Step 2: Configuration * Select the latest software version, and region for the Application and click on **Continue to Launch.**
- + +![Aws Step 2](../../images/awsStep2.png) ### Step 3: Create stack @@ -485,7 +481,8 @@ and subscribe to **AppsCode Cloud w/Usage Billing** product. * Keep the default selected template and click on **Next.**
- + +![Aws Step 3](../../images/awsStep3.png) ### Step 4: Specify stack details @@ -497,7 +494,8 @@ and subscribe to **AppsCode Cloud w/Usage Billing** product. * Click **Next** and you will be forwarded to the **review and create page.**
- + +![Aws Step 4](../../images/awsStep4.png) ### Step 5: Attach role to CloudFormation (Optional) @@ -505,7 +503,8 @@ and subscribe to **AppsCode Cloud w/Usage Billing** product. * When applying the cloudformation template (CFT), attach **AWSMarketplaceMeteringRoleForCloudFormation** role to the template. This way the CFT will have all the necessary permission to deploy the resources.
- + +![Aws Step 5](../../images/awsStep5.png) ### Step 6: Review & Deployment @@ -514,8 +513,9 @@ and subscribe to **AppsCode Cloud w/Usage Billing** product. * Once the Cloudformation is created it will take **5-10min** to spin up the application.
- + +![Aws Step 7](../../images/awsStep7.png) ### 10. Explore the Deployed Platform -Once deployed, access the **AppsCode Platform** using the specified domain. Log in with the admin account credentials provided during the creation process. \ No newline at end of file +Once deployed, access the **KubeDB Platform** using the specified domain. Log in with the admin account credentials provided during the creation process. diff --git a/docs/platform/selfhost-setup/install/azure-marketplace.md b/docs/platform/selfhost-setup/install/azure-marketplace.md new file mode 100644 index 0000000..748067f --- /dev/null +++ b/docs/platform/selfhost-setup/install/azure-marketplace.md @@ -0,0 +1,148 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: azure-marketplace + name: Azure Marketplace + parent: selfhosted-installer + weight: 7 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# 1. Deploying KubeDB Platform: Azure Marketplace + +Welcome to the KubeDB Platform's **Azure Marketplace** deployment! This guide will walk you through the deployment process via the Azure Marketplace, ensuring your environment is configured correctly for a seamless installation. + +### Prerequisites + +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. + +## Getting Started + +The **Azure Marketplace** installation wizard will prompt you for specific configuration parameters. Having these details ready beforehand will streamline your setup. + +If you encounter any issues during the deployment, please refer to our Official Documentation or contact with us. + +### 2. Visit the KubeDB Platform Self-Hosted Page + +Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Click on the `Create New Installer` button to get started. + +### 3. Choose Deployment Mode And Environment + +Choose `Deployment Type` -> `Azure Marketplace` and give it a name in the installer name section. + +For deploying KubeDB Platform using azure marketplace, you usually need these four pieces of information to establish a secure connection. These represent the "Identity" of your application and the "Address" of your billing/directory structure. + +#### 1. Subscription ID +The unique identifier for your **Azure Subscription**. This is where the actual billing for Marketplace services occurs. To get Subscription ID: + 1. Log in to the [Azure Portal](https://portal.azure.com). + 2. Search for **Subscriptions** in the top search bar. + 3. Select your active subscription. + 4. Copy the **Subscription ID** (e.g., `a1b2c3d4-5678-90ab-cdef-1234567890ab`). + +#### 2. Tenant ID +The identifier for your **Microsoft Entra ID** (formerly Azure AD) instance. It represents your entire organization in the cloud. To get Tenant ID: + 1. In the Azure Portal, search for **Microsoft Entra ID**. + 2. On the **Overview** page, look for **Tenant ID**. + 3. Copy the GUID. + +#### 3. Client ID +This is the "username" for your application. When you register an app in Azure to interact with the Marketplace API, it is assigned this ID. To get Client ID: + 1. Go to **Microsoft Entra ID** > **App registrations**. + 2. Select your application (if you haven't made one, click **New registration**). + 3. Copy the **Application (client) ID** from the Essentials section. +Your application must have the necessary permissions to create deployment resources. It requires permissions to manage the cluster and blob storage, as well as to list regions. In this case, we have assigned the Contributor role. + +#### 4. Client Secret +This is the "password" for your application. It allows the app to prove its identity to Azure. To get Client Secret: + 1. Inside your **App registration**, click **Certificates & secrets** in the left menu. + 2. Click **+ New client secret**. + 3. Add a description and expiry (e.g., 12 months). + 4. **CRITICAL:** Copy the **Value** (not the Secret ID) immediately. Once you leave the page, it will be hidden forever. + +Put **Subscription ID**, **Tenant ID**, **Client ID** and **Client Secret** in the respective field. For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint + +### 4. Global Administrative Settings + +See [Global Administrative Settings](common-config.md#global-administrative-settings) in the Common Configuration guide for the System Admin account fields (display name, email, password, and initial organization). + +For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint + +### 5. Registry + +See [Registry](common-config.md#registry) in the Common Configuration guide for Docker registry proxies, Helm repositories, credentials, certs, and image pull secrets. + +### 6. Monitoring + +See [Monitoring](common-config.md#monitoring) in the Common Configuration guide for Alertmanager email and webhook configuration. + +### 7. Settings + +#### Domain White List +* Add domain one by one for whitelisting +* Put Login and Logout URL + +
+ +![Domain Whitelisting](../../images/domain-whitelisting.png) + +### 8. Self Management + +In this section you can enable or disable features. You can also create an initial `CAPI Cluster` from this section. + +### 9. Branding & UI Customization + +See [Branding & UI Customization](common-config.md#branding--ui-customization) in the Common Configuration guide to re-brand the platform interface. + +### 10. Generate Installer and Documentation + +Click the "Deploy" button to submit your information. KubeDB Platform will generate the installer and provide the necessary documentation. + +### 11. Deploy KubeDB Platform + +#### Step 1: Create Azure application +Go to Azure Marketplace and select AppsCode Cloud w/ Usage Billing application. [AppsCode Cloud w/ Usage Billing from Marketplace](https://portal.azure.com/#create/appscode.ace_paygace-payg) + +
+ +![Azure Step 1](../../images/azureStep1.png) + +#### Step 2: Basic Information +Provide basic information for the Azure application. Put your resource group and application name. + +
+ +![Azure Step 2](../../images/azureStep2.png) + +#### Step 3: Select VM +Select a virtual machine for the Installer with at least 4 core CPU and 16GB of RAM. + +
+ +![Azure Step 3](../../images/azureStep3.png) + +#### Step 4: Authentication Type +By default Username user will be created to your Installer VM. +You can use one of the Password or SSH Key Pair to authenticate into the VM. + +
+ +![Azure Step 4](../../images/azureStep4.png) + +#### Step 5: Installer Information +Provide the URL link you found from the instruction in the Installer Url field + +
+ +![Azure Step 5](../../images/azureStep5.png) + +You can monitor the deployment progress through the **Managed Resource Group's** overview page and the **Activity Log**. Once the deployment is complete, the necessary resources will be provisioned within that managed resource group. +![Ace Status](../../images/ace-status.png) + +![Managed Resources](../../images/managed-resources.png) + +### 12. Explore the Deployed Platform + +Once deployed, access the **KubeDB Platform** using the specified domain. Log in with the admin account credentials provided during the creation process. diff --git a/docs/platform/selfhost-setup/install/cloud-demo.md b/docs/platform/selfhost-setup/install/cloud-demo.md new file mode 100644 index 0000000..d5afc00 --- /dev/null +++ b/docs/platform/selfhost-setup/install/cloud-demo.md @@ -0,0 +1,90 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-cloud-demo-deployment + name: Cloud Demo Deployment + parent: selfhosted-installer + weight: 2 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# Deploying KubeDB Platform: Cloud Demo + +Welcome to the KubeDB Platform's "Cloud Demo" deployment! Follow these steps to deploy the KubeDB Platform in Cloud Demo mode. + +### Prerequisites + +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. + +### 1. Visit the KubeDB Platform Self-Hosted Page + +Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Click on the `Create New Installer` button to get started. + +### 2. Choose Deployment Mode + +Choose `Deployment Type` -> `Cloud Demo` and give it a name in the installer name section. + +Before beginning the installation, identify your target infrastructure and cluster type. + +* **DNS & Connectivity:** + * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. + * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. +* **Cluster Type:** Determine if you are installing on **AWS EKS Cluster** or **Red Hat OpenShift Cluster**. + +> For Red Hat OpenShift clusters, see the [Deploying KubeDB Platform in OpenShift Cluster](openshift-cluster.md) guide. + +#### Additional configuration for EKS cluster + +See [Additional configuration for EKS cluster](common-config.md#additional-configuration-for-eks-cluster) in the Common Configuration guide for the EBS CSI / AWS Load Balancer Controller prerequisites and the commands to fetch the Kube API server endpoint, subnet IDs, and EIP allocation IDs. + +### 3. Global Administrative Settings +See [Global Administrative Settings](common-config.md#global-administrative-settings) in the Common Configuration guide for the System Admin account fields (display name, email, password, and initial organization). + +### 4. Registry +See [Registry](common-config.md#registry) in the Common Configuration guide for Docker registry proxies, Helm repositories, credentials, certs, and image pull secrets. + +### 5. Monitoring + +See [Monitoring](common-config.md#monitoring) in the Common Configuration guide for Alertmanager email and webhook configuration. + + +### 6. Settings + +#### Domain White List and Proxy Servers + +See [Domain White List and Proxy Servers](common-config.md#domain-white-list-and-proxy-servers) in the Common Configuration guide for whitelisting domains, proxy servers, and login/logout URLs. + +### 7. Ingress & Gateway + +See [Ingress & Gateway](common-config.md#ingress--gateway) in the Common Configuration guide for exposing the platform via the Gateway API or standard Ingress. + +### 8. Self Management +See [Self Management](common-config.md#self-management) in the Common Configuration guide to enable or disable platform features. + +### 9. Branding & UI Customization +See [Branding & UI Customization](common-config.md#branding--ui-customization) in the Common Configuration guide to re-brand the platform interface. + +### 10. Generate Installer and Documentation + +Click the "Deploy" button to submit your information. KubeDB Platform will generate the installer and provide the necessary documentation. + +### 11. Deploy KubeDB Platform + +Follow the documentation provided by AppsCode to deploy the KubeDB Platform on your system. + +### 12. Explore the Deployed Platform + +Once deployed, access the KubeDB Platform using the specified domain. Log in with the admin account credentials provided during the creation process. + +
+ +![Ace Dashboard](../../images/ace-dashboard.png) + +## Get Support + +If you encounter any challenges during the deployment or have questions, reach out to KubeDB Platform support for assistance. + +Congratulations! You have successfully deployed the KubeDB Platform in Cloud Demo mode. Explore the features and capabilities of the platform in your customized environment. diff --git a/docs/platform/selfhost-setup/install/common-config.md b/docs/platform/selfhost-setup/install/common-config.md new file mode 100644 index 0000000..a51067b --- /dev/null +++ b/docs/platform/selfhost-setup/install/common-config.md @@ -0,0 +1,174 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-common-config + name: Common Configurations + parent: selfhosted-installer + weight: 1 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# Common Configuration Sections + +Several configuration sections of the installer wizard are identical across all +Self-Hosted deployment modes. They are documented here once and referenced from +each mode-specific guide. Use the links in those guides to jump to the relevant +section below. + +## Registry + +KubeDB Platform requires access to various container registries and Helm repositories to pull necessary images and charts. + +**Docker Registry:** Go to the docker registry section first then look for the following settings +* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. +* **Helm Repositories:** In the helm repositories section put your helm repository url +If using private or authenticated registries, provide: +* **Credentials:** Username and Password. +* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. +* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry + +## Monitoring + +Use the **Monitoring** section to configure Alertmanager notifications for platform alerts for the site admin. + +* **Alert Manager Email:** Enable email notifications for Alertmanager alerts. + * **Enable Email:** Turns email notifications on or off. + * **To:** The recipient email address. For Gmail, you can also use plus addressing such as `user+alerts@example.com`. + * **From:** The sender email address shown in the message. For Gmail, use the same address as **Auth Username** unless you have configured a verified alias. + * **Smarthost:** The SMTP server address. For Gmail, use `smtp.gmail.com:587`. + * **Auth Username:** The SMTP login username. For Gmail, this should be the real Gmail or Google Workspace mailbox used to authenticate. + * **Password:** The SMTP password. For Gmail, use an App Password generated from `https://myaccount.google.com/apppasswords`. + * **Require TLS:** Enables TLS for the SMTP connection. Leave this enabled for Gmail. + * **Send Resolved:** Sends a follow-up notification when an alert returns to a healthy state. +* **Alert Manager Webhook:** Send alerts to an endpoint that accepts Alertmanager's generic webhook payload. + * **Enable Webhook:** Turns webhook delivery on or off. + * **URL:** The destination webhook URL. Some systems embed the secret directly in the URL. + * **Send Resolved:** Sends a follow-up notification when an alert returns to a healthy state. + +
+ +![Monitoring Alertmanager](../../images/monitoring-alertmanager.png) + +> **Tip:** For Google Chat, a supported workaround is to generate a space email address in Google Chat settings and use that address in the **To** field. + +## TLS + +Configure TLS certificates for secure communication. You can choose the Issuer type from the following list. + * **External**: Use this if you already have certificates from an external provider. + * CA CERT: Paste the Certificate Authority certificate. + * Certificate CERT: Paste the certificate issued for your domain. + * Certificate Key: Paste the private key associated with the certificate. + + * **CA:** Use this if you want AppsCode to manage your certificates with its internal CA. + * CA CERT: Paste the internal CA certificate. + * CA Key: Paste the internal CA key. + +## NATS + +Configure NATS, which is used as the internal messaging system for the platform. + +**Expose Via:** + Choose how NATS will be exposed: + + * **HostPort:** Exposes NATS directly on the node’s network interface. + + * **Node Selector:** Specify the node label (Key and Value) to control where NATS will be scheduled. + * **Ingress:** Use this option to expose NATS externally via an ingress controller. +**Replicas:** For production, ensure at least 1 replica is active (consider 3 for high availability). +**Resources:** Configure CPU Requests, CPU Limits, Memory Request and Memory Limit + +
+ +![Nats](../../images/nats.png) + +## Branding & UI Customization + +Administrators can globally re-brand the KubeDB Platform interface to match corporate identity. + +* **App Name:** Changes the browser tab title. +* **Primary Color:** Enter a Hex code (default: `#009948`). +* **Assets:** + * **Logo:** Upload a 200x30px image (SVG/PNG recommended). + * **Favicon:** Upload a 20KB icon file. +* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. + +
+ +![Branding](../../images/branding.png) + + +## Prerequisites + +Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: +* **Worker Nodes**: At least one dedicated worker node. +* **CPU**: 4–6 vCPUs. +* **Memory**: 16 GB of RAM. +* **Networking**: A routable IP address for external connectivity. + +You will get an instruction to deploy a k3s cluster in Ubuntu VM, or you can skip this step if you already have a cluster. + +## Global Administrative Settings + +These credentials define the primary super-user and the initial organizational structure. + +* **System Admin:** In this section, provide the administrator's following information. + - **Admin Account Display Name:** The display name for the administrator account. + - **Admin Account Email:** The email address for the administrator account. + - **Admin Account Password:** The password for the administrator account. You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. + - **Initial Organization Name:** You can choose what will be the initial organization name for your account + +
+ +![Admin Setting](../../images/admin-setting.png) + +## Additional configuration for EKS cluster + +**Prerequisite:** +* EBS CSI Driver must be installed +* AWS Load Balancer Controller must be installed + +Run the following command to get the Kube API Server and put it in the API server field: + +``` +aws eks describe-cluster --name --region --query "cluster.endpoint" --output text +``` + +Run the following command to get the Subnet IDs and add them: + +``` +aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws eks describe-cluster --name --region --query "cluster.resourcesVpcConfig.vpcId" --output text)" "Name=map-public-ip-on-launch,Values=true" --region --query "Subnets[*].SubnetId" --output text +``` + +**Subnet IDs:** Make sure you have added the allocation id of Target IP as well. Run the following command to create EIP Allocation IDs `aws ec2 allocate-address --region ` + +**EIP Allocation IDs:** Give EIP allocation IDs for your public subnets. + +## Domain White List and Proxy Servers + +* Add domain one by one for whitelisting +* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** +* Put Login and Logout URL for your app + +
+ +![Domain Whitelisting](../../images/domain-whitelisting.png) + +## Ingress & Gateway + +Configure how the application is exposed to the internet or your internal network. + +* **Ingress & Gateway:** Enable either the **Gateway API** or standard **Ingress**. + +
+ +![Ingress Gateway](../../images/ingress-gateway.png) + +## Self Management + +In this section you can enable or disable features. + +
+ +![Features](../../images/features.png) diff --git a/docs/platform/selfhost-setup/install/onprem-demo.md b/docs/platform/selfhost-setup/install/onprem-demo.md new file mode 100644 index 0000000..d4304ad --- /dev/null +++ b/docs/platform/selfhost-setup/install/onprem-demo.md @@ -0,0 +1,93 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-onprem-demo-deployment + name: Onprem Demo Deployment + parent: selfhosted-installer + weight: 3 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# Deploying KubeDB Platform: Onprem Demo + +Welcome to the KubeDB Platform's "Onprem Demo" deployment! Follow these steps to deploy the KubeDB Platform in Onprem Demo mode. + +### Prerequisites + +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. + +### 1. Visit the KubeDB Platform Self-Hosted Page + +Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Click on the `Create New Installer` button to get started. + +### 2. Choose Deployment Mode + +Choose `Deployment Type` -> `Onprem Demo` and give it a name in the installer name section. + +Before beginning the installation, identify your target infrastructure and cluster type. + +* **DNS & Connectivity:** + * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. + * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. +* **Cluster Type:** Determine if you are installing on **Red Hat OpenShift Cluster**. + +> For Red Hat OpenShift clusters, see the [Deploying KubeDB Platform in OpenShift Cluster](openshift-cluster.md) guide. + +### 3. Global Administrative Settings +See [Global Administrative Settings](common-config.md#global-administrative-settings) in the Common Configuration guide for the System Admin account fields (display name, email, password, and initial organization). + +### 4. Registry +See [Registry](common-config.md#registry) in the Common Configuration guide for Docker registry proxies, Helm repositories, credentials, certs, and image pull secrets. + +### 5. Monitoring + +See [Monitoring](common-config.md#monitoring) in the Common Configuration guide for Alertmanager email and webhook configuration. + + +### 6. Settings + +#### Domain White List and Proxy Servers + +See [Domain White List and Proxy Servers](common-config.md#domain-white-list-and-proxy-servers) in the Common Configuration guide for whitelisting domains, proxy servers, and login/logout URLs. + +### 7. TLS +See [TLS](common-config.md#tls) in the Common Configuration guide for configuring the certificate issuer (External or CA). + +### 8. Ingress & Gateway + +See [Ingress & Gateway](common-config.md#ingress--gateway) in the Common Configuration guide for exposing the platform via the Gateway API or standard Ingress. + +### 9. NATS + +See [NATS](common-config.md#nats) in the Common Configuration guide for configuring the internal messaging system (expose method, replicas, and resources). + +### 10. Self Management +See [Self Management](common-config.md#self-management) in the Common Configuration guide to enable or disable platform features. + +### 11. Branding & UI Customization +See [Branding & UI Customization](common-config.md#branding--ui-customization) in the Common Configuration guide to re-brand the platform interface. + +### 12. Generate Installer and Documentation + +Click the "Deploy" button to submit your information. KubeDB Platform will generate the installer and provide the necessary documentation. + +### 13. Deploy KubeDB Platform + +Follow the documentation provided by AppsCode to deploy the KubeDB Platform on your system. + +### 14. Explore the Deployed Platform + +Once deployed, access the KubeDB Platform using the specified domain. Log in with the admin account credentials provided during the creation process. + +
+ +![Ace Dashboard](../../images/ace-dashboard.png) + +## Get Support + +If you encounter any challenges during the deployment or have questions, reach out to KubeDB Platform support for assistance. + +Congratulations! You have successfully deployed the KubeDB Platform in Onprem Demo mode. Explore the features and capabilities of the platform in your customized environment. diff --git a/docs/platform/selfhost-setup/install/openshift-cluster.md b/docs/platform/selfhost-setup/install/openshift-cluster.md new file mode 100644 index 0000000..39b7a98 --- /dev/null +++ b/docs/platform/selfhost-setup/install/openshift-cluster.md @@ -0,0 +1,125 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-openshift-cluster + name: OpenShift Cluster + parent: selfhosted-installer + weight: 6 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# Deploying KubeDB Platform in OpenShift Cluster + +This guide describes how to deploy the **KubeDB Platform** on a **Red Hat OpenShift** cluster. The deployment types available to you depend on how you want to reach the platform: + +* **IP mode** — choose this when you want to access the platform over a **static IP**. Available deployment types: **Cloud Demo** and **Onprem Demo**. +* **DNS mode** — choose this when you want to access the platform over a **DNS name**. Available deployment types: **Onprem Demo** and **Self Hosted Production**. + +Regardless of the mode, an OpenShift deployment always requires you to toggle the **Install on Red Hat OpenShift cluster?** option and provide the **Kube API Server** endpoint. + +### Prerequisites + +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. + +### 1. Visit the KubeDB Platform Self-Hosted Page + +Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Click on the `Create New Installer` button to get started. + +### 2. Enable OpenShift and Set the Kube API Server + +This is the common requirement for every OpenShift deployment, irrespective of the mode you chose above. + +* Toggle on the **Install on Red Hat OpenShift cluster?** option. +* Set the **Kube API Server** field with your cluster's API server endpoint. + +Run the following command against your OpenShift cluster to fetch the API server endpoint: + +```bash +oc whoami --show-server +``` + +You can also read it from your current kubeconfig context: + +```bash +kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' +``` + +Paste the returned URL (for example, `https://api..:6443`) into the **Kube API Server** field. + +### 3. Choose the Deployment Mode + +Pick the `Deployment Type` based on how you want to access the platform, and give it a name in the installer name section. The specifics for each mode are below. + +#### IP mode (IP preferred) + +Use this mode when you want to reach the platform through a static IP instead of a DNS name. In this mode you can choose either **Cloud Demo** or **Onprem Demo** as the deployment type. + +* **DNS & Connectivity:** + * **Enable DNS:** Leave this toggle **off** since access is over an IP. + * **Target IP:** At this point the load balancer does not exist yet, so just provide any random IP to proceed with creating the installer. + +> [!IMPORTANT] +> The LoadBalancer IP is not known yet, so the random Target IP must be fixed later (see [Deploy KubeDB Platform](#5-deploy-kubedb-platform)). + +Once OpenShift is enabled and the Kube API Server is set, follow the standard configuration sections for the deployment type you picked. See the [Cloud Demo](cloud-demo.md) or [Onprem Demo](onprem-demo.md) guide for the full walkthrough of these sections. + +#### DNS mode (DNS preferred) + +Use this mode when you want to reach the platform through a DNS name. In this mode you can choose either **Onprem Demo** or **Self Hosted Production** as the deployment type, the latter being the recommended setup for production. + +* **DNS & Connectivity:** + * **Enable DNS:** Toggle this **on** so the installer can manage or integrate with your DNS provider. + * **Target IP:** At this point the load balancer does not exist yet, so just provide any random IP to proceed with creating the installer. + +> [!IMPORTANT] +> The LoadBalancer IP is not known yet, so the random Target IP and the DNS `A` record must be fixed later (see [Deploy KubeDB Platform](#5-deploy-kubedb-platform)). + +Once OpenShift is enabled and the Kube API Server is set, follow the standard configuration sections for the deployment type you picked. See the [Onprem Demo](onprem-demo.md) or [Self Hosted Production](selfhosted-production.md) guide for the full walkthrough of these sections. + +> [!NOTE] +> This guide only covers the fields that are **specific to an OpenShift deployment**. Each deployment type has many more configuration sections (Global Administrative Settings, Registry, Monitoring, TLS, Ingress & Gateway, NATS, and more). For the complete field-by-field walkthrough, follow the guide for the deployment type you choose: +> * **[Cloud Demo](cloud-demo.md)** +> * **[Onprem Demo](onprem-demo.md)** +> * **[Self Hosted Production](selfhosted-production.md)** + +### 4. Generate Installer and Documentation + +Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. + +### 5. Deploy KubeDB Platform + +Follow the documentation provided by AppsCode to deploy the KubeDB Platform on your OpenShift cluster. For an OpenShift deployment the generated instructions are ordered specifically, and you must pause partway through to fix the placeholder Target IP: + +1. **Create the LoadBalancer service.** The first part of the generated instructions creates the platform's LoadBalancer service in the `ace` namespace. +2. **Wait for the external IP.** The LoadBalancer takes some time to get an external IP assigned. Run `kubectl get svc -n ace` until the `EXTERNAL-IP` column is populated, then copy that IP. +3. **Reconfigure the installer.** Update the **Target IP** with the assigned LoadBalancer IP and regenerate the installer. For **DNS mode**, also create or update the DNS `A` record so your domain points to this IP. +4. **Run the remaining install steps.** Continue with the rest of the generated instructions (flux install, `helm upgrade`, and the ACE install) using the reconfigured values. + +
+ +![Ip Reconfigure Openshift](../../images/ip-reconfigure-openshift.png) + +### 6. Explore the Deployed Platform + +Once deployed, access the **KubeDB Platform** using the configured IP (IP mode) or domain (DNS mode). Log in with the admin account credentials provided during the creation process. + +
+ +![Ace Dashboard](../../images/ace-dashboard.png) + +## Notes + +- The Prometheus node-exporter DaemonSet will not run on an OpenShift cluster unless it runs in privileged mode. Since this is not our chart, you need to grant the required permission yourself: + + ```bash + oc adm policy add-scc-to-user privileged -z kube-prometheus-stack-prometheus-node-exporter -n monitoring + ``` + +- We also run the cert-manager `csi-driver-cacerts` feature in privileged mode so that it can add CA certificates to the OS trusted certificate store. You don't need to do anything manually for this — it is handled automatically at the chart level. + +## Get Support + +If you encounter any challenges during the deployment or have questions, reach out to AppsCode support for assistance. diff --git a/src/en/selfhost-setup/install/selfhosted-production.md b/docs/platform/selfhost-setup/install/selfhosted-production.md similarity index 58% rename from src/en/selfhost-setup/install/selfhosted-production.md rename to docs/platform/selfhost-setup/install/selfhosted-production.md index b4be45f..3c10521 100644 --- a/src/en/selfhost-setup/install/selfhosted-production.md +++ b/docs/platform/selfhost-setup/install/selfhosted-production.md @@ -1,18 +1,18 @@ --- -layout: 'guide' +layout: docs menu: - selfhost-setup_docs_menu: + docsplatform_{{.version}}: identifier: selfhost-prod-deployment name: Production Deployment parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup + weight: 5 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup --- -# Deploying AppsCode Platform: Self Hosted Production +# Deploying KubeDB Platform: Self Hosted Production -Welcome to the **Self-Hosted Production** deployment guide for the **AppsCode Platform**. This installation mode is designed for environments requiring high levels of customization and granular control. +Welcome to the **Self-Hosted Production** deployment guide for the **KubeDB Platform**. This installation mode is designed for environments requiring high levels of customization and granular control. By following this walkthrough, you can tailor the deployment to meet your specific production requirements while ensuring a stable and optimized installation. @@ -30,19 +30,12 @@ This guide provides a structured approach to deploying the platform manually. We > **Note:** Ensure your infrastructure meets the minimum system requirements before proceeding to the configuration steps. -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* **Worker Nodes**: At least one dedicated worker node. -* **CPU**: 4–6 vCPUs. -* **Memory**: 16 GB of RAM. -* **Networking**: A routable IP address for external connectivity. +See [Prerequisites](common-config.md#prerequisites) in the Common Configuration guide for the minimum cluster requirements and the optional k3s setup note. -You will get an instruction to deploy a k3s cluster in Ubuntu VM or you can skip this step if you already have a cluster +### 1. Visit the KubeDB Platform Self-Hosted Page - -### 1. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
+Navigate to [KubeDB Platform Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
Click on the `Create New Installer` button to get started. ### 2. Choose Deployment Mode And Environment @@ -54,32 +47,15 @@ Before beginning the installation, identify your target infrastructure and clust * **DNS & Connectivity:** * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. -* **Cluster Type:** Determine if you are installing on **AWS EKS Cluster** or **Red Hat OpenShift Cluster**. For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint +* **Cluster Type:** Determine if you are installing on **AWS EKS Cluster** or **Red Hat OpenShift Cluster**. For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint. See the [Deploying KubeDB Platform in OpenShift Cluster](openshift-cluster.md) guide. * **Credential-Less Mode:** Enable this if you are using IAM roles for service accounts (IRSA) to avoid manual secret management.
- - -### Additional configuration for EKS cluster - -**Prerequisite:**
-* EBS CSI Driver must be installed -* AWS Load Balancer Controller must be installed - -Run the following command to get Kube API Server put it in the API server field - -``` -aws eks describe-cluster --name --region --query "cluster.endpoint" --output text -``` -Run the following command to get Subnet IDs and add them +![Selfhost Deployment Option](../../images/selfhost-deployment-option.png) -``` -aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws eks describe-cluster --name --region --query "cluster.resourcesVpcConfig.vpcId" --output text)" "Name=map-public-ip-on-launch,Values=true" --region --query "Subnets[*].SubnetId" --output text -``` - -**Subnet IDs:** Make sure you have added the allocation id of Target IP as well. Run the following command to create EIP Allocation IDs `aws ec2 allocate-address --region ` +### Additional configuration for EKS cluster -**EIP Allocation IDs:** Give EIP allocation IDs for your public subnets. +See [Additional configuration for EKS cluster](common-config.md#additional-configuration-for-eks-cluster) in the Common Configuration guide for the EBS CSI / AWS Load Balancer Controller prerequisites and the commands to fetch the Kube API server endpoint, subnet IDs, and EIP allocation IDs. ### Configuring AWS credentialless mode @@ -165,7 +141,7 @@ EKS_POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName==’AceSelf Create Role using the downloaded trust-relationship file ``` sed -e "s/OIDC_ID/$OIDC_ID/g" -e "s/ACCOUNT_ID/$ACCOUNT_ID/g" -e "s/REGION/$REGION/g" -e "s/SA_NAMESPACE/"ace"/g" -e "s/SA_NAME/"ace"/g" template-trust-relationship > ace-trust-relationship.json -aws iam create-role --role-name AceInstaller-$OIDC_ID --assume-role-policy-document file://ace-trust-relationship.json --description "A role to be used by ACE selfhost installer" +aws iam create-role --role-name AceInstaller-$OIDC_ID --assume-role-policy-document file://ace-trust-relationship.json --description "A role to be used by KubeDB Platform selfhost installer" ROLE_ARN=$(aws iam get-role --role-name AceInstaller-$OIDC_ID --query "Role.Arn" --output text) # attach Policies to the Role aws iam attach-role-policy --role-name AceInstaller-$OIDC_ID --policy-arn=$EC2_POLICY_ARN @@ -193,65 +169,45 @@ aws eks associate-access-policy \ Provide the output role arn as Ace Installer Role ARN `echo $ROLE_ARN`in the **Ace Installer Role ARN** field. ### 3. Global Administrative Settings -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account.You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -
- +See [Global Administrative Settings](common-config.md#global-administrative-settings) in the Common Configuration guide for the System Admin account fields (display name, email, password, and initial organization). ### 4. Release -Define the specific Kubernetes namespace and release information for the Ace components. +Define the specific Kubernetes namespace and release information for the KubeDB Platform components. * **Release Name:** Defaults to `ace`. * **Namespace:** Enter the target namespace (default: `ace`). * **Namespace Automation:** Toggle **"Create namespaces during Helm install"** if you want the installer to handle namespace lifecycle management. ### 5. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - +See [Registry](common-config.md#registry) in the Common Configuration guide for Docker registry proxies, Helm repositories, credentials, certs, and image pull secrets. ### 6. Settings This secton is for Persistence & Resource Allocation. Properly sizing your resources is critical for production stability. Configure CPU Requests, CPU Limits, Memory Request and Memory Limit for both cache and Database - +![Resource Limit](../../images/resource-limit.png)
> [!IMPORTANT] > Ensure your cluster has a **Storage Class** defined to fulfill the PVC requests for both the Cache and the Database. -If SMTP is enabled then put Host, Username, Password and From. You can also enable Send As Plain Text and TLS. #### Domain White List and Proxy Servers -* Add domain one by one for whitelisting -* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** -* Put Login and Logout URL for your app - -
- +See [Domain White List and Proxy Servers](common-config.md#domain-white-list-and-proxy-servers) in the Common Configuration guide for whitelisting domains, proxy servers, and login/logout URLs. #### KubeStash -Ace uses **KubeStash** for automated backups and disaster recovery. +KubeDB Platform uses **KubeStash** for automated backups and disaster recovery. * **Retention Policy:** Define how long backups are kept (e.g., `keep-1mo`). * **Schedule:** Set the backup frequency using Cron syntax (default: `0 */2 * * *` or every 2 hours). * **Storage Secret:** Select the secret containing credentials for your cloud provider. -### 7. Infra +### 7. Monitoring + +See [Monitoring](common-config.md#monitoring) in the Common Configuration guide for Alertmanager email and webhook configuration. + +### 8. Infra * **Cloud Services:** Configure your **Provider** (e.g., AWS, GCP, Azure), **Bucket Name**, **Endpoint**, **Region** and **Prefix**. In the **Auth Section** put your `AWS Access Key ID`,`AWS Secret Access Key` and `CA CERT Data` * **StorageClass:** Select your StorageClass in this section @@ -267,60 +223,31 @@ Ace uses **KubeStash** for automated backups and disaster recovery. * **letsencrypt:** Use this for production environments to obtain globally trusted SSL/TLS certificates. * **letsencrypt-staging:** Use this for testing your installation -### 8. Ingress & Gateway -Configure how the application is exposed to the internet or your internal network. - -* **Ingress & Gateway:** Enable either the **Gateway API** or standard **Ingress**. +### 9. Ingress & Gateway +See [Ingress & Gateway](common-config.md#ingress--gateway) in the Common Configuration guide for exposing the platform via the Gateway API or standard Ingress. -
- +### 10. NATS -### 9. NATS +See [NATS](common-config.md#nats) in the Common Configuration guide for configuring the internal messaging system (expose method, replicas, and resources). -Configure NATS, which is used as the internal messaging system for the platform. +### 11. Self Management +See [Self Management](common-config.md#self-management) in the Common Configuration guide to enable or disable platform features. -**Expose Via:** - Choose how NATS will be exposed: +### 12. Branding & UI Customization +See [Branding & UI Customization](common-config.md#branding--ui-customization) in the Common Configuration guide to re-brand the platform interface. - * **HostPort:** Exposes NATS directly on the node’s network interface. +### 13. Generate Installer and Documentation - * **Node Selector:** Specify the node label (Key and Value) to control where NATS will be scheduled. - * **Ingress:** Use this option to expose NATS externally via an ingress controller. -**Replicas:** For production, ensure at least 1 replica is active (consider 3 for high availability). -**Resources:** Configure CPU Requests, CPU Limits, Memory Request and Memory Limit +Click the "Deploy" button to submit your information. KubeDB Platform will generate the installer and provide the necessary documentation. -
- +### 14. Deploy KubeDB Platform -### 10. Self Management -In this section you can enable or disable features -
- +Follow the documentation provided by AppsCode to deploy the KubeDB Platform on your system. -### 11. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. +### 15. Explore the Deployed Platform -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. +Once deployed, access the **KubeDB Platform** using the specified domain. Log in with the admin account credentials provided during the creation process.After the login process you will see the **KubeDB Platform dashboard** user interface
- - -### 12. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 13. Deploy AppsCode Platform -Follow the documentation provided by AppsCode to deploy the AppsCode Platform on your system. - -### 14. Explore the Deployed Platform - -Once deployed, access the **AppsCode Platform** using the specified domain. Log in with the admin account credentials provided during the creation process.After the login process you will see the **ACE dashboard** user interface - -
- \ No newline at end of file +![Ace Dashboard](../../images/ace-dashboard.png) diff --git a/src/en/selfhost-setup/install/troubleshoot.md b/docs/platform/selfhost-setup/install/troubleshoot.md similarity index 56% rename from src/en/selfhost-setup/install/troubleshoot.md rename to docs/platform/selfhost-setup/install/troubleshoot.md index 2b22e5a..9e3f832 100644 --- a/src/en/selfhost-setup/install/troubleshoot.md +++ b/docs/platform/selfhost-setup/install/troubleshoot.md @@ -1,14 +1,14 @@ - +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- # Troubleshooting Common Errors diff --git a/docs/platform/selfhost-setup/uninstall.md b/docs/platform/selfhost-setup/uninstall.md new file mode 100644 index 0000000..bef3c6e --- /dev/null +++ b/docs/platform/selfhost-setup/uninstall.md @@ -0,0 +1,13 @@ +--- +layout: docs +menu: + docsplatform_{{.version}}: + identifier: selfhost-setup-uninstall + name: Uninstall + parent: selfhost-setup + weight: 20 +menu_name: docsplatform_{{.version}} +section_menu_id: selfhost-setup +--- + +# Uninstall diff --git a/src/en/welcome/support.md b/docs/platform/support.md similarity index 68% rename from src/en/welcome/support.md rename to docs/platform/support.md index b6f3b1d..1767827 100644 --- a/src/en/welcome/support.md +++ b/docs/platform/support.md @@ -1,15 +1,15 @@ --- -layout: 'guide' +layout: docs menu: - welcome_docs_menu: - identifier: welcome-support + docsplatform_{{.version}}: + identifier: platform-support name: Support + parent: welcome weight: 20 -menu_name: welcome_docs_menu -section_menu: welcome +menu_name: docsplatform_{{.version}} +section_menu_id: welcome --- - # Support To speak with us, please leave a message on our [website](https://appscode.com/contact/). To receive product announcements, follow us on [Twitter](https://twitter.com/AppsCodeHQ). diff --git a/firebase.json b/firebase.json deleted file mode 100644 index 8d85b14..0000000 --- a/firebase.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "hosting": { - "target": "nuxt", - "public": ".vitepress/dist", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], - "trailingSlash": true, - "redirects": [{ - "source": "/", - "destination": "https://appscode.com/docs/", - "type": 301 - }] - } -} diff --git a/hack/scripts/open-pr.sh b/hack/scripts/open-pr.sh new file mode 100755 index 0000000..305248e --- /dev/null +++ b/hack/scripts/open-pr.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright The KubeVault Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eou pipefail + +SCRIPT_ROOT=$(realpath $(dirname "${BASH_SOURCE[0]}")/../..) +SCRIPT_NAME=$(basename "${BASH_SOURCE[0]}") +pushd $SCRIPT_ROOT + +# http://redsymbol.net/articles/bash-exit-traps/ +function cleanup() { + popd +} +trap cleanup EXIT + +git add --all +if git diff -s --exit-code HEAD; then + echo "Docs are already up-to-date!" + exit 0 +fi + +pr_branch=${GITHUB_REPOSITORY}@${GITHUB_SHA:0:8} +git checkout -b $pr_branch +git commit -a -s -m "Update docs for $pr_branch" +git push -u origin HEAD +gh pr create \ + --label automerge \ + --title "Update docs for $pr_branch" \ + --body "$(git show -s --format=%b)" diff --git a/hack/scripts/update-release-tracker.sh b/hack/scripts/update-release-tracker.sh new file mode 100755 index 0000000..c8bfc4f --- /dev/null +++ b/hack/scripts/update-release-tracker.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Copyright AppsCode Inc. and Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eou pipefail + +# ref: https://gist.github.com/joshisa/297b0bc1ec0dcdda0d1625029711fa24 +parse_url() { + proto="$(echo $1 | grep :// | sed -e's,^\(.*://\).*,\1,g')" + # remove the protocol + url="$(echo ${1/$proto/})" + + IFS='/' # / is set as delimiter + read -ra PARTS <<<"$url" # str is read into an array as tokens separated by IFS + if [ ${PARTS[0]} != 'github.com' ] || [ ${#PARTS[@]} -ne 5 ]; then + echo "failed to parse relase-tracker: $url" + exit 1 + fi + export RELEASE_TRACKER_OWNER=${PARTS[1]} + export RELEASE_TRACKER_REPO=${PARTS[2]} + export RELEASE_TRACKER_PR=${PARTS[4]} +} + +RELEASE_TRACKER=${RELEASE_TRACKER:-} +GITHUB_BASE_REF=${GITHUB_BASE_REF:-} + +while IFS=$': \r\t' read -r -u9 marker v; do + case $marker in + Release-tracker) + export RELEASE_TRACKER=$(echo $v | tr -d '\r\t') + ;; + Release) + export RELEASE=$(echo $v | tr -d '\r\t') + ;; + esac +done 9< <(git show -s --format=%b) + +[ ! -z "$RELEASE_TRACKER" ] || { + echo "Release-tracker url not found." + exit 0 +} + +[ ! -z "$GITHUB_BASE_REF" ] || { + echo "GitHub base ref not found." + exit 0 +} + +parse_url $RELEASE_TRACKER +api_url="repos/${RELEASE_TRACKER_OWNER}/${RELEASE_TRACKER_REPO}/issues/${RELEASE_TRACKER_PR}/comments" + +case $GITHUB_BASE_REF in + master) + msg="/ready-to-tag github.com/${GITHUB_REPOSITORY} ${GITHUB_SHA}" + ;; + *) + msg="/cherry-picked github.com/${GITHUB_REPOSITORY} ${GITHUB_BASE_REF} ${GITHUB_SHA}" + ;; +esac + +gh api "$api_url" -f body="$msg" diff --git a/index.json b/index.json deleted file mode 100644 index e69de29..0000000 diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7264a3b..0000000 --- a/package-lock.json +++ /dev/null @@ -1,11905 +0,0 @@ -{ - "name": "docs", - "version": "0.0.14", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "docs", - "version": "0.0.14", - "dependencies": { - "@appscode/design-system": "^2.2.7", - "@bytebuilders/docs-base": "github:bytebuilders/docs-base", - "@vueuse/components": "^12.5.0", - "@vueuse/core": "^12.5.0", - "@vueuse/integrations": "^12.5.0", - "bulma": "0.9.4", - "font-awesome": "^4.7.0", - "pinia": "^2.1.3", - "vue-i18n": "^9.2.2" - }, - "devDependencies": { - "@antfu/eslint-config": "^0.39.5", - "@iconify/json": "^2.2.139", - "@rushstack/eslint-patch": "^1.3.1", - "@tsconfig/node22": "^22.0.0", - "@types/node": "^22.10.10", - "@vue/compiler-sfc": "^3.3.8", - "@vue/tsconfig": "^0.4.0", - "eslint": "^8.42.0", - "npm-run-all": "^4.1.5", - "postcss-html": "^1.5.0", - "sass": "1.32.13", - "sass-loader": "^13.3.1", - "stylelint": "^15.7.0", - "stylelint-config-recommended-scss": "^12.0.0", - "stylelint-config-recommended-vue": "^1.4.0", - "stylelint-config-standard": "^33.0.0", - "stylelint-config-standard-scss": "^9.0.0", - "typescript": "^5.0.4", - "universal-cookie": "^7.2.2", - "unplugin-auto-import": "^0.16.4", - "unplugin-icons": "^0.17.3", - "vitepress": "^1.0.1", - "vue-tsc": "^2.2.0" - }, - "engines": { - "node": ">=22.0.0" - } - }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", - "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", - "@algolia/autocomplete-shared": "1.17.7" - } - }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", - "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-shared": "1.17.7" - }, - "peerDependencies": { - "search-insights": ">= 1 < 3" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", - "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-shared": "1.17.7" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", - "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/client-abtesting": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.0.tgz", - "integrity": "sha512-YaEoNc1Xf2Yk6oCfXXkZ4+dIPLulCx8Ivqj0OsdkHWnsI3aOJChY5qsfyHhDBNSOhqn2ilgHWxSfyZrjxBcAww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.0.tgz", - "integrity": "sha512-CIT9ni0+5sYwqehw+t5cesjho3ugKQjPVy/iPiJvtJX4g8Cdb6je6SPt2uX72cf2ISiXCAX9U3cY0nN0efnRDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-common": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.0.tgz", - "integrity": "sha512-iSTFT3IU8KNpbAHcBUJw2HUrPnMXeXLyGajmCL7gIzWOsYM4GabZDHXOFx93WGiXMti1dymz8k8R+bfHv1YZmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-insights": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.0.tgz", - "integrity": "sha512-w9RIojD45z1csvW1vZmAko82fqE/Dm+Ovsy2ElTsjFDB0HMAiLh2FO86hMHbEXDPz6GhHKgGNmBRiRP8dDPgJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.0.tgz", - "integrity": "sha512-p/hftHhrbiHaEcxubYOzqVV4gUqYWLpTwK+nl2xN3eTrSW9SNuFlAvUBFqPXSVBqc6J5XL9dNKn3y8OA1KElSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-query-suggestions": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.0.tgz", - "integrity": "sha512-m4aAuis5vZi7P4gTfiEs6YPrk/9hNTESj3gEmGFgfJw3hO2ubdS4jSId1URd6dGdt0ax2QuapXufcrN58hPUcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/client-search": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz", - "integrity": "sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/ingestion": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.0.tgz", - "integrity": "sha512-shj2lTdzl9un4XJblrgqg54DoK6JeKFO8K8qInMu4XhE2JuB8De6PUuXAQwiRigZupbI0xq8aM0LKdc9+qiLQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/monitoring": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.0.tgz", - "integrity": "sha512-aF9blPwOhKtWvkjyyXh9P5peqmhCA1XxLBRgItT+K6pbT0q4hBDQrCid+pQZJYy4HFUKjB/NDDwyzFhj/rwKhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/recommend": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.0.tgz", - "integrity": "sha512-T6B/WPdZR3b89/F9Vvk6QCbt/wrLAtrGoL8z4qPXDFApQ8MuTFWbleN/4rHn6APWO3ps+BUePIEbue2rY5MlRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.0.tgz", - "integrity": "sha512-t6//lXsq8E85JMenHrI6mhViipUT5riNhEfCcvtRsTV+KIBpC6Od18eK864dmBhoc5MubM0f+sGpKOqJIlBSCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/requester-fetch": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.0.tgz", - "integrity": "sha512-FHxYGqRY+6bgjKsK4aUsTAg6xMs2S21elPe4Y50GB0Y041ihvw41Vlwy2QS6K9ldoftX4JvXodbKTcmuQxywdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@algolia/requester-node-http": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.0.tgz", - "integrity": "sha512-kmtQClq/w3vtPteDSPvaW9SPZL/xrIgMrxZyAgsFwrJk0vJxqyC5/hwHmrCraDnStnGSADnLpBf4SpZnwnkwWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@antfu/eslint-config": { - "version": "0.39.8", - "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-0.39.8.tgz", - "integrity": "sha512-KnDjLw6UEoHdEzB6CzQMm+EkA4ZI94r1Of1rRRw0qxhkFhD/+SQ2BTBgmF5d4wTsU0IT1Dk5JjJ6J/cVFKdXWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/eslint-config-vue": "0.39.8", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-html": "^7.1.0", - "eslint-plugin-import": "npm:eslint-plugin-i@2.27.5-4", - "eslint-plugin-jsonc": "^2.9.0", - "eslint-plugin-n": "^16.0.1", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-unicorn": "^48.0.0", - "eslint-plugin-vue": "^9.15.1", - "eslint-plugin-yml": "^1.8.0", - "jsonc-eslint-parser": "^2.3.0", - "yaml-eslint-parser": "^1.2.2" - }, - "peerDependencies": { - "eslint": ">=7.4.0" - } - }, - "node_modules/@antfu/eslint-config-basic": { - "version": "0.39.8", - "resolved": "https://registry.npmjs.org/@antfu/eslint-config-basic/-/eslint-config-basic-0.39.8.tgz", - "integrity": "sha512-HvxNu11NRpX/DHmcMcA2KenY/IIy3THEn5tpizg6vPIp3ZYSNkW3ov6sK2wxCd1S8Rwl/65566wplJ8xTYe0EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-plugin-antfu": "0.39.8", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-html": "^7.1.0", - "eslint-plugin-import": "npm:eslint-plugin-i@2.27.5-4", - "eslint-plugin-jsonc": "^2.9.0", - "eslint-plugin-markdown": "^3.0.0", - "eslint-plugin-n": "^16.0.1", - "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-unicorn": "^48.0.0", - "eslint-plugin-unused-imports": "^3.0.0", - "eslint-plugin-yml": "^1.8.0", - "jsonc-eslint-parser": "^2.3.0", - "yaml-eslint-parser": "^1.2.2" - }, - "peerDependencies": { - "eslint": ">=7.4.0" - } - }, - "node_modules/@antfu/eslint-config-ts": { - "version": "0.39.8", - "resolved": "https://registry.npmjs.org/@antfu/eslint-config-ts/-/eslint-config-ts-0.39.8.tgz", - "integrity": "sha512-oMkIzxxD+sdHpO7Ctk+ej1SCZAoSbPMGyqjfaGLqpaxh87gP7LSFlm6QpsdIWllnTyYB75Hk8LMqFQWCJU9dxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/eslint-config-basic": "0.39.8", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-plugin-jest": "^27.2.3" - }, - "peerDependencies": { - "eslint": ">=7.4.0", - "typescript": ">=3.9" - } - }, - "node_modules/@antfu/eslint-config-vue": { - "version": "0.39.8", - "resolved": "https://registry.npmjs.org/@antfu/eslint-config-vue/-/eslint-config-vue-0.39.8.tgz", - "integrity": "sha512-BeBRdI8Bm0d9ppomvmPkrIim4IEW4ZHZHsGw2qSw/mSDZwprLyGi9tgNMnoHbN9OBGQwveuurdKFlJz5SlCjrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/eslint-config-basic": "0.39.8", - "@antfu/eslint-config-ts": "0.39.8", - "eslint-plugin-vue": "^9.15.1", - "local-pkg": "^0.4.3" - }, - "peerDependencies": { - "eslint": ">=7.4.0" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", - "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "find-up": "^5.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@appscode/design-system": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@appscode/design-system/-/design-system-2.6.9.tgz", - "integrity": "sha512-j9MA9Sa4ccXE0+IhUqyO8dN+BGiTuIzVzP2+ysGco7iWwIpVcvIFFliSWGsghCGiCztLPTaoZPe6y7DzjMli0g==", - "license": "Apache-2.0", - "dependencies": { - "@appscode/design-system-images": "^0.0.13" - } - }, - "node_modules/@appscode/design-system-images": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@appscode/design-system-images/-/design-system-images-0.0.13.tgz", - "integrity": "sha512-pJ0iiaD5xMtZ0fCtrGmyWAglO0kfZ6rOx/qLzk6OJkyMI0yRCH/fQRn5cO48F+sdKKF08KXXeMmvgsf1Y+ycUw==", - "license": "Apache-2.0" - }, - "node_modules/@appscode/static-assets": { - "name": "static-assets", - "version": "0.8.3", - "resolved": "git+ssh://git@github.com/appscode/static-assets.git#446167a5aecee32fb4ef2cd8d62a72bf28b47528", - "license": "Apache-2.0" - }, - "node_modules/@asamuzakjp/css-color": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", - "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.1", - "@csstools/css-color-parser": "^3.0.7", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bytebuilders/docs-base": { - "name": "docs-base", - "version": "0.1.0", - "resolved": "git+ssh://git@github.com/bytebuilders/docs-base.git#50bd63250b73577d61c7cd9f358bdbb753315874", - "dependencies": { - "@appscode/design-system": "^2.2.7", - "@appscode/static-assets": "github:appscode/static-assets", - "@types/jsdom": "^21.1.6", - "@vueuse/components": "^12.5.0", - "@vueuse/core": "^12.5.0", - "@vueuse/integrations": "^12.5.0", - "bulma": "0.9.4", - "cheerio": "^1.0.0-rc.12", - "font-awesome": "^4.7.0", - "html-parse-stringify": "^3.0.1", - "html-to-text": "^9.0.5", - "jsdom": "^24.0.0", - "JSONStream": "^1.3.5", - "pinia": "^2.1.3", - "vue-i18n": "^9.14.2", - "vue-multiselect": "^3.5.0", - "xml2js": "^0.6.2" - }, - "engines": { - "node": ">=22.0.0" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", - "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", - "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", - "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.1", - "@csstools/css-calc": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.13" - } - }, - "node_modules/@docsearch/css": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", - "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@docsearch/js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", - "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@docsearch/react": "3.8.2", - "preact": "^10.0.0" - } - }, - "node_modules/@docsearch/react": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", - "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-core": "1.17.7", - "@algolia/autocomplete-preset-algolia": "1.17.7", - "@docsearch/css": "3.8.2", - "algoliasearch": "^5.14.2" - }, - "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.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@iconify-json/simple-icons": { - "version": "1.2.21", - "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.21.tgz", - "integrity": "sha512-aqbIuVshMZ2fNEhm25//9DoKudboXF3CpoEQJJlHl9gVSVNOTr4cgaCIZvgSEYmys2HHEfmhcpoZIhoEFZS8SQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@iconify/types": "*" - } - }, - "node_modules/@iconify/json": { - "version": "2.2.299", - "resolved": "https://registry.npmjs.org/@iconify/json/-/json-2.2.299.tgz", - "integrity": "sha512-YsHoXNK4tBfY1aABlnAxGv8BFNsXBRfTuhRqkXLC0AK+amM+IDPLpVyOPCttcEHKuAsmh0OVPsrCZe2bC0puTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iconify/types": "*", - "pathe": "^1.1.2" - } - }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", - "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^0.4.1", - "@antfu/utils": "^0.7.10", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.13.0", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.1", - "mlly": "^1.7.3" - } - }, - "node_modules/@iconify/utils/node_modules/@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@iconify/utils/node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@iconify/utils/node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@intlify/core-base": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.5.tgz", - "integrity": "sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==", - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "9.14.5", - "@intlify/shared": "9.14.5" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/message-compiler": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.5.tgz", - "integrity": "sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==", - "license": "MIT", - "dependencies": { - "@intlify/shared": "9.14.5", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/shared": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.5.tgz", - "integrity": "sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", - "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", - "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", - "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", - "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", - "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", - "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", - "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", - "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", - "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", - "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", - "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", - "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", - "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", - "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", - "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", - "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", - "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", - "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", - "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", - "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", - "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", - "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", - "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", - "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", - "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz", - "integrity": "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@selderee/plugin-htmlparser2": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", - "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "selderee": "^0.11.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@shikijs/core": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.1.0.tgz", - "integrity": "sha512-v795KDmvs+4oV0XD05YLzfDMe9ISBgNjtFxP4PAEv5DqyeghO1/TwDqs9ca5/E6fuO95IcAcWqR6cCX9TnqLZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "2.1.0", - "@shikijs/engine-oniguruma": "2.1.0", - "@shikijs/types": "2.1.0", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.1.0.tgz", - "integrity": "sha512-cgIUdAliOsoaa0rJz/z+jvhrpRd+fVAoixVFEVxUq5FA+tHgBZAIfVJSgJNVRj2hs/wZ1+4hMe82eKAThVh0nQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "2.1.0", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.3.0" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.1.0.tgz", - "integrity": "sha512-Ujik33wEDqgqY2WpjRDUBECGcKPv3eGGkoXPujIXvokLaRmGky8NisSk8lHUGeSFxo/Cz5sgFej9sJmA9yeepg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "2.1.0", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@shikijs/langs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.1.0.tgz", - "integrity": "sha512-Jn0gS4rPgerMDPj1ydjgFzZr5fAIoMYz4k7ZT3LJxWWBWA6lokK0pumUwVtb+MzXtlpjxOaQejLprmLbvMZyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "2.1.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.1.0.tgz", - "integrity": "sha512-oS2mU6+bz+8TKutsjBxBA7Z3vrQk21RCmADLpnu8cy3tZD6Rw0FKqDyXNtwX52BuIDKHxZNmRlTdG3vtcYv3NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "2.1.0" - } - }, - "node_modules/@shikijs/transformers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.1.0.tgz", - "integrity": "sha512-3sfvh6OKUVkT5wZFU1xxiq1qqNIuCwUY3yOb9ZGm19y80UZ/eoroLE2orGNzfivyTxR93GfXXZC/ghPR0/SBow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/core": "2.1.0", - "@shikijs/types": "2.1.0" - } - }, - "node_modules/@shikijs/types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.1.0.tgz", - "integrity": "sha512-OFOdHA6VEVbiQvepJ8yqicC6VmBrKxFFhM2EsHHrZESqLVAXOSeRDiuSYV185lIgp15TVic5vYBYNhTsk1xHLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", - "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node22": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.0.tgz", - "integrity": "sha512-twLQ77zevtxobBOD4ToAtVmuYrpeYUh3qh+TEp+08IWhpsrIflVHqQ1F1CiPxQGL7doCdBIOOCF+1Tm833faNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/jsdom": { - "version": "21.1.7", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", - "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^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==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@volar/language-core": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz", - "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/source-map": "2.4.11" - } - }, - "node_modules/@volar/source-map": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz", - "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@volar/typescript": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz", - "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "2.4.11", - "path-browserify": "^1.0.1", - "vscode-uri": "^3.0.8" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/compiler-vue2": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", - "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", - "dev": true, - "license": "MIT", - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/@vue/devtools-kit": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.1.tgz", - "integrity": "sha512-yhZ4NPnK/tmxGtLNQxmll90jIIXdb2jAhPF76anvn5M/UkZCiLJy28bYgPIACKZ7FCosyKoaope89/RsFJll1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.7.1", - "birpc": "^0.2.19", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.1" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.1.tgz", - "integrity": "sha512-BtgF7kHq4BHG23Lezc/3W2UhK2ga7a8ohAIAGJMBr4BkxUFzhqntQtCiuL1ijo2ztWnmusymkirgqUrXoQKumA==", - "dev": true, - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/language-core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz", - "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "~2.4.11", - "@vue/compiler-dom": "^3.5.0", - "@vue/compiler-vue2": "^2.7.16", - "@vue/shared": "^3.5.0", - "alien-signals": "^0.4.9", - "minimatch": "^9.0.3", - "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "vue": "3.5.13" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "license": "MIT" - }, - "node_modules/@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vueuse/components": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-12.5.0.tgz", - "integrity": "sha512-aLgEW8bidRZ4qkVOIl958NAev+XKYTtbfsIj5ObjiDwvBDqxmGVCwMQvWHUQN37tb8JSkRF22gTUbXNt0iSwLQ==", - "license": "MIT", - "dependencies": { - "@vueuse/core": "12.5.0", - "@vueuse/shared": "12.5.0", - "vue": "^3.5.13" - } - }, - "node_modules/@vueuse/core": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.5.0.tgz", - "integrity": "sha512-GVyH1iYqNANwcahAx8JBm6awaNgvR/SwZ1fjr10b8l1HIgDp82ngNbfzJUgOgWEoxjL+URAggnlilAEXwCOZtg==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "12.5.0", - "@vueuse/shared": "12.5.0", - "vue": "^3.5.13" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/integrations": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.5.0.tgz", - "integrity": "sha512-HYLt8M6mjUfcoUOzyBcX2RjpfapIwHPBmQJtTmXOQW845Y/Osu9VuTJ5kPvnmWJ6IUa05WpblfOwZ+P0G4iZsQ==", - "license": "MIT", - "dependencies": { - "@vueuse/core": "12.5.0", - "@vueuse/shared": "12.5.0", - "vue": "^3.5.13" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "async-validator": "^4", - "axios": "^1", - "change-case": "^5", - "drauu": "^0.4", - "focus-trap": "^7", - "fuse.js": "^7", - "idb-keyval": "^6", - "jwt-decode": "^4", - "nprogress": "^0.2", - "qrcode": "^1.5", - "sortablejs": "^1", - "universal-cookie": "^7" - }, - "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/metadata": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.5.0.tgz", - "integrity": "sha512-Ui7Lo2a7AxrMAXRF+fAp9QsXuwTeeZ8fIB9wsLHqzq9MQk+2gMYE2IGJW48VMJ8ecvCB3z3GsGLKLbSasQ5Qlg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.5.0.tgz", - "integrity": "sha512-vMpcL1lStUU6O+kdj6YdHDixh0odjPAUM15uJ9f7MY781jcYkIwFA4iv2EfoIPO6vBmvutI1HxxAwmf0cx5ISQ==", - "license": "MIT", - "dependencies": { - "vue": "^3.5.13" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/algoliasearch": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz", - "integrity": "sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.20.0", - "@algolia/client-analytics": "5.20.0", - "@algolia/client-common": "5.20.0", - "@algolia/client-insights": "5.20.0", - "@algolia/client-personalization": "5.20.0", - "@algolia/client-query-suggestions": "5.20.0", - "@algolia/client-search": "5.20.0", - "@algolia/ingestion": "1.20.0", - "@algolia/monitoring": "1.20.0", - "@algolia/recommend": "5.20.0", - "@algolia/requester-browser-xhr": "5.20.0", - "@algolia/requester-fetch": "5.20.0", - "@algolia/requester-node-http": "5.20.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/alien-signals": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz", - "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.17", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz", - "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/birpc": { - "version": "0.2.19", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", - "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "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" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/bulma": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", - "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", - "license": "MIT" - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001787", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", - "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", - "dev": true, - "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" - } - ], - "license": "CC-BY-4.0", - "peer": true - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clean-regexp/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12 || >=16" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "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==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssstyle": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", - "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^2.8.2", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "license": "MIT" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.334", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", - "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", - "dev": true, - "license": "ISC", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-compat-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", - "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-json-compat-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", - "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esquery": "^1.6.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": "*", - "jsonc-eslint-parser": "^2.4.0" - }, - "peerDependenciesMeta": { - "@eslint/json": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-antfu": { - "version": "0.39.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-0.39.8.tgz", - "integrity": "sha512-VsQF1mofv0pg+9rhSohNhrxcufOzSsGyQdKqdyJHPMTT2mMwXAPgKW/v8SC6W7UDk1q/j2EHZ+UUOEAKRnkd7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^6.0.0" - } - }, - "node_modules/eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/ota-meshi", - "https://opencollective.com/eslint" - ], - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/eslint-plugin-es-x/node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-eslint-comments": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - }, - "engines": { - "node": ">=6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-plugin-html": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-7.1.0.tgz", - "integrity": "sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==", - "dev": true, - "license": "ISC", - "dependencies": { - "htmlparser2": "^8.0.1" - } - }, - "node_modules/eslint-plugin-html/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/eslint-plugin-import": { - "name": "eslint-plugin-i", - "version": "2.27.5-4", - "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.27.5-4.tgz", - "integrity": "sha512-X3Z+dp9nZw7d/y41EDO6JyFw4WVMOT91SFuoJvL0C0/4M1l6NxQ5mLTjXHuYhq0AazW75pAmj25yMk5wPMzjsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.8.0", - "get-tsconfig": "^4.6.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "resolve": "^1.22.3", - "semver": "^7.5.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://opencollective.com/unts" - }, - "peerDependencies": { - "eslint": "^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "27.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", - "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", - "eslint": "^7.0.0 || ^8.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-jest/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-jsonc": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.19.1.tgz", - "integrity": "sha512-MmlAOaZK1+Lg7YoCZPGRjb88ZjT+ct/KTsvcsbZdBm+w8WMzGx+XEmexk0m40P1WV9G2rFV7X3klyRGRpFXEjA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "eslint-compat-utils": "^0.6.0", - "eslint-json-compat-utils": "^0.2.1", - "espree": "^9.6.1", - "graphemer": "^1.4.0", - "jsonc-eslint-parser": "^2.0.4", - "natural-compare": "^1.4.0", - "synckit": "^0.6.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-markdown": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", - "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^0.8.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-no-only-tests": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", - "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=5.0.0" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-unicorn": { - "version": "48.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz", - "integrity": "sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "@eslint-community/eslint-utils": "^4.4.0", - "ci-info": "^3.8.0", - "clean-regexp": "^1.0.0", - "esquery": "^1.5.0", - "indent-string": "^4.0.0", - "is-builtin-module": "^3.2.1", - "jsesc": "^3.0.2", - "lodash": "^4.17.21", - "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.27", - "regjsparser": "^0.10.0", - "semver": "^7.5.4", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" - }, - "peerDependencies": { - "eslint": ">=8.44.0" - } - }, - "node_modules/eslint-plugin-unused-imports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", - "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-rule-composer": "^0.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "6 - 7", - "eslint": "8" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", - "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-yml": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.16.0.tgz", - "integrity": "sha512-t4MNCetPjTn18/fUDlQ/wKkcYjnuLYKChBrZ0qUaNqRigVqChHWzTP8SrfFi5s4keX3vdlkWRSu8zHJMdKwxWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.2", - "eslint-compat-utils": "^0.6.0", - "lodash": "^4.17.21", - "natural-compare": "^1.4.0", - "yaml-eslint-parser": "^1.2.1" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "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.8" - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/focus-trap": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", - "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "tabbable": "^6.2.0" - } - }, - "node_modules/font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", - "license": "(OFL-1.1 AND MIT)", - "engines": { - "node": ">=0.10.3" - } - }, - "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "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==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", - "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/html-parse-stringify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", - "license": "MIT", - "dependencies": { - "void-elements": "3.1.0" - } - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-to-text": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", - "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", - "license": "MIT", - "dependencies": { - "@selderee/plugin-htmlparser2": "^0.11.0", - "deepmerge": "^4.3.1", - "dom-serializer": "^2.0.0", - "htmlparser2": "^8.0.2", - "selderee": "^0.11.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/html-to-text/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "24.1.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", - "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", - "license": "MIT", - "dependencies": { - "cssstyle": "^4.0.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonc-eslint-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", - "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.5.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/leac": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", - "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", - "license": "MIT", - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minisearch": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.1.tgz", - "integrity": "sha512-b3YZEYCEH4EdCAtYP7OlDyx7FdPwNzuNwLQ34SfJpM9dlbBZzeXndGavTrC+VCiRWomL21SWfMc6SCKO/U2ZNw==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", - "license": "MIT" - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-manager-detector": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", - "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", - "dev": true, - "license": "MIT" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "license": "MIT", - "dependencies": { - "entities": "^4.5.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseley": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", - "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", - "license": "MIT", - "dependencies": { - "leac": "^0.6.0", - "peberminta": "^0.9.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/peberminta": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", - "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", - "license": "MIT", - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/pinia": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", - "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.3", - "vue-demi": "^0.14.10" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", - "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", - "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" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-html": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.8.0.tgz", - "integrity": "sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^8.0.0", - "js-tokens": "^9.0.0", - "postcss": "^8.5.0", - "postcss-safe-parser": "^6.0.0" - }, - "engines": { - "node": "^12 || >=14" - } - }, - "node_modules/postcss-html/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/preact": { - "version": "10.25.4", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz", - "integrity": "sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/redent/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp-tree": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", - "dev": true, - "license": "MIT", - "bin": { - "regexp-tree": "bin/regexp-tree" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regjsparser": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.60.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", - "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.1", - "@rollup/rollup-android-arm64": "4.60.1", - "@rollup/rollup-darwin-arm64": "4.60.1", - "@rollup/rollup-darwin-x64": "4.60.1", - "@rollup/rollup-freebsd-arm64": "4.60.1", - "@rollup/rollup-freebsd-x64": "4.60.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", - "@rollup/rollup-linux-arm-musleabihf": "4.60.1", - "@rollup/rollup-linux-arm64-gnu": "4.60.1", - "@rollup/rollup-linux-arm64-musl": "4.60.1", - "@rollup/rollup-linux-loong64-gnu": "4.60.1", - "@rollup/rollup-linux-loong64-musl": "4.60.1", - "@rollup/rollup-linux-ppc64-gnu": "4.60.1", - "@rollup/rollup-linux-ppc64-musl": "4.60.1", - "@rollup/rollup-linux-riscv64-gnu": "4.60.1", - "@rollup/rollup-linux-riscv64-musl": "4.60.1", - "@rollup/rollup-linux-s390x-gnu": "4.60.1", - "@rollup/rollup-linux-x64-gnu": "4.60.1", - "@rollup/rollup-linux-x64-musl": "4.60.1", - "@rollup/rollup-openbsd-x64": "4.60.1", - "@rollup/rollup-openharmony-arm64": "4.60.1", - "@rollup/rollup-win32-arm64-msvc": "4.60.1", - "@rollup/rollup-win32-ia32-msvc": "4.60.1", - "@rollup/rollup-win32-x64-gnu": "4.60.1", - "@rollup/rollup-win32-x64-msvc": "4.60.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "license": "MIT" - }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.32.13", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.13.tgz", - "integrity": "sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sass-loader": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", - "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/scule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", - "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/search-insights": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", - "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/selderee": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", - "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", - "license": "MIT", - "dependencies": { - "parseley": "^0.12.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.1.0.tgz", - "integrity": "sha512-yvKPdNGLXZv7WC4bl7JBbU3CEcUxnBanvMez8MG3gZXKpClGL4bHqFyLhTx+2zUvbjClUANs/S22HXb7aeOgmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/core": "2.1.0", - "@shikijs/engine-javascript": "2.1.0", - "@shikijs/engine-oniguruma": "2.1.0", - "@shikijs/langs": "2.1.0", - "@shikijs/themes": "2.1.0", - "@shikijs/types": "2.1.0", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", - "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "dev": true, - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stringify-entities/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", - "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", - "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0", - "@csstools/media-query-list-parser": "^2.1.4", - "@csstools/selector-specificity": "^3.0.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.1", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^7.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.29.0", - "mathml-tag-names": "^2.1.3", - "meow": "^10.1.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.28", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz", - "integrity": "sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12 || >=14" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "postcss-html": "^1.0.0", - "stylelint": ">=14.0.0" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz", - "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "stylelint": "^15.5.0" - } - }, - "node_modules/stylelint-config-recommended-scss": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-12.0.0.tgz", - "integrity": "sha512-5Bb2mlGy6WLa30oNeKpZvavv2lowJUsUJO25+OA68GFTemlwd1zbFsL7q0bReKipOSU3sG47hKneZ6Nd+ctrFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-scss": "^4.0.6", - "stylelint-config-recommended": "^12.0.0", - "stylelint-scss": "^5.0.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.5.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-config-recommended-vue": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-vue/-/stylelint-config-recommended-vue-1.6.0.tgz", - "integrity": "sha512-syk1adIHvbH2T1OiR/spUK4oQy35PZIDw8Zmc7E0+eVK9Z9SK3tdMpGRT/bgGnAPpMt/WaL9K1u0tlF6xM0sMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5", - "stylelint-config-html": ">=1.0.0", - "stylelint-config-recommended": ">=6.0.0" - }, - "engines": { - "node": "^12 || >=14" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "postcss-html": "^1.0.0", - "stylelint": ">=14.0.0" - } - }, - "node_modules/stylelint-config-standard": { - "version": "33.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz", - "integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "stylelint-config-recommended": "^12.0.0" - }, - "peerDependencies": { - "stylelint": "^15.5.0" - } - }, - "node_modules/stylelint-config-standard-scss": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz", - "integrity": "sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "stylelint-config-recommended-scss": "^11.0.0", - "stylelint-config-standard": "^33.0.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.5.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-config-standard-scss/node_modules/stylelint-config-recommended-scss": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz", - "integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-scss": "^4.0.6", - "stylelint-config-recommended": "^12.0.0", - "stylelint-scss": "^4.6.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.5.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-config-standard-scss/node_modules/stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.0" - } - }, - "node_modules/stylelint-scss": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", - "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "known-css-properties": "^0.29.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.0" - } - }, - "node_modules/stylelint/node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" - } - }, - "node_modules/stylelint/node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", - "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", - "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/unimport": { - "version": "3.14.6", - "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.14.6.tgz", - "integrity": "sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.4", - "acorn": "^8.14.0", - "escape-string-regexp": "^5.0.0", - "estree-walker": "^3.0.3", - "fast-glob": "^3.3.3", - "local-pkg": "^1.0.0", - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "pathe": "^2.0.1", - "picomatch": "^4.0.2", - "pkg-types": "^1.3.0", - "scule": "^1.3.0", - "strip-literal": "^2.1.1", - "unplugin": "^1.16.1" - } - }, - "node_modules/unimport/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unimport/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/unimport/node_modules/local-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz", - "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.3.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unimport/node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/unimport/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-visit/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/universal-cookie": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.2.2.tgz", - "integrity": "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/cookie": "^0.6.0", - "cookie": "^0.7.2" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unplugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", - "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/unplugin-auto-import": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz", - "integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.6", - "@rollup/pluginutils": "^5.0.5", - "fast-glob": "^3.3.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "minimatch": "^9.0.3", - "unimport": "^3.4.0", - "unplugin": "^1.5.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@nuxt/kit": "^3.2.2", - "@vueuse/core": "*" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - }, - "@vueuse/core": { - "optional": true - } - } - }, - "node_modules/unplugin-auto-import/node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unplugin-icons": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.17.4.tgz", - "integrity": "sha512-PHLxjBx3ZV8RUBvfMafFl8uWH88jHeZgOijcRpkwgne7y2Ovx7WI0Ltzzw3fjZQ7dGaDhB8udyKVdm9N2S6BIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^0.1.1", - "@antfu/utils": "^0.7.6", - "@iconify/utils": "^2.1.11", - "debug": "^4.3.4", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.0", - "unplugin": "^1.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@svgr/core": ">=7.0.0", - "@svgx/core": "^1.0.1", - "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", - "vue-template-compiler": "^2.6.12", - "vue-template-es2015-compiler": "^1.9.0" - }, - "peerDependenciesMeta": { - "@svgr/core": { - "optional": true - }, - "@svgx/core": { - "optional": true - }, - "@vue/compiler-sfc": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - }, - "vue-template-es2015-compiler": { - "optional": true - } - } - }, - "node_modules/unplugin-icons/node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "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" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.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==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile-message/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.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": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitepress": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", - "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@docsearch/css": "3.8.2", - "@docsearch/js": "3.8.2", - "@iconify-json/simple-icons": "^1.2.21", - "@shikijs/core": "^2.1.0", - "@shikijs/transformers": "^2.1.0", - "@shikijs/types": "^2.1.0", - "@types/markdown-it": "^14.1.2", - "@vitejs/plugin-vue": "^5.2.1", - "@vue/devtools-api": "^7.7.0", - "@vue/shared": "^3.5.13", - "@vueuse/core": "^12.4.0", - "@vueuse/integrations": "^12.4.0", - "focus-trap": "^7.6.4", - "mark.js": "8.11.1", - "minisearch": "^7.1.1", - "shiki": "^2.1.0", - "vite": "^5.4.14", - "vue": "^3.5.13" - }, - "bin": { - "vitepress": "bin/vitepress.js" - }, - "peerDependencies": { - "markdown-it-mathjax3": "^4", - "postcss": "^8" - }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } - } - }, - "node_modules/vitepress/node_modules/@vue/devtools-api": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.1.tgz", - "integrity": "sha512-Cexc8GimowoDkJ6eNelOPdYIzsu2mgNyp0scOQ3tiaYSb9iok6LOESSsJvHaI+ib3joRfqRJNLkHFjhNuWA5dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.1" - } - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "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/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-i18n": { - "version": "9.14.5", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.5.tgz", - "integrity": "sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==", - "deprecated": "v9 and v10 no longer supported. please migrate to v11. about maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html", - "license": "MIT", - "dependencies": { - "@intlify/core-base": "9.14.5", - "@intlify/shared": "9.14.5", - "@vue/devtools-api": "^6.5.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-multiselect": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.5.0.tgz", - "integrity": "sha512-i758SEqWFcFshL1eAg0F3EFeFQ1mOCmh2mgnGCZv1XpHFVIAv8fxo8bQQ4ZnMoaPhMp8KI1A6gPBVHh3YzRg/Q==", - "license": "MIT", - "engines": { - "node": ">= 14.18.1", - "npm": ">= 6.14.15" - } - }, - "node_modules/vue-tsc": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.0.tgz", - "integrity": "sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/typescript": "~2.4.11", - "@vue/language-core": "2.2.0" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.106.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", - "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", - "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", - "license": "MIT", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "license": "MIT" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yaml-eslint-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz", - "integrity": "sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.0.0", - "lodash": "^4.17.21", - "yaml": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index e33b5ca..0000000 --- a/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "type": "module", - "version": "0.0.14", - "engines": { - "node": ">=22.0.0" - }, - "scripts": { - "dev": "GENERATE_INDEX=false vitepress dev", - "build": "GENERATE_INDEX=true run-p type-check build-only", - "build-only": "rm -rf tsconfig.tsbuildinfo; vitepress build; mv .vitepress/dist/docs/404.html .vitepress/dist/404.html", - "preview": "cp .vitepress/dist/404.html .vitepress/dist/docs/404.html; vitepress preview", - "type-check": "vue-tsc --noEmit", - "lint:es": "eslint .", - "lint:style": "stylelint .vitepress/theme/**.{css,scss,sass}", - "lint-fix:es": "eslint . --fix", - "lint-fix:style": "stylelint .vitepress/theme/**.{css,scss,sass} --fix", - "format": "run-p lint-fix:*", - "deploy:qa": "export HOSTNAME=https://appscode.ninja; npm run build; firebase use default; firebase deploy", - "deploy:prod": "export HOSTNAME=https://appscode.com; npm run build; firebase use prod; firebase deploy; firebase use default" - }, - "dependencies": { - "@appscode/design-system": "^2.2.7", - "@bytebuilders/docs-base": "github:bytebuilders/docs-base", - "@vueuse/components": "^12.5.0", - "@vueuse/core": "^12.5.0", - "@vueuse/integrations": "^12.5.0", - "bulma": "0.9.4", - "font-awesome": "^4.7.0", - "pinia": "^2.1.3", - "vue-i18n": "^9.2.2" - }, - "devDependencies": { - "@antfu/eslint-config": "^0.39.5", - "@iconify/json": "^2.2.139", - "@rushstack/eslint-patch": "^1.3.1", - "@tsconfig/node22": "^22.0.0", - "@types/node": "^22.10.10", - "@vue/compiler-sfc": "^3.3.8", - "@vue/tsconfig": "^0.4.0", - "eslint": "^8.42.0", - "npm-run-all": "^4.1.5", - "postcss-html": "^1.5.0", - "sass": "1.32.13", - "sass-loader": "^13.3.1", - "stylelint": "^15.7.0", - "stylelint-config-recommended-scss": "^12.0.0", - "stylelint-config-recommended-vue": "^1.4.0", - "stylelint-config-standard": "^33.0.0", - "stylelint-config-standard-scss": "^9.0.0", - "typescript": "^5.0.4", - "universal-cookie": "^7.2.2", - "unplugin-auto-import": "^0.16.4", - "unplugin-icons": "^0.17.3", - "vitepress": "^1.0.1", - "vue-tsc": "^2.2.0" - } -} diff --git a/shims-vue.d.ts b/shims-vue.d.ts deleted file mode 100644 index 502aff2..0000000 --- a/shims-vue.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -declare module '*.vue' - - -declare module '@bytebuilders/docs-base/config' { - import { UserConfig } from 'vitepress' - const baseConfig: () => Promise - export default baseConfig -} diff --git a/src/_home-account.md b/src/_home-account.md deleted file mode 100644 index 2d6e6cc..0000000 --- a/src/_home-account.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-account - name: Account Management - description: Manage your account, subscriptions, and security settings with our interface - link: /en/guides/account-management/manage-profile.html - icon: https://img.icons8.com/00994A/ios/50/admin-settings-male.png - weight: 20 ---- diff --git a/src/_home-billing.md b/src/_home-billing.md deleted file mode 100644 index 808d8c8..0000000 --- a/src/_home-billing.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-billing - name: Billing and Usage Guide - description: Billing and Usage Guide for AppsCode's products - link: /en/guides/billing-and-usage-guide/overview.html - icon: https://img.icons8.com/external-anggara-basic-outline-anggara-putra/96/external-stats-ui-anggara-basic-outline-anggara-putra.png - weight: 20 ---- diff --git a/src/_home-cluster.md b/src/_home-cluster.md deleted file mode 100644 index d17a77a..0000000 --- a/src/_home-cluster.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-cluster - name: Cluster Management - description: Simplify cluster management with AppsCode's intuitive tools and features - link: /en/guides/cluster-management/add-cluster/overview.html - icon: https://img.icons8.com/00994A/external-sbts2018-outline-sbts2018/58/external-12-cluster-elastic-search-sbts2018-outline-sbts2018.png - weight: 20 ---- diff --git a/src/_home-database.md b/src/_home-database.md deleted file mode 100644 index 1bfc4f3..0000000 --- a/src/_home-database.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-database - name: Database Management - description: Manage databases with AppsCode's user-friendly tools and solutions - link: /en/guides/database-management/create-database.html - icon: https://img.icons8.com/00994A/ios/50/data-configuration.png - weight: 20 ---- diff --git a/src/_home-hub-ui.md b/src/_home-hub-ui.md deleted file mode 100644 index b851460..0000000 --- a/src/_home-hub-ui.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: hub-ui - name: Hub UI - description: Manage multiple clusters from a single point using Hub UI - link: /en/guides/cluster-management/hub-ui/introduction.html - icon: https://img.icons8.com/00994A/ios/50/hub.png - weight: 20 ---- diff --git a/src/_home-integrations.md b/src/_home-integrations.md deleted file mode 100644 index 2b15181..0000000 --- a/src/_home-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-integrations - name: Integrations - description: Manage licenses for AppsCode's products - link: /en/guides/integrations/rancher-extension.html - icon: https://img.icons8.com/?size=100&id=80695&format=png&color=000000 - weight: 20 ---- \ No newline at end of file diff --git a/src/_home-license.md b/src/_home-license.md deleted file mode 100644 index dbd6618..0000000 --- a/src/_home-license.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-license - name: License Management - description: Manage licenses for AppsCode's products - link: /en/guides/license-management/overview.html - icon: https://img.icons8.com/?size=100&id=80695&format=png&color=000000 - weight: 20 ---- diff --git a/src/_home-start.md b/src/_home-start.md deleted file mode 100644 index 71a00df..0000000 --- a/src/_home-start.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -menu: - home_menu: - identifier: home-start - name: Get Started - description: New to AppsCode? Follow simple steps to set up your account. - link: /en/guides/get-started/register-login.html - icon: https://img.icons8.com/00994A/ios/50/rocket--v1.png - weight: 10 ---- diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts deleted file mode 100644 index 1d89ee8..0000000 --- a/src/auto-imports.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// noinspection JSUnusedGlobalSymbols -// Generated by unplugin-auto-import -export {} -declare global { - -} diff --git a/src/en/guides/_index.md b/src/en/guides/_index.md deleted file mode 100644 index ad1b75c..0000000 --- a/src/en/guides/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -menu: - section_menu: - identifier: guides - name: Guides - weight: 30 ---- diff --git a/src/en/guides/cluster-management/_index.md b/src/en/guides/cluster-management/_index.md deleted file mode 100644 index 931820a..0000000 --- a/src/en/guides/cluster-management/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management - name: Cluster Management - popular: true - weight: 30 -menu_name: docs_menu -section_menu: guides ---- diff --git a/src/en/guides/cluster-management/add-cluster/import-rancher-cluster.md b/src/en/guides/cluster-management/add-cluster/import-rancher-cluster.md deleted file mode 100644 index 9ff91f8..0000000 --- a/src/en/guides/cluster-management/add-cluster/import-rancher-cluster.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-rancher - name: Import Rancher Managed Clusters - parent: cluster-management-add - weight: 15 -menu_name: docs_menu -section_menu: guides ---- - - -# Adding a Rancher Managed Cluster to AppsCode Dashboard - -Adding a `Rancher-Managed` cluster to the AppsCode Dashboard involves a slightly different process. In order to import a `Rancher-Managed` cluster to the AppsCode Dashboard, you need to create a Rancher Managed Organization and a Rancher Type Credential. - -## Create Rancher Type Credential - -To create a Rancher type credential, refer to the [Credentials Management Documentation](../../account-management/kubernetes/credentials.md#rancher) and follow the instructions to add a new credential of type "Rancher." - -## Create a Rancher Managed Organization - -Unlike personal accounts, Rancher clusters are associated with Rancher Managed organizations. Follow the [Create a New Organization](../../account-management/orgs-members.md#create-a-new-organization) documentation with the following additional steps: - -1. Choose the organization's Origin as `Rancher Managed`. -2. Provide the Rancher `API Endpoint`, which you can find under the `Account & API Keys` page. -3. Click `Create` to complete the organization creation process. - -## Import the Cluster - -Before importing a Rancher Managed cluster into the AppsCode Dashboard, you must switch to the Rancher organization. Follow these steps: - -1. Go to [AppsCode Console](https://console.appscode.com). -2. Click on the Profile Icon or username. -3. Choose `Switch Account`. -4. Select your Rancher organization. - -Once you are in the Rancher organization, follow the standard cluster import process outlined in the [Import Vendor Managed Clusters](import-vendor-managed.md) documentation. diff --git a/src/en/guides/cluster-management/add-cluster/import-vendor-managed.md b/src/en/guides/cluster-management/add-cluster/import-vendor-managed.md deleted file mode 100644 index 6de1ff6..0000000 --- a/src/en/guides/cluster-management/add-cluster/import-vendor-managed.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-vendormanaged - name: Import Vendor Managed Clusters - parent: cluster-management-add - weight: 10 - home_menu: - identifier: home-cluster-add-vendormanaged - name: Import Vendor Managed Clusters - parent: home-cluster - weight: 10 -menu_name: docs_menu -section_menu: guides ---- - - -# Adding a Vendor-Managed Cluster to AppsCode Dashboard - -Enhance your AppsCode experience by seamlessly connecting your vendor-managed Kubernetes cluster to the [AppsCode Dashboard](https://console.appscode.com/). Follow these step-by-step instructions: - -1. Visit [AppsCode Dashboard](https://console.appscode.com/). -2. Click on the `Add Cluster` button. - -### Choose Provider - -3. From the `Vendor Managed` section, select the provider hosting your Kubernetes cluster. - -### Select Credential - -4. Choose a credential with the necessary permissions for accessing and importing the cluster. If you don't have a credential, create one by clicking the `+Create Credential` button [here](../../account-management/kubernetes/credentials.html). -5. Select the created credential and click `Next`. - -### Select Cluster - -6. This step varies based on your provider: - - For `Linode` or `Digital Ocean`, directly select the cluster. - - For `AKS`, `EKS`, and `GKE`: - - Choose the appropriate `Resource Group`, `Region`, or `Project` where the cluster resides. - - Select the specific cluster for import. - -### Customize Feature and Import - -7. Complete the process by clicking `Import` to bring the selected cluster into the AppsCode Dashboard. - -### Explore -8. Once imported, explore the cluster's details and capabilities within the dashboard. - -By following these steps, you'll seamlessly integrate your vendor-managed Kubernetes cluster, unlocking its full potential within the AppsCode environment. Feel free to refer back to this tutorial for guidance. \ No newline at end of file diff --git a/src/en/guides/cluster-management/add-cluster/overview.md b/src/en/guides/cluster-management/add-cluster/overview.md deleted file mode 100644 index bcb6fd0..0000000 --- a/src/en/guides/cluster-management/add-cluster/overview.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-overview - name: Overview - parent: cluster-management-add - weight: 1 -menu_name: docs_menu -section_menu: guides ---- - -# Adding a Cluster to AppsCode Dashboard - -Integrating your Kubernetes cluster, whether it's vendor-managed or self-managed, into the AppsCode dashboard is a simple process that elevates your cluster management experience. - -The procedure consists of two primary steps: - -## Step 1: Cluster Selection - -#### For Vendor-Managed Clusters - -To include Vendor-Managed clusters in the AppsCode dashboard, follow the steps outlined in [Import Vendor Managed Clusters](import-vendor-managed.md). - -For Rancher Managed cluster, refer to [Import Rancher Managed Clusters](import-rancher-cluster.md) documentation. - -#### For Self-Managed Clusters - -If you have a self-managed Kubernetes cluster, refer to [Import Self-Managed Clusters](self-managed/import-self-managed.md) for detailed instructions on adding it to the AppsCode dashboard. - -## Step 2: Feature Customization - -Following the successful addition of your cluster, the next step involves customizing features to be installed during the cluster import process into our system. This ensures a seamless integration and optimizes the functionality of your cluster within the AppsCode environment. - -Explore your cluster further and leverage the full capabilities of the AppsCode dashboard. - -Feel free to refer to the comprehensive documents linked above for a detailed walkthrough of each step in the process. \ No newline at end of file diff --git a/src/en/guides/cluster-management/add-cluster/self-managed/_index.md b/src/en/guides/cluster-management/add-cluster/self-managed/_index.md deleted file mode 100644 index f280e53..0000000 --- a/src/en/guides/cluster-management/add-cluster/self-managed/_index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-selfmanaged - name: Import Self-Managed Clusters - parent: cluster-management-add - weight: 20 - home_menu: - identifier: home-cluster-add-selfmanaged - name: Import Self-Managed Clusters - parent: home-cluster - weight: 20 -menu_name: docs_menu -section_menu: guides ---- \ No newline at end of file diff --git a/src/en/guides/cluster-management/add-cluster/self-managed/import-private.md b/src/en/guides/cluster-management/add-cluster/self-managed/import-private.md deleted file mode 100644 index 12a159a..0000000 --- a/src/en/guides/cluster-management/add-cluster/self-managed/import-private.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-importprivatecluster - name: Import Private Clusters - parent: cluster-management-add-selfmanaged - weight: 40 - home_menu: - identifier: home-cluster-add-importprivatecluster - name: Import Private Clusters - parent: home-cluster - weight: 40 -menu_name: docs_menu -section_menu: guides ---- - - -# Adding a Private Self-Managed Cluster to AppsCode Dashboard - -Optimize your AppsCode experience by seamlessly connecting your private or air-gapped self-managed Kubernetes cluster to the AppsCode Dashboard. Follow these detailed steps for a smooth integration process: - -1. Navigate to the [AppsCode Dashboard](https://console.appscode.com/). -2. Click on the `Add Cluster` button to initiate the integration. - -### Cluster Type Selection - Private - -3. From the `Self Managed` section, choose the option for a private or air-gapped cluster. - -### Provide Kubeconfig and Get Import Link - -4. Provide the kubeconfig for your private Kubernetes cluster. Click `Get Import Link` button and you will get two commands. Execute either of these commands in your Kubernetes cluster. - -### Feature Customization - -5. After completion, the UI will automatically transition to the feature customization step, optimizing your cluster's capabilities within the AppsCode environment. - -### Explore - -6. Once imported, explore the cluster's details and capabilities within the AppsCode Dashboard. - -By following these steps, you'll seamlessly integrate your private or air-gapped self-managed Kubernetes cluster, unlocking its full potential within the AppsCode environment. Feel free to refer back to this tutorial for guidance. - diff --git a/src/en/guides/cluster-management/add-cluster/self-managed/import-public.md b/src/en/guides/cluster-management/add-cluster/self-managed/import-public.md deleted file mode 100644 index af04fac..0000000 --- a/src/en/guides/cluster-management/add-cluster/self-managed/import-public.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-add-importpubliccluster - name: Import Public Clusters - parent: cluster-management-add-selfmanaged - weight: 30 - home_menu: - identifier: home-cluster-add-importpubliccluster - name: Import Public Clusters - parent: home-cluster - weight: 30 -menu_name: docs_menu -section_menu: guides ---- - - -# Adding a Public Self-Managed Cluster to AppsCode Dashboard - -Elevate your Kubernetes cluster management with AppsCode Dashboard by seamlessly integrating your public self-managed Kubernetes cluster. Follow these detailed steps for a smooth integration process: - -1. Navigate to the [AppsCode Dashboard](https://console.appscode.com/). -2. Click on the `Add Cluster` button to initiate the integration. - -### Cluster Type Selection - Public - -3. From the `Self Managed` section, choose the option for a public cluster. - -### Provide Public Kubeconfig - -4. Provide the public kubeconfig for your Kubernetes cluster. This file contains essential information for establishing a connection between your cluster and the AppsCode Dashboard. - -### Feature Customization - -5. Proceed seamlessly to the feature customization step, enhancing your cluster's capabilities within the AppsCode environment. - -### Explore - -6. Once imported, explore the cluster's details and capabilities within the AppsCode Dashboard. - -By following these steps, you'll effortlessly integrate your public self-managed Kubernetes cluster, unlocking its full potential within the AppsCode environment. Feel free to refer back to this tutorial for guidance. - diff --git a/src/en/guides/cluster-management/cluster-helm-charts.md b/src/en/guides/cluster-management/cluster-helm-charts.md deleted file mode 100644 index 458eb65..0000000 --- a/src/en/guides/cluster-management/cluster-helm-charts.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-helmcharts - name: Manage Cluster Helm Charts - parent: cluster-management - weight: 50 -menu_name: docs_menu -section_menu: guides ---- - - -# Manage Helm Charts in AppsCode Dashboard - -AppsCode Dashboard offers a robust Helm Chart Management feature, allowing users to effortlessly manage Helm releases within their Kubernetes clusters. This functionality streamlines the installation of new charts, interaction with existing releases, and provides an overall intuitive interface for Helm chart management. - -## Accessing Helm Chart Management - -To navigate to the Helm Chart Management page: - -1. From the [AppsCode Dashboard](https://console.appscode.com), click on your imported cluster to go to the Cluster Overview page. -2. In the left sidebar, under **Helm**, select **Releases** to access the Helm Chart Management page. - -## Helm Chart Management Features - -### Install New Charts - -Installing new Helm charts is a straightforward process: - -1. **Choose Chart Source:** Select a chart source from publicly available URLs or provide a custom URL. -2. **Select Chart and Version:** Browse and choose the desired chart and version. -3. **Customize Installation:** Provide a custom release name, namespace, and specify a custom values file during installation. - -### Interact with Existing Releases - -Efficiently manage existing Helm releases: - -- **Modify Releases:** Adjust existing Helm releases based on evolving requirements. -- **Rollback to Previous Versions:** Easily revert to previous versions of Helm releases if needed. - -### User-Friendly Interface - -The Helm Chart Management page in the AppsCode Dashboard ensures an intuitive and user-friendly interface. This allows users to manage Helm releases seamlessly, minimizing the reliance on complex Helm CLI commands. - -Explore the power of Helm chart management within the AppsCode Dashboard and enhance your Kubernetes experience. diff --git a/src/en/guides/cluster-management/constraints-violations.md b/src/en/guides/cluster-management/constraints-violations.md deleted file mode 100644 index 0930f4b..0000000 --- a/src/en/guides/cluster-management/constraints-violations.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: cluster-management-gatekeeper - name: Constraints & Violations - parent: cluster-management - weight: 90 - home_menu: - identifier: home-cluster-gatekeeper - name: Constraints & Violations - parent: home-cluster - weight: 90 -menu_name: docs_menu -section_menu: guides ---- - - -# Constraints & Violations diff --git a/src/en/guides/cluster-management/hub-ui/upgrade.md b/src/en/guides/cluster-management/hub-ui/upgrade.md deleted file mode 100644 index 0debf96..0000000 --- a/src/en/guides/cluster-management/hub-ui/upgrade.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: hub-ui-upgrade - name: Upgrade Spoke - parent: hub-ui - weight: 80 - home_menu: - identifier: hub-ui-upgrade - name: Upgrade Spoke - parent: hub-ui - weight: 80 -menu_name: docs_menu -section_menu: guides ---- - - - - -# Upgrade spoke cluster - -1. Go to clusterset of the cluster that you want to upgrade to latest version - -![Upgrade](../images/upgrade/upgrade_1.png) - -2. You will see a new interface a spoke featureset inside a hub - -![Upgrade](../images/upgrade/upgrade_2.png) - -Here if you want a spoke to intentionally have different features than hub then you can configure them from here - -3. Go to the upgrade version from sidebar if there is any latest version available you will upgrade button click and Done - -![Upgrade](../images/upgrade/upgrade_3.png) - - diff --git a/src/en/guides/database-management/manage-recommendations.md b/src/en/guides/database-management/manage-recommendations.md deleted file mode 100644 index 9c83a5e..0000000 --- a/src/en/guides/database-management/manage-recommendations.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: database-management-recommendation - name: Manage Recommendations - parent: database-management - weight: 80 - home_menu: - identifier: home-database-recommendation - name: Manage Recommendations - parent: home-database - weight: 80 -menu_name: docs_menu -section_menu: guides ---- - - -# Manage Recommendations diff --git a/src/en/guides/get-started/add-credential.md b/src/en/guides/get-started/add-credential.md deleted file mode 100644 index 532f63a..0000000 --- a/src/en/guides/get-started/add-credential.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: guide-start-credential - name: Add a Credential - parent: guide-start - weight: 20 - home_menu: - identifier: home-start-credential - name: Add a Credential - parent: home-start - popular: true - weight: 20 -menu_name: docs_menu -section_menu: guides ---- - - -# Add Credential - -Now that you have successfully registered and logged in to the AppsCode Dashboard, let's take the next step in setting up your environment. The first crucial task is to add credentials for your Kubernetes clusters. This ensures a secure connection and allows AppsCode to seamlessly manage your clusters. - -Follow these steps to add your credentials: - -1. Navigate to the [Add Credential Page](https://home.appscode.com/user/settings/credentials/create). -2. Choose your `Credential Type` or authentication method and enter the required details. -3. Click on the `Done` button to securely save your credentials. - -For detailed documentation refer to [Credential Management](../account-management/kubernetes/credentials.md) - -After adding your credentials, you'll be ready to import your Kubernetes cluster and unlock a world of possibilities within the AppsCode environment. diff --git a/src/en/guides/get-started/manage-databases.md b/src/en/guides/get-started/manage-databases.md deleted file mode 100644 index 1ad2da7..0000000 --- a/src/en/guides/get-started/manage-databases.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: guide-start-databases - name: Manage Databases - parent: guide-start - weight: 50 - home_menu: - identifier: home-start-databases - name: Manage Databases - parent: home-start - weight: 50 -menu_name: docs_menu -section_menu: guides ---- - - -# Manage Databases diff --git a/src/en/guides/integrations/_index.md b/src/en/guides/integrations/_index.md deleted file mode 100644 index d11494d..0000000 --- a/src/en/guides/integrations/_index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: 'guide' -menu: - docs_menu: - identifier: integrations - name: Integrations - description: Integrate ACE into your Kubernetes platform - icon: https://img.icons8.com/?size=100&id=80695&format=png&color=000000 - popular: true - weight: 40 -menu_name: docs_menu -section_menu: guides ---- diff --git a/src/en/overview.md b/src/en/overview.md deleted file mode 100644 index 8429dca..0000000 --- a/src/en/overview.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: 'guide' -menu: - section_menu: - identifier: overview - name: Overview - weight: 20 -section_menu: overview ---- - - -# Appscode Container Engine - -Kubernetes has emerged as the de-facto way to deploy modern containerized apps on cloud or on-premises. “Despite all that growth on the application layer, the data layer hasn’t gotten as much traction with containerization” - Google. That’s not surprising, since handling things like state (the database), availability to other layers of the application, and redundancy for a database makes it challenging to run a database in a distributed environment like Kubernetes. diff --git a/src/en/selfhost-setup/index.md b/src/en/selfhost-setup/index.md deleted file mode 100644 index 564fd94..0000000 --- a/src/en/selfhost-setup/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: guide -menu: - selfhost-setup_docs_menu: {} - section_menu: - identifier: selfhost-setup - name: Selfhost Setup - weight: 30 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - - -# Host AppsCode Platform as Your Own - -Welcome to AppsCode Platform's Self-Hosted deployment! Whether you're looking for a quick trial in "Self Hosted Demo" mode or gearing up for a production-ready environment (`Self Hosted Production`), you're in control. - - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers. - - -
-
-Click on the `Create New Installer` button to get started. You can either choose deployment type `Self Hosted Demo` or `Self Hosted Production`. Provide the required data and click `Done` button to generate the installer. Upon generation of the installer, you will get the documentation how to host AppsCode Server on your own. -
-
-To get detailed documentation on `Self Hosted Demo` installer, head over to [Demo Deployment](install/selfhosted-demo.md). -
-
-To get detailed documentation on `Self Hosted Production` installer, head over to [Production Deployment](install/selfhosted-production.md). diff --git a/src/en/selfhost-setup/install/_index.md b/src/en/selfhost-setup/install/_index.md deleted file mode 100644 index ab482af..0000000 --- a/src/en/selfhost-setup/install/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhosted-installer - name: Self Hosted Installer - weight: 10 ---- diff --git a/src/en/selfhost-setup/install/azure-marketplace.md b/src/en/selfhost-setup/install/azure-marketplace.md deleted file mode 100644 index 23d7d01..0000000 --- a/src/en/selfhost-setup/install/azure-marketplace.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: azure-marketplace - name: Azure Marketplace - parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# 1. Deploying AppsCode Platform: Azure Marketplace - -Welcome to the AppsCode Platform's **Azure Marketplace** deployment! This guide will walk you through the deployment process via the Azure Marketplace, ensuring your environment is configured correctly for a seamless installation. - -### Prerequisites - -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* **Worker Nodes**: At least one dedicated worker node. -* **CPU**: 4–6 vCPUs. -* **Memory**: 16 GB of RAM. -* **Networking**: A routable IP address for external connectivity. - -## Getting Started - -The **Azure Marketplace** installation wizard will prompt you for specific configuration parameters. Having these details ready beforehand will streamline your setup. - -If you encounter any issues during the deployment, please refer to our Official Documentation or contact with us. - -### 2. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
-Click on the `Create New Installer` button to get started. - -### 3. Choose Deployment Mode And Environment - -Choose `Deployment Type` -> `Azure Marketplace` and give it a name in the installer name section. - -For deploying ACE using azure marketplace, you usually need these four pieces of information to establish a secure connection. These represent the "Identity" of your application and the "Address" of your billing/directory structure. - -#### 1. Subscription ID -The unique identifier for your **Azure Subscription**. This is where the actual billing for Marketplace services occurs. To get Subscription ID: - 1. Log in to the [Azure Portal](https://portal.azure.com). - 2. Search for **Subscriptions** in the top search bar. - 3. Select your active subscription. - 4. Copy the **Subscription ID** (e.g., `a1b2c3d4-5678-90ab-cdef-1234567890ab`). - -#### 2. Tenant ID -The identifier for your **Microsoft Entra ID** (formerly Azure AD) instance. It represents your entire organization in the cloud. To get Tenant ID: - 1. In the Azure Portal, search for **Microsoft Entra ID**. - 2. On the **Overview** page, look for **Tenant ID**. - 3. Copy the GUID. - -#### 3. Client ID -This is the "username" for your application. When you register an app in Azure to interact with the Marketplace API, it is assigned this ID. To get Client ID: - 1. Go to **Microsoft Entra ID** > **App registrations**. - 2. Select your application (if you haven't made one, click **New registration**). - 3. Copy the **Application (client) ID** from the Essentials section. -Your application must have the necessary permissions to create deployment resources. It requires permissions to manage the cluster and blob storage, as well as to list regions. In this case, we have assigned the Contributor role. - -#### 4. Client Secret -This is the "password" for your application. It allows the app to prove its identity to Azure. To get Client Secret: - 1. Inside your **App registration**, click **Certificates & secrets** in the left menu. - 2. Click **+ New client secret**. - 3. Add a description and expiry (e.g., 12 months). - 4. **CRITICAL:** Copy the **Value** (not the Secret ID) immediately. Once you leave the page, it will be hidden forever. - -Put **Subscription ID**, **Tenant ID**, **Client ID** and **Client Secret** in the respective field. For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint - -### 4. Global Administrative Settings - -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account.You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint - -
- - -### 5. Registry - -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - -### 6. Settings - -#### Domain White List -* Add domain one by one for whitelisting -* Put Login and Logout URL - -
- - -### 7. Self Management - -In this section you can enable or disable features. You can also create an initial `CAPI Cluster` from this section. - -### 8. Branding & UI Customization - -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. - -
- - -### 9. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 10. Deploy AppsCode Platform - -#### Step 1: Create Azure application -Go to Azure Marketplace and select AppsCode Cloud w/ Usage Billing application. [AppsCode Cloud w/ Usage Billing from Marketplace](https://portal.azure.com/#create/appscode.ace_paygace-payg) - -
- - -#### Step 2: Basic Information -Provide basic information for the Azure application. Put your resource group and application name. - -
- - -#### Step 3: Select VM -Select a virtual machine for the Installer with at least 4 core CPU and 16GB of RAM. - -
- - -#### Step 4: Authentication Type -By default Username user will be created to your Installer VM. -You can use one of the Password or SSH Key Pair to authenticate into the VM. - -
- - -#### Step 5: Installer Information -Provide the URL link you found from the instruction in the Installer Url field - -
- - -You can monitor the deployment progress through the **Managed Resource Group's** overview page and the **Activity Log**. Once the deployment is complete, the necessary resources will be provisioned within that managed resource group. -
- - -
- -### 11. Explore the Deployed Platform - -Once deployed, access the **AppsCode Platform** using the specified domain. Log in with the admin account credentials provided during the creation process. \ No newline at end of file diff --git a/src/en/selfhost-setup/install/cloud-demo.md b/src/en/selfhost-setup/install/cloud-demo.md deleted file mode 100644 index eb8bd0d..0000000 --- a/src/en/selfhost-setup/install/cloud-demo.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhost-cloud-demo-deployment - name: Cloud Demo Deployment - parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# Deploying AppsCode Platform: Cloud Demo - -Welcome to the AppsCode Platform's "Cloud Demo" deployment! Follow these steps to deploy the AppsCode Platform in Cloud Demo mode. - -### Prerequisites - -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* Worker Nodes: At least one dedicated worker node. -* CPU: 4–6 vCPUs. -* Memory: 16 GB of RAM. -* Networking: A routable IP address for external connectivity. - - - -You will get an instruction to deploy a k3s cluster in Ubuntu VM or you can skip this step if you already have a cluster. - -### 1. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
-Click on the `Create New Installer` button to get started. - -### 2. Choose Deployment Mode - -Choose `Deployment Type` -> `Cloud Demo` and give it a name in the installer name section. - -Before beginning the installation, identify your target infrastructure and cluster type. - -* **DNS & Connectivity:** - * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. - * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. -* **Cluster Type:** Determine if you are installing on **AWS EKS Cluster** or **Red Hat OpenShift Cluster**. - -#### Additional configuration for EKS cluster - -**Prerequisite:**
-* EBS CSI Driver must be installed -* AWS Load Balancer Controller must be installed - -Run the following command to get Kube API Server - -``` -aws eks describe-cluster --name --region --query "cluster.endpoint" --output text -``` - -**Run the following command to get Subnet IDs** -``` -aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws eks describe-cluster --name --region --query "cluster.resourcesVpcConfig.vpcId" --output text)" "Name=map-public-ip-on-launch,Values=true" --region --query "Subnets[*].SubnetId" --output text -``` - -**Subnet IDs:** Make sure you have added the allocation id of Target IP as well. Run the following command to create EIP Allocation IDs `aws ec2 allocate-address --region ` - -**EIP Allocation IDs:** Give EIP allocation IDs for your public subnets. - -### 3. Global Administrative Settings -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account. You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -
- - -### 4. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - - -### 5. Settings - -#### Domain White List and Proxy Servers - -* Add domain one by one for whitelisting -* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** -* Put Login and Logout URL for your app - -
- - -### 6. Ingress & Gateway - -Configure how the application is exposed to the internet or your internal network. - -* **Ingress & Gateway:** Enable either the **Gateway API** or standard **Ingress**. - -
- - - -### 7. Self Management -In this section you can enable or disable features - -
- - -### 8. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. - -
- - -### 9. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 10. Deploy AppsCode Platform - -Follow the documentation provided by AppsCode to deploy the AppsCode Platform on your system. - -### 11. Explore the Deployed Platform - -Once deployed, access the AppsCode Platform using the specified domain. Log in with the admin account credentials provided during the creation process. - -
- - -## Get Support - -If you encounter any challenges during the deployment or have questions, reach out to AppsCode support for assistance. - -Congratulations! You have successfully deployed the AppsCode Platform in Cloud Demo mode. Explore the features and capabilities of the platform in your customized environment. diff --git a/src/en/selfhost-setup/install/k8s-app-demo.md b/src/en/selfhost-setup/install/k8s-app-demo.md deleted file mode 100644 index 3c7cf0e..0000000 --- a/src/en/selfhost-setup/install/k8s-app-demo.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhost-k8s-app-demo-deployment - name: K8s App Demo Deployment - parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# Deploying AppsCode Platform: K8s App Demo - -Welcome to the AppsCode Platform's "K8s App Demo" deployment! Follow these steps to deploy the AppsCode Platform in K8s App Demo mode. - -### Prerequisites - -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* Worker Nodes: At least one dedicated worker node. -* CPU: 4–6 vCPUs. -* Memory: 16 GB of RAM. -* Networking: A routable IP address for external connectivity. - - -You will get an instruction to deploy a k3s cluster in Ubuntu VM or you can skip this step if you already have a cluster. - -### 1. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
-Click on the `Create New Installer` button to get started. - -### 2. Choose Deployment Mode - -Choose `Deployment Type` -> `K8s App Demo` and give it a name in the installer name section. - -Before beginning the installation, identify your target infrastructure and cluster type. - -* **DNS & Connectivity:** - * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. - * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. -* **Cluster Type:** Determine if you are installing on **Red Hat OpenShift Cluster**. -### 3. Global Administrative Settings -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account.You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -
- - -### 4. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - - -### 5. Settings - -#### Domain White List and Proxy Servers - -* Add domain one by one for whitelisting -* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** -* Put Login and Logout URL for your app - -
- - -### 6. Self Management -In this section you can enable or disable features - -
- - -### 7. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. - -
- - -### 8. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 9. Deploy AppsCode Platform - -Follow the documentation provided by AppsCode to deploy the AppsCode Platform on your system. - -### 10. Explore the Deployed Platform - -Once deployed, access the AppsCode Platform using the specified domain. Log in with the admin account credentials provided during the creation process. - -
- - -## Get Support - -If you encounter any challenges during the deployment or have questions, reach out to AppsCode support for assistance. - -Congratulations! You have successfully deployed the AppsCode Platform in K8s App Demo mode. Explore the features and capabilities of the platform in your customized environment. \ No newline at end of file diff --git a/src/en/selfhost-setup/install/onprem-demo.md b/src/en/selfhost-setup/install/onprem-demo.md deleted file mode 100644 index 7530c8b..0000000 --- a/src/en/selfhost-setup/install/onprem-demo.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhost-onprem-demo-deployment - name: Onprem Demo Deployment - parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# Deploying AppsCode Platform: Onprem Demo - -Welcome to the AppsCode Platform's "Onprem Demo" deployment! Follow these steps to deploy the AppsCode Platform in Onprem Demo mode. - -### Prerequisites - -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* Worker Nodes: At least one dedicated worker node. -* CPU: 4–6 vCPUs. -* Memory: 16 GB of RAM. -* Networking: A routable IP address for external connectivity. - -You will get an instruction to deploy a k3s cluster in Ubuntu VM or you can skip this step if you already have a cluster. - -### 1. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
-Click on the `Create New Installer` button to get started. - -### 2. Choose Deployment Mode - -Choose `Deployment Type` -> `Onprem Demo` and give it a name in the installer name section. - -Before beginning the installation, identify your target infrastructure and cluster type. - -* **DNS & Connectivity:** - * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. - * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. -* **Cluster Type:** Determine if you are installing on **Red Hat OpenShift Cluster**. -### 3. Global Administrative Settings -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account.You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -
- - -### 4. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - - -### 5. Settings - -#### Domain White List and Proxy Servers - -* Add domain one by one for whitelisting -* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** -* Put Login and Logout URL for your app - -
- - -### 6. TLS -Configure TLS certificates for secure communication. You can choose the Issuer type from the following list. - * **External**: Use this if you already have certificates from an external provider. - * CA CERT: Paste the Certificate Authority certificate. - * Certificate CERT: Paste the certificate issued for your domain. - * Certificate Key: Paste the private key associated with the certificate. - - * **CA:** Use this if you want AppsCode to manage your certificates with its internal CA. - * CA CERT: Paste the internal CA certificate. - * CA Key: Paste the internal CA key. - -### 7. Ingress & Gateway - -Configure how the application is exposed to the internet or your internal network. - -* **Ingress & Gateway:** Enable either the **Gateway API** or standard **Ingress**. - -
- - -### 8. NATS - -Configure NATS, which is used as the internal messaging system for the platform. - -**Expose Via:** - Choose how NATS will be exposed: - - * **HostPort:** Exposes NATS directly on the node’s network interface. - - * **Node Selector:** Specify the node label (Key and Value) to control where NATS will be scheduled. - * **Ingress:** Use this option to expose NATS externally via an ingress controller. -**Replicas:** For production, ensure at least 1 replica is active (consider 3 for high availability). -**Resources:** Configure CPU Requests, CPU Limits, Memory Request and Memory Limit - -
- - -### 9. Self Management -In this section you can enable or disable features - -
- - -### 10. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. - -
- - -### 11. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 12. Deploy AppsCode Platform - -Follow the documentation provided by AppsCode to deploy the AppsCode Platform on your system. - -### 13. Explore the Deployed Platform - -Once deployed, access the AppsCode Platform using the specified domain. Log in with the admin account credentials provided during the creation process. - -
- - -## Get Support - -If you encounter any challenges during the deployment or have questions, reach out to AppsCode support for assistance. - -Congratulations! You have successfully deployed the AppsCode Platform in Onprem Demo mode. Explore the features and capabilities of the platform in your customized environment. diff --git a/src/en/selfhost-setup/install/openshift-demo.md b/src/en/selfhost-setup/install/openshift-demo.md deleted file mode 100644 index 0b523d0..0000000 --- a/src/en/selfhost-setup/install/openshift-demo.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhost-openshift-demo - name: Open Shift Demo - parent: selfhosted-installer - weight: 10 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# Deploying AppsCode Platform: Open Shift Demo - -Welcome to the AppsCode Platform's **Open Shift Demo** deployment! In this mode, you have the flexibility to customize various aspects of the deployment to meet the specific requirements of your production environment. - -### Prerequisites - -Before you begin, please ensure your Kubernetes cluster meets the following minimum system requirements: -* **Worker Nodes**: At least one dedicated worker node. -* **CPU**: 4–6 vCPUs. -* **Memory**: 16 GB of RAM. -* **Networking**: A routable IP address for external connectivity. - -### 1. Visit the AppsCode Self-Hosted Page - -Navigate to [AppsCode Self-Hosted](https://appscode.com/selfhost). Here you will find your previously generated self-hosted installers.
-Click on the `Create New Installer` button to get started. - -### 2. Choose Deployment Mode And Environment - -Choose `Deployment Type` -> `Open Shift Demo` and give it a name in the installer name section. - -Before beginning the installation, identify your target infrastructure and cluster type. - -* **DNS & Connectivity:** - * **Enable DNS:** Toggle this to allow the installer to manage or integrate with your DNS provider. - * **Target IP:** Provide the static IP addresses for your cluster nodes or load balancer. - - -### 3. Global Administrative Settings -These credentials define the primary super-user and the initial organizational structure. - -* **System Admin:** In this section, provide the administrator's following information. - - **Admin Account Display Name:** The display name for the administrator account. - - **Admin Account Email:** The email address for the administrator account. - - **Admin Account Password:** The password for the administrator account.You may manually set a password or leave it blank to allow the system to **auto-generate** a secure administrative password. - - **Initial Organization Name:** You can choose what will be the initial organization name for your account - -For openshift cluster toggle Red Hat OpenShift cluster and give Kube API Server endpoint - -### 4. Registry -Ace requires access to various container registries and Helm repositories to pull necessary images and charts. - -**Docker Registry:** Go to the docker registry section first then look for the following settings -* **Proxies:** Put registry name for Appscode `r.appscode.com` and other Public Registries like Docker Hub, GitHub Container Registry (`ghcr.io`), Kubernetes Registry, Microsoft (`mcr.microsoft.com`), and Quay. -* **Helm Repositories:** In the helm repositories section put your helm repository url -If using private or authenticated registries, provide: -* **Credentials:** Username and Password. -* **Certs:** Upload CA Cert, Client Cert, and Client Key if required for mutual TLS. -* **Image Pull Secrets:** Define the secrets used by the cluster to authenticate with the registries. You can enable create namespace during helm install, allow nondistributable artifacts and insecure option for insecure registry - - -### 5. Settings -#### Domain White List and Proxy Servers - -* Add domain one by one for whitelisting -* **Proxy Servers:** If you have proxy servers then put **HTTP Proxy**, **HTTPS Proxy** and **No Proxy** -* Put Login and Logout URL for your app - -
- - -### 6. TLS -Configure TLS certificates for secure communication. You can choose the Issuer type from the following list. - * **External**: Use this if you already have certificates from an external provider. - * CA CERT: Paste the Certificate Authority certificate. - * Certificate CERT: Paste the certificate issued for your domain. - * Certificate Key: Paste the private key associated with the certificate. - - * **CA:** Use this if you want AppsCode to manage your certificates with its internal CA. - * CA CERT: Paste the internal CA certificate. - * CA Key: Paste the internal CA key. - -### 7. Ingress & Gateway -Configure how the application is exposed to the internet or your internal network. - -* **Ingress & Gateway:** Enable either the **Gateway API** or standard **Ingress**. - -
- - - -### 8. NATS - -Configure NATS, which is used as the internal messaging system for the platform. - -**Expose Via:** - Choose how NATS will be exposed: - - * **HostPort:** Exposes NATS directly on the node’s network interface. - - * **Node Selector:** Specify the node label (Key and Value) to control where NATS will be scheduled. - * **Ingress:** Use this option to expose NATS externally via an ingress controller. -**Replicas:** For production, ensure at least 1 replica is active (consider 3 for high availability). -**Resources:** Configure CPU Requests, CPU Limits, Memory Request and Memory Limit - -
- - -### 9. Self Management -In this section you can enable or disable features - -
- - -### 10. Branding & UI Customization -Administrators can globally re-brand the Ace interface to match corporate identity. - -* **App Name:** Changes the browser tab title. -* **Primary Color:** Enter a Hex code (default: `#009948`). -* **Assets:** - * **Logo:** Upload a 200x30px image (SVG/PNG recommended). - * **Favicon:** Upload a 20KB icon file. -* **App Tag:** Toggle **"Show App Tag"** to display or hide the version/tagging info in the UI. - -
- - -### 11. Generate Installer and Documentation - -Click the "Deploy" button to submit your information. AppsCode will generate the installer and provide the necessary documentation. - -### 12. Deploy AppsCode Platform - -Follow the documentation provided by AppsCode to deploy the AppsCode Platform on your system. - -### 13. Explore the Deployed Platform - -Once deployed, access the **AppsCode Platform** using the specified domain. Log in with the admin account credentials provided during the creation process. \ No newline at end of file diff --git a/src/en/selfhost-setup/uninstall.md b/src/en/selfhost-setup/uninstall.md deleted file mode 100644 index ba01a58..0000000 --- a/src/en/selfhost-setup/uninstall.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: 'guide' -menu: - selfhost-setup_docs_menu: - identifier: selfhost-setup-uninstall - name: Uninstall - weight: 20 -menu_name: selfhost-setup_docs_menu -section_menu: selfhost-setup ---- - -# Uninstall diff --git a/src/en/welcome/index.md b/src/en/welcome/index.md deleted file mode 100644 index 444de19..0000000 --- a/src/en/welcome/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: guide -menu: - welcome_docs_menu: {} - section_menu: - identifier: welcome - name: Welcome - weight: 10 -menu_name: welcome_docs_menu -section_menu: welcome ---- - - -# Welcome - -From here you can learn all about our Cloud Platform and how to use it. - -- [Overview](/en/overview). Overview explains what Appscode Cloud Platform is. -- [Setup](/en/selfhost-setup/). Setup contains instructions for using the platform. diff --git a/src/index.md b/src/index.md deleted file mode 100644 index d6dcad6..0000000 --- a/src/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: home -lang: en -menu_name: home_menu ---- - - - - diff --git a/src/public/images/404/404-bg.png b/src/public/images/404/404-bg.png deleted file mode 100644 index 3814242..0000000 Binary files a/src/public/images/404/404-bg.png and /dev/null differ diff --git a/src/public/images/404/man.png b/src/public/images/404/man.png deleted file mode 100644 index 1434b98..0000000 Binary files a/src/public/images/404/man.png and /dev/null differ diff --git a/src/public/images/pattern-squire.png b/src/public/images/pattern-squire.png deleted file mode 100644 index 73d1652..0000000 Binary files a/src/public/images/pattern-squire.png and /dev/null differ diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index b23925d..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": ["@vue/tsconfig/tsconfig.dom.json", "@tsconfig/node22/tsconfig.json"], - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Bundler", - "esModuleInterop": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "baseUrl": ".", - "target": "ESNext", - "types": [ - "unplugin-icons/types/vue", - "vite/client" - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["shims-vue.d.ts", "src/**/*", ".vitepress/**/*"] -}