diff --git a/.github/workflows/azure-static-web-apps-white-bush-0475e2d03.yml b/.github/workflows/azure-static-web-apps-white-bush-0475e2d03.yml index ffc92ef..d1d56aa 100644 --- a/.github/workflows/azure-static-web-apps-white-bush-0475e2d03.yml +++ b/.github/workflows/azure-static-web-apps-white-bush-0475e2d03.yml @@ -10,7 +10,7 @@ on: - main schedule: # Run at 00:01 daily so it picks up any docs changes and updates the news stripe - - cron: '01 0 * * *' + - cron: "01 0 * * *" workflow_dispatch: # For manual dispatch @@ -23,19 +23,7 @@ jobs: - uses: actions/checkout@v2 with: submodules: true - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: '1.15.4' - id: go - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: '0.89.0' - extended: true - - name: Build website - run: | - make + - name: Build And Deploy id: builddeploy uses: Azure/static-web-apps-deploy@v1 @@ -45,9 +33,8 @@ jobs: action: "upload" ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: "public" # App source code path - api_location: "" # Api source code path - optional - skip_app_build: true + app_location: "/" # App source code path + output_location: "build" # Built app content directory - optional ###### End of Repository/Build Configurations ###### close_pull_request_job: @@ -60,4 +47,4 @@ jobs: uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_WHITE_BUSH_0475E2D03 }} - action: "close" \ No newline at end of file + action: "close" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6e9ac4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* \ No newline at end of file diff --git a/README.md b/README.md index a9f075b..0c6c2c2 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,41 @@ -# Headlamp Website +# Website -Headlamp's website is built with [Hugo](https://gohugo.io/). +This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. -## Installing Hugo - -You should install Hugo Extended instead of the regular Hugo version. - -So download [Hugo Extended](https://github.com/gohugoio/hugo/releases) -from the releases page, and/or follow -[these instructions](https://gohugo.io/getting-started/installing/) -in order to install it. - -## Adding content - -Currently, you'll need to edit the text files under `content` in this repo to modify the site. - -### Blog content - -In order to add content for the blog you can use the `hugo new` command. The format is as follow. - -`hugo new blog/YEAR-MONTH-DAY-example-content/index.md` - -The following command will create a new blog post with the [front matter](https://gohugo.io/content-management/front-matter/) defined in the default [archetype](https://gohugo.io/content-management/archetypes/) from the `./archetype` directory. - -The default front matter almost always needs to be modified to a category and tags. Here's an example. +### Installation ``` ---- -title: "Example Content" -date: 2018-10-26T03:51:27+02:00 -draft: true -tags: -- tag1 -- tag1 -categories: -- Announcement ---- +$ yarn ``` -*TODO: Add more content sections (events, job postings, etc.)* - -## Testing - -You should always test your changes locally before creating a pull request. Once you do createi a branch or a pull request, we use Netlify to create previes of the changes so that reviewers and yourself can easily review the changes. - -### Testing locally - -To test locally run the following command. +### Local Development -`make run` - -The above command will run a server with the the site available at `http://localhost:1313`. It will also watch for any changes made to the site and regenerate and reload the site when changes are detected. In addition, it disables some caching that can sometimes have confusing results. - -### Testing Pull requests - -Each pull request will run some checks and create a new preview of the changes that can be access by clicking on the Github pull request status section. - -### Testing documentation locally - -If you are working on documentation and would like to see the changes -be reflected in a local run of the website, then you need to generate a -module to import the docs and run the website locally with it. - -You can use the `tools/preview_docs.sh` script for conveniently generating -an import module, e.g.: +``` +$ yarn start +``` -`./tools/preview_docs.sh ../headlamp/docs new_latest` +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. -(this creates a `tmp_modules.yaml`) +### Build -and then start the local server again with `make run`. +``` +$ yarn build +``` -You can then view the changes in the `new_latest` version of the docs by accessing the site at the server. -ex. `http://localhost:1313/docs/new_latest`. +This command generates static content into the `build` directory and can be served using any static contents hosting service. -## Changing the published documentation +### Deployment -The documentation is set under `params.docs` in [config.yaml](./config.yaml) and -should look similar to: +Using SSH: ``` -github_edit_url: https://github.com/kinvolk/headlamp/edit/main/docs/ -issues_url: https://github.com/kinvolk/kinvolk/issues/new?labels=kind/docs -external_docs: -- repo: https://github.com/kinvolk/headlamp.git - name: "latest" - branch: "main" - dir: "docs" +$ USE_SSH=true yarn deploy ``` -If you want to add a new version of the documentation, this can be done by adding a new entry to external_docs: +Not using SSH: + ``` -external_docs: -- repo: https://github.com/kinvolk/headlamp.git - name: "latest" - branch: "main" - dir: "docs" -- repo: https://github.com/kinvolk/headlamp.git - name: "old" - branch: "tag-1.2.3" - dir: "docs" +$ GIT_USER= yarn deploy ``` -This will pull the docs that were versioned by the `tag-1.2.3` and place them under a version called `old`. - -By default, the first version in the list of `external_docs` is considered to be -the latest version and so it is the one linked to automatically in the site. +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/assets/images/round-dots.png b/assets/images/round-dots.png deleted file mode 100644 index 4cc4258..0000000 Binary files a/assets/images/round-dots.png and /dev/null differ diff --git a/assets/scss/custom.scss b/assets/scss/custom.scss deleted file mode 100644 index cfc1840..0000000 --- a/assets/scss/custom.scss +++ /dev/null @@ -1,114 +0,0 @@ -$branding-main-darker: #002E33; -$branding-dark: #002E33; -$branding-main: #002E33; -$footer-links-hover: #F4CB00; - -@import './main'; - -.home { - .banner { - padding-bottom: 50px; - } -} - -.docs { - .docs-section { - .td-content { - a { - text-decoration: underline; - - &:hover { - text-decoration: none; - } - } - } - } -} - -.section-product { - &:last-child:after { - content: ""; - display: block; - height: 350px; - margin-top: 5rem; - background: url(/images/features-bottom-pattern-2.png) center calc(100% + 1px) repeat-x; - } -} - -$light-yellow: #FFFCCC; - -.grid-statements { - background: $light-yellow; -} - -.article__related { - background-color: $light-yellow; -} - -.article-main { - a { - text-decoration: underline; - - &:hover { - text-decoration: none; - } - } - - .article-content { - color: #424242; - background-color: white; - } -} - -.footer { - a:hover { - color: $footer-links-hover; - } - - &__copyright { - > p { - a { - color: $white; - text-decoration: underline; - - &:hover { - color: $footer-links-hover; - text-decoration: none; - } - } - } - } -} - -.quick-features { - a { - text-decoration: underline; - &:hover { - text-decoration: none; - } - } - - .description { - margin-bottom: 0; - } -} - -.download_button { - text-decoration: none; - display: inline-flex; - align-items: center; - width: 120px; - margin-top: 10px; - min-width: 205px; - width: 205px; - - .download-button-text { - padding-left: 10px; - font-weight: normal; - max-width: 100px; - } -} - -.download-button-icon { - font-size: 30px; -} \ No newline at end of file diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..e00595d --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/content/blog/2020-11-16-announcing-headlamp/headlamp_cluster_chooser.png b/blog/2020-11-16-announcing-headlamp/headlamp_cluster_chooser.png similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/headlamp_cluster_chooser.png rename to blog/2020-11-16-announcing-headlamp/headlamp_cluster_chooser.png diff --git a/content/blog/2020-11-16-announcing-headlamp/headlamp_cluster_overview.png b/blog/2020-11-16-announcing-headlamp/headlamp_cluster_overview.png similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/headlamp_cluster_overview.png rename to blog/2020-11-16-announcing-headlamp/headlamp_cluster_overview.png diff --git a/content/blog/2020-11-16-announcing-headlamp/headlamp_no_permissions.png b/blog/2020-11-16-announcing-headlamp/headlamp_no_permissions.png similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/headlamp_no_permissions.png rename to blog/2020-11-16-announcing-headlamp/headlamp_no_permissions.png diff --git a/content/blog/2020-11-16-announcing-headlamp/headlamp_permissions.png b/blog/2020-11-16-announcing-headlamp/headlamp_permissions.png similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/headlamp_permissions.png rename to blog/2020-11-16-announcing-headlamp/headlamp_permissions.png diff --git a/content/blog/2020-11-16-announcing-headlamp/index.md b/blog/2020-11-16-announcing-headlamp/index.md similarity index 87% rename from content/blog/2020-11-16-announcing-headlamp/index.md rename to blog/2020-11-16-announcing-headlamp/index.md index e0bf9c9..6dab12b 100644 --- a/content/blog/2020-11-16-announcing-headlamp/index.md +++ b/blog/2020-11-16-announcing-headlamp/index.md @@ -1,34 +1,31 @@ -+++ -authors = ["Joaquim Rocha", "Andy Randall"] -date = "2020-11-16T15:33:00+00:00" -description = "Shining a light on the Kubernetes User Experience with Headlamp" -draft = false -tags = ["open source", "user-interfaces", "kubernetes", "headlamp"] -title = "Shining a light on the Kubernetes User Experience with Headlamp" -postImage = "tram_night_headlight.jpg" -postImageTooltip = "Image by Lokesh Anand" -subtitle = "Announcing a new open source Kubernetes user interface project, Headlamp" -+++ +--- +authors: [joaquim-rocha, andrew-randall] +description: "Shining a light on the Kubernetes User Experience with Headlamp" +draft: false +tags: ["open source", "user-interfaces", "kubernetes", "headlamp"] +title: "Shining a light on the Kubernetes User Experience with Headlamp" +image: ./tram_night_headlight.jpg +subtitle: "Announcing a new open source Kubernetes user interface project, Headlamp" +--- If you’ve ever seen a Kubernetes demo, it probably involved a terminal and someone typing commands using kubectl and arcane yaml configuration files. This might be a powerful workflow for experts, but in an age when everything has a slick web interface, it is not the most accessible user experience. It **steepens the learning curve** for those new to Kubernetes, and **presents a barrier** to occasional users. Of course, there are several graphical user interfaces available for Kubernetes, including the _Kubernetes Dashboard_ project that is part of upstream Kubernetes itself. However, when we researched the landscape, we couldn’t find a solution that covered everything we were looking for. Specifically, our criteria were: -* 100% open source -* Actively maintained -* Generic, in the sense of not being tied to a specific vendor’s Kubernetes distro -* Modular and extensible -* Clean, modern user interface -* Implemented using a stack that was familiar to our development team (Go, Javascript/Typescript, React) -* An interactive UI that allows read-write operations, not just a read-only dashboard -* Multi-cluster. +- 100% open source +- Actively maintained +- Generic, in the sense of not being tied to a specific vendor’s Kubernetes distro +- Modular and extensible +- Clean, modern user interface +- Implemented using a stack that was familiar to our development team (Go, Javascript/Typescript, React) +- An interactive UI that allows read-write operations, not just a read-only dashboard +- Multi-cluster. Despite the good number of alternatives, the reality is that none of the solutions we tested at the time really matched all the points in our criteria or was a good base to start from. So, in the time-honored tradition, we decided to build one ourselves… - # Introducing Headlamp -Today, I am **proud to announce the general availability of a new UI for Kubernetes**: [Headlamp](https://github.com/kinvolk/headlamp). +Today, I am **proud to announce the general availability of a new UI for Kubernetes**: [Headlamp](https://github.com/headlamp-k8s/headlamp). ![Headlamp](./headlamp_cluster_overview.png) @@ -98,14 +95,10 @@ You may be aware that Kinvolk also has a Kubernetes distribution, [Lokomotive](h # Shine Headlamp on your cluster!! -It’s **easy to try out Headlamp**: just apply the deployment manifest to your cluster and point your browser to the Headlamp service, or download and install the desktop application for Windows, Mac, or Linux. For details, see the [documentation](https://kinvolk.io/docs/headlamp/latest/installation). +It’s **easy to try out Headlamp**: just apply the deployment manifest to your cluster and point your browser to the Headlamp service, or download and install the desktop application for Windows, Mac, or Linux. For details, see the [documentation](/docs/latest/installation). Headlamp is fully open source, released under the Apache 2.0 terms and, as mentioned above, we created it to be a generic and vendor-independent Kubernetes UI that we hope can suit many use-cases. So we encourage anyone interested to take part. -If you want to participate, please check out our [contribution guidelines](https://kinvolk.io/docs/headlamp/latest/contributing). +If you want to participate, please check out our [contribution guidelines](/docs/latest/contributing). **We hope you enjoy Headlamp!** - -
- -
diff --git a/content/blog/2020-11-16-announcing-headlamp/traces.gif b/blog/2020-11-16-announcing-headlamp/traces.gif similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/traces.gif rename to blog/2020-11-16-announcing-headlamp/traces.gif diff --git a/content/blog/2020-11-16-announcing-headlamp/tram_night_headlight.jpg b/blog/2020-11-16-announcing-headlamp/tram_night_headlight.jpg similarity index 100% rename from content/blog/2020-11-16-announcing-headlamp/tram_night_headlight.jpg rename to blog/2020-11-16-announcing-headlamp/tram_night_headlight.jpg diff --git a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/API.png b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/API.png similarity index 100% rename from content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/API.png rename to blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/API.png diff --git a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg similarity index 100% rename from content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg rename to blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg diff --git a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/pod-counter.png b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/pod-counter.png similarity index 100% rename from content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/pod-counter.png rename to blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/pod-counter.png diff --git a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/storybook.png b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/storybook.png similarity index 100% rename from content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/storybook.png rename to blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/improving-the-developer-experience-for-headlamp-plugins/storybook.png diff --git a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md similarity index 74% rename from content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md rename to blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md index 98dd9ff..174a2e3 100644 --- a/content/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md +++ b/blog/2021-04-07-improving-the-developer-experience-for-headlamp-plugins/index.md @@ -1,14 +1,13 @@ -+++ -authors = ["Joaquim Rocha", "René Dudfield"] -date = "2021-04-07T12:00:00+02:00" -description = "Enlightened Plugging in Headlamp" -draft = false -tags = ["kubernetes", "headlamp", "plugins", "lokomotive"] -title = "Improving the developer experience for Headlamp plugins" -postImage = "improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg" -+++ - -We released [Headlamp](https://kinvolk.io/docs/headlamp/latest/) (a generic Kubernetes web UI) last November with one of its core features being "frontend plugins". These are extensions whose purpose is to offer extra functionality that is not available in Headlamp by default. +--- +authors: [joaquim-rocha, rene-dudfield] +description: "Enlightened Plugging in Headlamp" +draft: false +tags: ["kubernetes", "headlamp", "plugins", "lokomotive"] +title: "Improving the developer experience for Headlamp plugins" +image: ./improving-the-developer-experience-for-headlamp-plugins/headlamp-plugins-splash.jpeg +--- + +We released [Headlamp](/) (a generic Kubernetes web UI) last November with one of its core features being "frontend plugins". These are extensions whose purpose is to offer extra functionality that is not available in Headlamp by default. Plugins are written in Typescript (or Javascript), compiled into a single module using [webpack](https://webpack.js.org/), and loaded by Headlamp’s backend which makes them available for the frontend to dynamically load. @@ -32,14 +31,14 @@ For making the plugin creation and programming easier, we revamped the `@kinvolk Since plugins were initially developed with the “in-cluster” deployments in mind, for different vendors to provide a unique Kubernetes web UI to their users, Headlamp’s desktop apps did not support the use of plugins. -With this new [0.3.0 version](https://github.com/kinvolk/headlamp/releases/tag/v0.3.0) +With this new [0.3.0 version](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.3.0) however, the Headlamp desktop app has full support for plugins. It now looks for changes and automatically reloads the UI as well, if a plugin is changed. This effectively means that plugin developers no longer need to clone Headlamp's repository and build it just for developing plugins, as using one of the desktop applications works for loading and seeing any changes throughout the plugins' development. # How to make a Headlamp plugin -Instead of duplicating the [How to Create a Plugin](https://kinvolk.io/docs/headlamp/latest/development/plugins/how-to/) section we have in our documentation, we thought we’d create a short video to illustrate how you can develop a Headlamp plugin: +Instead of duplicating the [How to Create a Plugin](/docs/latest/development/plugins/how-to/) section we have in our documentation, we thought we’d create a short video to illustrate how you can develop a Headlamp plugin: -{{< youtube vyki8c6AkeE >}} + # Development Resources @@ -47,13 +46,13 @@ We can break down the development resources for a Headlamp plugin into: examples ## Examples -As developers, we are used to learning by looking into others’ code. So if you are also like that, you can take a look at the [plugins examples folder](https://github.com/kinvolk/headlamp/tree/master/plugins) we have as part of Headlamp’s repository, as well as the [plugins](https://github.com/kinvolk/lokomotive-web-ui/tree/master/plugins) we have as part of the Lokomotive Web UI. +As developers, we are used to learning by looking into others’ code. So if you are also like that, you can take a look at the [plugins examples folder](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples) we have as part of Headlamp’s repository, as well as the [plugins](https://github.com/kinvolk/lokomotive-web-ui/tree/master/plugins) we have as part of the Lokomotive Web UI. ## A component playground To make it easier to discover Headlamp’s components and how they work or how they can be used inside of plugins, we have set up a “[Storybook](https://storybook.js.org/)”. This lets developers search for components and play with them, changing their inputs to see what they do. -Plugins are not limited to using Headlamp GUI components, they can also use a large selection of [Material UI](https://material-ui.com/) components, but using Storybook is a great way to learn about Headlamp’s internals, for plugin use or for contributing changes to Headlamp itself. Check out the documentation on how to run the [Headlamp storybook](https://kinvolk.io/docs/headlamp/latest/development/frontend/#storybook). +Plugins are not limited to using Headlamp GUI components, they can also use a large selection of [Material UI](https://material-ui.com/) components, but using Storybook is a great way to learn about Headlamp’s internals, for plugin use or for contributing changes to Headlamp itself. Check out the documentation on how to run the [Headlamp storybook](/docs/latest/development/frontend/#storybook). ![Screenshot of Headlamp's storybook](./improving-the-developer-experience-for-headlamp-plugins/storybook.png "The components that Headlamp are made from can be discovered in the storybook, and used inside of plugins") @@ -61,7 +60,7 @@ Plugins are not limited to using Headlamp GUI components, they can also use a la To help with the plugin development, or indeed with understanding Headlamp’s internals, we have started on a detailed Headlamp’s API reference guide. Classes, functions and other things are listed with their respective types. -You can read the [Headlamp API reference](https://kinvolk.io/docs/headlamp/latest/development/api/) integrated into the project’s developer documentation. +You can read the [Headlamp API reference](/docs/latest/development/api/) integrated into the project’s developer documentation. ![A screenshot of the documentation portal showing the API docs](./improving-the-developer-experience-for-headlamp-plugins/API.png "API reference shows what functions are available") @@ -74,13 +73,13 @@ Once plugins are ready to be deployed in production (for in-cluster deployments) npx @kinvolk/headlamp-plugin extract your-plugins/headlamp-myfancy path/to/.plugins ``` -Be sure to check more details on deploying plugins in the “[Building and Shipping plugins](https://kinvolk.io/docs/headlamp/latest/development/plugins/building/)” part of the documentation. +Be sure to check more details on deploying plugins in the “[Building and Shipping plugins](/docs/latest/development/plugins/building/)” part of the documentation. # Your plugins We built the plugins capability for enabling use-cases beyond what we perceive as core to the experience of managing Kubernetes, and are looking forward to seeing what others can do with it. Moreover, we are also planning on having an official list of plugins soon. \ -So do let us know what plugins you are working or interested in working on! Or tell us what we need to improve to support your use-case through plugins. You can reach us at the [#headlamp](https://kubernetes.slack.com/messages/headlamp) channel in the Kubernetes Slack, or file an issue on the [Headlamp repo](https://github.com/kinvolk/headlamp). +So do let us know what plugins you are working or interested in working on! Or tell us what we need to improve to support your use-case through plugins. You can reach us at the [#headlamp](https://kubernetes.slack.com/messages/headlamp) channel in the Kubernetes Slack, or file an issue on the [Headlamp repo](https://github.com/headlamp-k8s/headlamp). # … but that’s not all! -While this article is about the new plugin development experience, we do have other new features in this Headlamp 0.3.0 release. For example, we now support ARM64 Apple Silicon (M1), a new YAML view for resources, and more! So make sure to also check out this new version's [release notes](https://github.com/kinvolk/headlamp/releases/tag/v0.3.0). +While this article is about the new plugin development experience, we do have other new features in this Headlamp 0.3.0 release. For example, we now support ARM64 Apple Silicon (M1), a new YAML view for resources, and more! So make sure to also check out this new version's [release notes](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.3.0). diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/accessing-token-minikube.png b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/accessing-token-minikube.png similarity index 100% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/accessing-token-minikube.png rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/accessing-token-minikube.png diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/enabling-headlamp-addon-minikube.png b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/enabling-headlamp-addon-minikube.png similarity index 100% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/enabling-headlamp-addon-minikube.png rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/enabling-headlamp-addon-minikube.png diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-cluster-overview.png b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-cluster-overview.png similarity index 100% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-cluster-overview.png rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-cluster-overview.png diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-minikube.png b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-minikube.png similarity index 100% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-minikube.png rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-minikube.png diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-prompt-for-token.png b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-prompt-for-token.png similarity index 100% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-prompt-for-token.png rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/headlamp-on-minikube/headlamp-prompt-for-token.png diff --git a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md similarity index 77% rename from content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md rename to blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md index 1154b02..eca7e33 100644 --- a/content/blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md +++ b/blog/2022-08-04-getting-started-with-headlamp-on-minikube/index.md @@ -1,14 +1,13 @@ -+++ -authors = ["santhosh-nagaraj"] -date = "2022-08-04T17:00:00+02:00" -description = "Experiment with Kubernetes using Minikube and Headlamp on your machine" -draft = false -tags = ["kubernetes", "ui", "headlamp", "minikube"] -title = "Getting started with Headlamp using Minikube" -postImage = "headlamp-on-minikube/headlamp-minikube.png" -+++ - -[Minikube](https://minikube.sigs.k8s.io/) makes it easy to learn and develop for Kubernetes locally. It allows users to get Kubernetes up and running on a single machine very quickly, and its **addons** make it easy to enable more functionality or deploy applications. This makes Minikube ideal for new Kubernetes users, or for quick tests/deployments. [Headlamp](https://github.com/kinvolk/headlamp#readme) is therefore a great complement for Minikube. After all, as a graphical user interface, Headlamp offers a more guided way to interact with Kubernetes than the typical command-line experience. +--- +authors: ["santhosh-nagaraj"] +description: "Experiment with Kubernetes using Minikube and Headlamp on your machine" +draft: false +tags: ["kubernetes", "ui", "headlamp", "minikube"] +title: "Getting started with Headlamp using Minikube" +image: ./headlamp-on-minikube/headlamp-minikube.png +--- + +[Minikube](https://minikube.sigs.k8s.io/) makes it easy to learn and develop for Kubernetes locally. It allows users to get Kubernetes up and running on a single machine very quickly, and its **addons** make it easy to enable more functionality or deploy applications. This makes Minikube ideal for new Kubernetes users, or for quick tests/deployments. [Headlamp](https://github.com/headlamp-k8s/headlamp#readme) is therefore a great complement for Minikube. After all, as a graphical user interface, Headlamp offers a more guided way to interact with Kubernetes than the typical command-line experience. So, we added a [Headlamp addon for Minikube](https://minikube.sigs.k8s.io/docs/handbook/addons/headlamp/)! @@ -66,7 +65,8 @@ If it all went well, you should see an overview of the cluster (as the screensho Here is a video of the whole process of installing Minikube and running Headlamp through the new addon: -{{< youtube IFAVnr410iE >}} +
+ We hope the Minikube addon for Headlamp makes it easy for you to get started on experimenting with Kubernetes and Headlamp. diff --git a/content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/headlamp-screenshot.png b/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/headlamp-screenshot.png similarity index 100% rename from content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/headlamp-screenshot.png rename to blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/headlamp-screenshot.png diff --git a/content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md b/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md similarity index 81% rename from content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md rename to blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md index a2b7e7c..425c230 100644 --- a/content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md +++ b/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/index.md @@ -1,14 +1,13 @@ -+++ -authors = ["santhosh-nagaraj"] -date = "2022-10-25T11:11:00+01:00" -description = "Get up to speed deploying Headlamp with plugins" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins"] -title = "Get up to speed deploying Headlamp with plugins" -postImage = "light-train-speed.jpeg" -+++ - -One of [Headlamp](https://kinvolk.github.io/headlamp)'s goals is to be an adaptable Kubernetes UI for different users and use-cases, and this can be achieved through its plugin system. +--- +authors: ["santhosh-nagaraj"] +description: "Get up to speed deploying Headlamp with plugins" +draft: false +tags: ["kubernetes", "ui", "headlamp", "plugins"] +title: "Get up to speed deploying Headlamp with plugins" +image: ./light-train-speed.jpeg +--- + +One of [Headlamp](/)'s goals is to be an adaptable Kubernetes UI for different users and use-cases, and this can be achieved through its plugin system. Moreover, Headlamp can be run as a desktop application or as an in-cluster web application, and both ways of running it support plugins. Headlamp’s documentation already covers how to develop and run plugins in the desktop, but there are some additional considerations if you want to deploy Headlamp in a Kubernetes cluster together with plugins. @@ -18,9 +17,9 @@ Hence, in this blog post we will walk you through how to manage and deploy Headl ## What are Headlamp plugins? -Headlamp uses **frontend plugins**, which are JavaScript bundles that are loaded by the frontend. You can read about how to use or develop plugins in our plugin [development documentation](https://kinvolk.github.io/headlamp/docs/latest/development/plugins/building/). This article is about *deploying* -- rather than *developing* -- plugins. +Headlamp uses **frontend plugins**, which are JavaScript bundles that are loaded by the frontend. You can read about how to use or develop plugins in our plugin [development documentation](/docs/latest/development/plugins/building/). This article is about _deploying_ -- rather than _developing_ -- plugins. -We will be using 3 plugins from the [examples](https://github.com/kinvolk/headlamp/tree/main/plugins/examples) we have in Headlamp’s repository. Those are the Pod Counter, Change logo and Sidebar. Headlamp expects the plugins to be built and placed in the following directory structure to load them: +We will be using 3 plugins from the [examples](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples) we have in Headlamp’s repository. Those are the Pod Counter, Change logo and Sidebar. Headlamp expects the plugins to be built and placed in the following directory structure to load them: ``` @@ -107,7 +106,8 @@ jobs: run: | docker push ghcr.io//headlamp-plugins:latest ``` -Note: In the above file replace with your Github username. + +Note: In the above file replace `` with your Github username. ## Deploying Headlamp with plugins @@ -115,7 +115,7 @@ We will use the Headlamp Helm chart to deploy Headlamp with the container image Add the Headlamp Helm chart using the following command -> helm repo add headlamp [https://kinvolk.github.io/headlamp/](https://kinvolk.github.io/headlamp/) +> helm repo add headlamp [https://headlamp-k8s.github.io/headlamp/](https://headlamp-k8s.github.io/headlamp/) The following values.yaml configures the Helm chart to create a persistent volume and mount to the path `/build/plugins`. t also configures an init container that mounts the `headlamp` volume and copies the plugins to the `/build/plugins` folder. The same volumeMount is used in the `headlamp` container and the `pluginsDir` is set to `/build/plugins`. @@ -124,7 +124,12 @@ initContainers: - name: "headlamp-plugins" image: ghcr.io//headlamp-plugins:latest imagePullPolicy: Always - command: ["/bin/sh", "-c", "mkdir -p /build/plugins && cp -r /plugins/* /build/plugins/"] + command: + [ + "/bin/sh", + "-c", + "mkdir -p /build/plugins && cp -r /plugins/* /build/plugins/", + ] volumeMounts: - name: "headlamp-plugins" mountPath: "/build/plugins" @@ -147,12 +152,13 @@ volumes: config: pluginsDir: "/build/plugins" ``` -Note: In the above file replace with your Github username. + +Note: In the above file replace `` with your Github username. Usually, it is a recommended practice to add this YAML to a git repository to version control the changes. One can also setup pipelines to apply the values everytime there is a change by following gitops practices, but for now, let’s use the following command to install the helm chart with the configured values. ```bash -helm install headlamp headlamp/headlamp -f=./values.yaml +helm install headlamp headlamp/headlamp -f=./values.yaml ``` Now that we have installed Headlamp along with plugins, let’s access it to see the plugins in action. For that, we expose Headlamp with a port-forward, as such: @@ -167,4 +173,4 @@ kubectl port-forward svc/headlamp 8000:80 Deploying Headlamp with plugins can be very valuable for operators/vendors who want to provide a tailored but consistent UI to their users -- after all, users won’t even realize there are plugins running in the Headlamp deployment they are accessing. We hope this guide will help you accomplish a great user experience for yourself or other Kubernetes users. -If you have questions or suggestions about this strategy of deploying Headlamp with plugins, let us know in the [community Slack](https://kubernetes.slack.com/messages/headlamp). \ No newline at end of file +If you have questions or suggestions about this strategy of deploying Headlamp with plugins, let us know in the [community Slack](https://kubernetes.slack.com/messages/headlamp). diff --git a/content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/light-train-speed.jpeg b/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/light-train-speed.jpeg similarity index 100% rename from content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/light-train-speed.jpeg rename to blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/light-train-speed.jpeg diff --git a/content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/repo.png b/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/repo.png similarity index 100% rename from content/blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/repo.png rename to blog/2022-10-20-best-practices-for-deploying-headlamp-with-plugins/repo.png diff --git a/content/blog/2023-04-21-new-headlamp/app-list.png b/blog/2023-04-21-new-headlamp/app-list.png similarity index 100% rename from content/blog/2023-04-21-new-headlamp/app-list.png rename to blog/2023-04-21-new-headlamp/app-list.png diff --git a/content/blog/2023-04-21-new-headlamp/index.md b/blog/2023-04-21-new-headlamp/index.md similarity index 60% rename from content/blog/2023-04-21-new-headlamp/index.md rename to blog/2023-04-21-new-headlamp/index.md index 2d7784c..28420fc 100644 --- a/content/blog/2023-04-21-new-headlamp/index.md +++ b/blog/2023-04-21-new-headlamp/index.md @@ -1,44 +1,45 @@ -+++ -authors = ["joaquim-rocha"] -date = "2023-04-27T23:16:00+01:00" -description = "Expanding the Headlamp Project: Embracing Plugins for a Richer Kubernetes Web UI Experience" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins"] -title = "Expanding the Headlamp Project: Embracing Plugins for a Richer Kubernetes Web UI Experience" -postImage = "monorail.jpg" -+++ - -Our goal with Headlamp has always been to create a fully featured and extensible UI that helps streamline the management of Kubernetes clusters. Today, we are introducing the next phase in our journey.  +--- +authors: [joaquim-rocha] +description: "Expanding the Headlamp Project: Embracing Plugins for a Richer Kubernetes Web UI Experience" +draft: false +tags: ["kubernetes", "ui", "headlamp", "plugins"] +title: "Expanding the Headlamp Project: Embracing Plugins for a Richer Kubernetes Web UI Experience" +image: ./monorail.jpg +--- + +Our goal with Headlamp has always been to create a fully featured and extensible UI that helps streamline the management of Kubernetes clusters. Today, we are introducing the next phase in our journey. + + ## Headlamp Base and Headlamp  -Up until the last release ([0.16.0](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.16.0)), Headlamp shipped as a basic Kubernetes Web UI that could be extended by creating plugins. That has served as a very clean and generic base, which is a great building block for vendors. Yet, we feel like we can go beyond this base and make Headlamp a more compelling experience for many users, while keeping its flexibility and extensibility. Thus, from now on, we are taking a more comprehensive approach: Starting with the [0.17.0](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.17.0) release, Headlamp ships with plugins that extend the base Kubernetes UI experience. This transforms the project into two concepts:  +Up until the last release ([0.16.0](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.16.0)), Headlamp shipped as a basic Kubernetes Web UI that could be extended by creating plugins. That has served as a very clean and generic base, which is a great building block for vendors. Yet, we feel like we can go beyond this base and make Headlamp a more compelling experience for many users, while keeping its flexibility and extensibility. Thus, from now on, we are taking a more comprehensive approach: Starting with the [0.17.0](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.17.0) release, Headlamp ships with plugins that extend the base Kubernetes UI experience. This transforms the project into two concepts: -1. **Headlamp Base:** This is a "vanilla" build, that does not include any plugins and can be used as a foundation to build your own Kubernetes Web UIs. This version can easily be built by following the [build instructions](https://headlamp.dev/docs/latest/development/#build-headlamp-base-headlamp-without-any-plugins).  +1. **Headlamp Base:** This is a "vanilla" build, that does not include any plugins and can be used as a foundation to build your own Kubernetes Web UIs. This version can easily be built by following the [build instructions](/docs/latest/development/#build-headlamp-base-headlamp-without-any-plugins). 2. **Headlamp:** This is what we package as a release for users and includes Headlamp Base plus plugins that provide a more complete Kubernetes web UI experience. -Both versions are open, free, and downloadable/installable just like Headlamp has always been. And plugins that we ship with Headlamp will all be open source. So, to be very clear, this is *not* an "open core" approach. +Both versions are open, free, and downloadable/installable just like Headlamp has always been. And plugins that we ship with Headlamp will all be open source. So, to be very clear, this is _not_ an "open core" approach. This change allows us to deliver our vision of what a modern, compelling, and useful Kubernetes user experience should be, without compromising the flexibility that Headlamp has always offered. If anything, as we integrate more functionality into plugins, it allows for easier tuning of Headlamp-based UIs for vendors and users. ## Introducing the App Catalog Plugin  -The first plugin we are introducing as a part of this is the App Catalog plugin based on Helm charts. This plugin will allow you to easily discover, deploy, and manage applications on your Kubernetes cluster, providing a more seamless experience. We believe having this functionality is especially useful for many users, hence its inclusion in Headlamp. Yet, by having it as a plugin, it emphasizes the philosophy that those users/vendors who do not want this functionality, can simply opt to use Headlamp Base without it.  +The first plugin we are introducing as a part of this is the App Catalog plugin based on Helm charts. This plugin will allow you to easily discover, deploy, and manage applications on your Kubernetes cluster, providing a more seamless experience. We believe having this functionality is especially useful for many users, hence its inclusion in Headlamp. Yet, by having it as a plugin, it emphasizes the philosophy that those users/vendors who do not want this functionality, can simply opt to use Headlamp Base without it. ![Screenshot showing a list of applications in Headlamp's new app catalog](./app-list.png) ## Customizing Your Kubernetes Web UI Experience  -For those looking to build custom Kubernetes Web UIs, this new approach means you can start with Headlamp Base and add any additional plugins from the Headlamp project or create your own custom plugins. This way, you will be able to craft the perfect Kubernetes Web UI, tailored to your specific requirements.  +For those looking to build custom Kubernetes Web UIs, this new approach means you can start with Headlamp Base and add any additional plugins from the Headlamp project or create your own custom plugins. This way, you will be able to craft the perfect Kubernetes Web UI, tailored to your specific requirements. -We have a new [plugins](https://github.com/headlamp-k8s/plugins) repository where we are maintaining the plugins we officially ship/recommend, and you can find the App Catalog plugin mentioned above in there.  +We have a new [plugins](https://github.com/headlamp-k8s/plugins) repository where we are maintaining the plugins we officially ship/recommend, and you can find the App Catalog plugin mentioned above in there. -As we continue to build out our vision of what a Kubernetes UI should be, expect more plugins to be added to that repository. So, stay tuned for more information on upcoming plugins and features!  +As we continue to build out our vision of what a Kubernetes UI should be, expect more plugins to be added to that repository. So, stay tuned for more information on upcoming plugins and features! ## Embracing Open Source and Open Development  -The Headlamp team strongly believes in the power of open source software and an open development model. We are convinced that this approach benefits both the project and its users. By fostering collaboration, transparency, and innovation, we can create a vibrant community that will continue to push the boundaries of what a Kubernetes UI can achieve.  +The Headlamp team strongly believes in the power of open source software and an open development model. We are convinced that this approach benefits both the project and its users. By fostering collaboration, transparency, and innovation, we can create a vibrant community that will continue to push the boundaries of what a Kubernetes UI can achieve. -We hope you join us in this exciting new chapter for the Headlamp project and help us shape the future of Kubernetes UIs. We are also looking forward to hearing from you, either on our [Headlamp channel](https://kubernetes.slack.com/messages/headlamp) in the Kubernetes Slack instance, or on [Github](https://github.com/headlamp-k8s/headlamp). Whether you're a developer looking to contribute, a vendor looking to build atop Headlamp, or a user seeking a more powerful Kubernetes management experience, we welcome you to be part of this journey.  +We hope you join us in this exciting new chapter for the Headlamp project and help us shape the future of Kubernetes UIs. We are also looking forward to hearing from you, either on our [Headlamp channel](https://kubernetes.slack.com/messages/headlamp) in the Kubernetes Slack instance, or on [Github](https://github.com/headlamp-k8s/headlamp). Whether you're a developer looking to contribute, a vendor looking to build atop Headlamp, or a user seeking a more powerful Kubernetes management experience, we welcome you to be part of this journey. -Together, let's make Kubernetes management more accessible, efficient, and enjoyable for everyone. \ No newline at end of file +Together, let's make Kubernetes management more accessible, efficient, and enjoyable for everyone. diff --git a/content/blog/2023-04-21-new-headlamp/monorail.jpg b/blog/2023-04-21-new-headlamp/monorail.jpg similarity index 100% rename from content/blog/2023-04-21-new-headlamp/monorail.jpg rename to blog/2023-04-21-new-headlamp/monorail.jpg diff --git a/content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/columns.png b/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/columns.png similarity index 100% rename from content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/columns.png rename to blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/columns.png diff --git a/content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/home.png b/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/home.png similarity index 100% rename from content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/home.png rename to blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/home.png diff --git a/content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md b/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md similarity index 83% rename from content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md rename to blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md index fde8177..e27ef4a 100644 --- a/content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md +++ b/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/index.md @@ -1,15 +1,16 @@ -+++ -authors = ["joaquim-rocha"] -date = "2023-08-03T17:00:00+01:00" -description = "Headlamp 0.19.0: A new home, with a cleaner UI" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins"] -title = "Headlamp 0.19.0: A new home, with a cleaner UI" -postImage = "moderntrain.jpg" -+++ +--- +authors: [joaquim-rocha] +description: "Headlamp 0.19.0: A new home, with a cleaner UI" +draft: false +tags: ["kubernetes", "ui", "headlamp", "plugins"] +title: "Headlamp 0.19.0: A new home, with a cleaner UI" +image: ./moderntrain.jpg +--- We are excited to announce the release of [Headlamp 0.19.0](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.19.0), the latest version of our web UI for Kubernetes. This release brings some major improvements to the user experience, as well as some new features that make working with Kubernetes easier and more efficient. In this blog post, we highlight some of those new features. + + ## Home sweet home One of the most noticeable changes in this release is the new home view, which replaces the previous cluster chooser dialog and provides a quick overview of the clusters you have configured, as well as their status. @@ -32,8 +33,8 @@ This way, you can see more information about your resources at a glance, without These are just some of the highlights of Headlamp 0.19.0. There are many more bug fixes and enhancements that you can find in the [release notes](https://github.com/headlamp-k8s/headlamp/releases/tag/v0.19.0). -If you haven’t tried Headlamp, check out the instructions on how to install it as either a [desktop application](https://headlamp.dev/docs/latest/installation/desktop/), or [in-cluster](https://headlamp.dev/docs/latest/installation/in-cluster/). +If you haven’t tried Headlamp, check out the instructions on how to install it as either a [desktop application](/docs/latest/installation/desktop/), or [in-cluster](/docs/latest/installation/in-cluster/). We hope you enjoy using Headlamp and find it useful for managing your Kubernetes clusters. We welcome your feedback and suggestions on how we can make Headlamp even better. You can reach us on [GitHub](https://github.com/headlamp-k8s/headlamp), [Slack](https://kubernetes.slack.com/messages/headlamp), [Mastodon](https://fosstodon.org/@headlamp) or [Twitter/X](https://twitter.com/headlamp_ui). -Thank you for using Headlamp and stay tuned for more updates! \ No newline at end of file +Thank you for using Headlamp and stay tuned for more updates! diff --git a/content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/moderntrain.jpg b/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/moderntrain.jpg similarity index 100% rename from content/blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/moderntrain.jpg rename to blog/2023-08-03-headlamp-a-new-home-with-a-cleaner-ui/moderntrain.jpg diff --git a/content/blog/2023-09-18-plugin-management/cluster-settings.png b/blog/2023-09-18-plugin-management/cluster-settings.png similarity index 100% rename from content/blog/2023-09-18-plugin-management/cluster-settings.png rename to blog/2023-09-18-plugin-management/cluster-settings.png diff --git a/content/blog/2023-09-18-plugin-management/index.md b/blog/2023-09-18-plugin-management/index.md similarity index 82% rename from content/blog/2023-09-18-plugin-management/index.md rename to blog/2023-09-18-plugin-management/index.md index 8f85b58..47c5ffe 100644 --- a/content/blog/2023-09-18-plugin-management/index.md +++ b/blog/2023-09-18-plugin-management/index.md @@ -1,12 +1,11 @@ -+++ -authors = ["vincent-t"] -date = "2023-09-21T16:30:00+01:00" -description = "Plugin Management UI" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins"] -title = "Plugin Management UI" -postImage = "splash.jpg" -+++ +--- +authors: ["vincent-t"] +description: "Plugin Management UI" +draft: false +tags: ["kubernetes", "ui", "headlamp", "plugins"] +title: "Plugin Management UI" +image: ./splash.jpg +--- Welcome to another exciting update from the Headlamp project! We're thrilled to introduce our latest addition -- the Plugin Management feature, a native Headlamp tool for managing @@ -14,6 +13,8 @@ plugins in your Kubernetes cluster. As we discussed in our previous blog post, p essential for enhancing the functionality and efficiency of Headlamp, and therefore your Kubernetes experience. + + The Plugin Management feature also represents a change in what kind of information Headlamp accesses from its plugins. Before version 0.17.0, Headlamp’s focus lay exclusively on the JS file, which contained the functional elements of the plugin. This @@ -45,22 +46,22 @@ platforms in the future and welcome your interest and input. _Dashboard navigation_ -* Navigate to the main dashboard by clicking the "Home" button located at the top of the -sidebar navigation options. -* From the Home dashboard page Click on the "Settings" sidebar navigation option to go to -the General Settings page. -* While at the General Settings page, click "Plugins" inside of the "Settings" submenu -navigation option. +- Navigate to the main dashboard by clicking the "Home" button located at the top of the + sidebar navigation options. +- From the Home dashboard page Click on the "Settings" sidebar navigation option to go to + the General Settings page. +- While at the General Settings page, click "Plugins" inside of the "Settings" submenu + navigation option. ![Screenshot of the cluster settings](./cluster-settings.png) _Top bar navigation (while in a cluster context)_ -* Navigate to the settings page by clicking the gear icon located at the top right corner -of the screen. -* From this settings page, click the "General Settings" link to the right of the page. -* While at the General Settings page, click "Plugins" inside of the "Settings" submenu on -the left of the page. +- Navigate to the settings page by clicking the gear icon located at the top right corner + of the screen. +- From this settings page, click the "General Settings" link to the right of the page. +- While at the General Settings page, click "Plugins" inside of the "Settings" submenu on + the left of the page. ## Organized List of Plugins diff --git a/content/blog/2023-09-18-plugin-management/overview-2.png b/blog/2023-09-18-plugin-management/overview-2.png similarity index 100% rename from content/blog/2023-09-18-plugin-management/overview-2.png rename to blog/2023-09-18-plugin-management/overview-2.png diff --git a/content/blog/2023-09-18-plugin-management/overview.png b/blog/2023-09-18-plugin-management/overview.png similarity index 100% rename from content/blog/2023-09-18-plugin-management/overview.png rename to blog/2023-09-18-plugin-management/overview.png diff --git a/content/blog/2023-09-18-plugin-management/settings.png b/blog/2023-09-18-plugin-management/settings.png similarity index 100% rename from content/blog/2023-09-18-plugin-management/settings.png rename to blog/2023-09-18-plugin-management/settings.png diff --git a/content/blog/2023-09-18-plugin-management/splash.jpg b/blog/2023-09-18-plugin-management/splash.jpg similarity index 100% rename from content/blog/2023-09-18-plugin-management/splash.jpg rename to blog/2023-09-18-plugin-management/splash.jpg diff --git a/content/blog/2023-10-12-cncf-sandbox/headlamp-cncf.jpg b/blog/2023-10-12-cncf-sandbox/headlamp-cncf.jpg similarity index 100% rename from content/blog/2023-10-12-cncf-sandbox/headlamp-cncf.jpg rename to blog/2023-10-12-cncf-sandbox/headlamp-cncf.jpg diff --git a/content/blog/2023-10-12-cncf-sandbox/index.md b/blog/2023-10-12-cncf-sandbox/index.md similarity index 88% rename from content/blog/2023-10-12-cncf-sandbox/index.md rename to blog/2023-10-12-cncf-sandbox/index.md index 2ca98a6..8cc49ff 100644 --- a/content/blog/2023-10-12-cncf-sandbox/index.md +++ b/blog/2023-10-12-cncf-sandbox/index.md @@ -1,15 +1,16 @@ -+++ -authors = ["chris-kuehl", "joaquim-rocha"] -date = "2023-10-12T14:00:00+02:00" -description = "Headlamp now in the CNCF Sandbox" -draft = false -tags = ["kubernetes", "ui", "headlamp", "cncf"] -title = "Headlamp now in the CNCF Sandbox" -postImage = "headlamp-cncf.jpg" -+++ +--- +authors: ["chris-kuehl", joaquim-rocha] +description: "Headlamp now in the CNCF Sandbox" +draft: false +tags: ["kubernetes", "ui", "headlamp", "cncf"] +title: "Headlamp now in the CNCF Sandbox" +image: ./headlamp-cncf.jpg +--- Headlamp was recently accepted into the [Cloud Native Computing Foundation](https://cncf.io) (CNCF) as a [Sandbox project](https://www.cncf.io/projects/headlamp/). We believe it’s an important milestone worth celebrating and sharing with our community. This short post should clarify what this means for the project, the community, and its future. + + ## Why Being part of the CNCF Sandbox is a significant step for any project. It provides a neutral home for projects to foster growth and innovation in the cloud-native ecosystem. For Headlamp, this acceptance represents recognition of our commitment to providing a high-quality and extensible Kubernetes UI and our alignment with CNCF’s values and ecosystem. diff --git a/content/blog/2023-11-06-kubecon-na-2023/index.md b/blog/2023-11-06-kubecon-na-2023/index.md similarity index 70% rename from content/blog/2023-11-06-kubecon-na-2023/index.md rename to blog/2023-11-06-kubecon-na-2023/index.md index 09ae411..0ca818f 100644 --- a/content/blog/2023-11-06-kubecon-na-2023/index.md +++ b/blog/2023-11-06-kubecon-na-2023/index.md @@ -1,12 +1,11 @@ -+++ -authors = ["joaquim-rocha"] -date = "2023-11-06T10:00:00+02:00" -description = "Headlamp in KubeCon North America 2023" -draft = false -tags = ["kubernetes", "ui", "headlamp", "cncf"] -title = "Headlamp in KubeCon North America 2023" -postImage = "splash.jpg" -+++ +--- +authors: [joaquim-rocha] +description: "Headlamp in KubeCon North America 2023" +draft: false +tags: ["kubernetes", "ui", "headlamp", "cncf"] +title: "Headlamp in KubeCon North America 2023" +image: ./splash.jpg +--- I'm excited to share that Headlamp will be at [KubeCon NA 2023](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/). 🎉 diff --git a/content/blog/2023-11-06-kubecon-na-2023/splash.jpg b/blog/2023-11-06-kubecon-na-2023/splash.jpg similarity index 100% rename from content/blog/2023-11-06-kubecon-na-2023/splash.jpg rename to blog/2023-11-06-kubecon-na-2023/splash.jpg diff --git a/content/blog/2023-11-07-testing-plugins/index.md b/blog/2023-11-07-testing-plugins/index.md similarity index 80% rename from content/blog/2023-11-07-testing-plugins/index.md rename to blog/2023-11-07-testing-plugins/index.md index 8621506..2558616 100644 --- a/content/blog/2023-11-07-testing-plugins/index.md +++ b/blog/2023-11-07-testing-plugins/index.md @@ -1,19 +1,20 @@ -+++ -authors = ["rene-dudfield"] -date = "2023-11-07T10:00:00+02:00" -description = "Testing Headlamp plugins" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins", "testing"] -title = "Testing Headlamp plugins" -postImage = "splash.jpg" -+++ +--- +authors: ["rene-dudfield"] +description: "Testing Headlamp plugins" +draft: false +tags: ["kubernetes", "ui", "headlamp", "plugins", "testing"] +title: "Testing Headlamp plugins" +image: ./splash.jpg +--- ![VSCode showing all tests passing](./vscode.png) -*Here is vscode and the test runner showing all tests pass.* +_Here is vscode and the test runner showing all tests pass._ -As an extensible Kubernetes UI, developers can use plugins to add features, change functionality and even create a fully custom Kubernetes experience. To learn more about what plugins can do, please see the documentation. +As an extensible Kubernetes UI, developers can use plugins to add features, change functionality and even create a fully custom Kubernetes experience. To learn more about what plugins can do, please see the documentation. -As plugins are designed to be independently developed, they are their own code that lives outside of the Headlamp codebase. Independent code needs independent tests. So, how do you test your plugins? How do you test them on CI (with github actions)? Read on to learn how. +As plugins are designed to be independently developed, they are their own code that lives outside of the Headlamp codebase. Independent code needs independent tests. So, how do you test your plugins? How do you test them on CI (with github actions)? Read on to learn how. + + ## Two Types of Testing @@ -30,7 +31,7 @@ _Note:_ It may be nice to know that both of these testing methods are used by He Here are three story variants defined for the "Message" component in the [pod-counter example plugin](https://github.com/headlamp-k8s/headlamp/blob/main/plugins/examples/pod-counter/src/Message.stories.tsx). Namely "Error," "SmallAmount," and "LargeAmount," with different props to showcase the component's behavior and appearance under various conditions and states. ![Storybook screenshot](./storybook.png) -*Here is the storybook interface showing the different states for the Message component in isolation.* +_Here is the storybook interface showing the different states for the Message component in isolation._ As you can see, you get an interface for visually testing and manually user testing components. At the same time these tests can be used as regression tests, and you can see the html that is generated for different states too. @@ -52,22 +53,22 @@ export default { ], } as Meta; -const Template: Story = args => ; +const Template: Story: args => ; -export const Error = Template.bind({}); -Error.args = { +export const Error: Template.bind({}); +Error.args: { msg: '', error: true, }; -export const SmallAmount = Template.bind({}); -SmallAmount.args = { +export const SmallAmount: Template.bind({}); +SmallAmount.args: { msg: '1', error: false, }; -export const LargeAmount = Template.bind({}); -LargeAmount.args = { +export const LargeAmount: Template.bind({}); +LargeAmount.args: { msg: '10,000', error: false, }; @@ -79,44 +80,41 @@ LargeAmount.args = { Here's an example of a [Message.test.tsx](https://github.com/headlamp-k8s/headlamp/blob/main/plugins/examples/pod-counter/src/Message.test.tsx) file for testing a Message component. - ```tsx - // A react testing lib example test for the Message component. // @see https://testing-library.com/docs/react-testing-library/intro -import '@testing-library/jest-dom'; -import { render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import Message from './Message'; +import "@testing-library/jest-dom"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import Message from "./Message"; -describe('Message', () => { - it('renders a message', async () => { +describe("Message", () => { + it("renders a message", async () => { // Arrange render(); // Act // Clicking on this doesn't do anything, but it's a good example of how to // find a button by its text. - await userEvent.click(screen.getByText('# Pods: Hello World')); + await userEvent.click(screen.getByText("# Pods: Hello World")); // Assert expect(screen.getByText(/# Pods: Hello World/i)).toBeInTheDocument(); }); // A test showing the error=true state - it('renders an error message', async () => { + it("renders an error message", async () => { // Arrange render(); // Act - await userEvent.click(screen.getByText('Uh, pods!?')); + await userEvent.click(screen.getByText("Uh, pods!?")); // Assert expect(screen.getByText(/Uh, pods!?/i)).toBeInTheDocument(); }); }); - ``` ## Executing Plugin Tests Using GitHub Actions @@ -134,13 +132,12 @@ name: Headlamp plugin linting, type checking, and testing on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: build: - runs-on: ubuntu-latest defaults: diff --git a/content/blog/2023-11-07-testing-plugins/splash.jpg b/blog/2023-11-07-testing-plugins/splash.jpg similarity index 100% rename from content/blog/2023-11-07-testing-plugins/splash.jpg rename to blog/2023-11-07-testing-plugins/splash.jpg diff --git a/content/blog/2023-11-07-testing-plugins/storybook.png b/blog/2023-11-07-testing-plugins/storybook.png similarity index 100% rename from content/blog/2023-11-07-testing-plugins/storybook.png rename to blog/2023-11-07-testing-plugins/storybook.png diff --git a/content/blog/2023-11-07-testing-plugins/vscode.png b/blog/2023-11-07-testing-plugins/vscode.png similarity index 100% rename from content/blog/2023-11-07-testing-plugins/vscode.png rename to blog/2023-11-07-testing-plugins/vscode.png diff --git a/content/blog/2024-03-15-kubecon-eu-2024/index.md b/blog/2024-03-15-kubecon-eu-2024/index.md similarity index 87% rename from content/blog/2024-03-15-kubecon-eu-2024/index.md rename to blog/2024-03-15-kubecon-eu-2024/index.md index caad2f8..9807e69 100644 --- a/content/blog/2024-03-15-kubecon-eu-2024/index.md +++ b/blog/2024-03-15-kubecon-eu-2024/index.md @@ -1,12 +1,11 @@ -+++ -authors = ["joaquim-rocha"] -date = "2024-03-15T16:00:00+00:00" -description = "Headlamp in KubeCon EU 2024" -draft = false -tags = ["kubernetes", "ui", "headlamp", "cncf"] -title = "Headlamp in KubeCon EU 2024" -postImage = "splash.jpg" -+++ +--- +authors: [joaquim-rocha] +description: "Headlamp in KubeCon EU 2024" +draft: false +tags: ["kubernetes", "ui", "headlamp", "cncf"] +title: "Headlamp in KubeCon EU 2024" +image: ./splash.jpg +--- We're thrilled to announce that Headlamp will be shining bright at [KubeCon EU 2024](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/)! Our team is excited to welcome you to our kiosk, in the project pavillion (all day on Wed. March 20th, and afternoon on Thu. March 21st, kiosk [PP17-B](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/project-engagement/#project-kiosk-directory)), so be sure to pass by. But that's not all – mark your calendars for March 22nd at 14:00, because we're hosting a [Contribufest session](https://kccnceu2024.sched.com/event/1Yhez/contribfest-headlamp-k8s-ui-build-your-first-plugin-contribute-with-code-design-or-words?linkback=grid&iframe=no) (workshop) dedicated to Headlamp. This is your chance to join forces with fellow enthusiasts for a collaborative experience of learning, discussion, and coding. diff --git a/content/blog/2024-03-15-kubecon-eu-2024/splash.jpg b/blog/2024-03-15-kubecon-eu-2024/splash.jpg similarity index 100% rename from content/blog/2024-03-15-kubecon-eu-2024/splash.jpg rename to blog/2024-03-15-kubecon-eu-2024/splash.jpg diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/aks-kubeconfig.sh b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/aks-kubeconfig.sh similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/aks-kubeconfig.sh rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/aks-kubeconfig.sh diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/clusters.png b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/clusters.png similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/clusters.png rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/clusters.png diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/create-azurevm.sh b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/create-azurevm.sh similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/create-azurevm.sh rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/create-azurevm.sh diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/docker-compose-headlamp-run.sh b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/docker-compose-headlamp-run.sh similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/docker-compose-headlamp-run.sh rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/docker-compose-headlamp-run.sh diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md similarity index 81% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md index 07d169b..72471be 100644 --- a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md +++ b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/index.md @@ -1,14 +1,15 @@ -+++ -authors = ["kautilya-tripathi"] -date = "2024-04-09T10:00:00+00:00" -description = "User-added Cluster Support in Shared Headlamp Deployments" -draft = false -tags = ["kubernetes", "ui", "headlamp", "cncf"] -title = "User-added Cluster Support in Shared Headlamp Deployments" -postImage = "splash.png" -+++ - -Headlamp supports running as both a [desktop application](/docs/latest/installation/desktop/) and as a [web service in-cluster](/docs/latest/installation/in-cluster/). Each environment has its own set of characteristics and limitations. One characteristic of the in-cluster deployment is that it can provide shared access. This shared access poses issues with security and privacy. For this reason, we enabled the ability to add/remove clusters only for the desktop version of Headlamp, as it is, by definition, a single user instance. This meant, for example, that users were not able to add or modify which clusters would show, when using Headlamp as a web service. This is a limitation that we wanted to overcome to support a variety of very valid use cases. +--- +authors: ["kautilya-tripathi"] +description: "User-added Cluster Support in Shared Headlamp Deployments" +draft: false +tags: ["kubernetes", "ui", "headlamp", "cncf"] +title: User-added Cluster Support in Shared Headlamp Deployments +image: ./splash.png +--- + +Headlamp supports running as both a [desktop application](/docs/latest/installation/desktop/) and as a [web service in-cluster](/docs/latest/installation/in-cluster/). Each environment has its own set of characteristics and limitations. One characteristic of the in-cluster deployment is that it can provide shared access. This shared access poses issues with security and privacy. For this reason, we enabled the ability to add/remove clusters only for the desktop version of Headlamp, as it is, by definition, a single user instance. This meant, for example, that users were not able to add or modify which clusters would show, when using Headlamp as a web service. This is a limitation that we wanted to overcome to support a variety of very valid use cases. + + The crux of the issue was that configuration contained state that when modified effected all users. After some consideration, we decided that the clearest path to removing this limitation was to remove the cluster configuration from residing on the Headlamp backend. This blog post will introduce how headlamp now supports multi-cluster support for multi-user in-cluster deployments. @@ -24,29 +25,29 @@ With stateless cluster management, we move critical operations to the client sid To deploy Headlamp on a VM (in this example, in Azure), we have created a script for setting up the VM in Azure and use a ssh key pair to access it securely. -* Use this command to run the script: +- Use this command to run the script: ```bash curl -sSfL https://headlamp.dev/blog/2024/04/user-added-cluster-support-in-shared-headlamp-deployments/create-azurevm.sh | bash ``` -* To run headlamp using docker-compose, install the required packages by running this command inside the VM. +- To run headlamp using docker-compose, install the required packages by running this command inside the VM. ```bash curl -sSfL https://headlamp.dev/blog/2024/04/user-added-cluster-support-in-shared-headlamp-deployments/install-docker-amd64.sh | bash ``` -* Execute the following command inside the VM to start Headlamp with the dynamic-clusters plugin (which sets up the UI for loading a kubeconfig) using docker-compose +- Execute the following command inside the VM to start Headlamp with the dynamic-clusters plugin (which sets up the UI for loading a kubeconfig) using docker-compose ```bash curl -sSfL https://headlamp.dev/blog/2024/04/user-added-cluster-support-in-shared-headlamp-deployments/docker-compose-headlamp-run.sh | bash ``` -* In the Azure portal, make an NSG (network security groups) rule that permits incoming connection only to port 4466. +- In the Azure portal, make an NSG (network security groups) rule that permits incoming connection only to port 4466. ![Screenshot showing the NSG rule in Azure](./nsg.png) -* Now we need a kubeconfig with at least one cluster. So, if you do not have one, you can run the following script to make an AKS (Azure Kubernetes Service) cluster and get the kubeconfig value in base64 format from the output. +- Now we need a kubeconfig with at least one cluster. So, if you do not have one, you can run the following script to make an AKS (Azure Kubernetes Service) cluster and get the kubeconfig value in base64 format from the output. ```bash curl -sSfL https://headlamp.dev/blog/2024/04/user-added-cluster-support-in-shared-headlamp-deployments/aks-kubeconfig.sh | bash @@ -54,11 +55,11 @@ curl -sSfL https://headlamp.dev/blog/2024/04/user-added-cluster-support-in-share ## Creating stateless clusters -* In Headlamp, press the New Cluster button and insert the kubeconfig that you copied from the previous output and then press the submit button. +- In Headlamp, press the New Cluster button and insert the kubeconfig that you copied from the previous output and then press the submit button. ![Screenshot showing the New Cluster dialog in the dynamic clusters plugin](./paste-kubeconfig.png) -* After you press submit, the home view will show the new cluster (together with any other clusters you may have had already). +- After you press submit, the home view will show the new cluster (together with any other clusters you may have had already). ![Screenshot showing the home view with the new cluster](./clusters.png) diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/indexdb.png b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/indexdb.png similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/indexdb.png rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/indexdb.png diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/install-docker-amd64.sh b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/install-docker-amd64.sh similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/install-docker-amd64.sh rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/install-docker-amd64.sh diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/nsg.png b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/nsg.png similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/nsg.png rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/nsg.png diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/paste-kubeconfig.png b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/paste-kubeconfig.png similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/paste-kubeconfig.png rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/paste-kubeconfig.png diff --git a/content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/splash.png b/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/splash.png similarity index 100% rename from content/blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/splash.png rename to blog/2024-04-09-user-added-cluster-support-in-shared-headlamp-deployments/splash.png diff --git a/content/blog/2024-05-24-fossasia/index.md b/blog/2024-05-24-fossasia/index.md similarity index 94% rename from content/blog/2024-05-24-fossasia/index.md rename to blog/2024-05-24-fossasia/index.md index f9a8891..24620ea 100644 --- a/content/blog/2024-05-24-fossasia/index.md +++ b/blog/2024-05-24-fossasia/index.md @@ -1,12 +1,10 @@ -+++ -authors = ["kautilya-tripathi"] -date = "2024-05-23T10:00:00+00:00" -description = "Headlamp at FOSSASIA Vietnam 2024" -draft = false -tags = ["kubernetes", "ui", "headlamp", "events"] -title = "Headlamp at FOSSASIA Vietnam 2024" -postImage = "splash.jpg" -+++ +--- +authors: ["kautilya-tripathi"] +description: "Headlamp at FOSSASIA Vietnam 2024" +tags: ["kubernetes", "ui", "headlamp", "events"] +title: "Headlamp at FOSSASIA Vietnam 2024" +image: ./splash.jpg +--- **This is a conference report by Kautilya Tripathi, one of Headlamp's core engineers.** diff --git a/content/blog/2024-05-24-fossasia/splash.jpg b/blog/2024-05-24-fossasia/splash.jpg similarity index 100% rename from content/blog/2024-05-24-fossasia/splash.jpg rename to blog/2024-05-24-fossasia/splash.jpg diff --git a/content/blog/2024-05-27-plugin-settings/demo.gif b/blog/2024-05-27-plugin-settings/demo.gif similarity index 100% rename from content/blog/2024-05-27-plugin-settings/demo.gif rename to blog/2024-05-27-plugin-settings/demo.gif diff --git a/content/blog/2024-05-27-plugin-settings/index.md b/blog/2024-05-27-plugin-settings/index.md similarity index 76% rename from content/blog/2024-05-27-plugin-settings/index.md rename to blog/2024-05-27-plugin-settings/index.md index a4ee9e7..c733d44 100644 --- a/content/blog/2024-05-27-plugin-settings/index.md +++ b/blog/2024-05-27-plugin-settings/index.md @@ -1,15 +1,15 @@ -+++ -authors = ["santhosh-nagaraj"] -date = "2024-05-28T10:00:00+00:00" -description = "Introducing Plugin Settings: Empowering Customization" -draft = false -tags = ["kubernetes", "ui", "headlamp", "plugins"] -title = "Introducing Plugin Settings: Empowering Customization" -postImage = "splash.jpg" -+++ +--- +authors: ["santhosh-nagaraj"] +description: "Introducing Plugin Settings: Empowering Customization" +tags: ["kubernetes", "ui", "headlamp", "plugins"] +title: "Introducing Plugin Settings: Empowering Customization" +image: ./splash.jpg +--- Headlamp's plugin system, while robust, lacked user customization for any options those plugins had to offer. This required developers to create their own way to customize the plugins, or left users with non-configurable plugins. To bridge this gap, Headlamp has introduced Plugin Settings, offering a consistent and unified option for developers to present customization options for their plugins. This way, users can configure the plugins to meet their own needs. + + ## Adding settings to a plugins Let's dive into the technical implementation of integrating Plugin Settings into an existing example, the change-logo plugin. This plugin is designed to override the Headlamp logo. Let’s say we want to make the logo image configurable directly from the UI. We can use the Plugin Settings for this! @@ -18,7 +18,7 @@ Let's dive into the technical implementation of integrating Plugin Settings into #### Step 1: Create Plugin Setting Component -```typescript +```tsx function Settings(props) { const { data, onDataChange } = props; @@ -43,15 +43,16 @@ The Settings component is responsible for rendering an input field where the use #### Step 2: Registering the Settings component ```typescript -import {registerPluginSettings} from '@kinvolk/headlamp-plugin/lib' +import { registerPluginSettings } from "@kinvolk/headlamp-plugin/lib"; -registerPluginSettings('change-logo', Settings, true); +registerPluginSettings("change-logo", Settings, true); ``` In the [registerPluginSettings](https://headlamp.dev/docs/latest/development/api/modules/plugin_registry/#registerpluginsettings) function: - - The first argument (name) is the name of your plugin. In this example, it's 'change-logo'. - - The second argument (component) is your settings component, which in this case is the Settings function component we defined earlier. - - The third argument (displaySaveButton) is optional and specifies whether to display a save button for users to save their settings. We've set it to true in this example to include the save button. + +- The first argument (name) is the name of your plugin. In this example, it's 'change-logo'. +- The second argument (component) is your settings component, which in this case is the Settings function component we defined earlier. +- The third argument (displaySaveButton) is optional and specifies whether to display a save button for users to save their settings. We've set it to true in this example to include the save button. This `registerPluginSettings` function call acts as a bridge between your plugin's settings component and Headlamp's plugin system, ensuring that your plugin setting is integrated in Headlamp plugin settings view. @@ -71,22 +72,20 @@ By leveraging this option, developers can tailor the settings saving process to #### Step 3: Using the configuration in the plugin -```typescript -import { ConfigStore } from '@kinvolk/headlamp-plugin/lib'; +```tsx +import { ConfigStore } from "@kinvolk/headlamp-plugin/lib"; function SimpleLogo(props: AppLogoProps) { const { logoType, className } = props; - const store = new ConfigStore<{logoURL:string}>('change-logo'); + const store = new ConfigStore<{ logoURL: string }>("change-logo"); const useConf = store.useConfig(); const config = useConf(); return config?.logoURL ? ( ) : ( - <> - #Default Logo goes here - + <>#Default Logo goes here ); } ``` @@ -105,4 +104,4 @@ Here is a GIF demo of the change-logo plugin with the new settings: ## Conclusion -The Plugin Settings functionality in Headlamp opens a wide variety of customization opportunities for plugins and addresses a highly requested gap experienced by Headlamp plugin developers. We are looking forward to seeing how plugin developers will use this feature, so if you use it, let us know what you think! Feedback helps us make things better for everyone. +The Plugin Settings functionality in Headlamp opens a wide variety of customization opportunities for plugins and addresses a highly requested gap experienced by Headlamp plugin developers. We are looking forward to seeing how plugin developers will use this feature, so if you use it, let us know what you think! Feedback helps us make things better for everyone. diff --git a/content/blog/2024-05-27-plugin-settings/splash.jpg b/blog/2024-05-27-plugin-settings/splash.jpg similarity index 100% rename from content/blog/2024-05-27-plugin-settings/splash.jpg rename to blog/2024-05-27-plugin-settings/splash.jpg diff --git a/blog/authors.yml b/blog/authors.yml new file mode 100644 index 0000000..030e84f --- /dev/null +++ b/blog/authors.yml @@ -0,0 +1,56 @@ +alban-crequy: + name: Alban Crequy +alessandro-puccetti: + name: Alessandro Puccetti +kosy-anyanwu: + name: Kosy Anyanwu +andrew-randall: + name: Andrew Randall +indra-gupta: + name: Indradhanush Gupta +lexi-nadolski: + name: Lexi Nadolski +mateusz-gozdek: + name: Mateusz Gozdek +lili: + name: Lili Cosic +michael-schubert: + name: Michael Schubert +zeeshan-ali: + name: Zeeshan Ali +thilo-fromm: + name: Thilo Fromm +mauricio-vasquez: + name: Mauricio Vásquez Bernal +kai-lueke: + name: Kai Lüke +lorenzo-manacorda: + name: Lorenzo Manacorda +krzesimir-nowak: + name: Krzesimir Nowak +chris-kuehl: + name: Chris Kühl +suraj-deshmukh: + name: Suraj Deshmukh +iago-lopez: + name: Iago López Galeiras +rodrigo-campos: + name: Rodrigo Campos +johannes-liebermann: + name: Johannes Liebermann +dongsu-park: + name: Dongsu Park +jeremi-piotrowski: + name: Jeremi Piotrowski +mathieu-tortuyaux: + name: Mathieu Tortuyaux +santhosh-nagaraj: + name: Santhosh Nagaraj +joaquim-rocha: + name: Joaquim Rocha +vincent-t: + name: Vincent T. +rene-dudfield: + name: René Dudfield +kautilya-tripathi: + name: Kautilya Tripathi diff --git a/config.yaml b/config.yaml deleted file mode 100644 index e30b6e5..0000000 --- a/config.yaml +++ /dev/null @@ -1,75 +0,0 @@ -baseURL: / -languageCode: en-us -title: Headlamp -theme: kinvolk-generic -assetsDir: assets -copyright: The Headlamp Contributors -params: - description: Headlamp is an easy to use and extensible Kubernetes web UI - favicon: "favicon.png" - productionURL: https://headlamp.dev - social: - - title: github - url: 'https://github.com/kinvolk/headlamp' - image: 'github-icon' - - title: twitter - url: 'https://twitter.com/headlamp_ui' - image: 'twitter-icon' - - title: mastodon - url: https://fosstodon.org/@headlamp - twitter: '@headlamp_ui' - docs: - github_edit_url: https://github.com/kinvolk/headlamp/edit/main/docs/ - issues_url: https://github.com/kinvolk/headlamp/issues/new?labels=kind/docs - external_docs: - - repo: https://github.com/kinvolk/headlamp.git - name: "latest" - branch: "main" - dir: "docs" - footer: - navlist: - - title: Community - quicklinks: - - title: Slack - link: https://kubernetes.slack.com/messages/headlamp - - title: Contribute - link: https://headlamp.dev/docs/latest/contributing/ - - title: Github - link: https://github.com/kinvolk/headlamp - - title: Documentation - link: /docs - quicklinks: - - title: In-cluster Deployment - link: https://headlamp.dev/docs/latest/installation/in-cluster/ - - title: Desktop app installation - link: https://headlamp.dev/docs/latest/installation/desktop/ - - title: Plugin development - link: https://headlamp.dev/docs/latest/development/plugins/ - - title: F.A.Q. - link: https://headlamp.dev/docs/latest/faq/ - news_stripe: - text: 'Headlamp present with a kiosk at KubeCon NA 2023 [Read more »](/blog/2023/11/headlamp-in-kubecon-north-america-2023/)' - expiration: "2023-11-10T00:00:00+02:00" - no_show_on: - - /blog/2023/11/headlamp-in-kubecon-north-america-2023/ - style: - bgcolor: "" - fgcolor: "" -menu: - main: - - name: Blog - url: /blog - identifier: blog - weight: -499 - - name: Slack - url: https://kubernetes.slack.com/messages/headlamp - identifier: install - weight: -55 - - name: Docs - url: /docs - identifier: docs - weight: -60 - - name: Github - url: https://github.com/kinvolk/headlamp - identifier: github - weight: -50 diff --git a/content/_index.md b/content/_index.md deleted file mode 100644 index b0180d4..0000000 --- a/content/_index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: '*Your* Kubernetes Experience' -link: https://kinvolk.github.io/headlamp/ -logo: '/media/brand-logo.svg' -logo_bg_img: 'product-bg-1' -main_class: headlamp -tagline: '' -description: Headlamp is a user-friendly Kubernetes UI focused on extensibility -cta: Learn more -cta_aria_label: Learn more about Headlamp -docs: - link: https://headlamp.dev/docs/latest - action_text: Get Started -support: - link: https://github.com/inspektor-gadget/inspektor-gadget/issues - action_text: File an issue -style: - bgcolor: "#072365" - fgcolor: "#ffffff" - accent: - bgcolor: "#041552" - fgcolor: "#F4CB00" -hero: - merge: true # Will merge these hero definitions into this section pages - style: - class: header-bg-headlamp - fgcolor: '#F4CB00' - bgcolor: '#002E33' - titlecolor: '#F4CB00' - descriptioncolor: white - button: - text:    See latest release - link: https://github.com/kinvolk/headlamp/releases/latest - class: btn-black -quick_features: - title: What is Headlamp? - description: | - Out of the box, Headlamp is a fully functional Kubernetes UI. By leveraging its powerful plugin system, builders can shape Headlamp to fit their bespoke use-cases, products, and environments. - - [Learn how to deploy Headlamp in a Kubernetes cluster](/docs/latest/installation/in-cluster) - - or - # shape_color: '#F5F5F5' - # icon_color: 'black' - # features: - # - text: | - # No special credentials required for Headlamp to run. What users can do - # is dictated by their own role (RBAC). - # icon: filesystem - # shape: shape-blue-1 - # - text: | - # The plugin system allows to extend the views to create a more custom user-experience. - # icon: container - # shape: shape-blue-2 - # - text: | - # Can be used with a single or multiple clusters. - # shape: shape-blue-3 - # icon: update -highlights: - - icon: 'lock' - title: Secure - description: | - Doesn't require setting up special credentials for it to run. What users can do - is dictated by their own role (RBAC). - - icon: 'wrench' - title: Extensible - description: | - The plugin system allows to extend the views to create a more custom user-experience. - - icon: - title: Automated Updates - description: Keep your cluster secure by always running an OS with the latest security updates and features -features: - - title: A UI that adapts to your use-cases - icon: round-dots.svg - style: - fgcolor: '#01CBBA' - bgcolor: '#002E33' - description: | - Headlamp adapts not only to a user's cluster configuration (multiple or single cluster, permissions-based UI, etc.), but its powerful plugin system allows builders to customize the experience with new functionality that fits their products. - highlights: - - icon: headlamp-wrench - title: Adaptable UI & Branding - description: | - Headlamp's plugin system makes it possible to create custom experiences with minimal effort; add/extend views, customize branding, etc. - - icon: headlamp-secure - title: RBAC-based Controls - description: | - Headlamp adapts to a user's cluster permissions. It checks RBAC and displays actions like *delete* or *edit* only if the user has the permissions to do so. - - icon: headlamp-app - title: Desktop and/or Web - description: | - Keeping with Headlamp's goal of supporting a fully customizable exprience, it can be run as a web app, desktop app, or both. -grid_statements: - title: See it in action - statements: - - | - ![GIF showing a quick tour of Headlamp's capabilities](https://raw.githubusercontent.com/kinvolk/headlamp/screenshots/videos/headlamp_quick_run.gif) - contact: - message: '# Get in touch!' - simple: true ---- diff --git a/content/docs/_index.md b/content/docs/_index.md deleted file mode 100644 index 41a44de..0000000 --- a/content/docs/_index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -content_type: inspektor-gadget -title: Headlamp Documentation -linkTitle: Documentation -children_are_versions: true -layout: redirect -sidebar: - skip: true -weight: 10 -cascade: - type: docs ---- diff --git a/data/references/authors.yml b/data/references/authors.yml deleted file mode 100644 index f90c6e3..0000000 --- a/data/references/authors.yml +++ /dev/null @@ -1,58 +0,0 @@ -authors: - alban-crequy: - name: Alban Crequy - alessandro-puccetti: - name: Alessandro Puccetti - kosy-anyanwu: - name: Kosy Anyanwu - andrew-randall: - name: Andrew Randall - indra-gupta: - name: Indradhanush Gupta - lexi-nadolski: - name: Lexi Nadolski - mateusz-gozdek: - name: Mateusz Gozdek - lili: - name: Lili Cosic - michael-schubert: - name: Michael Schubert - zeeshan-ali: - name: Zeeshan Ali - thilo-fromm: - name: Thilo Fromm - mauricio-vasquez: - name: Mauricio Vásquez Bernal - kai-lueke: - name: Kai Lüke - lorenzo-manacorda: - name: Lorenzo Manacorda - krzesimir-nowak: - name: Krzesimir Nowak - chris-kuehl: - name: Chris Kühl - suraj-deshmukh: - name: Suraj Deshmukh - iago-lopez: - name: Iago López Galeiras - rodrigo-campos: - name: Rodrigo Campos - johannes-liebermann: - name: Johannes Liebermann - dongsu-park: - name: Dongsu Park - jeremi-piotrowski: - name: Jeremi Piotrowski - mathieu-tortuyaux: - name: Mathieu Tortuyaux - santhosh-nagaraj: - name: Santhosh Nagaraj - joaquim-rocha: - name: Joaquim Rocha - vincent-t: - name: Vincent T. - rene-dudfield: - name: René Dudfield - kautilya-tripathi: - name: Kautilya Tripathi - \ No newline at end of file diff --git a/docs/latest/contributing.md b/docs/latest/contributing.md new file mode 100644 index 0000000..ea91d82 --- /dev/null +++ b/docs/latest/contributing.md @@ -0,0 +1,89 @@ +--- +title: Contribution Guidelines +sidebar_label: Contributing +sidebar_position: 4 +--- + +This section has information on how to contribute to Headlamp. It assumes you have cloned +this repository (or your own Github fork). +Any contributions to the project are accepted under the terms of the project's +license ([Apache 2.0](https://github.com/headlamp-k8s/headlamp/blob/main/LICENSE)). + +## Code of Conduct + +Please refer to the Kinvolk [Code of Conduct](https://github.com/kinvolk/contribution/blob/master/CODE_OF_CONDUCT.md). + +## Development practices + +The Headlamp project follows the [Kinvolk Contribution Guidelines](https://github.com/kinvolk/contribution) +which promotes good and consistent contribution practices across Kinvolk's +projects. Before start contributing, and in addition to this section, please +read those guidelines. + +## Filing an issue or feature request + +Please use the [project's issue tracker](https://github.com/headlamp-k8s/headlamp/issues) for filing any bugs you find or features +you think are useful. + +### Security issues + +For filing security issues that are sensitive and should not be public, please +send an email to security@headlamp.dev . + +## Translations + +If you want to contribute to the internationalization of Headlamp, please refer to the +dedicated [i18n docs](./development/). + +### Complex contributions + +If you have a complex contribution in mind (meaning changes in the architecture +or a lot of LOC changed), it is advisable to first file a Github issue and +discuss the implementation with the project's maintainers. + +## Coding style + +The coding style for the `backend` and `frontend` should be consistent. +For helping and verifying that, we have go and js linters. + +For linting the `backend` and `frontend`, use the following commands +(respectively): + +```bash +make backend-lint +``` + +```bash +make frontend-lint +``` + +The linters are also run in the CI system, so any PRs you create will be +tested for compliance with the coding style. + +To speed up a review from the project's maintainers, please make sure that +the CI checks are passing for your PR. + +## Commit guidelines + +For the general guidelines on making PRs/commits easier to review, please check +out Kinvolk's +[contribution guidelines on git](https://github.com/kinvolk/contribution/tree/master/topics/git.md). + +## Testing + +The frontend is tested via Storybook related snapshots. So new components should have +an associated story when possible. + +For running the frontend tests, use the following command: + +```bash +make frontend-test +``` + +The backend uses go's testing and can be run by using the following command: + +```bash +make backend-test +``` + +Tests will run as part of the CI after a Pull Request is open. diff --git a/docs/latest/development/api/README.md b/docs/latest/development/api/README.md new file mode 100644 index 0000000..2de478c --- /dev/null +++ b/docs/latest/development/api/README.md @@ -0,0 +1,51 @@ +# API + +## Modules + +- [lib/k8s](modules/lib_k8s.md) +- [lib/k8s/apiProxy](modules/lib_k8s_apiProxy.md) +- [lib/k8s/cluster](modules/lib_k8s_cluster.md) +- [lib/k8s/cluster](modules/lib_k8s_cluster.md) +- [lib/k8s/clusterRole](modules/lib_k8s_clusterRole.md) +- [lib/k8s/clusterRoleBinding](modules/lib_k8s_clusterRoleBinding.md) +- [lib/k8s/configMap](modules/lib_k8s_configMap.md) +- [lib/k8s/crd](modules/lib_k8s_crd.md) +- [lib/k8s/cronJob](modules/lib_k8s_cronJob.md) +- [lib/k8s/daemonSet](modules/lib_k8s_daemonSet.md) +- [lib/k8s/deployment](modules/lib_k8s_deployment.md) +- [lib/k8s/endpoints](modules/lib_k8s_endpoints.md) +- [lib/k8s/event](modules/lib_k8s_event.md) +- [lib/k8s/hpa](modules/lib_k8s_hpa.md) +- [lib/k8s/ingress](modules/lib_k8s_ingress.md) +- [lib/k8s/ingressClass](modules/lib_k8s_ingressClass.md) +- [lib/k8s/job](modules/lib_k8s_job.md) +- [lib/k8s/kubeconfig](modules/lib_k8s_kubeconfig.md) +- [lib/k8s/lease](modules/lib_k8s_lease.md) +- [lib/k8s/limitRange](modules/lib_k8s_limitRange.md) +- [lib/k8s/mutatingWebhookConfiguration](modules/lib_k8s_mutatingWebhookConfiguration.md) +- [lib/k8s/namespace](modules/lib_k8s_namespace.md) +- [lib/k8s/networkpolicy](modules/lib_k8s_networkpolicy.md) +- [lib/k8s/node](modules/lib_k8s_node.md) +- [lib/k8s/persistentVolume](modules/lib_k8s_persistentVolume.md) +- [lib/k8s/persistentVolumeClaim](modules/lib_k8s_persistentVolumeClaim.md) +- [lib/k8s/pod](modules/lib_k8s_pod.md) +- [lib/k8s/podDisruptionBudget](modules/lib_k8s_podDisruptionBudget.md) +- [lib/k8s/priorityClass](modules/lib_k8s_priorityClass.md) +- [lib/k8s/priorityClasses](modules/lib_k8s_priorityClasses.md) +- [lib/k8s/replicaSet](modules/lib_k8s_replicaSet.md) +- [lib/k8s/resourceQuota](modules/lib_k8s_resourceQuota.md) +- [lib/k8s/role](modules/lib_k8s_role.md) +- [lib/k8s/roleBinding](modules/lib_k8s_roleBinding.md) +- [lib/k8s/runtime](modules/lib_k8s_runtime.md) +- [lib/k8s/secret](modules/lib_k8s_secret.md) +- [lib/k8s/service](modules/lib_k8s_service.md) +- [lib/k8s/serviceAccount](modules/lib_k8s_serviceAccount.md) +- [lib/k8s/statefulSet](modules/lib_k8s_statefulSet.md) +- [lib/k8s/storageClass](modules/lib_k8s_storageClass.md) +- [lib/k8s/token](modules/lib_k8s_token.md) +- [lib/k8s/validatingWebhookConfiguration](modules/lib_k8s_validatingWebhookConfiguration.md) +- [lib/k8s/vpa](modules/lib_k8s_vpa.md) +- [lib/router](modules/lib_router.md) +- [lib/util](modules/lib_util.md) +- [plugin/lib](modules/plugin_lib.md) +- [plugin/registry](modules/plugin_registry.md) diff --git a/docs/latest/development/api/classes/lib_k8s_clusterRole.ClusterRole.md b/docs/latest/development/api/classes/lib_k8s_clusterRole.ClusterRole.md new file mode 100644 index 0000000..ec8e6ea --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_clusterRole.ClusterRole.md @@ -0,0 +1,283 @@ +# Class: ClusterRole + +[lib/k8s/clusterRole](../modules/lib_k8s_clusterRole.md).ClusterRole + +## Hierarchy + +- [`Role`](lib_k8s_role.Role.md) + + ↳ **`ClusterRole`** + +## Constructors + +### constructor + +• **new ClusterRole**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeRole`](../interfaces/lib_k8s_role.KubeRole.md) | + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[constructor](lib_k8s_role.Role.md#constructor) + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Overrides + +[Role](lib_k8s_role.Role.md).[apiEndpoint](lib_k8s_role.Role.md#apiendpoint) + +#### Defined in + +[lib/k8s/clusterRole.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRole.ts#L5) + +## Accessors + +### detailsRoute + +• `get` **detailsRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/clusterRole.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRole.ts#L11) + +___ + +### rules + +• `get` **rules**(): `any` + +#### Returns + +`any` + +#### Inherited from + +Role.rules + +#### Defined in + +[lib/k8s/role.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/role.ts#L17) + +___ + +### className + +• `Static` `get` **className**(): `string` + +#### Returns + +`string` + +#### Overrides + +Role.className + +#### Defined in + +[lib/k8s/clusterRole.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRole.ts#L7) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[apiList](lib_k8s_role.Role.md#apilist) + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[getAuthorization](lib_k8s_role.Role.md#getauthorization) + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[getErrorMessage](lib_k8s_role.Role.md#geterrormessage) + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[useApiGet](lib_k8s_role.Role.md#useapiget) + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[useApiList](lib_k8s_role.Role.md#useapilist) + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[useGet](lib_k8s_role.Role.md#useget) + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +[Role](lib_k8s_role.Role.md).[useList](lib_k8s_role.Role.md#uselist) + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_clusterRoleBinding.ClusterRoleBinding.md b/docs/latest/development/api/classes/lib_k8s_clusterRoleBinding.ClusterRoleBinding.md new file mode 100644 index 0000000..e9e72f6 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_clusterRoleBinding.ClusterRoleBinding.md @@ -0,0 +1,301 @@ +# Class: ClusterRoleBinding + +[lib/k8s/clusterRoleBinding](../modules/lib_k8s_clusterRoleBinding.md).ClusterRoleBinding + +## Hierarchy + +- [`RoleBinding`](lib_k8s_roleBinding.RoleBinding.md) + + ↳ **`ClusterRoleBinding`** + +## Constructors + +### constructor + +• **new ClusterRoleBinding**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeRoleBinding`](../interfaces/lib_k8s_roleBinding.KubeRoleBinding.md) | + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[constructor](lib_k8s_roleBinding.RoleBinding.md#constructor) + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Overrides + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[apiEndpoint](lib_k8s_roleBinding.RoleBinding.md#apiendpoint) + +#### Defined in + +[lib/k8s/clusterRoleBinding.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRoleBinding.ts#L5) + +## Accessors + +### detailsRoute + +• `get` **detailsRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/clusterRoleBinding.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRoleBinding.ts#L11) + +___ + +### roleRef + +• `get` **roleRef**(): `any` + +#### Returns + +`any` + +#### Inherited from + +RoleBinding.roleRef + +#### Defined in + +[lib/k8s/roleBinding.ts:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L21) + +___ + +### subjects + +• `get` **subjects**(): { `apiGroup`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` }[] + +#### Returns + +{ `apiGroup`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` }[] + +#### Inherited from + +RoleBinding.subjects + +#### Defined in + +[lib/k8s/roleBinding.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L25) + +___ + +### className + +• `Static` `get` **className**(): `string` + +#### Returns + +`string` + +#### Overrides + +RoleBinding.className + +#### Defined in + +[lib/k8s/clusterRoleBinding.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/clusterRoleBinding.ts#L7) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[apiList](lib_k8s_roleBinding.RoleBinding.md#apilist) + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[getAuthorization](lib_k8s_roleBinding.RoleBinding.md#getauthorization) + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[getErrorMessage](lib_k8s_roleBinding.RoleBinding.md#geterrormessage) + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[useApiGet](lib_k8s_roleBinding.RoleBinding.md#useapiget) + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[useApiList](lib_k8s_roleBinding.RoleBinding.md#useapilist) + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[useGet](lib_k8s_roleBinding.RoleBinding.md#useget) + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +[RoleBinding](lib_k8s_roleBinding.RoleBinding.md).[useList](lib_k8s_roleBinding.RoleBinding.md#uselist) + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_configMap.ConfigMap.md b/docs/latest/development/api/classes/lib_k8s_configMap.ConfigMap.md new file mode 100644 index 0000000..65be8a9 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_configMap.ConfigMap.md @@ -0,0 +1,256 @@ +# Class: ConfigMap + +[lib/k8s/configMap](../modules/lib_k8s_configMap.md).ConfigMap + +## Hierarchy + +- `any` + + ↳ **`ConfigMap`** + +## Constructors + +### constructor + +• **new ConfigMap**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeConfigMap`](../interfaces/lib_k8s_configMap.KubeConfigMap.md) | + +#### Inherited from + +makeKubeObject('configMap').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/configMap.ts:9](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/configMap.ts#L9) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('configMap').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### data + +• `get` **data**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/configMap.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/configMap.ts#L11) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('configMap').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('configMap').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('configMap').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('configMap').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('configMap').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('configMap').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('configMap').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_crd.CustomResourceDefinition.md b/docs/latest/development/api/classes/lib_k8s_crd.CustomResourceDefinition.md new file mode 100644 index 0000000..5b11470 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_crd.CustomResourceDefinition.md @@ -0,0 +1,343 @@ +# Class: CustomResourceDefinition + +[lib/k8s/crd](../modules/lib_k8s_crd.md).CustomResourceDefinition + +## Hierarchy + +- `any` + + ↳ **`CustomResourceDefinition`** + +## Constructors + +### constructor + +• **new CustomResourceDefinition**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeCRD`](../interfaces/lib_k8s_crd.KubeCRD.md) | + +#### Inherited from + +makeKubeObject('crd').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/crd.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L34) + +## Accessors + +### isNamespaced + +• `get` **isNamespaced**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +[lib/k8s/crd.ts:75](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L75) + +___ + +### plural + +• `get` **plural**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/crd.ts:51](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L51) + +___ + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `group` | `string` | +| `names` | { `kind`: `string` ; `listKind`: `string` ; `plural`: `string` ; `singular`: `string` } | +| `names.kind` | `string` | +| `names.listKind` | `string` | +| `names.plural` | `string` | +| `names.singular` | `string` | +| `scope` | `string` | +| `version` | `string` | +| `versions` | { `additionalPrinterColumns`: { `description?`: `string` ; `format?`: `string` ; `jsonPath`: `string` ; `name`: `string` ; `priority?`: `number` ; `type`: `string` }[] ; `name`: `string` ; `served`: `boolean` ; `storage`: `boolean` }[] | + +#### Defined in + +[lib/k8s/crd.ts:47](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L47) + +___ + +### className + +• `Static` `get` **className**(): `string` + +#### Returns + +`string` + +#### Overrides + +makeKubeObject<KubeCRD\>('crd').className + +#### Defined in + +[lib/k8s/crd.ts:39](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L39) + +___ + +### detailsRoute + +• `Static` `get` **detailsRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/crd.ts:43](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L43) + +## Methods + +### getMainAPIGroup + +▸ **getMainAPIGroup**(): [`string`, `string`, `string`] + +#### Returns + +[`string`, `string`, `string`] + +#### Defined in + +[lib/k8s/crd.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L55) + +___ + +### makeCRClass + +▸ **makeCRClass**(): [`KubeObjectIface`](../interfaces/lib_k8s_cluster.KubeObjectIface.md)<[`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md)\> + +#### Returns + +[`KubeObjectIface`](../interfaces/lib_k8s_cluster.KubeObjectIface.md)<[`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md)\> + +#### Defined in + +[lib/k8s/crd.ts:79](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L79) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('crd').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('crd').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('crd').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('crd').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('crd').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('crd').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('crd').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_cronJob.CronJob.md b/docs/latest/development/api/classes/lib_k8s_cronJob.CronJob.md new file mode 100644 index 0000000..85eb3c3 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_cronJob.CronJob.md @@ -0,0 +1,284 @@ +# Class: CronJob + +[lib/k8s/cronJob](../modules/lib_k8s_cronJob.md).CronJob + +## Hierarchy + +- `any` + + ↳ **`CronJob`** + +## Constructors + +### constructor + +• **new CronJob**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeCronJob`](../interfaces/lib_k8s_cronJob.KubeCronJob.md) | + +#### Inherited from + +makeKubeObject('CronJob').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/cronJob.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L38) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('CronJob').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/cronJob.ts:43](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L43) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/cronJob.ts:47](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L47) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/cronJob.ts:51](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L51) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('CronJob').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('CronJob').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('CronJob').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('CronJob').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('CronJob').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('CronJob').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('CronJob').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_daemonSet.DaemonSet.md b/docs/latest/development/api/classes/lib_k8s_daemonSet.DaemonSet.md new file mode 100644 index 0000000..4420139 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_daemonSet.DaemonSet.md @@ -0,0 +1,298 @@ +# Class: DaemonSet + +[lib/k8s/daemonSet](../modules/lib_k8s_daemonSet.md).DaemonSet + +## Hierarchy + +- `any` + + ↳ **`DaemonSet`** + +## Constructors + +### constructor + +• **new DaemonSet**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeDaemonSet`](../interfaces/lib_k8s_daemonSet.KubeDaemonSet.md) | + +#### Inherited from + +makeKubeObject('DaemonSet').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/daemonSet.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L32) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('DaemonSet').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/daemonSet.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L34) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/daemonSet.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L38) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/daemonSet.ts:42](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L42) + +___ + +### getNodeSelectors + +▸ **getNodeSelectors**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/daemonSet.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L46) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('DaemonSet').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('DaemonSet').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('DaemonSet').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('DaemonSet').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('DaemonSet').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('DaemonSet').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('DaemonSet').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_deployment.Deployment.md b/docs/latest/development/api/classes/lib_k8s_deployment.Deployment.md new file mode 100644 index 0000000..dfc7363 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_deployment.Deployment.md @@ -0,0 +1,298 @@ +# Class: Deployment + +[lib/k8s/deployment](../modules/lib_k8s_deployment.md).Deployment + +## Hierarchy + +- `any` + + ↳ **`Deployment`** + +## Constructors + +### constructor + +• **new Deployment**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeDeployment`](../interfaces/lib_k8s_deployment.KubeDeployment.md) | + +#### Inherited from + +makeKubeObject('Deployment').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/deployment.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L30) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('Deployment').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/deployment.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L32) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/deployment.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L36) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/deployment.ts:40](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L40) + +___ + +### getMatchLabelsList + +▸ **getMatchLabelsList**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/deployment.ts:44](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L44) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Deployment').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Deployment').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('Deployment').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('Deployment').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Deployment').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Deployment').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Deployment').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_endpoints.Endpoints.md b/docs/latest/development/api/classes/lib_k8s_endpoints.Endpoints.md new file mode 100644 index 0000000..ce2dbb5 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_endpoints.Endpoints.md @@ -0,0 +1,312 @@ +# Class: Endpoints + +[lib/k8s/endpoints](../modules/lib_k8s_endpoints.md).Endpoints + +## Hierarchy + +- `any` + + ↳ **`Endpoints`** + +## Constructors + +### constructor + +• **new Endpoints**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeEndpoint`](../interfaces/lib_k8s_endpoints.KubeEndpoint.md) | + +#### Inherited from + +makeKubeObject('endpoint').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/endpoints.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L32) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('endpoint').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/endpoints.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L34) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/endpoints.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L38) + +___ + +### subsets + +• `get` **subsets**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/endpoints.ts:42](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L42) + +## Methods + +### getAddresses + +▸ **getAddresses**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/endpoints.ts:50](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L50) + +___ + +### getAddressesText + +▸ **getAddressesText**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/endpoints.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L46) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('endpoint').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('endpoint').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('endpoint').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('endpoint').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('endpoint').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('endpoint').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('endpoint').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_event.Event.md b/docs/latest/development/api/classes/lib_k8s_event.Event.md new file mode 100644 index 0000000..03d9e02 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_event.Event.md @@ -0,0 +1,490 @@ +# Class: Event + +[lib/k8s/event](../modules/lib_k8s_event.md).Event + +## Hierarchy + +- `any` + + ↳ **`Event`** + +## Constructors + +### constructor + +• **new Event**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md) | + +#### Inherited from + +makeKubeObject('Event').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/event.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L25) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('Event').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### count + +• `get` **count**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:68](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L68) + +___ + +### firstOccurrence + +• `get` **firstOccurrence**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:102](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L102) + +___ + +### involvedObject + +• `get` **involvedObject**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:48](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L48) + +___ + +### involvedObjectInstance + +• `get` **involvedObjectInstance**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:147](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L147) + +___ + +### lastOccurrence + +• `get` **lastOccurrence**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:77](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L77) + +___ + +### message + +• `get` **message**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:60](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L60) + +___ + +### reason + +• `get` **reason**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L56) + +___ + +### source + +• `get` **source**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:64](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L64) + +___ + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:40](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L40) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:44](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L44) + +___ + +### type + +• `get` **type**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/event.ts:52](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L52) + +___ + +### maxLimit + +• `Static` `get` **maxLimit**(): `number` + +#### Returns + +`number` + +#### Defined in + +[lib/k8s/event.ts:31](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L31) + +• `Static` `set` **maxLimit**(`limit`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `limit` | `number` | + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/event.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L36) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Event').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Event').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('Event').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### objectEvents + +▸ `Static` **objectEvents**(`object`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `object` | `any` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/event.ts:117](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L117) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('Event').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Event').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Event').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Event').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) + +___ + +### useListForClusters + +▸ `Static` **useListForClusters**(`clusterNames`, `options?`): `EventErrorObj` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `clusterNames` | `string`[] | +| `options?` | `Object` | +| `options.queryParams?` | [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | + +#### Returns + +`EventErrorObj` + +#### Defined in + +[lib/k8s/event.ts:167](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L167) + +___ + +### useWarningList + +▸ `Static` **useWarningList**(`clusters`, `options?`): `EventErrorObj` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `clusters` | `string`[] | +| `options?` | `Object` | +| `options.queryParams?` | [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | + +#### Returns + +`EventErrorObj` + +#### Defined in + +[lib/k8s/event.ts:238](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L238) diff --git a/docs/latest/development/api/classes/lib_k8s_hpa.HPA.md b/docs/latest/development/api/classes/lib_k8s_hpa.HPA.md new file mode 100644 index 0000000..aea6c80 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_hpa.HPA.md @@ -0,0 +1,304 @@ +# Class: HPA + +[lib/k8s/hpa](../modules/lib_k8s_hpa.md).HPA + +## Hierarchy + +- `any` + + ↳ **`HPA`** + +## Constructors + +### constructor + +• **new HPA**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeHPA`](../interfaces/lib_k8s_hpa.KubeHPA.md) | + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/hpa.ts:170](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L170) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### referenceObject + +• `get` **referenceObject**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/hpa.ts:336](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L336) + +___ + +### spec + +• `get` **spec**(): `HpaSpec` + +#### Returns + +`HpaSpec` + +#### Defined in + +[lib/k8s/hpa.ts:172](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L172) + +___ + +### status + +• `get` **status**(): `HpaStatus` + +#### Returns + +`HpaStatus` + +#### Defined in + +[lib/k8s/hpa.ts:176](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L176) + +## Methods + +### metrics + +▸ **metrics**(`t`): `HPAMetrics`[] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `t` | `Function` | + +#### Returns + +`HPAMetrics`[] + +#### Defined in + +[lib/k8s/hpa.ts:180](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L180) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('horizontalPodAutoscaler').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_ingress.Ingress.md b/docs/latest/development/api/classes/lib_k8s_ingress.Ingress.md new file mode 100644 index 0000000..6672724 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_ingress.Ingress.md @@ -0,0 +1,328 @@ +# Class: Ingress + +[lib/k8s/ingress](../modules/lib_k8s_ingress.md).Ingress + +## Hierarchy + +- `any` + + ↳ **`Ingress`** + +## Constructors + +### constructor + +• **new Ingress**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeIngress`](../interfaces/lib_k8s_ingress.KubeIngress.md) | + +#### Inherited from + +makeKubeObject('ingress').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/ingress.ts:72](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L72) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('ingress').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `defaultBackend?` | { `resource?`: { `apiVersion`: `string` ; `kind`: `string` ; `name`: `string` } ; `service?`: { `name`: `string` ; `port`: { `name?`: `string` ; `number?`: `number` } } } | +| `defaultBackend.resource?` | { `apiVersion`: `string` ; `kind`: `string` ; `name`: `string` } | +| `defaultBackend.resource.apiVersion` | `string` | +| `defaultBackend.resource.kind` | `string` | +| `defaultBackend.resource.name` | `string` | +| `defaultBackend.service?` | { `name`: `string` ; `port`: { `name?`: `string` ; `number?`: `number` } } | +| `defaultBackend.service.name` | `string` | +| `defaultBackend.service.port` | { `name?`: `string` ; `number?`: `number` } | +| `defaultBackend.service.port.name?` | `string` | +| `defaultBackend.service.port.number?` | `number` | +| `ingressClassName?` | `string` | +| `rules` | [`IngressRule`](../interfaces/lib_k8s_ingress.IngressRule.md)[] \| `LegacyIngressRule`[] | +| `tls?` | { `hosts`: `string`[] ; `secretName`: `string` }[] | + +#### Defined in + +[lib/k8s/ingress.ts:79](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L79) + +___ + +### listRoute + +• `Static` `get` **listRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/ingress.ts:126](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L126) + +___ + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/ingress.ts:130](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L130) + +## Methods + +### getHosts + +▸ **getHosts**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/ingress.ts:83](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L83) + +___ + +### getRules + +▸ **getRules**(): [`IngressRule`](../interfaces/lib_k8s_ingress.IngressRule.md)[] + +#### Returns + +[`IngressRule`](../interfaces/lib_k8s_ingress.IngressRule.md)[] + +#### Defined in + +[lib/k8s/ingress.ts:87](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L87) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingress').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingress').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('ingress').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('ingress').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingress').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ingress').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ingress').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_ingressClass.IngressClass.md b/docs/latest/development/api/classes/lib_k8s_ingressClass.IngressClass.md new file mode 100644 index 0000000..0a23309 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_ingressClass.IngressClass.md @@ -0,0 +1,303 @@ +# Class: IngressClass + +[lib/k8s/ingressClass](../modules/lib_k8s_ingressClass.md).IngressClass + +## Hierarchy + +- `any` + + ↳ **`IngressClass`** + +## Constructors + +### constructor + +• **new IngressClass**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeIngressClass`](../interfaces/lib_k8s_ingressClass.KubeIngressClass.md) | + +#### Inherited from + +makeKubeObject('ingressClass').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/ingressClass.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L12) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('ingressClass').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### isDefault + +• `get` **isDefault**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +[lib/k8s/ingressClass.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L18) + +___ + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `controller` | `string` | + +#### Defined in + +[lib/k8s/ingressClass.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L14) + +___ + +### listRoute + +• `Static` `get` **listRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/ingressClass.ts:26](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L26) + +___ + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/ingressClass.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L30) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingressClass').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingressClass').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('ingressClass').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('ingressClass').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ingressClass').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ingressClass').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ingressClass').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_job.Job.md b/docs/latest/development/api/classes/lib_k8s_job.Job.md new file mode 100644 index 0000000..e31a66a --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_job.Job.md @@ -0,0 +1,300 @@ +# Class: Job + +[lib/k8s/job](../modules/lib_k8s_job.md).Job + +## Hierarchy + +- `any` + + ↳ **`Job`** + +## Constructors + +### constructor + +• **new Job**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeJob`](../interfaces/lib_k8s_job.KubeJob.md) | + +#### Inherited from + +makeKubeObject('Job').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/job.ts:26](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L26) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('Job').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/job.ts:28](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L28) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/job.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L32) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/job.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L36) + +___ + +### getDuration + +▸ **getDuration**(): `number` + +Returns the duration of the job in milliseconds. + +#### Returns + +`number` + +#### Defined in + +[lib/k8s/job.ts:41](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L41) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Job').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Job').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('Job').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('Job').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Job').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Job').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Job').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_lease.Lease.md b/docs/latest/development/api/classes/lib_k8s_lease.Lease.md new file mode 100644 index 0000000..cc29cc6 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_lease.Lease.md @@ -0,0 +1,256 @@ +# Class: Lease + +[lib/k8s/lease](../modules/lib_k8s_lease.md).Lease + +## Hierarchy + +- `any` + + ↳ **`Lease`** + +## Constructors + +### constructor + +• **new Lease**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeLease`](../interfaces/lib_k8s_lease.KubeLease.md) | + +#### Inherited from + +makeKubeObject('Lease').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/lease.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L16) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('Lease').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/lease.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L18) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Lease').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Lease').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('Lease').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('Lease').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Lease').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Lease').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Lease').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_limitRange.LimitRange.md b/docs/latest/development/api/classes/lib_k8s_limitRange.LimitRange.md new file mode 100644 index 0000000..5c3f087 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_limitRange.LimitRange.md @@ -0,0 +1,256 @@ +# Class: LimitRange + +[lib/k8s/limitRange](../modules/lib_k8s_limitRange.md).LimitRange + +## Hierarchy + +- `any` + + ↳ **`LimitRange`** + +## Constructors + +### constructor + +• **new LimitRange**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeLimitRange`](../interfaces/lib_k8s_limitRange.KubeLimitRange.md) | + +#### Inherited from + +makeKubeObject('LimitRange').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/limitRange.tsx:31](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/limitRange.tsx#L31) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('LimitRange').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/limitRange.tsx:33](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/limitRange.tsx#L33) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('LimitRange').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('LimitRange').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('LimitRange').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('LimitRange').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('LimitRange').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('LimitRange').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('LimitRange').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_mutatingWebhookConfiguration.MutatingWebhookConfiguration.md b/docs/latest/development/api/classes/lib_k8s_mutatingWebhookConfiguration.MutatingWebhookConfiguration.md new file mode 100644 index 0000000..b1df9e1 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_mutatingWebhookConfiguration.MutatingWebhookConfiguration.md @@ -0,0 +1,275 @@ +# Class: MutatingWebhookConfiguration + +[lib/k8s/mutatingWebhookConfiguration](../modules/lib_k8s_mutatingWebhookConfiguration.md).MutatingWebhookConfiguration + +## Hierarchy + +- `any` + + ↳ **`MutatingWebhookConfiguration`** + +## Constructors + +### constructor + +• **new MutatingWebhookConfiguration**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeMutatingWebhookConfiguration`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md) | + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:48](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L48) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### webhooks + +• `get` **webhooks**(): { `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `reinvocationPolicy?`: `string` ; `rules?`: [`KubeRuleWithOperations`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Returns + +{ `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `reinvocationPolicy?`: `string` ; `rules?`: [`KubeRuleWithOperations`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L54) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'MutatingWebhookConfiguration' +).useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_namespace.Namespace.md b/docs/latest/development/api/classes/lib_k8s_namespace.Namespace.md new file mode 100644 index 0000000..f4a776a --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_namespace.Namespace.md @@ -0,0 +1,257 @@ +# Class: Namespace + +[lib/k8s/namespace](../modules/lib_k8s_namespace.md).Namespace + +## Hierarchy + +- `any` + + ↳ **`Namespace`** + +## Constructors + +### constructor + +• **new Namespace**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeNamespace`](../interfaces/lib_k8s_namespace.KubeNamespace.md) | + +#### Inherited from + +makeKubeObject('namespace').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/namespace.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/namespace.ts#L11) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('namespace').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/namespace.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/namespace.ts#L13) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('namespace').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('namespace').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('namespace').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('namespace').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('namespace').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('namespace').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('namespace').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_networkpolicy.NetworkPolicy.md b/docs/latest/development/api/classes/lib_k8s_networkpolicy.NetworkPolicy.md new file mode 100644 index 0000000..9c8c7fb --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_networkpolicy.NetworkPolicy.md @@ -0,0 +1,256 @@ +# Class: NetworkPolicy + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).NetworkPolicy + +## Hierarchy + +- `any` + + ↳ **`NetworkPolicy`** + +## Constructors + +### constructor + +• **new NetworkPolicy**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeNetworkPolicy`](../interfaces/lib_k8s_networkpolicy.KubeNetworkPolicy.md) | + +#### Inherited from + +makeKubeObject('NetworkPolicy').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/networkpolicy.tsx:39](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L39) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('NetworkPolicy').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/networkpolicy.tsx:41](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L41) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('NetworkPolicy').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('NetworkPolicy').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('NetworkPolicy').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('NetworkPolicy').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('NetworkPolicy').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('NetworkPolicy').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('NetworkPolicy').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_node.Node.md b/docs/latest/development/api/classes/lib_k8s_node.Node.md new file mode 100644 index 0000000..ecf9bc1 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_node.Node.md @@ -0,0 +1,348 @@ +# Class: Node + +[lib/k8s/node](../modules/lib_k8s_node.md).Node + +## Hierarchy + +- `any` + + ↳ **`Node`** + +## Constructors + +### constructor + +• **new Node**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeNode`](../interfaces/lib_k8s_node.KubeNode.md) | + +#### Inherited from + +makeKubeObject('node').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/node.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L56) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('node').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `podCIDR` | `string` | +| `taints` | { `effect`: `string` ; `key`: `string` }[] | + +#### Defined in + +[lib/k8s/node.ts:62](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L62) + +___ + +### status + +• `get` **status**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `addresses` | { `address`: `string` ; `type`: `string` }[] | +| `allocatable` | { `cpu`: `any` ; `ephemeralStorage`: `any` ; `hugepages_1Gi`: `any` ; `hugepages_2Mi`: `any` ; `memory`: `any` ; `pods`: `any` } | +| `allocatable.cpu` | `any` | +| `allocatable.ephemeralStorage` | `any` | +| `allocatable.hugepages_1Gi` | `any` | +| `allocatable.hugepages_2Mi` | `any` | +| `allocatable.memory` | `any` | +| `allocatable.pods` | `any` | +| `capacity` | { `cpu`: `any` ; `ephemeralStorage`: `any` ; `hugepages_1Gi`: `any` ; `hugepages_2Mi`: `any` ; `memory`: `any` ; `pods`: `any` } | +| `capacity.cpu` | `any` | +| `capacity.ephemeralStorage` | `any` | +| `capacity.hugepages_1Gi` | `any` | +| `capacity.hugepages_2Mi` | `any` | +| `capacity.memory` | `any` | +| `capacity.pods` | `any` | +| `conditions` | `Omit`<[`KubeCondition`](../interfaces/lib_k8s_cluster.KubeCondition.md), ``"lastProbeTime"`` \| ``"lastUpdateTime"``\> & { `lastHeartbeatTime`: `string` }[] | +| `nodeInfo` | { `architecture`: `string` ; `bootID`: `string` ; `containerRuntimeVersion`: `string` ; `kernelVersion`: `string` ; `kubeProxyVersion`: `string` ; `kubeletVersion`: `string` ; `machineID`: `string` ; `operatingSystem`: `string` ; `osImage`: `string` ; `systemUUID`: `string` } | +| `nodeInfo.architecture` | `string` | +| `nodeInfo.bootID` | `string` | +| `nodeInfo.containerRuntimeVersion` | `string` | +| `nodeInfo.kernelVersion` | `string` | +| `nodeInfo.kubeProxyVersion` | `string` | +| `nodeInfo.kubeletVersion` | `string` | +| `nodeInfo.machineID` | `string` | +| `nodeInfo.operatingSystem` | `string` | +| `nodeInfo.osImage` | `string` | +| `nodeInfo.systemUUID` | `string` | + +#### Defined in + +[lib/k8s/node.ts:58](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L58) + +## Methods + +### getExternalIP + +▸ **getExternalIP**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/node.ts:83](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L83) + +___ + +### getInternalIP + +▸ **getInternalIP**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/node.ts:87](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L87) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('node').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('node').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('node').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('node').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('node').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('node').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('node').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) + +___ + +### useMetrics + +▸ `Static` **useMetrics**(): [``null`` \| [`KubeMetrics`](../interfaces/lib_k8s_cluster.KubeMetrics.md)[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)] + +#### Returns + +[``null`` \| [`KubeMetrics`](../interfaces/lib_k8s_cluster.KubeMetrics.md)[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)] + +#### Defined in + +[lib/k8s/node.ts:66](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L66) diff --git a/docs/latest/development/api/classes/lib_k8s_persistentVolume.PersistentVolume.md b/docs/latest/development/api/classes/lib_k8s_persistentVolume.PersistentVolume.md new file mode 100644 index 0000000..56cfa6a --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_persistentVolume.PersistentVolume.md @@ -0,0 +1,271 @@ +# Class: PersistentVolume + +[lib/k8s/persistentVolume](../modules/lib_k8s_persistentVolume.md).PersistentVolume + +## Hierarchy + +- `any` + + ↳ **`PersistentVolume`** + +## Constructors + +### constructor + +• **new PersistentVolume**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubePersistentVolume`](../interfaces/lib_k8s_persistentVolume.KubePersistentVolume.md) | + +#### Inherited from + +makeKubeObject('persistentVolume').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/persistentVolume.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolume.ts#L19) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('persistentVolume').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/persistentVolume.ts:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolume.ts#L21) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/persistentVolume.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolume.ts#L25) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('persistentVolume').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('persistentVolume').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('persistentVolume').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('persistentVolume').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('persistentVolume').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('persistentVolume').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('persistentVolume').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_persistentVolumeClaim.PersistentVolumeClaim.md b/docs/latest/development/api/classes/lib_k8s_persistentVolumeClaim.PersistentVolumeClaim.md new file mode 100644 index 0000000..95cecb8 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_persistentVolumeClaim.PersistentVolumeClaim.md @@ -0,0 +1,288 @@ +# Class: PersistentVolumeClaim + +[lib/k8s/persistentVolumeClaim](../modules/lib_k8s_persistentVolumeClaim.md).PersistentVolumeClaim + +## Hierarchy + +- `any` + + ↳ **`PersistentVolumeClaim`** + +## Constructors + +### constructor + +• **new PersistentVolumeClaim**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubePersistentVolumeClaim`](../interfaces/lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md) | + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/persistentVolumeClaim.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolumeClaim.ts#L32) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/persistentVolumeClaim.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolumeClaim.ts#L34) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/persistentVolumeClaim.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolumeClaim.ts#L38) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'persistentVolumeClaim' +).useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_pod.Pod.md b/docs/latest/development/api/classes/lib_k8s_pod.Pod.md new file mode 100644 index 0000000..ded9665 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_pod.Pod.md @@ -0,0 +1,377 @@ +# Class: Pod + +[lib/k8s/pod](../modules/lib_k8s_pod.md).Pod + +## Hierarchy + +- `any` + + ↳ **`Pod`** + +## Constructors + +### constructor + +• **new Pod**(`jsonData`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `jsonData` | [`KubePod`](../interfaces/lib_k8s_pod.KubePod.md) | + +#### Overrides + +makeKubeObject<KubePod\>('Pod').constructor + +#### Defined in + +[lib/k8s/pod.ts:93](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L93) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/pod.ts:90](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L90) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('Pod').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): [`KubePodSpec`](../interfaces/lib_k8s_pod.KubePodSpec.md) + +#### Returns + +[`KubePodSpec`](../interfaces/lib_k8s_pod.KubePodSpec.md) + +#### Defined in + +[lib/k8s/pod.ts:98](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L98) + +___ + +### status + +• `get` **status**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `conditions` | [`KubeCondition`](../interfaces/lib_k8s_cluster.KubeCondition.md)[] | +| `containerStatuses` | [`KubeContainerStatus`](../interfaces/lib_k8s_cluster.KubeContainerStatus.md)[] | +| `ephemeralContainerStatuses?` | [`KubeContainerStatus`](../interfaces/lib_k8s_cluster.KubeContainerStatus.md)[] | +| `hostIP` | `string` | +| `initContainerStatuses?` | [`KubeContainerStatus`](../interfaces/lib_k8s_cluster.KubeContainerStatus.md)[] | +| `message?` | `string` | +| `phase` | `string` | +| `qosClass?` | `string` | +| `reason?` | `string` | +| `startTime` | [`Time`](../modules/lib_k8s_cluster.md#time) | + +#### Defined in + +[lib/k8s/pod.ts:102](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L102) + +## Methods + +### attach + +▸ **attach**(`container`, `onAttach`, `options?`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `container` | `string` | +| `onAttach` | [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb) | +| `options` | [`StreamArgs`](../interfaces/lib_k8s_apiProxy.StreamArgs.md) | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `cancel` | () => `void` | +| `getSocket` | () => ``null`` \| `WebSocket` | + +#### Defined in + +[lib/k8s/pod.ts:172](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L172) + +___ + +### exec + +▸ **exec**(`container`, `onExec`, `options?`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `container` | `string` | +| `onExec` | [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb) | +| `options` | [`ExecOptions`](../interfaces/lib_k8s_pod.ExecOptions.md) | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `cancel` | () => `void` | +| `getSocket` | () => ``null`` \| `WebSocket` | + +#### Defined in + +[lib/k8s/pod.ts:184](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L184) + +___ + +### getDetailedStatus + +▸ **getDetailedStatus**(): `PodDetailedStatus` + +#### Returns + +`PodDetailedStatus` + +#### Defined in + +[lib/k8s/pod.ts:222](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L222) + +___ + +### getLogs + +▸ **getLogs**(...`args`): () => `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [container: string, tailLines: number, showPrevious: boolean, onLogs: StreamResultsCb] \| [container: string, onLogs: StreamResultsCb, logsOptions: LogOptions] | + +#### Returns + +`fn` + +▸ (): `void` + +##### Returns + +`void` + +#### Defined in + +[lib/k8s/pod.ts:106](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L106) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Pod').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Pod').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('Pod').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('Pod').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('Pod').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Pod').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('Pod').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_podDisruptionBudget.PDB.md b/docs/latest/development/api/classes/lib_k8s_podDisruptionBudget.PDB.md new file mode 100644 index 0000000..7444a7b --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_podDisruptionBudget.PDB.md @@ -0,0 +1,305 @@ +# Class: PDB + +[lib/k8s/podDisruptionBudget](../modules/lib_k8s_podDisruptionBudget.md).PDB + +## Hierarchy + +- `any` + + ↳ **`PDB`** + +## Constructors + +### constructor + +• **new PDB**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubePDB`](../interfaces/lib_k8s_podDisruptionBudget.KubePDB.md) | + +#### Inherited from + +makeKubeObject('podDisruptionBudget').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:40](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L40) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### selectors + +• `get` **selectors**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:50](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L50) + +___ + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `maxUnavailable?` | `number` | +| `minAvailable?` | `number` | +| `selector` | { `matchExpressions?`: { `key`: `string` ; `operator`: `string` ; `values`: `string`[] } ; `matchLabels`: { `[key: string]`: `string`; } } | +| `selector.matchExpressions?` | { `key`: `string` ; `operator`: `string` ; `values`: `string`[] } | +| `selector.matchExpressions.key` | `string` | +| `selector.matchExpressions.operator` | `string` | +| `selector.matchExpressions.values` | `string`[] | +| `selector.matchLabels` | { `[key: string]`: `string`; } | + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:42](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L42) + +___ + +### status + +• `get` **status**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `conditions` | { `lastTransitionTime`: `string` ; `message`: `string` ; `observedGeneration`: `number` ; `reason`: `string` ; `status`: `string` ; `type`: `string` }[] | +| `currentHealthy` | `number` | +| `desiredHealthy` | `number` | +| `disruptedPods?` | { `[key: string]`: `string`; } | +| `disruptionsAllowed` | `number` | +| `expectedPods` | `number` | +| `observedGeneration` | `number` | + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L46) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('podDisruptionBudget').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('podDisruptionBudget').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('podDisruptionBudget').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_priorityClass.PriorityClass.md b/docs/latest/development/api/classes/lib_k8s_priorityClass.PriorityClass.md new file mode 100644 index 0000000..a0e1cf7 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_priorityClass.PriorityClass.md @@ -0,0 +1,327 @@ +# Class: PriorityClass + +[lib/k8s/priorityClass](../modules/lib_k8s_priorityClass.md).PriorityClass + +## Hierarchy + +- `any` + + ↳ **`PriorityClass`** + +## Constructors + +### constructor + +• **new PriorityClass**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubePriorityClass`](../interfaces/lib_k8s_priorityClass.KubePriorityClass.md) | + +#### Inherited from + +makeKubeObject('priorityClass').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/priorityClass.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L12) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('priorityClass').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### description + +• `get` **description**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/priorityClass.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L30) + +___ + +### globalDefault + +• `get` **globalDefault**(): ``null`` \| `boolean` + +#### Returns + +``null`` \| `boolean` + +#### Defined in + +[lib/k8s/priorityClass.ts:26](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L26) + +___ + +### preemptionPolicy + +• `get` **preemptionPolicy**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/priorityClass.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L34) + +___ + +### value + +• `get` **value**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/priorityClass.ts:22](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L22) + +___ + +### listRoute + +• `Static` `get` **listRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/priorityClass.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L18) + +___ + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/priorityClass.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L14) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('priorityClass').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('priorityClass').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('priorityClass').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('priorityClass').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('priorityClass').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('priorityClass').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('priorityClass').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_replicaSet.ReplicaSet.md b/docs/latest/development/api/classes/lib_k8s_replicaSet.ReplicaSet.md new file mode 100644 index 0000000..6cf795f --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_replicaSet.ReplicaSet.md @@ -0,0 +1,316 @@ +# Class: ReplicaSet + +[lib/k8s/replicaSet](../modules/lib_k8s_replicaSet.md).ReplicaSet + +## Hierarchy + +- `any` + + ↳ **`ReplicaSet`** + +## Constructors + +### constructor + +• **new ReplicaSet**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeReplicaSet`](../interfaces/lib_k8s_replicaSet.KubeReplicaSet.md) | + +#### Inherited from + +makeKubeObject('ReplicaSet').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/replicaSet.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L34) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('ReplicaSet').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `minReadySeconds` | `number` | +| `replicas` | `number` | +| `selector` | [`LabelSelector`](../interfaces/lib_k8s_cluster.LabelSelector.md) | +| `template` | { `metadata?`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](../interfaces/lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata?` | [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](../interfaces/lib_k8s_pod.KubePodSpec.md) | + +#### Defined in + +[lib/k8s/replicaSet.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L36) + +___ + +### status + +• `get` **status**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `availableReplicas` | `number` | +| `conditions` | `Omit`<[`KubeCondition`](../interfaces/lib_k8s_cluster.KubeCondition.md), ``"lastProbeTime"`` \| ``"lastUpdateTime"``\>[] | +| `fullyLabeledReplicas` | `number` | +| `observedGeneration` | `number` | +| `readyReplicas` | `number` | +| `replicas` | `number` | + +#### Defined in + +[lib/k8s/replicaSet.ts:40](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L40) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/replicaSet.ts:44](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L44) + +___ + +### getMatchLabelsList + +▸ **getMatchLabelsList**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/replicaSet.ts:48](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L48) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ReplicaSet').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ReplicaSet').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('ReplicaSet').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('ReplicaSet').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('ReplicaSet').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ReplicaSet').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('ReplicaSet').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_resourceQuota.ResourceQuota.md b/docs/latest/development/api/classes/lib_k8s_resourceQuota.ResourceQuota.md new file mode 100644 index 0000000..00ac5e7 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_resourceQuota.ResourceQuota.md @@ -0,0 +1,312 @@ +# Class: ResourceQuota + +[lib/k8s/resourceQuota](../modules/lib_k8s_resourceQuota.md).ResourceQuota + +## Hierarchy + +- `any` + + ↳ **`ResourceQuota`** + +## Constructors + +### constructor + +• **new ResourceQuota**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeResourceQuota`](../interfaces/lib_k8s_resourceQuota.KubeResourceQuota.md) | + +#### Inherited from + +makeKubeObject('resourceQuota').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/resourceQuota.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L34) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('resourceQuota').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### limits + +• `get` **limits**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/resourceQuota.ts:60](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L60) + +___ + +### requests + +• `get` **requests**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/resourceQuota.ts:44](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L44) + +___ + +### resourceStats + +• `get` **resourceStats**(): { `hard`: `string` ; `name`: `string` ; `used`: `string` }[] + +#### Returns + +{ `hard`: `string` ; `name`: `string` ; `used`: `string` }[] + +#### Defined in + +[lib/k8s/resourceQuota.ts:76](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L76) + +___ + +### spec + +• `get` **spec**(): `spec` + +#### Returns + +`spec` + +#### Defined in + +[lib/k8s/resourceQuota.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L36) + +___ + +### status + +• `get` **status**(): `status` + +#### Returns + +`status` + +#### Defined in + +[lib/k8s/resourceQuota.ts:40](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L40) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('resourceQuota').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('resourceQuota').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('resourceQuota').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('resourceQuota').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('resourceQuota').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('resourceQuota').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('resourceQuota').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_role.Role.md b/docs/latest/development/api/classes/lib_k8s_role.Role.md new file mode 100644 index 0000000..8784e15 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_role.Role.md @@ -0,0 +1,258 @@ +# Class: Role + +[lib/k8s/role](../modules/lib_k8s_role.md).Role + +## Hierarchy + +- `any` + + ↳ **`Role`** + + ↳↳ [`ClusterRole`](lib_k8s_clusterRole.ClusterRole.md) + +## Constructors + +### constructor + +• **new Role**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeRole`](../interfaces/lib_k8s_role.KubeRole.md) | + +#### Inherited from + +makeKubeObject('role').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/role.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/role.ts#L15) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('role').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### rules + +• `get` **rules**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/role.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/role.ts#L17) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('role').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('role').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('role').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('role').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('role').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('role').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('role').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_roleBinding.RoleBinding.md b/docs/latest/development/api/classes/lib_k8s_roleBinding.RoleBinding.md new file mode 100644 index 0000000..eb4b98a --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_roleBinding.RoleBinding.md @@ -0,0 +1,272 @@ +# Class: RoleBinding + +[lib/k8s/roleBinding](../modules/lib_k8s_roleBinding.md).RoleBinding + +## Hierarchy + +- `any` + + ↳ **`RoleBinding`** + + ↳↳ [`ClusterRoleBinding`](lib_k8s_clusterRoleBinding.ClusterRoleBinding.md) + +## Constructors + +### constructor + +• **new RoleBinding**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeRoleBinding`](../interfaces/lib_k8s_roleBinding.KubeRoleBinding.md) | + +#### Inherited from + +makeKubeObject('roleBinding').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/roleBinding.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L19) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('roleBinding').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### roleRef + +• `get` **roleRef**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/roleBinding.ts:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L21) + +___ + +### subjects + +• `get` **subjects**(): { `apiGroup`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` }[] + +#### Returns + +{ `apiGroup`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` }[] + +#### Defined in + +[lib/k8s/roleBinding.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L25) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('roleBinding').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('roleBinding').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('roleBinding').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('roleBinding').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('roleBinding').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('roleBinding').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('roleBinding').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_runtime.RuntimeClass.md b/docs/latest/development/api/classes/lib_k8s_runtime.RuntimeClass.md new file mode 100644 index 0000000..b5b606a --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_runtime.RuntimeClass.md @@ -0,0 +1,285 @@ +# Class: RuntimeClass + +[lib/k8s/runtime](../modules/lib_k8s_runtime.md).RuntimeClass + +## Hierarchy + +- `any` + + ↳ **`RuntimeClass`** + +## Constructors + +### constructor + +• **new RuntimeClass**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeRuntimeClass`](../interfaces/lib_k8s_runtime.KubeRuntimeClass.md) | + +#### Inherited from + +makeKubeObject('RuntimeClass').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/runtime.ts:9](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/runtime.ts#L9) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('RuntimeClass').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/runtime.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/runtime.ts#L11) + +___ + +### listRoute + +• `Static` `get` **listRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/runtime.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/runtime.ts#L19) + +___ + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/runtime.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/runtime.ts#L15) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('RuntimeClass').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('RuntimeClass').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('RuntimeClass').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('RuntimeClass').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('RuntimeClass').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('RuntimeClass').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('RuntimeClass').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_secret.Secret.md b/docs/latest/development/api/classes/lib_k8s_secret.Secret.md new file mode 100644 index 0000000..88eb401 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_secret.Secret.md @@ -0,0 +1,270 @@ +# Class: Secret + +[lib/k8s/secret](../modules/lib_k8s_secret.md).Secret + +## Hierarchy + +- `any` + + ↳ **`Secret`** + +## Constructors + +### constructor + +• **new Secret**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeSecret`](../interfaces/lib_k8s_secret.KubeSecret.md) | + +#### Inherited from + +makeKubeObject('secret').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/secret.ts:10](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/secret.ts#L10) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('secret').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### data + +• `get` **data**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/secret.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/secret.ts#L12) + +___ + +### type + +• `get` **type**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/secret.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/secret.ts#L16) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('secret').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('secret').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('secret').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('secret').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('secret').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('secret').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('secret').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_service.Service.md b/docs/latest/development/api/classes/lib_k8s_service.Service.md new file mode 100644 index 0000000..70d1033 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_service.Service.md @@ -0,0 +1,320 @@ +# Class: Service + +[lib/k8s/service](../modules/lib_k8s_service.md).Service + +## Hierarchy + +- `any` + + ↳ **`Service`** + +## Constructors + +### constructor + +• **new Service**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeService`](../interfaces/lib_k8s_service.KubeService.md) | + +#### Inherited from + +makeKubeObject('service').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/service.ts:43](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L43) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('service').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `Object` + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `clusterIP` | `string` | +| `externalIPs` | `string`[] | +| `ports` | { `name`: `string` ; `nodePort`: `number` ; `port`: `number` ; `protocol`: `string` ; `targetPort`: `string` \| `number` }[] | +| `selector` | { `[key: string]`: `string`; } | +| `type` | `string` | + +#### Defined in + +[lib/k8s/service.ts:45](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L45) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/service.ts:49](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L49) + +## Methods + +### getExternalAddresses + +▸ **getExternalAddresses**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/service.ts:53](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L53) + +___ + +### getPorts + +▸ **getPorts**(): `number`[] + +#### Returns + +`number`[] + +#### Defined in + +[lib/k8s/service.ts:63](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L63) + +___ + +### getSelector + +▸ **getSelector**(): `string`[] + +#### Returns + +`string`[] + +#### Defined in + +[lib/k8s/service.ts:67](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L67) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('service').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('service').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('service').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('service').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('service').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('service').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('service').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_serviceAccount.ServiceAccount.md b/docs/latest/development/api/classes/lib_k8s_serviceAccount.ServiceAccount.md new file mode 100644 index 0000000..56ba61c --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_serviceAccount.ServiceAccount.md @@ -0,0 +1,256 @@ +# Class: ServiceAccount + +[lib/k8s/serviceAccount](../modules/lib_k8s_serviceAccount.md).ServiceAccount + +## Hierarchy + +- `any` + + ↳ **`ServiceAccount`** + +## Constructors + +### constructor + +• **new ServiceAccount**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeServiceAccount`](../interfaces/lib_k8s_serviceAccount.KubeServiceAccount.md) | + +#### Inherited from + +makeKubeObject('serviceAccount').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/serviceAccount.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/serviceAccount.ts#L16) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('serviceAccount').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### secrets + +• `get` **secrets**(): { `apiVersion`: `string` ; `fieldPath`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` ; `uid`: `string` }[] + +#### Returns + +{ `apiVersion`: `string` ; `fieldPath`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` ; `uid`: `string` }[] + +#### Defined in + +[lib/k8s/serviceAccount.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/serviceAccount.ts#L18) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('serviceAccount').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('serviceAccount').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('serviceAccount').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('serviceAccount').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('serviceAccount').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('serviceAccount').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('serviceAccount').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_statefulSet.StatefulSet.md b/docs/latest/development/api/classes/lib_k8s_statefulSet.StatefulSet.md new file mode 100644 index 0000000..76b6f54 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_statefulSet.StatefulSet.md @@ -0,0 +1,284 @@ +# Class: StatefulSet + +[lib/k8s/statefulSet](../modules/lib_k8s_statefulSet.md).StatefulSet + +## Hierarchy + +- `any` + + ↳ **`StatefulSet`** + +## Constructors + +### constructor + +• **new StatefulSet**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeStatefulSet`](../interfaces/lib_k8s_statefulSet.KubeStatefulSet.md) | + +#### Inherited from + +makeKubeObject('StatefulSet').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/statefulSet.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L32) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('StatefulSet').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### spec + +• `get` **spec**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/statefulSet.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L34) + +___ + +### status + +• `get` **status**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/statefulSet.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L38) + +## Methods + +### getContainers + +▸ **getContainers**(): [`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Returns + +[`KubeContainer`](../interfaces/lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/statefulSet.ts:42](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L42) + +___ + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('StatefulSet').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('StatefulSet').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('StatefulSet').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('StatefulSet').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('StatefulSet').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('StatefulSet').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('StatefulSet').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_storageClass.StorageClass.md b/docs/latest/development/api/classes/lib_k8s_storageClass.StorageClass.md new file mode 100644 index 0000000..8dbd6ba --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_storageClass.StorageClass.md @@ -0,0 +1,313 @@ +# Class: StorageClass + +[lib/k8s/storageClass](../modules/lib_k8s_storageClass.md).StorageClass + +## Hierarchy + +- `any` + + ↳ **`StorageClass`** + +## Constructors + +### constructor + +• **new StorageClass**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeStorageClass`](../interfaces/lib_k8s_storageClass.KubeStorageClass.md) | + +#### Inherited from + +makeKubeObject('storageClass').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/storageClass.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L11) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('storageClass').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### provisioner + +• `get` **provisioner**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/storageClass.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L13) + +___ + +### reclaimPolicy + +• `get` **reclaimPolicy**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/storageClass.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L17) + +___ + +### volumeBindingMode + +• `get` **volumeBindingMode**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/storageClass.ts:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L21) + +___ + +### listRoute + +• `Static` `get` **listRoute**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/storageClass.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L25) + +___ + +### pluralName + +• `Static` `get` **pluralName**(): `string` + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/storageClass.ts:29](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L29) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('storageClass').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('storageClass').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('storageClass').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('storageClass').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('storageClass').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('storageClass').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('storageClass').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_validatingWebhookConfiguration.ValidatingWebhookConfiguration.md b/docs/latest/development/api/classes/lib_k8s_validatingWebhookConfiguration.ValidatingWebhookConfiguration.md new file mode 100644 index 0000000..a0b0a62 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_validatingWebhookConfiguration.ValidatingWebhookConfiguration.md @@ -0,0 +1,275 @@ +# Class: ValidatingWebhookConfiguration + +[lib/k8s/validatingWebhookConfiguration](../modules/lib_k8s_validatingWebhookConfiguration.md).ValidatingWebhookConfiguration + +## Hierarchy + +- `any` + + ↳ **`ValidatingWebhookConfiguration`** + +## Constructors + +### constructor + +• **new ValidatingWebhookConfiguration**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeValidatingWebhookConfiguration`](../interfaces/lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md) | + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/validatingWebhookConfiguration.ts:29](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/validatingWebhookConfiguration.ts#L29) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### webhooks + +• `get` **webhooks**(): { `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `rules?`: [`KubeRuleWithOperations`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Returns + +{ `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `rules?`: [`KubeRuleWithOperations`](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Defined in + +[lib/k8s/validatingWebhookConfiguration.ts:35](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/validatingWebhookConfiguration.ts#L35) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject( + 'ValidatingWebhookConfiguration' +).useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/lib_k8s_vpa.VPA.md b/docs/latest/development/api/classes/lib_k8s_vpa.VPA.md new file mode 100644 index 0000000..9eb6f86 --- /dev/null +++ b/docs/latest/development/api/classes/lib_k8s_vpa.VPA.md @@ -0,0 +1,312 @@ +# Class: VPA + +[lib/k8s/vpa](../modules/lib_k8s_vpa.md).VPA + +## Hierarchy + +- `any` + + ↳ **`VPA`** + +## Constructors + +### constructor + +• **new VPA**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | [`KubeVPA`](../interfaces/lib_k8s_vpa.KubeVPA.md) | + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').constructor + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### apiEndpoint + +▪ `Static` **apiEndpoint**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/vpa.ts:80](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L80) + +___ + +### className + +▪ `Static` **className**: `string` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').className + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Accessors + +### referenceObject + +• `get` **referenceObject**(): `any` + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/vpa.ts:112](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L112) + +___ + +### spec + +• `get` **spec**(): `VpaSpec` + +#### Returns + +`VpaSpec` + +#### Defined in + +[lib/k8s/vpa.ts:104](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L104) + +___ + +### status + +• `get` **status**(): `VpaStatus` + +#### Returns + +`VpaStatus` + +#### Defined in + +[lib/k8s/vpa.ts:108](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L108) + +___ + +### targetRecommendations + +• `get` **targetRecommendations**(): `undefined` \| ``null`` \| `RecommendationValue` + +#### Returns + +`undefined` \| ``null`` \| `RecommendationValue` + +#### Defined in + +[lib/k8s/vpa.ts:132](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L132) + +## Methods + +### apiList + +▸ `Static` **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').apiList + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Static` `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').getAuthorization + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ `Static` **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').getErrorMessage + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### isEnabled + +▸ `Static` **isEnabled**(): `Promise`<`boolean`\> + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[lib/k8s/vpa.ts:86](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L86) + +___ + +### useApiGet + +▸ `Static` **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').useApiGet + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ `Static` **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').useApiList + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ `Static` **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').useGet + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ `Static` **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](../interfaces/lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Inherited from + +makeKubeObject('verticalPodAutoscaler').useList + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/classes/plugin_lib.Headlamp.md b/docs/latest/development/api/classes/plugin_lib.Headlamp.md new file mode 100644 index 0000000..bd88287 --- /dev/null +++ b/docs/latest/development/api/classes/plugin_lib.Headlamp.md @@ -0,0 +1,162 @@ +# Class: Headlamp + +[plugin/lib](../modules/plugin_lib.md).Headlamp + +This class is a more convenient way for plugins to call registerPlugin in +order to register themselves. + +## Constructors + +### constructor + +• **new Headlamp**() + +## Methods + +### getProductName + +▸ **getProductName**(): `string` + +Returns the name of the product. + +#### Returns + +`string` + +the name of the product. + +#### Defined in + +[plugin/lib.ts:172](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L172) + +___ + +### getVersion + +▸ **getVersion**(): `Object` + +Returns the version of Headlamp as an object with a VERSION (application version) and +GIT_VERSION (commit) fields. Like: +{ VERSION: 'v0.0.0', GIT_VERSION: '0000000000000} + +#### Returns + +`Object` + +the version of Headlamp. + +| Name | Type | +| :------ | :------ | +| `GIT_VERSION` | `any` | +| `VERSION` | `any` | + +#### Defined in + +[plugin/lib.ts:162](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L162) + +___ + +### isRunningAsApp + +▸ `Static` **isRunningAsApp**(): `boolean` + +Returns whether Headlamp is running as a desktop app. + +#### Returns + +`boolean` + +true if Headlamp is running as a desktop app. + +#### Defined in + +[plugin/lib.ts:151](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L151) + +___ + +### registerPlugin + +▸ `Static` **registerPlugin**(`pluginId`, `pluginObj`): `void` + +Got a new plugin to add? Well, registerPlugin is your friend. + +**`example`** + +```javascript +const myPlugin = { + initialize: (register) => { + // do some stuff with register + // use some libraries in window.pluginLib + return true; + } +} + +Headlamp.registerPlugin("aPluginIdString", myPlugin) +``` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `pluginId` | `string` | a unique id string for your plugin. | +| `pluginObj` | [`Plugin`](plugin_lib.Plugin.md) | the plugin being added. | + +#### Returns + +`void` + +#### Defined in + +[plugin/lib.ts:106](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L106) + +___ + +### setAppMenu + +▸ `Static` **setAppMenu**(`appMenuFunc`): `void` + +Changes the app menu. +If Headlamp is not running as a desktop app, then this method prints an error and doesn't do anything. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appMenuFunc` | (`currentAppMenuSpec`: ``null`` \| [`AppMenu`](../interfaces/plugin_lib.AppMenu.md)[]) => ``null`` \| [`AppMenu`](../interfaces/plugin_lib.AppMenu.md)[] | A function that receives the current app menu configuration and a new one. If the function returns null, the menu is not changed. | + +#### Returns + +`void` + +#### Defined in + +[plugin/lib.ts:135](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L135) + +___ + +### setCluster + +▸ `Static` **setCluster**(`clusterReq`): `Promise`<`any`\> + +Configure (or update) a cluster that can then be used throughout Headlamp. +If the request is successful, further calls to `K8s.useClustersConf()` +will show the newly configured cluster. + +**Important:** This is only available in the desktop version and will result in a +bad request when running in-cluster. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `clusterReq` | [`ClusterRequest`](../interfaces/lib_k8s_apiProxy.ClusterRequest.md) | the cluster to be added or updated. | + +#### Returns + +`Promise`<`any`\> + +a promise which completes to Headlamp's configuration (showing the list of configured clusters). + +#### Defined in + +[plugin/lib.ts:123](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L123) diff --git a/docs/latest/development/api/classes/plugin_lib.Plugin.md b/docs/latest/development/api/classes/plugin_lib.Plugin.md new file mode 100644 index 0000000..6333607 --- /dev/null +++ b/docs/latest/development/api/classes/plugin_lib.Plugin.md @@ -0,0 +1,39 @@ +# Class: Plugin + +[plugin/lib](../modules/plugin_lib.md).Plugin + +Plugins may call Headlamp.registerPlugin(pluginId: string, pluginObj: Plugin) to register themselves. + +They will have their initialize(register) method called at plugin initialization time. + +## Constructors + +### constructor + +• **new Plugin**() + +## Methods + +### initialize + +▸ `Abstract` **initialize**(`register`): `boolean` \| `void` + +initialize is called for each plugin with a Registry which gives the plugin methods for doing things. + +**`see`** Registry + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `register` | [`Registry`](plugin_registry.Registry.md) | + +#### Returns + +`boolean` \| `void` + +The return code is not used, but used to be required. + +#### Defined in + +[plugin/lib.ts:49](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L49) diff --git a/docs/latest/development/api/classes/plugin_registry.Registry.md b/docs/latest/development/api/classes/plugin_registry.Registry.md new file mode 100644 index 0000000..9670cbd --- /dev/null +++ b/docs/latest/development/api/classes/plugin_registry.Registry.md @@ -0,0 +1,184 @@ +# Class: Registry + +[plugin/registry](../modules/plugin_registry.md).Registry + +## Constructors + +### constructor + +• **new Registry**() + +## Methods + +### registerAppBarAction + +▸ **registerAppBarAction**(`actionName`, `actionFunc`): `void` + +**`deprecated`** Registry.registerAppBarAction is deprecated. Please use registerAppBarAction. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `actionName` | `string` | +| `actionFunc` | (...`args`: `any`[]) => ``null`` \| `Element` | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:163](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L163) + +___ + +### registerAppLogo + +▸ **registerAppLogo**(`logo`): `void` + +**`deprecated`** Registry.registerAppLogo is deprecated. Please use registerAppLogo. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `logo` | [`AppLogoType`](../modules/plugin_registry.md#applogotype) | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:212](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L212) + +___ + +### registerClusterChooserComponent + +▸ **registerClusterChooserComponent**(`component`): `void` + +**`deprecated`** Registry.registerClusterChooserComponent is deprecated. Please use registerClusterChooser. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `component` | ``null`` \| `ComponentType`<[`ClusterChooserProps`](../interfaces/plugin_registry.ClusterChooserProps.md)\> | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:220](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L220) + +___ + +### registerDetailsViewHeaderAction + +▸ **registerDetailsViewHeaderAction**(`actionName`, `actionFunc`): `void` + +**`deprecated`** Registry.registerDetailsViewHeaderAction is deprecated. Please use registerDetailsViewHeaderAction. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `actionName` | `string` | +| `actionFunc` | `HeaderActionType` | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:153](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L153) + +___ + +### registerDetailsViewSection + +▸ **registerDetailsViewSection**(`sectionName`, `sectionFunc`): `void` + +**`deprecated`** Registry.registerDetailsViewSection is deprecated. Please use registerDetailsViewSection. + +```tsx + +register.registerDetailsViewSection('biolatency', resource => { + if (resource?.kind === 'Node') { + return { + title: 'Block I/O Latency', + component: () => , + }; + } + return null; +}); + +``` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sectionName` | `string` | +| `sectionFunc` | (`props`: { `resource`: `any` }) => ``null`` \| [`SectionFuncProps`](../interfaces/plugin_registry.SectionFuncProps.md) | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:185](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L185) + +___ + +### registerRoute + +▸ **registerRoute**(`routeSpec`): `void` + +**`deprecated`** Registry.registerRoute is deprecated. Please use registerRoute. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `routeSpec` | [`Route`](../interfaces/lib_router.Route.md) | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:145](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L145) + +___ + +### registerSidebarItem + +▸ **registerSidebarItem**(`parentName`, `itemName`, `itemLabel`, `url`, `opts?`): `void` + +**`deprecated`** Registry.registerSidebarItem is deprecated. Please use registerSidebarItem. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `parentName` | ``null`` \| `string` | +| `itemName` | `string` | +| `itemLabel` | `string` | +| `url` | `string` | +| `opts` | `Pick`<[`SidebarEntryProps`](../interfaces/plugin_registry.SidebarEntryProps.md), ``"sidebar"`` \| ``"icon"`` \| ``"useClusterURL"``\> | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:121](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L121) diff --git a/docs/latest/development/api/enums/plugin_registry.DefaultAppBarAction.md b/docs/latest/development/api/enums/plugin_registry.DefaultAppBarAction.md new file mode 100644 index 0000000..e3e8ac2 --- /dev/null +++ b/docs/latest/development/api/enums/plugin_registry.DefaultAppBarAction.md @@ -0,0 +1,43 @@ +# Enumeration: DefaultAppBarAction + +[plugin/registry](../modules/plugin_registry.md).DefaultAppBarAction + +## Enumeration members + +### CLUSTER + +• **CLUSTER** = `"CLUSTER"` + +#### Defined in + +[redux/actionButtonsSlice.ts:42](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/actionButtonsSlice.ts#L42) + +___ + +### NOTIFICATION + +• **NOTIFICATION** = `"NOTIFICATION"` + +#### Defined in + +[redux/actionButtonsSlice.ts:43](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/actionButtonsSlice.ts#L43) + +___ + +### SETTINGS + +• **SETTINGS** = `"SETTINGS"` + +#### Defined in + +[redux/actionButtonsSlice.ts:44](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/actionButtonsSlice.ts#L44) + +___ + +### USER + +• **USER** = `"USER"` + +#### Defined in + +[redux/actionButtonsSlice.ts:45](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/actionButtonsSlice.ts#L45) diff --git a/docs/latest/development/api/enums/plugin_registry.DefaultDetailsViewSection.md b/docs/latest/development/api/enums/plugin_registry.DefaultDetailsViewSection.md new file mode 100644 index 0000000..a87bb3c --- /dev/null +++ b/docs/latest/development/api/enums/plugin_registry.DefaultDetailsViewSection.md @@ -0,0 +1,73 @@ +# Enumeration: DefaultDetailsViewSection + +[plugin/registry](../modules/plugin_registry.md).DefaultDetailsViewSection + +## Enumeration members + +### BACK\_LINK + +• **BACK\_LINK** = `"BACK_LINK"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L13) + +___ + +### CHILDREN + +• **CHILDREN** = `"CHILDREN"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L18) + +___ + +### ERROR + +• **ERROR** = `"ERROR"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L16) + +___ + +### EVENTS + +• **EVENTS** = `"EVENTS"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L15) + +___ + +### LOADING + +• **LOADING** = `"LOADING"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L17) + +___ + +### MAIN\_HEADER + +• **MAIN\_HEADER** = `"MAIN_HEADER"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L14) + +___ + +### METADATA + +• **METADATA** = `"METADATA"` + +#### Defined in + +[components/DetailsViewSection/detailsViewSectionSlice.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/detailsViewSectionSlice.ts#L12) diff --git a/docs/latest/development/api/enums/plugin_registry.DefaultSidebars.md b/docs/latest/development/api/enums/plugin_registry.DefaultSidebars.md new file mode 100644 index 0000000..ad23dbe --- /dev/null +++ b/docs/latest/development/api/enums/plugin_registry.DefaultSidebars.md @@ -0,0 +1,23 @@ +# Enumeration: DefaultSidebars + +[plugin/registry](../modules/plugin_registry.md).DefaultSidebars + +## Enumeration members + +### HOME + +• **HOME** = `"HOME"` + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L6) + +___ + +### IN\_CLUSTER + +• **IN\_CLUSTER** = `"IN-CLUSTER"` + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L7) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiError.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiError.md new file mode 100644 index 0000000..a40046d --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiError.md @@ -0,0 +1,19 @@ +# Interface: ApiError + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).ApiError + +## Hierarchy + +- `Error` + + ↳ **`ApiError`** + +## Properties + +### status + +• **status**: `number` + +#### Defined in + +[lib/k8s/apiProxy.ts:1568](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1568) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiInfo.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiInfo.md new file mode 100644 index 0000000..0fd27cf --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ApiInfo.md @@ -0,0 +1,41 @@ +# Interface: ApiInfo + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).ApiInfo + +Describes the API for a certain resource. + +## Properties + +### group + +• **group**: `string` + +The API group. + +#### Defined in + +[lib/k8s/apiProxy.ts:639](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L639) + +___ + +### resource + +• **resource**: `string` + +The resource name. + +#### Defined in + +[lib/k8s/apiProxy.ts:643](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L643) + +___ + +### version + +• **version**: `string` + +The API version. + +#### Defined in + +[lib/k8s/apiProxy.ts:641](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L641) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequest.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequest.md new file mode 100644 index 0000000..d3860fb --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequest.md @@ -0,0 +1,63 @@ +# Interface: ClusterRequest + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).ClusterRequest + +## Properties + +### certificateAuthorityData + +• `Optional` **certificateAuthorityData**: `string` + +The certificate authority data + +#### Defined in + +[lib/k8s/apiProxy.ts:77](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L77) + +___ + +### insecureTLSVerify + +• `Optional` **insecureTLSVerify**: `boolean` + +Whether the server's certificate should not be checked for validity + +#### Defined in + +[lib/k8s/apiProxy.ts:75](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L75) + +___ + +### kubeconfig + +• `Optional` **kubeconfig**: `string` + +KubeConfig (base64 encoded) + +#### Defined in + +[lib/k8s/apiProxy.ts:79](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L79) + +___ + +### name + +• `Optional` **name**: `string` + +The name of the cluster (has to be unique, or it will override an existing cluster) + +#### Defined in + +[lib/k8s/apiProxy.ts:71](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L71) + +___ + +### server + +• `Optional` **server**: `string` + +The cluster URL + +#### Defined in + +[lib/k8s/apiProxy.ts:73](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L73) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequestParams.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequestParams.md new file mode 100644 index 0000000..6a7d49c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.ClusterRequestParams.md @@ -0,0 +1,75 @@ +# Interface: ClusterRequestParams + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).ClusterRequestParams + +The options for `clusterRequest`. + +## Hierarchy + +- [`RequestParams`](lib_k8s_apiProxy.RequestParams.md) + + ↳ **`ClusterRequestParams`** + +## Properties + +### autoLogoutOnAuthError + +• `Optional` **autoLogoutOnAuthError**: `boolean` + +Whether to automatically log out the user if there is an authentication error. + +#### Overrides + +[RequestParams](lib_k8s_apiProxy.RequestParams.md).[autoLogoutOnAuthError](lib_k8s_apiProxy.RequestParams.md#autologoutonautherror) + +#### Defined in + +[lib/k8s/apiProxy.ts:325](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L325) + +___ + +### cluster + +• `Optional` **cluster**: ``null`` \| `string` + +Cluster context name. + +#### Overrides + +[RequestParams](lib_k8s_apiProxy.RequestParams.md).[cluster](lib_k8s_apiProxy.RequestParams.md#cluster) + +#### Defined in + +[lib/k8s/apiProxy.ts:324](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L324) + +___ + +### isJSON + +• `Optional` **isJSON**: `boolean` + +Is the request expected to receive JSON data? + +#### Inherited from + +[RequestParams](lib_k8s_apiProxy.RequestParams.md).[isJSON](lib_k8s_apiProxy.RequestParams.md#isjson) + +#### Defined in + +[lib/k8s/apiProxy.ts:62](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L62) + +___ + +### timeout + +• `Optional` **timeout**: `number` + +Number of milliseconds to wait for a response. + +#### Inherited from + +[RequestParams](lib_k8s_apiProxy.RequestParams.md).[timeout](lib_k8s_apiProxy.RequestParams.md#timeout) + +#### Defined in + +[lib/k8s/apiProxy.ts:60](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L60) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.QueryParameters.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.QueryParameters.md new file mode 100644 index 0000000..6e9ac24 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.QueryParameters.md @@ -0,0 +1,210 @@ +# Interface: QueryParameters + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).QueryParameters + +QueryParamaters is a map of query parameters for the Kubernetes API. + +## Hierarchy + +- **`QueryParameters`** + + ↳ [`ApiListOptions`](lib_k8s_cluster.ApiListOptions.md) + +## Properties + +### allowWatchBookmarks + +• `Optional` **allowWatchBookmarks**: `string` + +allowWatchBookmarks means watch events with type "BOOKMARK" will also be sent. + +Can be 'true' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#watch-bookmarks + +#### Defined in + +[lib/k8s/apiProxy.ts:164](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L164) + +___ + +### continue + +• `Optional` **continue**: `string` + +Continue token for paging through large result sets. + +The continue option should be set when retrieving more results from the server. +Since this value is server defined, clients may only use the continue value +from a previous query result with identical query parameters +(except for the value of continue) and the server may reject a continue value +it does not recognize. If the specified continue value is no longer valid +whether due to expiration (generally five to fifteen minutes) or a +configuration change on the server, the server will respond with a +410 ResourceExpired error together with a continue token. If the client +needs a consistent list, it must restart their list without the continue field. +Otherwise, the client may send another list request with the token received +with the 410 error, the server will respond with a list starting from the next +key, but from the latest snapshot, which is inconsistent from the previous +list results - objects that are created, modified, or deleted after the first +list request will be included in the response, as long as their keys are after +the "next key". + +This field is not supported when watch is true. Clients may start a watch from +the last resourceVersion value returned by the server and not miss any modifications. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#retrieving-large-results-sets-in-chunks + +#### Defined in + +[lib/k8s/apiProxy.ts:112](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L112) + +___ + +### dryRun + +• `Optional` **dryRun**: `string` + +dryRun causes apiserver to simulate the request, and report whether the object would be modified. +Can be '' or 'All' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#dry-run + +#### Defined in + +[lib/k8s/apiProxy.ts:119](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L119) + +___ + +### fieldSelector + +• `Optional` **fieldSelector**: `string` + +fieldSeletor restricts the list of returned objects by their fields. Defaults to everything. + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ + +#### Defined in + +[lib/k8s/apiProxy.ts:125](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L125) + +___ + +### labelSelector + +• `Optional` **labelSelector**: `string` + +labelSelector restricts the list of returned objects by their labels. Defaults to everything. + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + +#### Defined in + +[lib/k8s/apiProxy.ts:132](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L132) + +___ + +### limit + +• `Optional` **limit**: `string` \| `number` + +limit is a maximum number of responses to return for a list call. + +If more items exist, the server will set the continue field on the list +metadata to a value that can be used with the same initial query to retrieve +the next set of results. Setting a limit may return fewer than the requested +amount of items (up to zero items) in the event all requested objects are +filtered out and clients should only use the presence of the continue field +to determine whether more results are available. Servers may choose not to +support the limit argument and will return all of the available results. +If limit is specified and the continue field is empty, clients may assume +that no more results are available. + +This field is not supported if watch is true. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#retrieving-large-results-sets-in-chunks + +#### Defined in + +[lib/k8s/apiProxy.ts:149](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L149) + +___ + +### pretty + +• `Optional` **pretty**: `string` + +If 'true', then the output is pretty printed. +Can be '' or 'true' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#output-options + +#### Defined in + +[lib/k8s/apiProxy.ts:184](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L184) + +___ + +### resourceVersion + +• `Optional` **resourceVersion**: `string` + +resourceVersion sets a constraint on what resource versions a request may be served from. +Defaults to unset + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions + +#### Defined in + +[lib/k8s/apiProxy.ts:157](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L157) + +___ + +### resourceVersionMatch + +• `Optional` **resourceVersionMatch**: `string` + +The resource version to match. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-get-and-list + +#### Defined in + +[lib/k8s/apiProxy.ts:178](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L178) + +___ + +### sendInitialEvents + +• `Optional` **sendInitialEvents**: `string` + +sendInitialEvents controls whether the server will send the events +for a watch before sending the current list state. + +Can be 'true'. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists + +#### Defined in + +[lib/k8s/apiProxy.ts:172](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L172) + +___ + +### watch + +• `Optional` **watch**: `string` + +watch instead of a list or get, watch for changes to the requested object(s). + +Can be 1. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes + +#### Defined in + +[lib/k8s/apiProxy.ts:191](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L191) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.RequestParams.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.RequestParams.md new file mode 100644 index 0000000..f6c08af --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.RequestParams.md @@ -0,0 +1,61 @@ +# Interface: RequestParams + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).RequestParams + +Options for the request. + +## Hierarchy + +- `RequestInit` + + ↳ **`RequestParams`** + + ↳↳ [`ClusterRequestParams`](lib_k8s_apiProxy.ClusterRequestParams.md) + +## Properties + +### autoLogoutOnAuthError + +• `Optional` **autoLogoutOnAuthError**: `boolean` + +Whether to automatically log out the user if there is an authentication error. + +#### Defined in + +[lib/k8s/apiProxy.ts:66](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L66) + +___ + +### cluster + +• `Optional` **cluster**: ``null`` \| `string` + +Cluster context name. + +#### Defined in + +[lib/k8s/apiProxy.ts:64](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L64) + +___ + +### isJSON + +• `Optional` **isJSON**: `boolean` + +Is the request expected to receive JSON data? + +#### Defined in + +[lib/k8s/apiProxy.ts:62](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L62) + +___ + +### timeout + +• `Optional` **timeout**: `number` + +Number of milliseconds to wait for a response. + +#### Defined in + +[lib/k8s/apiProxy.ts:60](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L60) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamArgs.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamArgs.md new file mode 100644 index 0000000..ebfd301 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamArgs.md @@ -0,0 +1,129 @@ +# Interface: StreamArgs + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).StreamArgs + +Configure a stream with... StreamArgs. + +## Hierarchy + +- **`StreamArgs`** + + ↳ [`ExecOptions`](lib_k8s_pod.ExecOptions.md) + +## Properties + +### additionalProtocols + +• `Optional` **additionalProtocols**: `string`[] + +Additional WebSocket protocols to use when connecting. + +#### Defined in + +[lib/k8s/apiProxy.ts:1262](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1262) + +___ + +### cluster + +• `Optional` **cluster**: `string` + +#### Defined in + +[lib/k8s/apiProxy.ts:1273](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1273) + +___ + +### isJson + +• `Optional` **isJson**: `boolean` + +Whether the stream is expected to receive JSON data. + +#### Defined in + +[lib/k8s/apiProxy.ts:1260](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1260) + +___ + +### reconnectOnFailure + +• `Optional` **reconnectOnFailure**: `boolean` + +Whether to attempt to reconnect the WebSocket connection if it fails. + +#### Defined in + +[lib/k8s/apiProxy.ts:1266](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1266) + +___ + +### stderr + +• `Optional` **stderr**: `boolean` + +#### Defined in + +[lib/k8s/apiProxy.ts:1272](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1272) + +___ + +### stdin + +• `Optional` **stdin**: `boolean` + +#### Defined in + +[lib/k8s/apiProxy.ts:1270](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1270) + +___ + +### stdout + +• `Optional` **stdout**: `boolean` + +#### Defined in + +[lib/k8s/apiProxy.ts:1271](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1271) + +___ + +### tty + +• `Optional` **tty**: `boolean` + +#### Defined in + +[lib/k8s/apiProxy.ts:1269](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1269) + +## Methods + +### connectCb + +▸ `Optional` **connectCb**(): `void` + +A callback function to execute when the WebSocket connection is established. + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/apiProxy.ts:1264](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1264) + +___ + +### failCb + +▸ `Optional` **failCb**(): `void` + +A callback function to execute when the WebSocket connection fails. + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/apiProxy.ts:1268](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1268) diff --git a/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamResultsParams.md b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamResultsParams.md new file mode 100644 index 0000000..7c23abf --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_apiProxy.StreamResultsParams.md @@ -0,0 +1,33 @@ +# Interface: StreamResultsParams + +[lib/k8s/apiProxy](../modules/lib_k8s_apiProxy.md).StreamResultsParams + +## Properties + +### cb + +• **cb**: [`StreamResultsCb`](../modules/lib_k8s_apiProxy.md#streamresultscb) + +#### Defined in + +[lib/k8s/apiProxy.ts:1113](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1113) + +___ + +### cluster + +• `Optional` **cluster**: `string` + +#### Defined in + +[lib/k8s/apiProxy.ts:1115](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1115) + +___ + +### errCb + +• **errCb**: [`StreamErrCb`](../modules/lib_k8s_apiProxy.md#streamerrcb) + +#### Defined in + +[lib/k8s/apiProxy.ts:1114](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1114) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListOptions.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListOptions.md new file mode 100644 index 0000000..c3d44a8 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListOptions.md @@ -0,0 +1,276 @@ +# Interface: ApiListOptions + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).ApiListOptions + +## Hierarchy + +- [`QueryParameters`](lib_k8s_apiProxy.QueryParameters.md) + + ↳ **`ApiListOptions`** + +## Properties + +### allowWatchBookmarks + +• `Optional` **allowWatchBookmarks**: `string` + +allowWatchBookmarks means watch events with type "BOOKMARK" will also be sent. + +Can be 'true' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#watch-bookmarks + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[allowWatchBookmarks](lib_k8s_apiProxy.QueryParameters.md#allowwatchbookmarks) + +#### Defined in + +[lib/k8s/apiProxy.ts:164](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L164) + +___ + +### cluster + +• `Optional` **cluster**: `string` + +The cluster to list objects from. By default uses the current cluster being viewed. + +#### Defined in + +[lib/k8s/cluster.ts:225](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L225) + +___ + +### continue + +• `Optional` **continue**: `string` + +Continue token for paging through large result sets. + +The continue option should be set when retrieving more results from the server. +Since this value is server defined, clients may only use the continue value +from a previous query result with identical query parameters +(except for the value of continue) and the server may reject a continue value +it does not recognize. If the specified continue value is no longer valid +whether due to expiration (generally five to fifteen minutes) or a +configuration change on the server, the server will respond with a +410 ResourceExpired error together with a continue token. If the client +needs a consistent list, it must restart their list without the continue field. +Otherwise, the client may send another list request with the token received +with the 410 error, the server will respond with a list starting from the next +key, but from the latest snapshot, which is inconsistent from the previous +list results - objects that are created, modified, or deleted after the first +list request will be included in the response, as long as their keys are after +the "next key". + +This field is not supported when watch is true. Clients may start a watch from +the last resourceVersion value returned by the server and not miss any modifications. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#retrieving-large-results-sets-in-chunks + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[continue](lib_k8s_apiProxy.QueryParameters.md#continue) + +#### Defined in + +[lib/k8s/apiProxy.ts:112](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L112) + +___ + +### dryRun + +• `Optional` **dryRun**: `string` + +dryRun causes apiserver to simulate the request, and report whether the object would be modified. +Can be '' or 'All' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#dry-run + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[dryRun](lib_k8s_apiProxy.QueryParameters.md#dryrun) + +#### Defined in + +[lib/k8s/apiProxy.ts:119](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L119) + +___ + +### fieldSelector + +• `Optional` **fieldSelector**: `string` + +fieldSeletor restricts the list of returned objects by their fields. Defaults to everything. + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[fieldSelector](lib_k8s_apiProxy.QueryParameters.md#fieldselector) + +#### Defined in + +[lib/k8s/apiProxy.ts:125](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L125) + +___ + +### labelSelector + +• `Optional` **labelSelector**: `string` + +labelSelector restricts the list of returned objects by their labels. Defaults to everything. + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[labelSelector](lib_k8s_apiProxy.QueryParameters.md#labelselector) + +#### Defined in + +[lib/k8s/apiProxy.ts:132](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L132) + +___ + +### limit + +• `Optional` **limit**: `string` \| `number` + +limit is a maximum number of responses to return for a list call. + +If more items exist, the server will set the continue field on the list +metadata to a value that can be used with the same initial query to retrieve +the next set of results. Setting a limit may return fewer than the requested +amount of items (up to zero items) in the event all requested objects are +filtered out and clients should only use the presence of the continue field +to determine whether more results are available. Servers may choose not to +support the limit argument and will return all of the available results. +If limit is specified and the continue field is empty, clients may assume +that no more results are available. + +This field is not supported if watch is true. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#retrieving-large-results-sets-in-chunks + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[limit](lib_k8s_apiProxy.QueryParameters.md#limit) + +#### Defined in + +[lib/k8s/apiProxy.ts:149](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L149) + +___ + +### namespace + +• `Optional` **namespace**: `string` \| `string`[] + +The namespace to list objects from. + +#### Defined in + +[lib/k8s/cluster.ts:223](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L223) + +___ + +### pretty + +• `Optional` **pretty**: `string` + +If 'true', then the output is pretty printed. +Can be '' or 'true' + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#output-options + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[pretty](lib_k8s_apiProxy.QueryParameters.md#pretty) + +#### Defined in + +[lib/k8s/apiProxy.ts:184](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L184) + +___ + +### resourceVersion + +• `Optional` **resourceVersion**: `string` + +resourceVersion sets a constraint on what resource versions a request may be served from. +Defaults to unset + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[resourceVersion](lib_k8s_apiProxy.QueryParameters.md#resourceversion) + +#### Defined in + +[lib/k8s/apiProxy.ts:157](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L157) + +___ + +### resourceVersionMatch + +• `Optional` **resourceVersionMatch**: `string` + +The resource version to match. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-get-and-list + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[resourceVersionMatch](lib_k8s_apiProxy.QueryParameters.md#resourceversionmatch) + +#### Defined in + +[lib/k8s/apiProxy.ts:178](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L178) + +___ + +### sendInitialEvents + +• `Optional` **sendInitialEvents**: `string` + +sendInitialEvents controls whether the server will send the events +for a watch before sending the current list state. + +Can be 'true'. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[sendInitialEvents](lib_k8s_apiProxy.QueryParameters.md#sendinitialevents) + +#### Defined in + +[lib/k8s/apiProxy.ts:172](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L172) + +___ + +### watch + +• `Optional` **watch**: `string` + +watch instead of a list or get, watch for changes to the requested object(s). + +Can be 1. + +**`see`** https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes + +#### Inherited from + +[QueryParameters](lib_k8s_apiProxy.QueryParameters.md).[watch](lib_k8s_apiProxy.QueryParameters.md#watch) + +#### Defined in + +[lib/k8s/apiProxy.ts:191](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L191) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md new file mode 100644 index 0000000..66fa025 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md @@ -0,0 +1,39 @@ +# Interface: ApiListSingleNamespaceOptions + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).ApiListSingleNamespaceOptions + +## Properties + +### cluster + +• `Optional` **cluster**: `string` + +The cluster to get the object from. By default uses the current cluster being viewed. + +#### Defined in + +[lib/k8s/cluster.ts:234](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L234) + +___ + +### namespace + +• `Optional` **namespace**: `string` + +The namespace to get the object from. + +#### Defined in + +[lib/k8s/cluster.ts:230](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L230) + +___ + +### queryParams + +• `Optional` **queryParams**: [`QueryParameters`](lib_k8s_apiProxy.QueryParameters.md) + +The parameters to be passed to the API endpoint. + +#### Defined in + +[lib/k8s/cluster.ts:232](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L232) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md new file mode 100644 index 0000000..f21201c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md @@ -0,0 +1,73 @@ +# Interface: AuthRequestResourceAttrs + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).AuthRequestResourceAttrs + +## Properties + +### group + +• `Optional` **group**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:329](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L329) + +___ + +### name + +• `Optional` **name**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:324](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L324) + +___ + +### namespace + +• `Optional` **namespace**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:327](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L327) + +___ + +### resource + +• `Optional` **resource**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:325](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L325) + +___ + +### subresource + +• `Optional` **subresource**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:326](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L326) + +___ + +### verb + +• `Optional` **verb**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:330](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L330) + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:328](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L328) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.Cluster.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.Cluster.md new file mode 100644 index 0000000..aef58e4 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.Cluster.md @@ -0,0 +1,39 @@ +# Interface: Cluster + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).Cluster + +## Indexable + +▪ [propName: `string`]: `any` + +## Properties + +### auth\_type + +• **auth\_type**: `string` + +Either 'oidc' or ''. '' means unknown. + +#### Defined in + +[lib/k8s/cluster.ts:35](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L35) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L30) + +___ + +### useToken + +• `Optional` **useToken**: `boolean` + +#### Defined in + +[lib/k8s/cluster.ts:31](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L31) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.ContainerState.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.ContainerState.md new file mode 100644 index 0000000..36ec2e1 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.ContainerState.md @@ -0,0 +1,58 @@ +# Interface: ContainerState + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).ContainerState + +## Properties + +### running + +• **running**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `startedAt` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1227](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1227) + +___ + +### terminated + +• **terminated**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `containerID` | `string` | +| `exitCode` | `number` | +| `finishedAt` | `string` | +| `message?` | `string` | +| `reason` | `string` | +| `signal?` | `number` | +| `startedAt` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1230](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1230) + +___ + +### waiting + +• **waiting**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `message?` | `string` | +| `reason` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1239](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1239) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeCondition.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeCondition.md new file mode 100644 index 0000000..56f93f0 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeCondition.md @@ -0,0 +1,79 @@ +# Interface: KubeCondition + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeCondition + +## Properties + +### lastProbeTime + +• **lastProbeTime**: [`Time`](../modules/lib_k8s_cluster.md#time) + +Last time we probed the condition. + +#### Defined in + +[lib/k8s/cluster.ts:864](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L864) + +___ + +### lastTransitionTime + +• `Optional` **lastTransitionTime**: [`Time`](../modules/lib_k8s_cluster.md#time) + +#### Defined in + +[lib/k8s/cluster.ts:865](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L865) + +___ + +### lastUpdateTime + +• `Optional` **lastUpdateTime**: [`Time`](../modules/lib_k8s_cluster.md#time) + +#### Defined in + +[lib/k8s/cluster.ts:866](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L866) + +___ + +### message + +• `Optional` **message**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:867](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L867) + +___ + +### reason + +• `Optional` **reason**: `string` + +Unique, one-word, CamelCase reason for the condition's last transition. + +#### Defined in + +[lib/k8s/cluster.ts:869](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L869) + +___ + +### status + +• **status**: `string` + +Status of the condition, one of True, False, Unknown. + +#### Defined in + +[lib/k8s/cluster.ts:871](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L871) + +___ + +### type + +• **type**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:872](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L872) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainer.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainer.md new file mode 100644 index 0000000..a1d053b --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainer.md @@ -0,0 +1,329 @@ +# Interface: KubeContainer + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeContainer + +**`link`** https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#container-v1-core + +## Properties + +### args + +• `Optional` **args**: `string`[] + +Arguments to the entrypoint. The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. +If a variable cannot be resolved, the reference in the input string will be unchanged. +Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) +syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". +Escaped references will never be expanded, regardless of whether the variable exists or not. +Cannot be updated. + +**`see`** [more information](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +#### Defined in + +[lib/k8s/cluster.ts:891](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L891) + +___ + +### command + +• `Optional` **command**: `string`[] + +Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if +this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. +If a variable cannot be resolved, the reference in the input string will be unchanged. +Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) +syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". +Escaped references will never be expanded, regardless of whether the variable exists or not. +Cannot be updated. + +**`see`** [more information](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +#### Defined in + +[lib/k8s/cluster.ts:903](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L903) + +___ + +### env + +• `Optional` **env**: { `name`: `string` ; `value?`: `string` ; `valueFrom?`: { `configMapKeyRef?`: { `key`: `string` ; `name`: `string` ; `optional?`: `boolean` } ; `fieldRef?`: { `apiVersion`: `string` ; `fieldPath`: `string` } ; `resourceFieldRef?`: { `containerName?`: `string` ; `divisor?`: `string` ; `resource`: `string` } ; `secretKeyRef?`: { `key`: `string` ; `name`: `string` ; `optional?`: `boolean` } } }[] + +List of environment variables to set in the container. Cannot be updated. + +#### Defined in + +[lib/k8s/cluster.ts:906](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L906) + +___ + +### envFrom + +• `Optional` **envFrom**: { `configMapRef?`: { `name`: `string` ; `optional?`: `boolean` } ; `prefix?`: `string` ; `secretRef?`: { `name`: `string` ; `optional?`: `boolean` } }[] + +#### Defined in + +[lib/k8s/cluster.ts:968](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L968) + +___ + +### image + +• **image**: `string` + +Container image name. This field is optional to allow higher level config management to +default or override container images in workload controllers like Deployments and StatefulSets. + +**`see`** [more info](https://kubernetes.io/docs/concepts/containers/images) + +#### Defined in + +[lib/k8s/cluster.ts:992](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L992) + +___ + +### imagePullPolicy + +• **imagePullPolicy**: `string` + +Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is +specified, or IfNotPresent otherwise. Cannot be updated. + +**`see`** [more info](https://kubernetes.io/docs/concepts/containers/images#updating-images) + +#### Defined in + +[lib/k8s/cluster.ts:1000](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1000) + +___ + +### livenessProbe + +• `Optional` **livenessProbe**: [`KubeContainerProbe`](lib_k8s_cluster.KubeContainerProbe.md) + +Periodic probe of container liveness. Container will be restarted if the probe fails. +Cannot be updated. + +**`see`** [more info](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) + +#### Defined in + +[lib/k8s/cluster.ts:1010](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1010) + +___ + +### name + +• **name**: `string` + +Name of the container specified as a DNS_LABEL. +Each container in a pod must have a unique name (DNS_LABEL). + +Cannot be updated. + +#### Defined in + +[lib/k8s/cluster.ts:1018](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1018) + +___ + +### ports + +• `Optional` **ports**: { `containerPort`: `number` ; `hostIP?`: `string` ; `hostPort?`: `number` ; `name?`: `string` ; `protocol?`: `string` }[] + +List of ports to expose from the container. Not specifying a port here DOES NOT prevent that +port from being exposed. Any port which is listening on the default "0.0.0.0" address inside +a container will be accessible from the network. Modifying this array with strategic merge +patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + +Cannot be updated. + +https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#containerport-v1-core + +#### Defined in + +[lib/k8s/cluster.ts:1030](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1030) + +___ + +### readinessProbe + +• `Optional` **readinessProbe**: [`KubeContainerProbe`](lib_k8s_cluster.KubeContainerProbe.md) + +Periodic probe of container service readiness. Container will be removed from service endpoints +if the probe fails. + +Cannot be updated. + +**`see`** [more info](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) + +#### Defined in + +[lib/k8s/cluster.ts:1053](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1053) + +___ + +### resizePolicy + +• `Optional` **resizePolicy**: { `resourceName`: `string` ; `restartPolicy?`: `string` }[] + +Resources resize policy for the container. + +#### Defined in + +[lib/k8s/cluster.ts:1055](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1055) + +___ + +### resources + +• `Optional` **resources**: `Object` + +Compute Resources required by this container. Cannot be updated. + +**`see`** [more info](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) + +https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#resourcerequirements-v1-core + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `claims?` | { `name`: `string` } | - | +| `claims.name` | `string` | Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. | +| `limits?` | { `cpu?`: `string` ; `memory?`: `string` } | Limits describes the maximum amount of compute resources allowed. **`see`** [more info](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) Can also have hugpages like: "hugepages-2Mi": "100Mi" // Requesting 100 Mebibytes of 2 MiB HugePages | +| `limits.cpu?` | `string` | example "100m", 100 milliCPU (0.1 CPU core) | +| `limits.memory?` | `string` | example , "256Mi" 256 Mebibytes | +| `requests?` | { `cpu?`: `string` ; `memory?`: `string` } | - | +| `requests.cpu?` | `string` | example "500m", 500 milliCPU (0.5 CPU core) | +| `requests.memory?` | `string` | example , "1Gi" 1 Gibibyte | + +#### Defined in + +[lib/k8s/cluster.ts:1074](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1074) + +___ + +### stdin + +• `Optional` **stdin**: `boolean` + +Whether this container should allocate a buffer for stdin in the container runtime. +If this is not set, reads from stdin in the container will always result in EOF. + +Default is false. + +#### Defined in + +[lib/k8s/cluster.ts:1141](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1141) + +___ + +### stdinOnce + +• `Optional` **stdinOnce**: `boolean` + +Whether the container runtime should close the stdin channel after it has been opened +by a single attach. When stdin is true the stdin stream will remain open across +multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, +is empty until the first client attaches to stdin, and then remains open and accepts data +until the client disconnects, at which time stdin is closed and remains closed until the +container is restarted. If this flag is false, a container processes that reads from stdin +will never receive an EOF. + +Default is false + +#### Defined in + +[lib/k8s/cluster.ts:1153](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1153) + +___ + +### terminationMessagePath + +• `Optional` **terminationMessagePath**: `string` + +Path at which the file to which the container's termination message will be written is mounted +into the container's filesystem. Message written is intended to be brief final status, such as +an assertion failure message. Will be truncated by the node if greater than 4096 bytes. +The total message length across all containers will be limited to 12kb. +Defaults to /dev/termination-log. + +Cannot be updated. + +#### Defined in + +[lib/k8s/cluster.ts:1116](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1116) + +___ + +### terminationMessagePolicy + +• `Optional` **terminationMessagePolicy**: `string` + +Indicate how the termination message should be populated. File will use the contents of +terminationMessagePath to populate the container status message on both success and failure. +FallbackToLogsOnError will use the last chunk of container log output if the termination message +file is empty and the container exited with an error. The log output is limited to 2048 bytes or +80 lines, whichever is smaller. Defaults to File. + +Cannot be updated. + +#### Defined in + +[lib/k8s/cluster.ts:1127](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1127) + +___ + +### tty + +• `Optional` **tty**: `boolean` + +Whether this container should allocate a TTY for itself, also requires +'stdin' to be true. + +Default is false. + +#### Defined in + +[lib/k8s/cluster.ts:1160](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1160) + +___ + +### volumeDevices + +• `Optional` **volumeDevices**: { `devicePath`: `string` ; `name`: `string` }[] + +volumeDevices is the list of block devices to be used by the container. + +patch strategy: merge +patch merge key: devicePath + +#### Defined in + +[lib/k8s/cluster.ts:1167](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1167) + +___ + +### volumeMounts + +• `Optional` **volumeMounts**: { `mountPath`: `string` ; `name`: `string` ; `readOnly`: `boolean` }[] + +#### Defined in + +[lib/k8s/cluster.ts:1129](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1129) + +___ + +### workingDir + +• `Optional` **workingDir**: `string` + +Container's working directory. If not specified, the container runtime's default +will be used, which might be configured in the container image. +Cannot be updated. + +#### Defined in + +[lib/k8s/cluster.ts:1178](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1178) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerProbe.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerProbe.md new file mode 100644 index 0000000..17d78c5 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerProbe.md @@ -0,0 +1,104 @@ +# Interface: KubeContainerProbe + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeContainerProbe + +## Properties + +### exec + +• `Optional` **exec**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `command` | `string`[] | + +#### Defined in + +[lib/k8s/cluster.ts:1188](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1188) + +___ + +### failureThreshold + +• `Optional` **failureThreshold**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1198](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1198) + +___ + +### httpGet + +• `Optional` **httpGet**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `host?` | `string` | +| `path?` | `string` | +| `port` | `number` | +| `scheme` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1182](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1182) + +___ + +### initialDelaySeconds + +• `Optional` **initialDelaySeconds**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1194](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1194) + +___ + +### periodSeconds + +• `Optional` **periodSeconds**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1196](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1196) + +___ + +### successThreshold + +• `Optional` **successThreshold**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1197](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1197) + +___ + +### tcpSocket + +• `Optional` **tcpSocket**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `port` | `number` | + +#### Defined in + +[lib/k8s/cluster.ts:1191](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1191) + +___ + +### timeoutSeconds + +• `Optional` **timeoutSeconds**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1195](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1195) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerStatus.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerStatus.md new file mode 100644 index 0000000..87103f8 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeContainerStatus.md @@ -0,0 +1,93 @@ +# Interface: KubeContainerStatus + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeContainerStatus + +## Properties + +### containerID + +• `Optional` **containerID**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:1246](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1246) + +___ + +### image + +• **image**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:1247](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1247) + +___ + +### imageID + +• **imageID**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:1248](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1248) + +___ + +### lastState + +• **lastState**: `Partial`<[`ContainerState`](lib_k8s_cluster.ContainerState.md)\> + +#### Defined in + +[lib/k8s/cluster.ts:1252](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1252) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:1249](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1249) + +___ + +### ready + +• **ready**: `boolean` + +#### Defined in + +[lib/k8s/cluster.ts:1250](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1250) + +___ + +### restartCount + +• **restartCount**: `number` + +#### Defined in + +[lib/k8s/cluster.ts:1251](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1251) + +___ + +### started + +• `Optional` **started**: `boolean` + +#### Defined in + +[lib/k8s/cluster.ts:1254](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1254) + +___ + +### state + +• **state**: `Partial`<[`ContainerState`](lib_k8s_cluster.ContainerState.md)\> + +#### Defined in + +[lib/k8s/cluster.ts:1253](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1253) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFields.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFields.md new file mode 100644 index 0000000..33cd9ed --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFields.md @@ -0,0 +1,136 @@ +# Interface: KubeManagedFields + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeManagedFields + +**`deprecated`** For backwards compatibility, please use KubeManagedFieldsEntry + +## Hierarchy + +- [`KubeManagedFieldsEntry`](lib_k8s_cluster.KubeManagedFieldsEntry.md) + + ↳ **`KubeManagedFields`** + +## Properties + +### apiVersion + +• **apiVersion**: `string` + +APIVersion defines the version of this resource that this field set applies to. +The format is "group/version" just like the top-level APIVersion field. +It is necessary to track the version of a field set because it cannot be +automatically converted. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[apiVersion](lib_k8s_cluster.KubeManagedFieldsEntry.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:248](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L248) + +___ + +### fieldsType + +• **fieldsType**: `string` + +FieldsType is the discriminator for the different fields format and version. +There is currently only one possible value: "FieldsV1" + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[fieldsType](lib_k8s_cluster.KubeManagedFieldsEntry.md#fieldstype) + +#### Defined in + +[lib/k8s/cluster.ts:253](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L253) + +___ + +### fieldsV1 + +• **fieldsV1**: `object` + +FieldsV1 holds the first JSON version format as described in the "FieldsV1" type. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[fieldsV1](lib_k8s_cluster.KubeManagedFieldsEntry.md#fieldsv1) + +#### Defined in + +[lib/k8s/cluster.ts:257](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L257) + +___ + +### manager + +• **manager**: `string` + +Manager is an identifier of the workflow managing these fields. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[manager](lib_k8s_cluster.KubeManagedFieldsEntry.md#manager) + +#### Defined in + +[lib/k8s/cluster.ts:261](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L261) + +___ + +### operation + +• **operation**: `string` + +Operation is the type of operation which lead to this ManagedFieldsEntry being +created. The only valid values for this field are 'Apply' and 'Update'. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[operation](lib_k8s_cluster.KubeManagedFieldsEntry.md#operation) + +#### Defined in + +[lib/k8s/cluster.ts:266](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L266) + +___ + +### subresource + +• **subresource**: `string` + +Subresource is the name of the subresource used to update that object, or empty +string if the object was updated through the main resource. The value of this +field is used to distinguish between managers, even if they share the same name. +For example, a status update will be distinct from a regular update using the +same manager name. Note that the APIVersion field is not related to the +Subresource field and it always corresponds to the version of the main resource. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[subresource](lib_k8s_cluster.KubeManagedFieldsEntry.md#subresource) + +#### Defined in + +[lib/k8s/cluster.ts:275](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L275) + +___ + +### timestamp + +• **timestamp**: `string` + +Time is the timestamp of when the ManagedFields entry was added.The timestamp +will also be updated if a field is added, the manager changes any of the owned +fields value or removes a field. The timestamp does not update when a field is +removed from the entry because another manager took it over. + +#### Inherited from + +[KubeManagedFieldsEntry](lib_k8s_cluster.KubeManagedFieldsEntry.md).[timestamp](lib_k8s_cluster.KubeManagedFieldsEntry.md#timestamp) + +#### Defined in + +[lib/k8s/cluster.ts:282](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L282) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFieldsEntry.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFieldsEntry.md new file mode 100644 index 0000000..6d4a1d5 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeManagedFieldsEntry.md @@ -0,0 +1,109 @@ +# Interface: KubeManagedFieldsEntry + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeManagedFieldsEntry + +ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the +resource that the fieldset applies to. + +## Hierarchy + +- **`KubeManagedFieldsEntry`** + + ↳ [`KubeManagedFields`](lib_k8s_cluster.KubeManagedFields.md) + +## Properties + +### apiVersion + +• **apiVersion**: `string` + +APIVersion defines the version of this resource that this field set applies to. +The format is "group/version" just like the top-level APIVersion field. +It is necessary to track the version of a field set because it cannot be +automatically converted. + +#### Defined in + +[lib/k8s/cluster.ts:248](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L248) + +___ + +### fieldsType + +• **fieldsType**: `string` + +FieldsType is the discriminator for the different fields format and version. +There is currently only one possible value: "FieldsV1" + +#### Defined in + +[lib/k8s/cluster.ts:253](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L253) + +___ + +### fieldsV1 + +• **fieldsV1**: `object` + +FieldsV1 holds the first JSON version format as described in the "FieldsV1" type. + +#### Defined in + +[lib/k8s/cluster.ts:257](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L257) + +___ + +### manager + +• **manager**: `string` + +Manager is an identifier of the workflow managing these fields. + +#### Defined in + +[lib/k8s/cluster.ts:261](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L261) + +___ + +### operation + +• **operation**: `string` + +Operation is the type of operation which lead to this ManagedFieldsEntry being +created. The only valid values for this field are 'Apply' and 'Update'. + +#### Defined in + +[lib/k8s/cluster.ts:266](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L266) + +___ + +### subresource + +• **subresource**: `string` + +Subresource is the name of the subresource used to update that object, or empty +string if the object was updated through the main resource. The value of this +field is used to distinguish between managers, even if they share the same name. +For example, a status update will be distinct from a regular update using the +same manager name. Note that the APIVersion field is not related to the +Subresource field and it always corresponds to the version of the main resource. + +#### Defined in + +[lib/k8s/cluster.ts:275](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L275) + +___ + +### timestamp + +• **timestamp**: `string` + +Time is the timestamp of when the ManagedFields entry was added.The timestamp +will also be updated if a field is added, the manager changes any of the owned +fields value or removes a field. The timestamp does not update when a field is +removed from the entry because another manager took it over. + +#### Defined in + +[lib/k8s/cluster.ts:282](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L282) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetadata.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetadata.md new file mode 100644 index 0000000..737352a --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetadata.md @@ -0,0 +1,252 @@ +# Interface: KubeMetadata + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeMetadata + +KubeMetadata contains the metadata that is common to all Kubernetes objects. + +**`see`** [Metadata](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata) for more details. + +## Properties + +### annotations + +• `Optional` **annotations**: [`StringDict`](lib_k8s_cluster.StringDict.md) + +A map of string keys and values that can be used by external tooling to store and +retrieve arbitrary metadata about this object + +**`see`** [annotations docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) for more details. + +#### Defined in + +[lib/k8s/cluster.ts:75](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L75) + +___ + +### creationTimestamp + +• **creationTimestamp**: `string` + +An RFC 3339 date of the date and time an object was created + +#### Defined in + +[lib/k8s/cluster.ts:79](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L79) + +___ + +### deletionGracePeriodSeconds + +• `Optional` **deletionGracePeriodSeconds**: `number` + +Number of seconds allowed for this object to gracefully terminate before it +will be removed from the system. Only set when deletionTimestamp is also set. +May only be shortened. +Read-only. + +#### Defined in + +[lib/k8s/cluster.ts:86](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L86) + +___ + +### deletionTimestamp + +• `Optional` **deletionTimestamp**: `string` + +An RFC 3339 date of the date and time after which this resource will be deleted. +This field is set by the server when a graceful deletion is requested by the +user, and is not directly settable by a client. The resource will be deleted +(no longer visible from resource lists, and not reachable by name) after the +time in this field except when the object has a finalizer set. In case the +finalizer is set the deletion of the object is postponed at least until the +finalizer is removed. Once the deletionTimestamp is set, this value may not +be unset or be set further into the future, although it may be shortened or +the resource may be deleted prior to this time. + +#### Defined in + +[lib/k8s/cluster.ts:98](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L98) + +___ + +### finalizers + +• `Optional` **finalizers**: `string`[] + +Must be empty before the object is deleted from the registry. Each entry is +an identifier for the responsible component that will remove the entry from +the list. If the deletionTimestamp of the object is non-nil, entries in this +list can only be removed. Finalizers may be processed and removed in any order. +Order is NOT enforced because it introduces significant risk of stuck finalizers. +finalizers is a shared field, any actor with permission can reorder it. +If the finalizer list is processed in order, then this can lead to a situation +in which the component responsible for the first finalizer in the list is +waiting for a signal (field value, external system, or other) produced by a +component responsible for a finalizer later in the list, resulting in a deadlock. +Without enforced ordering finalizers are free to order amongst themselves and +are not vulnerable to ordering changes in the list. + +patch strategy: merge + +#### Defined in + +[lib/k8s/cluster.ts:115](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L115) + +___ + +### generateName + +• `Optional` **generateName**: `string` + +GenerateName is an optional prefix, used by the server, to generate a unique +name ONLY IF the Name field has not been provided. If this field is used, +the name returned to the client will be different than the name passed. +This value will also be combined with a unique suffix. The provided value +has the same validation rules as the Name field, and may be truncated by +the length of the suffix required to make the value unique on the server. +If this field is specified and the generated name exists, the server will +return a 409. Applied only if Name is not specified. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency) + +#### Defined in + +[lib/k8s/cluster.ts:128](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L128) + +___ + +### generation + +• `Optional` **generation**: `number` + +A sequence number representing a specific generation of the desired state. +Populated by the system. +Read-only. + +#### Defined in + +[lib/k8s/cluster.ts:134](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L134) + +___ + +### labels + +• `Optional` **labels**: [`StringDict`](lib_k8s_cluster.StringDict.md) + +A map of string keys and values that can be used to organize and categorize objects + +**`see`** https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + +#### Defined in + +[lib/k8s/cluster.ts:140](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L140) + +___ + +### managedFields + +• `Optional` **managedFields**: [`KubeManagedFieldsEntry`](lib_k8s_cluster.KubeManagedFieldsEntry.md)[] + +Maps workflow-id and version to the set of fields that are managed by that workflow. +This is mostly for internal housekeeping, and users typically shouldn't need to set +or understand this field. A workflow can be the user's name, a controller's name, or +the name of a specific apply path like "ci-cd". The set of fields is always in the +version that the workflow used when modifying the object. + +#### Defined in + +[lib/k8s/cluster.ts:148](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L148) + +___ + +### name + +• **name**: `string` + +Uniquely identifies this object within the current namespace (see the identifiers docs). +This value is used in the path when retrieving an individual object. + +**`see`** [Names docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/) for more details. + +#### Defined in + +[lib/k8s/cluster.ts:155](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L155) + +___ + +### namespace + +• `Optional` **namespace**: `string` + +Namespace defines the space within which each name must be unique. An empty namespace is +equivalent to the "default" namespace, but "default" is the canonical representation. +Not all objects are required to be scoped to a namespace - the value of this field for +those objects will be empty. Must be a DNS_LABEL. Cannot be updated. + +**`see`** [Namespaces docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) for more details. + +#### Defined in + +[lib/k8s/cluster.ts:164](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L164) + +___ + +### ownerReferences + +• `Optional` **ownerReferences**: [`KubeOwnerReference`](lib_k8s_cluster.KubeOwnerReference.md)[] + +List of objects depended by this object. If ALL objects in the list have been deleted, +this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field +set to true. There cannot be more than one managing controller. + +#### Defined in + +[lib/k8s/cluster.ts:171](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L171) + +___ + +### resourceVersion + +• `Optional` **resourceVersion**: `string` + +Identifies the internal version of this object that can be used by clients to +determine when objects have changed. This value MUST be treated as opaque by +clients and passed unmodified back to the server. Clients should not assume +that the resource version has meaning across namespaces, different kinds of +resources, or different servers. + +**`see`** [concurrency control docs](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency) for more details + +#### Defined in + +[lib/k8s/cluster.ts:181](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L181) + +___ + +### selfLink + +• `Optional` **selfLink**: `string` + +Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. + +#### Defined in + +[lib/k8s/cluster.ts:185](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L185) + +___ + +### uid + +• **uid**: `string` + +UID is the unique in time and space value for this object. It is typically generated by +the server on successful creation of a resource and is not allowed to change on PUT +operations. Populated by the system. Read-only. + +**`see`** [UIDs docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids) for more details. + +#### Defined in + +[lib/k8s/cluster.ts:193](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L193) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetrics.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetrics.md new file mode 100644 index 0000000..5bab83e --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeMetrics.md @@ -0,0 +1,48 @@ +# Interface: KubeMetrics + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeMetrics + +## Properties + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Defined in + +[lib/k8s/cluster.ts:1213](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1213) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `capacity` | { `cpu`: `string` ; `memory`: `string` } | +| `capacity.cpu` | `string` | +| `capacity.memory` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1218](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1218) + +___ + +### usage + +• **usage**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `cpu` | `string` | +| `memory` | `string` | + +#### Defined in + +[lib/k8s/cluster.ts:1214](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1214) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectIface.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectIface.md new file mode 100644 index 0000000..e70a218 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectIface.md @@ -0,0 +1,188 @@ +# Interface: KubeObjectIface + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeObjectIface + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | extends [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](lib_k8s_event.KubeEvent.md) | + +## Indexable + +▪ [prop: `string`]: `any` + +## Constructors + +### constructor + +• **new KubeObjectIface**(`json`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `json` | `T` | + +#### Defined in + +[lib/k8s/cluster.ts:317](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L317) + +## Properties + +### className + +• **className**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:318](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L318) + +## Methods + +### apiList + +▸ **apiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListSingleNamespaceOptions`](lib_k8s_cluster.ApiListSingleNamespaceOptions.md) | + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/cluster.ts:293](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L293) + +___ + +### getAuthorization + +▸ `Optional` **getAuthorization**(`arg`, `resourceAttrs?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `arg` | `string` | +| `resourceAttrs?` | [`AuthRequestResourceAttrs`](lib_k8s_cluster.AuthRequestResourceAttrs.md) | + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/cluster.ts:320](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L320) + +___ + +### getErrorMessage + +▸ **getErrorMessage**(`err?`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err?` | ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md) | + +#### Returns + +``null`` \| `string` + +#### Defined in + +[lib/k8s/cluster.ts:316](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L316) + +___ + +### useApiGet + +▸ **useApiGet**(`onGet`, `name`, `namespace?`, `onError?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onGet` | (...`args`: `any`) => `void` | +| `name` | `string` | +| `namespace?` | `string` | +| `onError?` | (`err`: [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void` | + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/cluster.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L303) + +___ + +### useApiList + +▸ **useApiList**(`onList`, `onError?`, `opts?`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `onList` | (`arg`: `any`[]) => `void` | +| `onError?` | (`err`: [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void` | +| `opts?` | [`ApiListOptions`](lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +`any` + +#### Defined in + +[lib/k8s/cluster.ts:298](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L298) + +___ + +### useGet + +▸ **useGet**(`name`, `namespace?`): [`any`, ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace?` | `string` | + +#### Returns + +[`any`, ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md), (`item`: `any`) => `void`, (`err`: ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Defined in + +[lib/k8s/cluster.ts:312](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L312) + +___ + +### useList + +▸ **useList**(`opts?`): [`any`[], ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`ApiListOptions`](lib_k8s_cluster.ApiListOptions.md) | + +#### Returns + +[`any`[], ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md), (`items`: `any`[]) => `void`, (`err`: ``null`` \| [`ApiError`](lib_k8s_apiProxy.ApiError.md)) => `void`] + +#### Defined in + +[lib/k8s/cluster.ts:309](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L309) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectInterface.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectInterface.md new file mode 100644 index 0000000..aa62929 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeObjectInterface.md @@ -0,0 +1,121 @@ +# Interface: KubeObjectInterface + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeObjectInterface + +This is the base interface for all Kubernetes resources, i.e. it contains fields +that all Kubernetes resources have. + +## Hierarchy + +- **`KubeObjectInterface`** + + ↳ [`KubeConfigMap`](lib_k8s_configMap.KubeConfigMap.md) + + ↳ [`KubeCRD`](lib_k8s_crd.KubeCRD.md) + + ↳ [`KubeCronJob`](lib_k8s_cronJob.KubeCronJob.md) + + ↳ [`KubeDaemonSet`](lib_k8s_daemonSet.KubeDaemonSet.md) + + ↳ [`KubeDeployment`](lib_k8s_deployment.KubeDeployment.md) + + ↳ [`KubeEndpoint`](lib_k8s_endpoints.KubeEndpoint.md) + + ↳ [`KubeHPA`](lib_k8s_hpa.KubeHPA.md) + + ↳ [`KubeIngress`](lib_k8s_ingress.KubeIngress.md) + + ↳ [`KubeIngressClass`](lib_k8s_ingressClass.KubeIngressClass.md) + + ↳ [`KubeJob`](lib_k8s_job.KubeJob.md) + + ↳ [`KubeLease`](lib_k8s_lease.KubeLease.md) + + ↳ [`KubeLimitRange`](lib_k8s_limitRange.KubeLimitRange.md) + + ↳ [`KubeMutatingWebhookConfiguration`](lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md) + + ↳ [`KubeNamespace`](lib_k8s_namespace.KubeNamespace.md) + + ↳ [`KubeNetworkPolicy`](lib_k8s_networkpolicy.KubeNetworkPolicy.md) + + ↳ [`KubeNode`](lib_k8s_node.KubeNode.md) + + ↳ [`KubePersistentVolume`](lib_k8s_persistentVolume.KubePersistentVolume.md) + + ↳ [`KubePersistentVolumeClaim`](lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md) + + ↳ [`KubePod`](lib_k8s_pod.KubePod.md) + + ↳ [`KubePDB`](lib_k8s_podDisruptionBudget.KubePDB.md) + + ↳ [`KubePriorityClass`](lib_k8s_priorityClass.KubePriorityClass.md) + + ↳ [`KubeReplicaSet`](lib_k8s_replicaSet.KubeReplicaSet.md) + + ↳ [`KubeResourceQuota`](lib_k8s_resourceQuota.KubeResourceQuota.md) + + ↳ [`KubeRole`](lib_k8s_role.KubeRole.md) + + ↳ [`KubeRoleBinding`](lib_k8s_roleBinding.KubeRoleBinding.md) + + ↳ [`KubeRuntimeClass`](lib_k8s_runtime.KubeRuntimeClass.md) + + ↳ [`KubeSecret`](lib_k8s_secret.KubeSecret.md) + + ↳ [`KubeService`](lib_k8s_service.KubeService.md) + + ↳ [`KubeServiceAccount`](lib_k8s_serviceAccount.KubeServiceAccount.md) + + ↳ [`KubeStatefulSet`](lib_k8s_statefulSet.KubeStatefulSet.md) + + ↳ [`KubeStorageClass`](lib_k8s_storageClass.KubeStorageClass.md) + + ↳ [`KubeToken`](lib_k8s_token.KubeToken.md) + + ↳ [`KubeValidatingWebhookConfiguration`](lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md) + + ↳ [`KubeVPA`](lib_k8s_vpa.KubeVPA.md) + +## Indexable + +▪ [otherProps: `string`]: `any` + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeOwnerReference.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeOwnerReference.md new file mode 100644 index 0000000..5a8141c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.KubeOwnerReference.md @@ -0,0 +1,82 @@ +# Interface: KubeOwnerReference + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).KubeOwnerReference + +## Properties + +### apiVersion + +• **apiVersion**: `string` + +API version of the referent. + +#### Defined in + +[lib/k8s/cluster.ts:198](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L198) + +___ + +### blockOwnerDeletion + +• **blockOwnerDeletion**: `boolean` + +If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot +be deleted from the key-value store until this reference is removed. + +**`see`** [foreground deletion](https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion) +for how the garbage collector interacts with this field and enforces the foreground deletion. + +Defaults to false. To set this field, a user needs "delete" permission of the owner, +otherwise 422 (Unprocessable Entity) will be returned. + +#### Defined in + +[lib/k8s/cluster.ts:210](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L210) + +___ + +### controller + +• **controller**: `boolean` + +If true, this reference points to the managing controller. + +#### Defined in + +[lib/k8s/cluster.ts:212](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L212) + +___ + +### kind + +• **kind**: `string` + +Kind of the referent. + +#### Defined in + +[lib/k8s/cluster.ts:214](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L214) + +___ + +### name + +• **name**: `string` + +Name of the referent. + +#### Defined in + +[lib/k8s/cluster.ts:216](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L216) + +___ + +### uid + +• **uid**: `string` + +UID of the referent. + +#### Defined in + +[lib/k8s/cluster.ts:218](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L218) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.LabelSelector.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.LabelSelector.md new file mode 100644 index 0000000..3e0075a --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.LabelSelector.md @@ -0,0 +1,27 @@ +# Interface: LabelSelector + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).LabelSelector + +## Properties + +### matchExpressions + +• `Optional` **matchExpressions**: { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] + +#### Defined in + +[lib/k8s/cluster.ts:1202](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1202) + +___ + +### matchLabels + +• `Optional` **matchLabels**: `Object` + +#### Index signature + +▪ [key: `string`]: `string` + +#### Defined in + +[lib/k8s/cluster.ts:1207](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L1207) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cluster.StringDict.md b/docs/latest/development/api/interfaces/lib_k8s_cluster.StringDict.md new file mode 100644 index 0000000..12c84d1 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cluster.StringDict.md @@ -0,0 +1,7 @@ +# Interface: StringDict + +[lib/k8s/cluster](../modules/lib_k8s_cluster.md).StringDict + +## Indexable + +▪ [key: `string`]: `string` diff --git a/docs/latest/development/api/interfaces/lib_k8s_configMap.KubeConfigMap.md b/docs/latest/development/api/interfaces/lib_k8s_configMap.KubeConfigMap.md new file mode 100644 index 0000000..fdede63 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_configMap.KubeConfigMap.md @@ -0,0 +1,70 @@ +# Interface: KubeConfigMap + +[lib/k8s/configMap](../modules/lib_k8s_configMap.md).KubeConfigMap + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeConfigMap`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### data + +• **data**: [`StringDict`](lib_k8s_cluster.StringDict.md) + +#### Defined in + +[lib/k8s/configMap.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/configMap.ts#L5) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) diff --git a/docs/latest/development/api/interfaces/lib_k8s_crd.CRClassArgs.md b/docs/latest/development/api/interfaces/lib_k8s_crd.CRClassArgs.md new file mode 100644 index 0000000..abc7217 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_crd.CRClassArgs.md @@ -0,0 +1,43 @@ +# Interface: CRClassArgs + +[lib/k8s/crd](../modules/lib_k8s_crd.md).CRClassArgs + +## Properties + +### apiInfo + +• **apiInfo**: { `group`: `string` ; `version`: `string` }[] + +#### Defined in + +[lib/k8s/crd.ts:94](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L94) + +___ + +### isNamespaced + +• **isNamespaced**: `boolean` + +#### Defined in + +[lib/k8s/crd.ts:100](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L100) + +___ + +### pluralName + +• **pluralName**: `string` + +#### Defined in + +[lib/k8s/crd.ts:98](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L98) + +___ + +### singularName + +• **singularName**: `string` + +#### Defined in + +[lib/k8s/crd.ts:99](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L99) diff --git a/docs/latest/development/api/interfaces/lib_k8s_crd.KubeCRD.md b/docs/latest/development/api/interfaces/lib_k8s_crd.KubeCRD.md new file mode 100644 index 0000000..9a9d758 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_crd.KubeCRD.md @@ -0,0 +1,88 @@ +# Interface: KubeCRD + +[lib/k8s/crd](../modules/lib_k8s_crd.md).KubeCRD + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeCRD`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `group` | `string` | +| `names` | { `kind`: `string` ; `listKind`: `string` ; `plural`: `string` ; `singular`: `string` } | +| `names.kind` | `string` | +| `names.listKind` | `string` | +| `names.plural` | `string` | +| `names.singular` | `string` | +| `scope` | `string` | +| `version` | `string` | +| `versions` | { `additionalPrinterColumns`: { `description?`: `string` ; `format?`: `string` ; `jsonPath`: `string` ; `name`: `string` ; `priority?`: `number` ; `type`: `string` }[] ; `name`: `string` ; `served`: `boolean` ; `storage`: `boolean` }[] | + +#### Defined in + +[lib/k8s/crd.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L6) diff --git a/docs/latest/development/api/interfaces/lib_k8s_cronJob.KubeCronJob.md b/docs/latest/development/api/interfaces/lib_k8s_cronJob.KubeCronJob.md new file mode 100644 index 0000000..86fc7b2 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_cronJob.KubeCronJob.md @@ -0,0 +1,112 @@ +# Interface: KubeCronJob + +[lib/k8s/cronJob](../modules/lib_k8s_cronJob.md).KubeCronJob + +CronJob structure returned by the k8s API. + +**`see`** [https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/cron-job-v1/](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/cron-job-v1/) Kubernetes API reference for CronJob + +**`see`** [https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) Kubernetes definition for CronJob + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeCronJob`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `concurrencyPolicy` | `string` | +| `failedJobsHistoryLimit` | `number` | +| `jobTemplate` | { `spec`: { `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> ; `template`: { `spec`: { `containers`: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] ; `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> } } } } | +| `jobTemplate.spec` | { `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> ; `template`: { `spec`: { `containers`: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] ; `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> } } } | +| `jobTemplate.spec.metadata?` | `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> | +| `jobTemplate.spec.template` | { `spec`: { `containers`: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] ; `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> } } | +| `jobTemplate.spec.template.spec` | { `containers`: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] ; `metadata?`: `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> } | +| `jobTemplate.spec.template.spec.containers` | [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] | +| `jobTemplate.spec.template.spec.metadata?` | `Partial`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md)\> | +| `schedule` | `string` | +| `startingDeadlineSeconds?` | `number` | +| `successfulJobsHistoryLimit` | `number` | +| `suspend` | `boolean` | + +#### Defined in + +[lib/k8s/cronJob.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L12) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Defined in + +[lib/k8s/cronJob.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cronJob.ts#L32) diff --git a/docs/latest/development/api/interfaces/lib_k8s_daemonSet.KubeDaemonSet.md b/docs/latest/development/api/interfaces/lib_k8s_daemonSet.KubeDaemonSet.md new file mode 100644 index 0000000..7b7346c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_daemonSet.KubeDaemonSet.md @@ -0,0 +1,101 @@ +# Interface: KubeDaemonSet + +[lib/k8s/daemonSet](../modules/lib_k8s_daemonSet.md).KubeDaemonSet + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeDaemonSet`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `selector` | [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) | +| `template` | { `metadata`: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata` | [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) | +| `updateStrategy` | { `rollingUpdate`: { `maxUnavailable`: `number` } ; `type`: `string` } | +| `updateStrategy.rollingUpdate` | { `maxUnavailable`: `number` } | +| `updateStrategy.rollingUpdate.maxUnavailable` | `number` | +| `updateStrategy.type` | `string` | + +#### Defined in + +[lib/k8s/daemonSet.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L12) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Defined in + +[lib/k8s/daemonSet.ts:26](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/daemonSet.ts#L26) diff --git a/docs/latest/development/api/interfaces/lib_k8s_deployment.KubeDeployment.md b/docs/latest/development/api/interfaces/lib_k8s_deployment.KubeDeployment.md new file mode 100644 index 0000000..0ed4822 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_deployment.KubeDeployment.md @@ -0,0 +1,99 @@ +# Interface: KubeDeployment + +[lib/k8s/deployment](../modules/lib_k8s_deployment.md).KubeDeployment + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeDeployment`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `selector?` | [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) | +| `strategy?` | { `[otherProps: string]`: `any`; `type`: `string` } | +| `strategy.type` | `string` | +| `template` | { `metadata?`: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata?` | [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) | + +#### Defined in + +[lib/k8s/deployment.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L12) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Defined in + +[lib/k8s/deployment.ts:24](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/deployment.ts#L24) diff --git a/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpoint.md b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpoint.md new file mode 100644 index 0000000..e53fb22 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpoint.md @@ -0,0 +1,70 @@ +# Interface: KubeEndpoint + +[lib/k8s/endpoints](../modules/lib_k8s_endpoints.md).KubeEndpoint + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeEndpoint`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### subsets + +• **subsets**: [`KubeEndpointSubset`](lib_k8s_endpoints.KubeEndpointSubset.md)[] + +#### Defined in + +[lib/k8s/endpoints.ts:28](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L28) diff --git a/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointAddress.md b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointAddress.md new file mode 100644 index 0000000..07165b2 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointAddress.md @@ -0,0 +1,43 @@ +# Interface: KubeEndpointAddress + +[lib/k8s/endpoints](../modules/lib_k8s_endpoints.md).KubeEndpointAddress + +## Properties + +### hostname + +• **hostname**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L12) + +___ + +### ip + +• **ip**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L13) + +___ + +### nodeName + +• `Optional` **nodeName**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L14) + +___ + +### targetRef + +• `Optional` **targetRef**: `Pick`<[`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md), ``"kind"`` \| ``"apiVersion"``\> & `Pick`<[`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md), ``"name"`` \| ``"namespace"`` \| ``"resourceVersion"`` \| ``"uid"``\> & { `fieldPath`: `string` } + +#### Defined in + +[lib/k8s/endpoints.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L15) diff --git a/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointPort.md b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointPort.md new file mode 100644 index 0000000..ef35951 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointPort.md @@ -0,0 +1,43 @@ +# Interface: KubeEndpointPort + +[lib/k8s/endpoints](../modules/lib_k8s_endpoints.md).KubeEndpointPort + +## Properties + +### appProtocol + +• **appProtocol**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L6) + +___ + +### name + +• `Optional` **name**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L5) + +___ + +### port + +• **port**: `number` + +#### Defined in + +[lib/k8s/endpoints.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L7) + +___ + +### protocol + +• **protocol**: `string` + +#### Defined in + +[lib/k8s/endpoints.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L8) diff --git a/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointSubset.md b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointSubset.md new file mode 100644 index 0000000..117ceec --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_endpoints.KubeEndpointSubset.md @@ -0,0 +1,33 @@ +# Interface: KubeEndpointSubset + +[lib/k8s/endpoints](../modules/lib_k8s_endpoints.md).KubeEndpointSubset + +## Properties + +### addresses + +• `Optional` **addresses**: [`KubeEndpointAddress`](lib_k8s_endpoints.KubeEndpointAddress.md)[] + +#### Defined in + +[lib/k8s/endpoints.ts:22](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L22) + +___ + +### notReadyAddresses + +• `Optional` **notReadyAddresses**: [`KubeEndpointAddress`](lib_k8s_endpoints.KubeEndpointAddress.md)[] + +#### Defined in + +[lib/k8s/endpoints.ts:23](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L23) + +___ + +### ports + +• `Optional` **ports**: [`KubeEndpointPort`](lib_k8s_endpoints.KubeEndpointPort.md)[] + +#### Defined in + +[lib/k8s/endpoints.ts:24](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/endpoints.ts#L24) diff --git a/docs/latest/development/api/interfaces/lib_k8s_event.KubeEvent.md b/docs/latest/development/api/interfaces/lib_k8s_event.KubeEvent.md new file mode 100644 index 0000000..b580968 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_event.KubeEvent.md @@ -0,0 +1,69 @@ +# Interface: KubeEvent + +[lib/k8s/event](../modules/lib_k8s_event.md).KubeEvent + +## Indexable + +▪ [otherProps: `string`]: `any` + +## Properties + +### involvedObject + +• **involvedObject**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiVersion` | `string` | +| `fieldPath` | `string` | +| `kind` | `string` | +| `name` | `string` | +| `namespace` | `string` | +| `resourceVersion` | `string` | +| `uid` | `string` | + +#### Defined in + +[lib/k8s/event.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L12) + +___ + +### message + +• **message**: `string` + +#### Defined in + +[lib/k8s/event.ts:10](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L10) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Defined in + +[lib/k8s/event.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L11) + +___ + +### reason + +• **reason**: `string` + +#### Defined in + +[lib/k8s/event.ts:9](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L9) + +___ + +### type + +• **type**: `string` + +#### Defined in + +[lib/k8s/event.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/event.ts#L8) diff --git a/docs/latest/development/api/interfaces/lib_k8s_hpa.CrossVersionObjectReference.md b/docs/latest/development/api/interfaces/lib_k8s_hpa.CrossVersionObjectReference.md new file mode 100644 index 0000000..f0dcef5 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_hpa.CrossVersionObjectReference.md @@ -0,0 +1,33 @@ +# Interface: CrossVersionObjectReference + +[lib/k8s/hpa](../modules/lib_k8s_hpa.md).CrossVersionObjectReference + +## Properties + +### apiVersion + +• **apiVersion**: `string` + +#### Defined in + +[lib/k8s/hpa.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L5) + +___ + +### kind + +• **kind**: `string` + +#### Defined in + +[lib/k8s/hpa.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L6) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[lib/k8s/hpa.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L7) diff --git a/docs/latest/development/api/interfaces/lib_k8s_hpa.KubeHPA.md b/docs/latest/development/api/interfaces/lib_k8s_hpa.KubeHPA.md new file mode 100644 index 0000000..abd06a5 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_hpa.KubeHPA.md @@ -0,0 +1,80 @@ +# Interface: KubeHPA + +[lib/k8s/hpa](../modules/lib_k8s_hpa.md).KubeHPA + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeHPA`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `HpaSpec` + +#### Defined in + +[lib/k8s/hpa.ts:158](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L158) + +___ + +### status + +• **status**: `HpaStatus` + +#### Defined in + +[lib/k8s/hpa.ts:159](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/hpa.ts#L159) diff --git a/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressBackend.md b/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressBackend.md new file mode 100644 index 0000000..ea6c58f --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressBackend.md @@ -0,0 +1,40 @@ +# Interface: IngressBackend + +[lib/k8s/ingress](../modules/lib_k8s_ingress.md).IngressBackend + +## Properties + +### resource + +• `Optional` **resource**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiVersion` | `string` | +| `kind` | `string` | +| `name` | `string` | + +#### Defined in + +[lib/k8s/ingress.ts:38](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L38) + +___ + +### service + +• `Optional` **service**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `port` | { `name?`: `string` ; `number?`: `number` } | +| `port.name?` | `string` | +| `port.number?` | `number` | + +#### Defined in + +[lib/k8s/ingress.ts:31](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L31) diff --git a/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressRule.md b/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressRule.md new file mode 100644 index 0000000..7f16b9d --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_ingress.IngressRule.md @@ -0,0 +1,29 @@ +# Interface: IngressRule + +[lib/k8s/ingress](../modules/lib_k8s_ingress.md).IngressRule + +## Properties + +### host + +• **host**: `string` + +#### Defined in + +[lib/k8s/ingress.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L15) + +___ + +### http + +• **http**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `paths` | { `backend`: [`IngressBackend`](lib_k8s_ingress.IngressBackend.md) ; `path`: `string` ; `pathType?`: `string` }[] | + +#### Defined in + +[lib/k8s/ingress.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L16) diff --git a/docs/latest/development/api/interfaces/lib_k8s_ingress.KubeIngress.md b/docs/latest/development/api/interfaces/lib_k8s_ingress.KubeIngress.md new file mode 100644 index 0000000..6f83092 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_ingress.KubeIngress.md @@ -0,0 +1,92 @@ +# Interface: KubeIngress + +[lib/k8s/ingress](../modules/lib_k8s_ingress.md).KubeIngress + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeIngress`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [key: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `defaultBackend?` | { `resource?`: { `apiVersion`: `string` ; `kind`: `string` ; `name`: `string` } ; `service?`: { `name`: `string` ; `port`: { `name?`: `string` ; `number?`: `number` } } } | +| `defaultBackend.resource?` | { `apiVersion`: `string` ; `kind`: `string` ; `name`: `string` } | +| `defaultBackend.resource.apiVersion` | `string` | +| `defaultBackend.resource.kind` | `string` | +| `defaultBackend.resource.name` | `string` | +| `defaultBackend.service?` | { `name`: `string` ; `port`: { `name?`: `string` ; `number?`: `number` } } | +| `defaultBackend.service.name` | `string` | +| `defaultBackend.service.port` | { `name?`: `string` ; `number?`: `number` } | +| `defaultBackend.service.port.name?` | `string` | +| `defaultBackend.service.port.number?` | `number` | +| `ingressClassName?` | `string` | +| `rules` | [`IngressRule`](lib_k8s_ingress.IngressRule.md)[] \| `LegacyIngressRule`[] | +| `tls?` | { `hosts`: `string`[] ; `secretName`: `string` }[] | + +#### Defined in + +[lib/k8s/ingress.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingress.ts#L46) diff --git a/docs/latest/development/api/interfaces/lib_k8s_ingressClass.KubeIngressClass.md b/docs/latest/development/api/interfaces/lib_k8s_ingressClass.KubeIngressClass.md new file mode 100644 index 0000000..951f2af --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_ingressClass.KubeIngressClass.md @@ -0,0 +1,80 @@ +# Interface: KubeIngressClass + +[lib/k8s/ingressClass](../modules/lib_k8s_ingressClass.md).KubeIngressClass + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeIngressClass`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [key: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `controller` | `string` | + +#### Defined in + +[lib/k8s/ingressClass.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/ingressClass.ts#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_job.KubeJob.md b/docs/latest/development/api/interfaces/lib_k8s_job.KubeJob.md new file mode 100644 index 0000000..9d7e1b8 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_job.KubeJob.md @@ -0,0 +1,97 @@ +# Interface: KubeJob + +[lib/k8s/job](../modules/lib_k8s_job.md).KubeJob + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeJob`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `selector` | [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) | +| `template` | { `metadata?`: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata?` | [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) | + +#### Defined in + +[lib/k8s/job.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L12) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Defined in + +[lib/k8s/job.ts:20](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/job.ts#L20) diff --git a/docs/latest/development/api/interfaces/lib_k8s_kubeconfig.KubeconfigObject.md b/docs/latest/development/api/interfaces/lib_k8s_kubeconfig.KubeconfigObject.md new file mode 100644 index 0000000..3bc1039 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_kubeconfig.KubeconfigObject.md @@ -0,0 +1,129 @@ +# Interface: KubeconfigObject + +[lib/k8s/kubeconfig](../modules/lib_k8s_kubeconfig.md).KubeconfigObject + +KubeconfigObject is the object that is stored in indexDB as string format. +It is a JSON encoded version of the kubeconfig file. +It is used to store the kubeconfig for stateless clusters. +This is basically a k8s client - go Kubeconfig object. +KubeconfigObject holds the information needed to build connect to remote kubernetes clusters as a given user +* @see [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/) + +**`see`** storeStatelessClusterKubeconfig + +**`see`** getStatelessClusterKubeConfigs + +**`see`** findKubeconfigByClusterName + +## Properties + +### apiVersion + +• **apiVersion**: `string` + +version of the kubeconfig file. + +#### Defined in + +[lib/k8s/kubeconfig.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L14) + +___ + +### clusters + +• **clusters**: { `cluster`: { `certificateAuthority?`: `string` ; `certificateAuthorityData?`: `string` ; `disableCompression?`: `boolean` ; `extensions?`: { `extension`: {} ; `name`: `string` }[] ; `insecureSkipTLSVerify?`: `boolean` ; `proxyURL?`: `string` ; `server`: `string` ; `tlsServerName?`: `string` } ; `name`: `string` }[] + +Clusters is a map of referencable names to cluster configs. + +**`see`** [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#NamedCluster) + +#### Defined in + +[lib/k8s/kubeconfig.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L34) + +___ + +### contexts + +• **contexts**: { `context`: { `cluster`: `string` ; `extensions?`: { `extension`: {} ; `name`: `string` }[] ; `namespace?`: `string` ; `user`: `string` } ; `name`: `string` }[] + +Contexts is a map of referencable names to context configs. + +**`see`** [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#NamedContext) + +#### Defined in + +[lib/k8s/kubeconfig.ts:130](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L130) + +___ + +### current-context + +• **current-context**: `string` + +CurrentContext is the name of the context that you would like to use by default + +#### Defined in + +[lib/k8s/kubeconfig.ts:151](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L151) + +___ + +### extensions + +• `Optional` **extensions**: { `extension`: {} ; `name`: `string` }[] + +Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + +**`see`** [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#NamedExtension) + +#### Defined in + +[lib/k8s/kubeconfig.ts:155](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L155) + +___ + +### kind + +• **kind**: `string` + +kind is the type of the kubeconfig file. It is always 'Config'. + +#### Defined in + +[lib/k8s/kubeconfig.ts:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L16) + +___ + +### preferences + +• `Optional` **preferences**: `Object` + +Preferences holds general information to be use for cli interactions + +**`see`** [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#Preferences) + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `colors?` | `boolean` | colors specifies whether output should use colors. | +| `extensions?` | { `extension`: {} ; `name`: `string` }[] | extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields on the Preferences object. | + +#### Defined in + +[lib/k8s/kubeconfig.ts:20](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L20) + +___ + +### users + +• **users**: { `name`: `string` ; `user`: { `authProvider?`: { `config`: { `[key: string]`: `string`; } ; `name`: `string` } ; `clientCertificate?`: `string` ; `clientCertificateData?`: `string` ; `clientKey?`: `string` ; `clientKeyData?`: `string` ; `exec?`: { `args?`: `string`[] ; `command`: `string` ; `env?`: { `[key: string]`: `string`; } } ; `extensions?`: { `extension`: {} ; `name`: `string` }[] ; `impersonate?`: `string` ; `impersonateGroups?`: `string`[] ; `impersonateUserExtra?`: { `[key: string]`: `string`[]; } ; `password?`: `string` ; `token?`: `string` ; `tokenFile?`: `string` ; `username?`: `string` } }[] + +AuthInfos is a map of referencable names to user configs. + +**`see`** [more info](https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#NamedAuthInfo) + +#### Defined in + +[lib/k8s/kubeconfig.ts:67](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/kubeconfig.ts#L67) diff --git a/docs/latest/development/api/interfaces/lib_k8s_lease.KubeLease.md b/docs/latest/development/api/interfaces/lib_k8s_lease.KubeLease.md new file mode 100644 index 0000000..8a1fa3c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_lease.KubeLease.md @@ -0,0 +1,70 @@ +# Interface: KubeLease + +[lib/k8s/lease](../modules/lib_k8s_lease.md).KubeLease + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeLease`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: [`LeaseSpec`](lib_k8s_lease.LeaseSpec.md) + +#### Defined in + +[lib/k8s/lease.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L12) diff --git a/docs/latest/development/api/interfaces/lib_k8s_lease.LeaseSpec.md b/docs/latest/development/api/interfaces/lib_k8s_lease.LeaseSpec.md new file mode 100644 index 0000000..a58452f --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_lease.LeaseSpec.md @@ -0,0 +1,43 @@ +# Interface: LeaseSpec + +[lib/k8s/lease](../modules/lib_k8s_lease.md).LeaseSpec + +## Properties + +### holderIdentity + +• **holderIdentity**: `string` + +#### Defined in + +[lib/k8s/lease.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L5) + +___ + +### leaseDurationSeconds + +• **leaseDurationSeconds**: `number` + +#### Defined in + +[lib/k8s/lease.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L6) + +___ + +### leaseTransitions + +• **leaseTransitions**: `number` + +#### Defined in + +[lib/k8s/lease.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L7) + +___ + +### renewTime + +• **renewTime**: `string` + +#### Defined in + +[lib/k8s/lease.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/lease.ts#L8) diff --git a/docs/latest/development/api/interfaces/lib_k8s_limitRange.KubeLimitRange.md b/docs/latest/development/api/interfaces/lib_k8s_limitRange.KubeLimitRange.md new file mode 100644 index 0000000..d57b0de --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_limitRange.KubeLimitRange.md @@ -0,0 +1,70 @@ +# Interface: KubeLimitRange + +[lib/k8s/limitRange](../modules/lib_k8s_limitRange.md).KubeLimitRange + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeLimitRange`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: [`LimitRangeSpec`](lib_k8s_limitRange.LimitRangeSpec.md) + +#### Defined in + +[lib/k8s/limitRange.tsx:27](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/limitRange.tsx#L27) diff --git a/docs/latest/development/api/interfaces/lib_k8s_limitRange.LimitRangeSpec.md b/docs/latest/development/api/interfaces/lib_k8s_limitRange.LimitRangeSpec.md new file mode 100644 index 0000000..4db8227 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_limitRange.LimitRangeSpec.md @@ -0,0 +1,13 @@ +# Interface: LimitRangeSpec + +[lib/k8s/limitRange](../modules/lib_k8s_limitRange.md).LimitRangeSpec + +## Properties + +### limits + +• **limits**: { `default`: { `cpu`: `string` ; `memory`: `string` } ; `defaultRequest`: { `cpu`: `string` ; `memory`: `string` } ; `max`: { `cpu`: `string` ; `memory`: `string` } ; `min`: { `cpu`: `string` ; `memory`: `string` } ; `type`: `string` }[] + +#### Defined in + +[lib/k8s/limitRange.tsx:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/limitRange.tsx#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md new file mode 100644 index 0000000..c48a5af --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md @@ -0,0 +1,70 @@ +# Interface: KubeMutatingWebhookConfiguration + +[lib/k8s/mutatingWebhookConfiguration](../modules/lib_k8s_mutatingWebhookConfiguration.md).KubeMutatingWebhookConfiguration + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeMutatingWebhookConfiguration`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### webhooks + +• **webhooks**: { `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `reinvocationPolicy?`: `string` ; `rules?`: [`KubeRuleWithOperations`](lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:24](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L24) diff --git a/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md new file mode 100644 index 0000000..ab877f0 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md @@ -0,0 +1,53 @@ +# Interface: KubeRuleWithOperations + +[lib/k8s/mutatingWebhookConfiguration](../modules/lib_k8s_mutatingWebhookConfiguration.md).KubeRuleWithOperations + +## Properties + +### apiGroups + +• **apiGroups**: `string`[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L5) + +___ + +### apiVersions + +• **apiVersions**: `string`[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L6) + +___ + +### operations + +• **operations**: `string`[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L7) + +___ + +### resources + +• **resources**: `string`[] + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L8) + +___ + +### scope + +• `Optional` **scope**: `string` + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:9](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L9) diff --git a/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md new file mode 100644 index 0000000..560e23a --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md @@ -0,0 +1,42 @@ +# Interface: KubeWebhookClientConfig + +[lib/k8s/mutatingWebhookConfiguration](../modules/lib_k8s_mutatingWebhookConfiguration.md).KubeWebhookClientConfig + +## Properties + +### caBundle + +• **caBundle**: `string` + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L13) + +___ + +### service + +• `Optional` **service**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `namespace` | `string` | +| `path?` | `string` | +| `port?` | `number` | + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L15) + +___ + +### url + +• `Optional` **url**: `string` + +#### Defined in + +[lib/k8s/mutatingWebhookConfiguration.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/mutatingWebhookConfiguration.ts#L14) diff --git a/docs/latest/development/api/interfaces/lib_k8s_namespace.KubeNamespace.md b/docs/latest/development/api/interfaces/lib_k8s_namespace.KubeNamespace.md new file mode 100644 index 0000000..e1e0490 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_namespace.KubeNamespace.md @@ -0,0 +1,76 @@ +# Interface: KubeNamespace + +[lib/k8s/namespace](../modules/lib_k8s_namespace.md).KubeNamespace + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeNamespace`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `phase` | `string` | + +#### Defined in + +[lib/k8s/namespace.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/namespace.ts#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.IPBlock.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.IPBlock.md new file mode 100644 index 0000000..1a44aeb --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.IPBlock.md @@ -0,0 +1,23 @@ +# Interface: IPBlock + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).IPBlock + +## Properties + +### cidr + +• **cidr**: `string` + +#### Defined in + +[lib/k8s/networkpolicy.tsx:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L11) + +___ + +### except + +• **except**: `string`[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L12) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.KubeNetworkPolicy.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.KubeNetworkPolicy.md new file mode 100644 index 0000000..865d0f2 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.KubeNetworkPolicy.md @@ -0,0 +1,100 @@ +# Interface: KubeNetworkPolicy + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).KubeNetworkPolicy + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeNetworkPolicy`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### egress + +• **egress**: [`NetworkPolicyEgressRule`](lib_k8s_networkpolicy.NetworkPolicyEgressRule.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L32) + +___ + +### ingress + +• **ingress**: [`NetworkPolicyIngressRule`](lib_k8s_networkpolicy.NetworkPolicyIngressRule.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:33](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L33) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### podSelector + +• **podSelector**: [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) + +#### Defined in + +[lib/k8s/networkpolicy.tsx:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L34) + +___ + +### policyTypes + +• **policyTypes**: `string`[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:35](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L35) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyEgressRule.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyEgressRule.md new file mode 100644 index 0000000..34f46d4 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyEgressRule.md @@ -0,0 +1,23 @@ +# Interface: NetworkPolicyEgressRule + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).NetworkPolicyEgressRule + +## Properties + +### ports + +• **ports**: [`NetworkPolicyPort`](lib_k8s_networkpolicy.NetworkPolicyPort.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:22](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L22) + +___ + +### to + +• **to**: [`NetworkPolicyPeer`](lib_k8s_networkpolicy.NetworkPolicyPeer.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:23](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L23) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyIngressRule.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyIngressRule.md new file mode 100644 index 0000000..fe9890c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyIngressRule.md @@ -0,0 +1,23 @@ +# Interface: NetworkPolicyIngressRule + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).NetworkPolicyIngressRule + +## Properties + +### from + +• **from**: [`NetworkPolicyPeer`](lib_k8s_networkpolicy.NetworkPolicyPeer.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:28](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L28) + +___ + +### ports + +• **ports**: [`NetworkPolicyPort`](lib_k8s_networkpolicy.NetworkPolicyPort.md)[] + +#### Defined in + +[lib/k8s/networkpolicy.tsx:27](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L27) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPeer.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPeer.md new file mode 100644 index 0000000..70fcddb --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPeer.md @@ -0,0 +1,33 @@ +# Interface: NetworkPolicyPeer + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).NetworkPolicyPeer + +## Properties + +### ipBlock + +• `Optional` **ipBlock**: [`IPBlock`](lib_k8s_networkpolicy.IPBlock.md) + +#### Defined in + +[lib/k8s/networkpolicy.tsx:16](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L16) + +___ + +### namespaceSelector + +• `Optional` **namespaceSelector**: [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) + +#### Defined in + +[lib/k8s/networkpolicy.tsx:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L17) + +___ + +### podSelector + +• `Optional` **podSelector**: [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) + +#### Defined in + +[lib/k8s/networkpolicy.tsx:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L18) diff --git a/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPort.md b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPort.md new file mode 100644 index 0000000..9e9c22c --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_networkpolicy.NetworkPolicyPort.md @@ -0,0 +1,33 @@ +# Interface: NetworkPolicyPort + +[lib/k8s/networkpolicy](../modules/lib_k8s_networkpolicy.md).NetworkPolicyPort + +## Properties + +### endPort + +• `Optional` **endPort**: `number` + +#### Defined in + +[lib/k8s/networkpolicy.tsx:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L7) + +___ + +### port + +• `Optional` **port**: `string` \| `number` + +#### Defined in + +[lib/k8s/networkpolicy.tsx:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L5) + +___ + +### protocol + +• `Optional` **protocol**: `string` + +#### Defined in + +[lib/k8s/networkpolicy.tsx:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/networkpolicy.tsx#L6) diff --git a/docs/latest/development/api/interfaces/lib_k8s_node.KubeNode.md b/docs/latest/development/api/interfaces/lib_k8s_node.KubeNode.md new file mode 100644 index 0000000..5f8ec31 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_node.KubeNode.md @@ -0,0 +1,123 @@ +# Interface: KubeNode + +[lib/k8s/node](../modules/lib_k8s_node.md).KubeNode + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeNode`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `podCIDR` | `string` | +| `taints` | { `effect`: `string` ; `key`: `string` }[] | + +#### Defined in + +[lib/k8s/node.ts:45](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L45) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `addresses` | { `address`: `string` ; `type`: `string` }[] | +| `allocatable` | { `cpu`: `any` ; `ephemeralStorage`: `any` ; `hugepages_1Gi`: `any` ; `hugepages_2Mi`: `any` ; `memory`: `any` ; `pods`: `any` } | +| `allocatable.cpu` | `any` | +| `allocatable.ephemeralStorage` | `any` | +| `allocatable.hugepages_1Gi` | `any` | +| `allocatable.hugepages_2Mi` | `any` | +| `allocatable.memory` | `any` | +| `allocatable.pods` | `any` | +| `capacity` | { `cpu`: `any` ; `ephemeralStorage`: `any` ; `hugepages_1Gi`: `any` ; `hugepages_2Mi`: `any` ; `memory`: `any` ; `pods`: `any` } | +| `capacity.cpu` | `any` | +| `capacity.ephemeralStorage` | `any` | +| `capacity.hugepages_1Gi` | `any` | +| `capacity.hugepages_2Mi` | `any` | +| `capacity.memory` | `any` | +| `capacity.pods` | `any` | +| `conditions` | `Omit`<[`KubeCondition`](lib_k8s_cluster.KubeCondition.md), ``"lastProbeTime"`` \| ``"lastUpdateTime"``\> & { `lastHeartbeatTime`: `string` }[] | +| `nodeInfo` | { `architecture`: `string` ; `bootID`: `string` ; `containerRuntimeVersion`: `string` ; `kernelVersion`: `string` ; `kubeProxyVersion`: `string` ; `kubeletVersion`: `string` ; `machineID`: `string` ; `operatingSystem`: `string` ; `osImage`: `string` ; `systemUUID`: `string` } | +| `nodeInfo.architecture` | `string` | +| `nodeInfo.bootID` | `string` | +| `nodeInfo.containerRuntimeVersion` | `string` | +| `nodeInfo.kernelVersion` | `string` | +| `nodeInfo.kubeProxyVersion` | `string` | +| `nodeInfo.kubeletVersion` | `string` | +| `nodeInfo.machineID` | `string` | +| `nodeInfo.operatingSystem` | `string` | +| `nodeInfo.osImage` | `string` | +| `nodeInfo.systemUUID` | `string` | + +#### Defined in + +[lib/k8s/node.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/node.ts#L8) diff --git a/docs/latest/development/api/interfaces/lib_k8s_persistentVolume.KubePersistentVolume.md b/docs/latest/development/api/interfaces/lib_k8s_persistentVolume.KubePersistentVolume.md new file mode 100644 index 0000000..6dc981f --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_persistentVolume.KubePersistentVolume.md @@ -0,0 +1,99 @@ +# Interface: KubePersistentVolume + +[lib/k8s/persistentVolume](../modules/lib_k8s_persistentVolume.md).KubePersistentVolume + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubePersistentVolume`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `capacity` | { `storage`: `string` } | +| `capacity.storage` | `string` | + +#### Defined in + +[lib/k8s/persistentVolume.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolume.ts#L5) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `phase` | `string` | +| `reason` | `string` | + +#### Defined in + +[lib/k8s/persistentVolume.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolume.ts#L11) diff --git a/docs/latest/development/api/interfaces/lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md b/docs/latest/development/api/interfaces/lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md new file mode 100644 index 0000000..9305121 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md @@ -0,0 +1,110 @@ +# Interface: KubePersistentVolumeClaim + +[lib/k8s/persistentVolumeClaim](../modules/lib_k8s_persistentVolumeClaim.md).KubePersistentVolumeClaim + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubePersistentVolumeClaim`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• `Optional` **spec**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `accessModes?` | `string`[] | +| `resources?` | { `limits?`: `object` ; `requests`: { `[other: string]`: `any`; `storage?`: `string` } } | +| `resources.limits?` | `object` | +| `resources.requests` | { `[other: string]`: `any`; `storage?`: `string` } | +| `resources.requests.storage?` | `string` | +| `storageClassName?` | `string` | +| `volumeMode?` | `string` | +| `volumeName?` | `string` | + +#### Defined in + +[lib/k8s/persistentVolumeClaim.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolumeClaim.ts#L5) + +___ + +### status + +• `Optional` **status**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `accessModes?` | `string`[] | +| `capacity?` | { `storage?`: `string` } | +| `capacity.storage?` | `string` | +| `phase?` | `string` | + +#### Defined in + +[lib/k8s/persistentVolumeClaim.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/persistentVolumeClaim.ts#L19) diff --git a/docs/latest/development/api/interfaces/lib_k8s_pod.ExecOptions.md b/docs/latest/development/api/interfaces/lib_k8s_pod.ExecOptions.md new file mode 100644 index 0000000..c403914 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_pod.ExecOptions.md @@ -0,0 +1,177 @@ +# Interface: ExecOptions + +[lib/k8s/pod](../modules/lib_k8s_pod.md).ExecOptions + +## Hierarchy + +- [`StreamArgs`](lib_k8s_apiProxy.StreamArgs.md) + + ↳ **`ExecOptions`** + +## Properties + +### additionalProtocols + +• `Optional` **additionalProtocols**: `string`[] + +Additional WebSocket protocols to use when connecting. + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[additionalProtocols](lib_k8s_apiProxy.StreamArgs.md#additionalprotocols) + +#### Defined in + +[lib/k8s/apiProxy.ts:1262](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1262) + +___ + +### cluster + +• `Optional` **cluster**: `string` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[cluster](lib_k8s_apiProxy.StreamArgs.md#cluster) + +#### Defined in + +[lib/k8s/apiProxy.ts:1273](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1273) + +___ + +### command + +• `Optional` **command**: `string`[] + +#### Defined in + +[lib/k8s/pod.ts:49](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L49) + +___ + +### isJson + +• `Optional` **isJson**: `boolean` + +Whether the stream is expected to receive JSON data. + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[isJson](lib_k8s_apiProxy.StreamArgs.md#isjson) + +#### Defined in + +[lib/k8s/apiProxy.ts:1260](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1260) + +___ + +### reconnectOnFailure + +• `Optional` **reconnectOnFailure**: `boolean` + +Whether to attempt to reconnect the WebSocket connection if it fails. + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[reconnectOnFailure](lib_k8s_apiProxy.StreamArgs.md#reconnectonfailure) + +#### Defined in + +[lib/k8s/apiProxy.ts:1266](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1266) + +___ + +### stderr + +• `Optional` **stderr**: `boolean` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[stderr](lib_k8s_apiProxy.StreamArgs.md#stderr) + +#### Defined in + +[lib/k8s/apiProxy.ts:1272](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1272) + +___ + +### stdin + +• `Optional` **stdin**: `boolean` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[stdin](lib_k8s_apiProxy.StreamArgs.md#stdin) + +#### Defined in + +[lib/k8s/apiProxy.ts:1270](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1270) + +___ + +### stdout + +• `Optional` **stdout**: `boolean` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[stdout](lib_k8s_apiProxy.StreamArgs.md#stdout) + +#### Defined in + +[lib/k8s/apiProxy.ts:1271](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1271) + +___ + +### tty + +• `Optional` **tty**: `boolean` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[tty](lib_k8s_apiProxy.StreamArgs.md#tty) + +#### Defined in + +[lib/k8s/apiProxy.ts:1269](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1269) + +## Methods + +### connectCb + +▸ `Optional` **connectCb**(): `void` + +A callback function to execute when the WebSocket connection is established. + +#### Returns + +`void` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[connectCb](lib_k8s_apiProxy.StreamArgs.md#connectcb) + +#### Defined in + +[lib/k8s/apiProxy.ts:1264](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1264) + +___ + +### failCb + +▸ `Optional` **failCb**(): `void` + +A callback function to execute when the WebSocket connection fails. + +#### Returns + +`void` + +#### Inherited from + +[StreamArgs](lib_k8s_apiProxy.StreamArgs.md).[failCb](lib_k8s_apiProxy.StreamArgs.md#failcb) + +#### Defined in + +[lib/k8s/apiProxy.ts:1268](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1268) diff --git a/docs/latest/development/api/interfaces/lib_k8s_pod.KubePod.md b/docs/latest/development/api/interfaces/lib_k8s_pod.KubePod.md new file mode 100644 index 0000000..f060e87 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_pod.KubePod.md @@ -0,0 +1,99 @@ +# Interface: KubePod + +[lib/k8s/pod](../modules/lib_k8s_pod.md).KubePod + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubePod`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) + +#### Defined in + +[lib/k8s/pod.ts:32](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L32) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `conditions` | [`KubeCondition`](lib_k8s_cluster.KubeCondition.md)[] | +| `containerStatuses` | [`KubeContainerStatus`](lib_k8s_cluster.KubeContainerStatus.md)[] | +| `ephemeralContainerStatuses?` | [`KubeContainerStatus`](lib_k8s_cluster.KubeContainerStatus.md)[] | +| `hostIP` | `string` | +| `initContainerStatuses?` | [`KubeContainerStatus`](lib_k8s_cluster.KubeContainerStatus.md)[] | +| `message?` | `string` | +| `phase` | `string` | +| `qosClass?` | `string` | +| `reason?` | `string` | +| `startTime` | [`Time`](../modules/lib_k8s_cluster.md#time) | + +#### Defined in + +[lib/k8s/pod.ts:33](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L33) diff --git a/docs/latest/development/api/interfaces/lib_k8s_pod.KubePodSpec.md b/docs/latest/development/api/interfaces/lib_k8s_pod.KubePodSpec.md new file mode 100644 index 0000000..b1ef3dd --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_pod.KubePodSpec.md @@ -0,0 +1,77 @@ +# Interface: KubePodSpec + +[lib/k8s/pod](../modules/lib_k8s_pod.md).KubePodSpec + +## Properties + +### containers + +• **containers**: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/pod.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L18) + +___ + +### ephemeralContainers + +• `Optional` **ephemeralContainers**: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/pod.ts:24](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L24) + +___ + +### initContainers + +• `Optional` **initContainers**: [`KubeContainer`](lib_k8s_cluster.KubeContainer.md)[] + +#### Defined in + +[lib/k8s/pod.ts:23](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L23) + +___ + +### nodeName + +• **nodeName**: `string` + +#### Defined in + +[lib/k8s/pod.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L19) + +___ + +### nodeSelector + +• `Optional` **nodeSelector**: `Object` + +#### Index signature + +▪ [key: `string`]: `string` + +#### Defined in + +[lib/k8s/pod.ts:20](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L20) + +___ + +### readinessGates + +• `Optional` **readinessGates**: { `conditionType`: `string` }[] + +#### Defined in + +[lib/k8s/pod.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L25) + +___ + +### volumes + +• `Optional` **volumes**: [`KubeVolume`](lib_k8s_pod.KubeVolume.md)[] + +#### Defined in + +[lib/k8s/pod.ts:28](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L28) diff --git a/docs/latest/development/api/interfaces/lib_k8s_pod.KubeVolume.md b/docs/latest/development/api/interfaces/lib_k8s_pod.KubeVolume.md new file mode 100644 index 0000000..04d9266 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_pod.KubeVolume.md @@ -0,0 +1,17 @@ +# Interface: KubeVolume + +[lib/k8s/pod](../modules/lib_k8s_pod.md).KubeVolume + +## Indexable + +▪ [volumeName: `string`]: `any` + +## Properties + +### name + +• **name**: `string` + +#### Defined in + +[lib/k8s/pod.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L13) diff --git a/docs/latest/development/api/interfaces/lib_k8s_pod.LogOptions.md b/docs/latest/development/api/interfaces/lib_k8s_pod.LogOptions.md new file mode 100644 index 0000000..9503c08 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_pod.LogOptions.md @@ -0,0 +1,67 @@ +# Interface: LogOptions + +[lib/k8s/pod](../modules/lib_k8s_pod.md).LogOptions + +## Properties + +### follow + +• `Optional` **follow**: `boolean` + +Whether to follow the log stream + +#### Defined in + +[lib/k8s/pod.ts:60](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L60) + +___ + +### showPrevious + +• `Optional` **showPrevious**: `boolean` + +Whether to show the logs from previous runs of the container (only for restarted containers) + +#### Defined in + +[lib/k8s/pod.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L56) + +___ + +### showTimestamps + +• `Optional` **showTimestamps**: `boolean` + +Whether to show the timestamps in the logs + +#### Defined in + +[lib/k8s/pod.ts:58](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L58) + +___ + +### tailLines + +• `Optional` **tailLines**: `number` + +The number of lines to display from the end side of the log + +#### Defined in + +[lib/k8s/pod.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L54) + +## Methods + +### onReconnectStop + +▸ `Optional` **onReconnectStop**(): `void` + +Callback to be called when the reconnection attempts stop + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/pod.ts:62](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/pod.ts#L62) diff --git a/docs/latest/development/api/interfaces/lib_k8s_podDisruptionBudget.KubePDB.md b/docs/latest/development/api/interfaces/lib_k8s_podDisruptionBudget.KubePDB.md new file mode 100644 index 0000000..d77e28d --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_podDisruptionBudget.KubePDB.md @@ -0,0 +1,105 @@ +# Interface: KubePDB + +[lib/k8s/podDisruptionBudget](../modules/lib_k8s_podDisruptionBudget.md).KubePDB + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubePDB`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `maxUnavailable?` | `number` | +| `minAvailable?` | `number` | +| `selector` | { `matchExpressions?`: { `key`: `string` ; `operator`: `string` ; `values`: `string`[] } ; `matchLabels`: { `[key: string]`: `string`; } } | +| `selector.matchExpressions?` | { `key`: `string` ; `operator`: `string` ; `values`: `string`[] } | +| `selector.matchExpressions.key` | `string` | +| `selector.matchExpressions.operator` | `string` | +| `selector.matchExpressions.values` | `string`[] | +| `selector.matchLabels` | { `[key: string]`: `string`; } | + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L5) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `conditions` | { `lastTransitionTime`: `string` ; `message`: `string` ; `observedGeneration`: `number` ; `reason`: `string` ; `status`: `string` ; `type`: `string` }[] | +| `currentHealthy` | `number` | +| `desiredHealthy` | `number` | +| `disruptedPods?` | { `[key: string]`: `string`; } | +| `disruptionsAllowed` | `number` | +| `expectedPods` | `number` | +| `observedGeneration` | `number` | + +#### Defined in + +[lib/k8s/podDisruptionBudget.ts:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/podDisruptionBudget.ts#L19) diff --git a/docs/latest/development/api/interfaces/lib_k8s_priorityClass.KubePriorityClass.md b/docs/latest/development/api/interfaces/lib_k8s_priorityClass.KubePriorityClass.md new file mode 100644 index 0000000..68874e9 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_priorityClass.KubePriorityClass.md @@ -0,0 +1,100 @@ +# Interface: KubePriorityClass + +[lib/k8s/priorityClass](../modules/lib_k8s_priorityClass.md).KubePriorityClass + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubePriorityClass`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### description + +• **description**: `string` + +#### Defined in + +[lib/k8s/priorityClass.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L8) + +___ + +### globalDefault + +• `Optional` **globalDefault**: `boolean` + +#### Defined in + +[lib/k8s/priorityClass.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L7) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### preemptionPolicy + +• **preemptionPolicy**: `string` + +#### Defined in + +[lib/k8s/priorityClass.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L6) + +___ + +### value + +• **value**: `number` + +#### Defined in + +[lib/k8s/priorityClass.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClass.ts#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_replicaSet.KubeReplicaSet.md b/docs/latest/development/api/interfaces/lib_k8s_replicaSet.KubeReplicaSet.md new file mode 100644 index 0000000..68f02bc --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_replicaSet.KubeReplicaSet.md @@ -0,0 +1,106 @@ +# Interface: KubeReplicaSet + +[lib/k8s/replicaSet](../modules/lib_k8s_replicaSet.md).KubeReplicaSet + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeReplicaSet`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `minReadySeconds` | `number` | +| `replicas` | `number` | +| `selector` | [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) | +| `template` | { `metadata?`: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata?` | [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) | + +#### Defined in + +[lib/k8s/replicaSet.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L13) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `availableReplicas` | `number` | +| `conditions` | `Omit`<[`KubeCondition`](lib_k8s_cluster.KubeCondition.md), ``"lastProbeTime"`` \| ``"lastUpdateTime"``\>[] | +| `fullyLabeledReplicas` | `number` | +| `observedGeneration` | `number` | +| `readyReplicas` | `number` | +| `replicas` | `number` | + +#### Defined in + +[lib/k8s/replicaSet.ts:23](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/replicaSet.ts#L23) diff --git a/docs/latest/development/api/interfaces/lib_k8s_resourceQuota.KubeResourceQuota.md b/docs/latest/development/api/interfaces/lib_k8s_resourceQuota.KubeResourceQuota.md new file mode 100644 index 0000000..d38f5b1 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_resourceQuota.KubeResourceQuota.md @@ -0,0 +1,80 @@ +# Interface: KubeResourceQuota + +[lib/k8s/resourceQuota](../modules/lib_k8s_resourceQuota.md).KubeResourceQuota + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeResourceQuota`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `spec` + +#### Defined in + +[lib/k8s/resourceQuota.ts:29](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L29) + +___ + +### status + +• **status**: `status` + +#### Defined in + +[lib/k8s/resourceQuota.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/resourceQuota.ts#L30) diff --git a/docs/latest/development/api/interfaces/lib_k8s_role.KubeRole.md b/docs/latest/development/api/interfaces/lib_k8s_role.KubeRole.md new file mode 100644 index 0000000..ef1e8b3 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_role.KubeRole.md @@ -0,0 +1,80 @@ +# Interface: KubeRole + +[lib/k8s/role](../modules/lib_k8s_role.md).KubeRole + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeRole`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### rules + +• **rules**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiGroups` | `string`[] | +| `nonResourceURLs` | `string`[] | +| `resourceNames` | `string`[] | +| `resources` | `string`[] | +| `verbs` | `string`[] | + +#### Defined in + +[lib/k8s/role.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/role.ts#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_roleBinding.KubeRoleBinding.md b/docs/latest/development/api/interfaces/lib_k8s_roleBinding.KubeRoleBinding.md new file mode 100644 index 0000000..19ea4f7 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_roleBinding.KubeRoleBinding.md @@ -0,0 +1,88 @@ +# Interface: KubeRoleBinding + +[lib/k8s/roleBinding](../modules/lib_k8s_roleBinding.md).KubeRoleBinding + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeRoleBinding`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### roleRef + +• **roleRef**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `apiGroup` | `string` | +| `kind` | `string` | +| `name` | `string` | + +#### Defined in + +[lib/k8s/roleBinding.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L5) + +___ + +### subjects + +• **subjects**: { `apiGroup`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` }[] + +#### Defined in + +[lib/k8s/roleBinding.ts:10](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/roleBinding.ts#L10) diff --git a/docs/latest/development/api/interfaces/lib_k8s_runtime.KubeRuntimeClass.md b/docs/latest/development/api/interfaces/lib_k8s_runtime.KubeRuntimeClass.md new file mode 100644 index 0000000..23d8430 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_runtime.KubeRuntimeClass.md @@ -0,0 +1,70 @@ +# Interface: KubeRuntimeClass + +[lib/k8s/runtime](../modules/lib_k8s_runtime.md).KubeRuntimeClass + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeRuntimeClass`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### handler + +• **handler**: `string` + +#### Defined in + +[lib/k8s/runtime.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/runtime.ts#L5) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) diff --git a/docs/latest/development/api/interfaces/lib_k8s_secret.KubeSecret.md b/docs/latest/development/api/interfaces/lib_k8s_secret.KubeSecret.md new file mode 100644 index 0000000..7ea9614 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_secret.KubeSecret.md @@ -0,0 +1,80 @@ +# Interface: KubeSecret + +[lib/k8s/secret](../modules/lib_k8s_secret.md).KubeSecret + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeSecret`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### data + +• **data**: [`StringDict`](lib_k8s_cluster.StringDict.md) + +#### Defined in + +[lib/k8s/secret.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/secret.ts#L5) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### type + +• **type**: `string` + +#### Defined in + +[lib/k8s/secret.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/secret.ts#L6) diff --git a/docs/latest/development/api/interfaces/lib_k8s_service.KubeLoadBalancerIngress.md b/docs/latest/development/api/interfaces/lib_k8s_service.KubeLoadBalancerIngress.md new file mode 100644 index 0000000..c76c123 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_service.KubeLoadBalancerIngress.md @@ -0,0 +1,33 @@ +# Interface: KubeLoadBalancerIngress + +[lib/k8s/service](../modules/lib_k8s_service.md).KubeLoadBalancerIngress + +## Properties + +### hostname + +• `Optional` **hostname**: `string` + +#### Defined in + +[lib/k8s/service.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L12) + +___ + +### ip + +• `Optional` **ip**: `string` + +#### Defined in + +[lib/k8s/service.ts:13](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L13) + +___ + +### ports + +• `Optional` **ports**: [`KubePortStatus`](lib_k8s_service.KubePortStatus.md)[] + +#### Defined in + +[lib/k8s/service.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L14) diff --git a/docs/latest/development/api/interfaces/lib_k8s_service.KubePortStatus.md b/docs/latest/development/api/interfaces/lib_k8s_service.KubePortStatus.md new file mode 100644 index 0000000..bb5c488 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_service.KubePortStatus.md @@ -0,0 +1,33 @@ +# Interface: KubePortStatus + +[lib/k8s/service](../modules/lib_k8s_service.md).KubePortStatus + +## Properties + +### error + +• `Optional` **error**: `string` + +#### Defined in + +[lib/k8s/service.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L6) + +___ + +### port + +• **port**: `number` + +#### Defined in + +[lib/k8s/service.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L7) + +___ + +### protocol + +• **protocol**: `string` + +#### Defined in + +[lib/k8s/service.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L8) diff --git a/docs/latest/development/api/interfaces/lib_k8s_service.KubeService.md b/docs/latest/development/api/interfaces/lib_k8s_service.KubeService.md new file mode 100644 index 0000000..cb73d9a --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_service.KubeService.md @@ -0,0 +1,102 @@ +# Interface: KubeService + +[lib/k8s/service](../modules/lib_k8s_service.md).KubeService + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeService`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `clusterIP` | `string` | +| `externalIPs` | `string`[] | +| `ports` | { `name`: `string` ; `nodePort`: `number` ; `port`: `number` ; `protocol`: `string` ; `targetPort`: `string` \| `number` }[] | +| `selector` | { `[key: string]`: `string`; } | +| `type` | `string` | + +#### Defined in + +[lib/k8s/service.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L18) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `conditions?` | [`KubeCondition`](lib_k8s_cluster.KubeCondition.md)[] | +| `loadBalancer?` | { `ingress`: [`KubeLoadBalancerIngress`](lib_k8s_service.KubeLoadBalancerIngress.md)[] } | +| `loadBalancer.ingress` | [`KubeLoadBalancerIngress`](lib_k8s_service.KubeLoadBalancerIngress.md)[] | + +#### Defined in + +[lib/k8s/service.ts:34](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/service.ts#L34) diff --git a/docs/latest/development/api/interfaces/lib_k8s_serviceAccount.KubeServiceAccount.md b/docs/latest/development/api/interfaces/lib_k8s_serviceAccount.KubeServiceAccount.md new file mode 100644 index 0000000..930dbe6 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_serviceAccount.KubeServiceAccount.md @@ -0,0 +1,70 @@ +# Interface: KubeServiceAccount + +[lib/k8s/serviceAccount](../modules/lib_k8s_serviceAccount.md).KubeServiceAccount + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeServiceAccount`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### secrets + +• **secrets**: { `apiVersion`: `string` ; `fieldPath`: `string` ; `kind`: `string` ; `name`: `string` ; `namespace`: `string` ; `uid`: `string` }[] + +#### Defined in + +[lib/k8s/serviceAccount.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/serviceAccount.ts#L5) diff --git a/docs/latest/development/api/interfaces/lib_k8s_statefulSet.KubeStatefulSet.md b/docs/latest/development/api/interfaces/lib_k8s_statefulSet.KubeStatefulSet.md new file mode 100644 index 0000000..66f379b --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_statefulSet.KubeStatefulSet.md @@ -0,0 +1,101 @@ +# Interface: KubeStatefulSet + +[lib/k8s/statefulSet](../modules/lib_k8s_statefulSet.md).KubeStatefulSet + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeStatefulSet`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Index signature + +▪ [other: `string`]: `any` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `selector` | [`LabelSelector`](lib_k8s_cluster.LabelSelector.md) | +| `template` | { `metadata`: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) ; `spec`: [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) } | +| `template.metadata` | [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) | +| `template.spec` | [`KubePodSpec`](lib_k8s_pod.KubePodSpec.md) | +| `updateStrategy` | { `rollingUpdate`: { `partition`: `number` } ; `type`: `string` } | +| `updateStrategy.rollingUpdate` | { `partition`: `number` } | +| `updateStrategy.rollingUpdate.partition` | `number` | +| `updateStrategy.type` | `string` | + +#### Defined in + +[lib/k8s/statefulSet.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L12) + +___ + +### status + +• **status**: `Object` + +#### Index signature + +▪ [otherProps: `string`]: `any` + +#### Defined in + +[lib/k8s/statefulSet.ts:26](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/statefulSet.ts#L26) diff --git a/docs/latest/development/api/interfaces/lib_k8s_storageClass.KubeStorageClass.md b/docs/latest/development/api/interfaces/lib_k8s_storageClass.KubeStorageClass.md new file mode 100644 index 0000000..7bd3902 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_storageClass.KubeStorageClass.md @@ -0,0 +1,90 @@ +# Interface: KubeStorageClass + +[lib/k8s/storageClass](../modules/lib_k8s_storageClass.md).KubeStorageClass + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeStorageClass`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### provisioner + +• **provisioner**: `string` + +#### Defined in + +[lib/k8s/storageClass.ts:5](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L5) + +___ + +### reclaimPolicy + +• **reclaimPolicy**: `string` + +#### Defined in + +[lib/k8s/storageClass.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L6) + +___ + +### volumeBindingMode + +• **volumeBindingMode**: `string` + +#### Defined in + +[lib/k8s/storageClass.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/storageClass.ts#L7) diff --git a/docs/latest/development/api/interfaces/lib_k8s_token.KubeToken.md b/docs/latest/development/api/interfaces/lib_k8s_token.KubeToken.md new file mode 100644 index 0000000..9457ecd --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_token.KubeToken.md @@ -0,0 +1,94 @@ +# Interface: KubeToken + +[lib/k8s/token](../modules/lib_k8s_token.md).KubeToken + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeToken`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `audiences` | `string`[] | +| `expirationSeconds` | `number` | + +#### Defined in + +[lib/k8s/token.ts:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/token.ts#L8) + +___ + +### status + +• **status**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `expirationTimestamp` | `string` | +| `token` | `string` | + +#### Defined in + +[lib/k8s/token.ts:4](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/token.ts#L4) diff --git a/docs/latest/development/api/interfaces/lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md b/docs/latest/development/api/interfaces/lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md new file mode 100644 index 0000000..b282108 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md @@ -0,0 +1,70 @@ +# Interface: KubeValidatingWebhookConfiguration + +[lib/k8s/validatingWebhookConfiguration](../modules/lib_k8s_validatingWebhookConfiguration.md).KubeValidatingWebhookConfiguration + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeValidatingWebhookConfiguration`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### webhooks + +• **webhooks**: { `admissionReviewVersions`: `string`[] ; `clientConfig`: [`KubeWebhookClientConfig`](lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) ; `failurePolicy?`: `string` ; `matchPolicy?`: `string` ; `name`: `string` ; `namespaceSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `objectSelector?`: { `matchExpressions`: `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] ; `matchLabels`: `undefined` \| { `[key: string]`: `string`; } } ; `rules?`: [`KubeRuleWithOperations`](lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md)[] ; `sideEffects?`: `string` ; `timeoutSeconds?`: `number` }[] + +#### Defined in + +[lib/k8s/validatingWebhookConfiguration.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/validatingWebhookConfiguration.ts#L6) diff --git a/docs/latest/development/api/interfaces/lib_k8s_vpa.KubeVPA.md b/docs/latest/development/api/interfaces/lib_k8s_vpa.KubeVPA.md new file mode 100644 index 0000000..c468761 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_k8s_vpa.KubeVPA.md @@ -0,0 +1,80 @@ +# Interface: KubeVPA + +[lib/k8s/vpa](../modules/lib_k8s_vpa.md).KubeVPA + +## Hierarchy + +- [`KubeObjectInterface`](lib_k8s_cluster.KubeObjectInterface.md) + + ↳ **`KubeVPA`** + +## Properties + +### apiVersion + +• `Optional` **apiVersion**: `string` + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[apiVersion](lib_k8s_cluster.KubeObjectInterface.md#apiversion) + +#### Defined in + +[lib/k8s/cluster.ts:55](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L55) + +___ + +### kind + +• **kind**: `string` + +Kind is a string value representing the REST resource this object represents. +Servers may infer this from the endpoint the client submits requests to. + +In CamelCase. + +Cannot be updated. + +**`see`** [more info](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[kind](lib_k8s_cluster.KubeObjectInterface.md#kind) + +#### Defined in + +[lib/k8s/cluster.ts:54](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L54) + +___ + +### metadata + +• **metadata**: [`KubeMetadata`](lib_k8s_cluster.KubeMetadata.md) + +#### Inherited from + +[KubeObjectInterface](lib_k8s_cluster.KubeObjectInterface.md).[metadata](lib_k8s_cluster.KubeObjectInterface.md#metadata) + +#### Defined in + +[lib/k8s/cluster.ts:56](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/cluster.ts#L56) + +___ + +### spec + +• **spec**: `VpaSpec` + +#### Defined in + +[lib/k8s/vpa.ts:75](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L75) + +___ + +### status + +• **status**: `VpaStatus` + +#### Defined in + +[lib/k8s/vpa.ts:76](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/vpa.ts#L76) diff --git a/docs/latest/development/api/interfaces/lib_router.Route.md b/docs/latest/development/api/interfaces/lib_router.Route.md new file mode 100644 index 0000000..ad5aba2 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_router.Route.md @@ -0,0 +1,129 @@ +# Interface: Route + +[lib/router](../modules/lib_router.md).Route + +## Properties + +### disabled + +• `Optional` **disabled**: `boolean` + +Whether the route should be disabled (not registered). + +#### Defined in + +[lib/router.tsx:118](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L118) + +___ + +### exact + +• `Optional` **exact**: `boolean` + +When true, will only match if the path matches the location.pathname exactly. + +#### Defined in + +[lib/router.tsx:97](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L97) + +___ + +### hideAppBar + +• `Optional` **hideAppBar**: `boolean` + +Hide the appbar at the top. + +#### Defined in + +[lib/router.tsx:116](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L116) + +___ + +### name + +• `Optional` **name**: `string` + +Human readable name. Capitalized and short. + +#### Defined in + +[lib/router.tsx:99](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L99) + +___ + +### noAuthRequired + +• `Optional` **noAuthRequired**: `boolean` + +This route does not require Authentication. + +#### Defined in + +[lib/router.tsx:110](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L110) + +___ + +### noCluster + +• `Optional` **noCluster**: `boolean` + +In case this route does *not* need a cluster prefix and context. + +**`deprecated`** please use useClusterURL. + +#### Defined in + +[lib/router.tsx:104](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L104) + +___ + +### path + +• **path**: `string` + +Any valid URL path or array of paths that path-to-regexp@^1.7.0 understands. + +#### Defined in + +[lib/router.tsx:95](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L95) + +___ + +### sidebar + +• **sidebar**: ``null`` \| `string` \| { `item`: ``null`` \| `string` ; `sidebar`: `string` } + +The sidebar entry this Route should enable, or null if it shouldn't enable any. If an object is passed with item and sidebar, it will try to enable the given sidebar and the given item. + +#### Defined in + +[lib/router.tsx:112](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L112) + +___ + +### useClusterURL + +• `Optional` **useClusterURL**: `boolean` + +Should URL have the cluster prefix? (default=true) + +#### Defined in + +[lib/router.tsx:108](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L108) + +## Methods + +### component + +▸ **component**(): `Element` + +Shown component for this route. + +#### Returns + +`Element` + +#### Defined in + +[lib/router.tsx:114](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L114) diff --git a/docs/latest/development/api/interfaces/lib_router.RouteURLProps.md b/docs/latest/development/api/interfaces/lib_router.RouteURLProps.md new file mode 100644 index 0000000..05886dc --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_router.RouteURLProps.md @@ -0,0 +1,17 @@ +# Interface: RouteURLProps + +[lib/router](../modules/lib_router.md).RouteURLProps + +## Indexable + +▪ [prop: `string`]: `any` + +## Properties + +### cluster + +• `Optional` **cluster**: `string` + +#### Defined in + +[lib/router.tsx:815](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L815) diff --git a/docs/latest/development/api/interfaces/lib_util.TimeAgoOptions.md b/docs/latest/development/api/interfaces/lib_util.TimeAgoOptions.md new file mode 100644 index 0000000..33c8f67 --- /dev/null +++ b/docs/latest/development/api/interfaces/lib_util.TimeAgoOptions.md @@ -0,0 +1,13 @@ +# Interface: TimeAgoOptions + +[lib/util](../modules/lib_util.md).TimeAgoOptions + +## Properties + +### format + +• `Optional` **format**: [`DateFormatOptions`](../modules/lib_util.md#dateformatoptions) + +#### Defined in + +[lib/util.ts:36](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L36) diff --git a/docs/latest/development/api/interfaces/plugin_lib.AppMenu.md b/docs/latest/development/api/interfaces/plugin_lib.AppMenu.md new file mode 100644 index 0000000..01f801c --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_lib.AppMenu.md @@ -0,0 +1,37 @@ +# Interface: AppMenu + +[plugin/lib](../modules/plugin_lib.md).AppMenu + +The members of AppMenu should be the same as the options for the MenuItem in https://www.electronjs.org/docs/latest/api/menu-item +except for the "submenu" (which is the AppMenu type) and "click" (which is not supported here, use the +"url" field instead). + +## Indexable + +▪ [key: `string`]: `any` + +Any other members from Electron's MenuItem. + +## Properties + +### submenu + +• `Optional` **submenu**: [`AppMenu`](plugin_lib.AppMenu.md)[] + +The submenus of this menu + +#### Defined in + +[plugin/lib.ts:74](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L74) + +___ + +### url + +• `Optional` **url**: `string` + +A URL to open (if not starting with http, then it'll be opened in the external browser) + +#### Defined in + +[plugin/lib.ts:72](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/lib.ts#L72) diff --git a/docs/latest/development/api/interfaces/plugin_registry.AppLogoProps.md b/docs/latest/development/api/interfaces/plugin_registry.AppLogoProps.md new file mode 100644 index 0000000..7556443 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.AppLogoProps.md @@ -0,0 +1,55 @@ +# Interface: AppLogoProps + +[plugin/registry](../modules/plugin_registry.md).AppLogoProps + +## Indexable + +▪ [key: `string`]: `any` + +## Properties + +### className + +• `Optional` **className**: `string` + +A class to use on your SVG. + +#### Defined in + +[components/App/AppLogo.tsx:19](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/App/AppLogo.tsx#L19) + +___ + +### logoType + +• `Optional` **logoType**: ``"small"`` \| ``"large"`` + +The size of the logo. 'small' for in mobile view, and 'large' for tablet and desktop sizes. By default the 'large' is used. + +#### Defined in + +[components/App/AppLogo.tsx:15](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/App/AppLogo.tsx#L15) + +___ + +### sx + +• `Optional` **sx**: `SxProps`<`Theme`\> + +SxProps to use on your SVG. + +#### Defined in + +[components/App/AppLogo.tsx:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/App/AppLogo.tsx#L21) + +___ + +### themeName + +• `Optional` **themeName**: ``"dark"`` \| ``"light"`` + +User selected theme. By default it checks which is is active. + +#### Defined in + +[components/App/AppLogo.tsx:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/App/AppLogo.tsx#L17) diff --git a/docs/latest/development/api/interfaces/plugin_registry.ClusterChooserProps.md b/docs/latest/development/api/interfaces/plugin_registry.ClusterChooserProps.md new file mode 100644 index 0000000..4644fc0 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.ClusterChooserProps.md @@ -0,0 +1,33 @@ +# Interface: ClusterChooserProps + +[plugin/registry](../modules/plugin_registry.md).ClusterChooserProps + +## Properties + +### cluster + +• `Optional` **cluster**: `string` + +#### Defined in + +[components/cluster/ClusterChooser.tsx:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/cluster/ClusterChooser.tsx#L8) + +## Methods + +### clickHandler + +▸ **clickHandler**(`event?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event?` | `MouseEvent`<`HTMLButtonElement`, `MouseEvent`\> | + +#### Returns + +`void` + +#### Defined in + +[components/cluster/ClusterChooser.tsx:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/cluster/ClusterChooser.tsx#L7) diff --git a/docs/latest/development/api/interfaces/plugin_registry.CreateResourceEvent.md b/docs/latest/development/api/interfaces/plugin_registry.CreateResourceEvent.md new file mode 100644 index 0000000..aef5bbe --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.CreateResourceEvent.md @@ -0,0 +1,31 @@ +# Interface: CreateResourceEvent + +[plugin/registry](../modules/plugin_registry.md).CreateResourceEvent + +Event fired when creating a resource. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `status` | `CONFIRMED` | What exactly this event represents. 'CONFIRMED' when the user chooses to apply the new resource. For now only 'CONFIRMED' is sent. | + +#### Defined in + +[redux/headlampEventSlice.ts:193](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L193) + +___ + +### type + +• **type**: `CREATE_RESOURCE` + +#### Defined in + +[redux/headlampEventSlice.ts:192](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L192) diff --git a/docs/latest/development/api/interfaces/plugin_registry.DeleteResourceEvent.md b/docs/latest/development/api/interfaces/plugin_registry.DeleteResourceEvent.md new file mode 100644 index 0000000..5f07a16 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.DeleteResourceEvent.md @@ -0,0 +1,46 @@ +# Interface: DeleteResourceEvent + +[plugin/registry](../modules/plugin_registry.md).DeleteResourceEvent + +Event fired when a resource is to be deleted. + +## Hierarchy + +- [`HeadlampEvent`](plugin_registry.HeadlampEvent.md)<`HeadlampEventType.DELETE_RESOURCE`\> + + ↳ **`DeleteResourceEvent`** + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource` | `any` | The resource for which the deletion was called. | +| `status` | `CONFIRMED` | What exactly this event represents. 'CONFIRMED' when the user confirms the deletion of a resource. For now only 'CONFIRMED' is sent. | + +#### Overrides + +[HeadlampEvent](plugin_registry.HeadlampEvent.md).[data](plugin_registry.HeadlampEvent.md#data) + +#### Defined in + +[redux/headlampEventSlice.ts:85](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L85) + +___ + +### type + +• **type**: `DELETE_RESOURCE` + +#### Inherited from + +[HeadlampEvent](plugin_registry.HeadlampEvent.md).[type](plugin_registry.HeadlampEvent.md#type) + +#### Defined in + +[redux/headlampEventSlice.ts:68](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L68) diff --git a/docs/latest/development/api/interfaces/plugin_registry.DetailsViewSectionProps.md b/docs/latest/development/api/interfaces/plugin_registry.DetailsViewSectionProps.md new file mode 100644 index 0000000..0a574dc --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.DetailsViewSectionProps.md @@ -0,0 +1,13 @@ +# Interface: DetailsViewSectionProps + +[plugin/registry](../modules/plugin_registry.md).DetailsViewSectionProps + +## Properties + +### resource + +• **resource**: `any` + +#### Defined in + +[components/DetailsViewSection/DetailsViewSection.tsx:8](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/DetailsViewSection/DetailsViewSection.tsx#L8) diff --git a/docs/latest/development/api/interfaces/plugin_registry.EditResourceEvent.md b/docs/latest/development/api/interfaces/plugin_registry.EditResourceEvent.md new file mode 100644 index 0000000..e1f9e97 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.EditResourceEvent.md @@ -0,0 +1,32 @@ +# Interface: EditResourceEvent + +[plugin/registry](../modules/plugin_registry.md).EditResourceEvent + +Event fired when editing a resource. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource` | `any` | The resource for which the deletion was called. | +| `status` | `OPENED` \| `CLOSED` | What exactly this event represents. 'OPEN' when the edit dialog is opened. 'CLOSED' when it is closed. | + +#### Defined in + +[redux/headlampEventSlice.ts:100](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L100) + +___ + +### type + +• **type**: `EDIT_RESOURCE` + +#### Defined in + +[redux/headlampEventSlice.ts:99](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L99) diff --git a/docs/latest/development/api/interfaces/plugin_registry.ErrorBoundaryEvent.md b/docs/latest/development/api/interfaces/plugin_registry.ErrorBoundaryEvent.md new file mode 100644 index 0000000..86e320d --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.ErrorBoundaryEvent.md @@ -0,0 +1,27 @@ +# Interface: ErrorBoundaryEvent + +[plugin/registry](../modules/plugin_registry.md).ErrorBoundaryEvent + +Event fired when an error boundary is triggered. + +## Properties + +### data + +• **data**: `Error` + +The error that was thrown. + +#### Defined in + +[redux/headlampEventSlice.ts:78](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L78) + +___ + +### type + +• **type**: `ERROR_BOUNDARY` + +#### Defined in + +[redux/headlampEventSlice.ts:76](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L76) diff --git a/docs/latest/development/api/interfaces/plugin_registry.EventListEvent.md b/docs/latest/development/api/interfaces/plugin_registry.EventListEvent.md new file mode 100644 index 0000000..cce298f --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.EventListEvent.md @@ -0,0 +1,32 @@ +# Interface: EventListEvent + +[plugin/registry](../modules/plugin_registry.md).EventListEvent + +Event fired when kubernetes events are loaded (for a resource or not). + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `events` | [`Event`](../classes/lib_k8s_event.Event.md)[] | The list of events that were loaded. | +| `resource?` | `any` | The resource for which the events were loaded. | + +#### Defined in + +[redux/headlampEventSlice.ts:270](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L270) + +___ + +### type + +• **type**: `OBJECT_EVENTS` + +#### Defined in + +[redux/headlampEventSlice.ts:269](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L269) diff --git a/docs/latest/development/api/interfaces/plugin_registry.HeadlampEvent.md b/docs/latest/development/api/interfaces/plugin_registry.HeadlampEvent.md new file mode 100644 index 0000000..e2584a1 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.HeadlampEvent.md @@ -0,0 +1,37 @@ +# Interface: HeadlampEvent + +[plugin/registry](../modules/plugin_registry.md).HeadlampEvent + +Represents a Headlamp event. It can be one of the default events or a custom event. + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `EventType` | `HeadlampEventType` \| `string` | + +## Hierarchy + +- **`HeadlampEvent`** + + ↳ [`DeleteResourceEvent`](plugin_registry.DeleteResourceEvent.md) + +## Properties + +### data + +• `Optional` **data**: `unknown` + +#### Defined in + +[redux/headlampEventSlice.ts:69](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L69) + +___ + +### type + +• **type**: `EventType` + +#### Defined in + +[redux/headlampEventSlice.ts:68](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L68) diff --git a/docs/latest/development/api/interfaces/plugin_registry.LogsEvent.md b/docs/latest/development/api/interfaces/plugin_registry.LogsEvent.md new file mode 100644 index 0000000..faa8306 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.LogsEvent.md @@ -0,0 +1,32 @@ +# Interface: LogsEvent + +[plugin/registry](../modules/plugin_registry.md).LogsEvent + +Event fired when viewing pod logs. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource?` | `any` | The resource for which the terminal was opened (currently this only happens for Pod instances). | +| `status` | `OPENED` \| `CLOSED` | What exactly this event represents. 'OPEN' when the logs dialog is opened. 'CLOSED' when it is closed. | + +#### Defined in + +[redux/headlampEventSlice.ts:145](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L145) + +___ + +### type + +• **type**: `LOGS` + +#### Defined in + +[redux/headlampEventSlice.ts:144](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L144) diff --git a/docs/latest/development/api/interfaces/plugin_registry.PluginLoadingErrorEvent.md b/docs/latest/development/api/interfaces/plugin_registry.PluginLoadingErrorEvent.md new file mode 100644 index 0000000..51d62b4 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.PluginLoadingErrorEvent.md @@ -0,0 +1,34 @@ +# Interface: PluginLoadingErrorEvent + +[plugin/registry](../modules/plugin_registry.md).PluginLoadingErrorEvent + +Event fired when there is an error while loading a plugin. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `error` | `Error` | The error that occurred while loading the plugin. | +| `pluginInfo` | { `name`: `string` ; `version`: `string` } | Information about the plugin. | +| `pluginInfo.name` | `string` | The name of the plugin. | +| `pluginInfo.version` | `string` | The version of the plugin. | + +#### Defined in + +[redux/headlampEventSlice.ts:206](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L206) + +___ + +### type + +• **type**: `PLUGIN_LOADING_ERROR` + +#### Defined in + +[redux/headlampEventSlice.ts:205](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L205) diff --git a/docs/latest/development/api/interfaces/plugin_registry.PluginSettingsDetailsProps.md b/docs/latest/development/api/interfaces/plugin_registry.PluginSettingsDetailsProps.md new file mode 100644 index 0000000..91f9b22 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.PluginSettingsDetailsProps.md @@ -0,0 +1,44 @@ +# Interface: PluginSettingsDetailsProps + +[plugin/registry](../modules/plugin_registry.md).PluginSettingsDetailsProps + +Props for PluginSettingsDetailsProps component. + +## Properties + +### data + +• `Optional` `Readonly` **data**: `Object` + +Data object representing the current state/configuration. +readonly - The data object is readonly and cannot be modified. + +#### Index signature + +▪ [key: `string`]: `any` + +#### Defined in + +[plugin/pluginsSlice.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/pluginsSlice.ts#L18) + +## Methods + +### onDataChange + +▸ `Optional` **onDataChange**(`data`): `void` + +Callback function to be triggered when there's a change in data. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | `Object` | The updated data object. | + +#### Returns + +`void` + +#### Defined in + +[plugin/pluginsSlice.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/pluginsSlice.ts#L12) diff --git a/docs/latest/development/api/interfaces/plugin_registry.PluginsLoadedEvent.md b/docs/latest/development/api/interfaces/plugin_registry.PluginsLoadedEvent.md new file mode 100644 index 0000000..5468180 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.PluginsLoadedEvent.md @@ -0,0 +1,31 @@ +# Interface: PluginsLoadedEvent + +[plugin/registry](../modules/plugin_registry.md).PluginsLoadedEvent + +Event fired when all plugins are loaded. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `plugins` | { `isEnabled`: `boolean` ; `name`: `string` ; `version`: `string` }[] | The list of loaded plugins. | + +#### Defined in + +[redux/headlampEventSlice.ts:224](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L224) + +___ + +### type + +• **type**: `PLUGINS_LOADED` + +#### Defined in + +[redux/headlampEventSlice.ts:223](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L223) diff --git a/docs/latest/development/api/interfaces/plugin_registry.PodAttachEvent.md b/docs/latest/development/api/interfaces/plugin_registry.PodAttachEvent.md new file mode 100644 index 0000000..83c4a65 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.PodAttachEvent.md @@ -0,0 +1,32 @@ +# Interface: PodAttachEvent + +[plugin/registry](../modules/plugin_registry.md).PodAttachEvent + +Event fired when attaching to a pod. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource?` | [`Pod`](../classes/lib_k8s_pod.Pod.md) | The resource for which the terminal was opened (currently this only happens for Pod instances). | +| `status` | `OPENED` \| `CLOSED` | What exactly this event represents. 'OPEN' when the attach dialog is opened. 'CLOSED' when it is closed. | + +#### Defined in + +[redux/headlampEventSlice.ts:178](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L178) + +___ + +### type + +• **type**: `POD_ATTACH` + +#### Defined in + +[redux/headlampEventSlice.ts:177](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L177) diff --git a/docs/latest/development/api/interfaces/plugin_registry.ResourceDetailsViewLoadedEvent.md b/docs/latest/development/api/interfaces/plugin_registry.ResourceDetailsViewLoadedEvent.md new file mode 100644 index 0000000..9a0527c --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.ResourceDetailsViewLoadedEvent.md @@ -0,0 +1,32 @@ +# Interface: ResourceDetailsViewLoadedEvent + +[plugin/registry](../modules/plugin_registry.md).ResourceDetailsViewLoadedEvent + +Event fired when a resource is loaded in the details view. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `error?` | `Error` | The error, if an error has occurred | +| `resource` | `any` | The resource that was loaded. | + +#### Defined in + +[redux/headlampEventSlice.ts:242](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L242) + +___ + +### type + +• **type**: `DETAILS_VIEW` + +#### Defined in + +[redux/headlampEventSlice.ts:241](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L241) diff --git a/docs/latest/development/api/interfaces/plugin_registry.ResourceListViewLoadedEvent.md b/docs/latest/development/api/interfaces/plugin_registry.ResourceListViewLoadedEvent.md new file mode 100644 index 0000000..1b26033 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.ResourceListViewLoadedEvent.md @@ -0,0 +1,33 @@ +# Interface: ResourceListViewLoadedEvent + +[plugin/registry](../modules/plugin_registry.md).ResourceListViewLoadedEvent + +Event fired when a list view is loaded for a resource. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `error?` | `Error` | The error, if an error has occurred | +| `resourceKind` | `string` | The kind of resource that was loaded. | +| `resources` | `any`[] | The list of resources that were loaded. | + +#### Defined in + +[redux/headlampEventSlice.ts:255](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L255) + +___ + +### type + +• **type**: `LIST_VIEW` + +#### Defined in + +[redux/headlampEventSlice.ts:254](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L254) diff --git a/docs/latest/development/api/interfaces/plugin_registry.RestartResourceEvent.md b/docs/latest/development/api/interfaces/plugin_registry.RestartResourceEvent.md new file mode 100644 index 0000000..cae7112 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.RestartResourceEvent.md @@ -0,0 +1,32 @@ +# Interface: RestartResourceEvent + +[plugin/registry](../modules/plugin_registry.md).RestartResourceEvent + +Event fired when restarting a resource. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource` | `any` | The resource for which the deletion was called. | +| `status` | `CONFIRMED` | What exactly this event represents. 'CONFIRMED' when the restart is selected by the user. For now only 'CONFIRMED' is sent. | + +#### Defined in + +[redux/headlampEventSlice.ts:130](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L130) + +___ + +### type + +• **type**: `RESTART_RESOURCE` + +#### Defined in + +[redux/headlampEventSlice.ts:129](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L129) diff --git a/docs/latest/development/api/interfaces/plugin_registry.ScaleResourceEvent.md b/docs/latest/development/api/interfaces/plugin_registry.ScaleResourceEvent.md new file mode 100644 index 0000000..6c982a1 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.ScaleResourceEvent.md @@ -0,0 +1,32 @@ +# Interface: ScaleResourceEvent + +[plugin/registry](../modules/plugin_registry.md).ScaleResourceEvent + +Event fired when scaling a resource. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource` | `any` | The resource for which the deletion was called. | +| `status` | `CONFIRMED` | What exactly this event represents. 'CONFIRMED' when the scaling is selected by the user. For now only 'CONFIRMED' is sent. | + +#### Defined in + +[redux/headlampEventSlice.ts:115](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L115) + +___ + +### type + +• **type**: `SCALE_RESOURCE` + +#### Defined in + +[redux/headlampEventSlice.ts:114](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L114) diff --git a/docs/latest/development/api/interfaces/plugin_registry.SectionFuncProps.md b/docs/latest/development/api/interfaces/plugin_registry.SectionFuncProps.md new file mode 100644 index 0000000..1e0f454 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.SectionFuncProps.md @@ -0,0 +1,34 @@ +# Interface: SectionFuncProps + +[plugin/registry](../modules/plugin_registry.md).SectionFuncProps + +## Properties + +### title + +• **title**: `string` + +#### Defined in + +[plugin/registry.tsx:68](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L68) + +## Methods + +### component + +▸ **component**(`props`): ``null`` \| `Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `Object` | +| `props.resource` | `any` | + +#### Returns + +``null`` \| `Element` + +#### Defined in + +[plugin/registry.tsx:69](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/plugin/registry.tsx#L69) diff --git a/docs/latest/development/api/interfaces/plugin_registry.SidebarEntryProps.md b/docs/latest/development/api/interfaces/plugin_registry.SidebarEntryProps.md new file mode 100644 index 0000000..23a0ae9 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.SidebarEntryProps.md @@ -0,0 +1,103 @@ +# Interface: SidebarEntryProps + +[plugin/registry](../modules/plugin_registry.md).SidebarEntryProps + +Represents an entry in the sidebar menu. + +## Properties + +### icon + +• `Optional` **icon**: `string` \| `IconifyIcon` + +An iconify string or icon object that will be used for the sidebar's icon + +**`see`** https://icon-sets.iconify.design/mdi/ for icons. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:43](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L43) + +___ + +### label + +• **label**: `string` + +Label to display. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:25](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L25) + +___ + +### name + +• **name**: `string` + +Name of this SidebarItem. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L17) + +___ + +### parent + +• `Optional` **parent**: ``null`` \| `string` + +Name of the parent SidebarEntry. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:29](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L29) + +___ + +### sidebar + +• `Optional` **sidebar**: `string` + +The sidebar to display this item in. If not specified, it will be displayed in the default sidebar. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L46) + +___ + +### subtitle + +• `Optional` **subtitle**: `string` + +Text to display under the name. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:21](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L21) + +___ + +### url + +• `Optional` **url**: `string` + +URL to go to when this item is followed. + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:33](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L33) + +___ + +### useClusterURL + +• `Optional` **useClusterURL**: `boolean` + +Should URL have the cluster prefix? (default=true) + +#### Defined in + +[components/Sidebar/sidebarSlice.ts:37](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/components/Sidebar/sidebarSlice.ts#L37) diff --git a/docs/latest/development/api/interfaces/plugin_registry.TerminalEvent.md b/docs/latest/development/api/interfaces/plugin_registry.TerminalEvent.md new file mode 100644 index 0000000..5fce530 --- /dev/null +++ b/docs/latest/development/api/interfaces/plugin_registry.TerminalEvent.md @@ -0,0 +1,32 @@ +# Interface: TerminalEvent + +[plugin/registry](../modules/plugin_registry.md).TerminalEvent + +Event fired when using the terminal. + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `resource?` | `any` | The resource for which the terminal was opened (currently this only happens for Pod instances). | +| `status` | `OPENED` \| `CLOSED` | What exactly this event represents. 'OPEN' when the terminal is opened. 'CLOSED' when it is closed. | + +#### Defined in + +[redux/headlampEventSlice.ts:163](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L163) + +___ + +### type + +• **type**: `TERMINAL` + +#### Defined in + +[redux/headlampEventSlice.ts:162](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/headlampEventSlice.ts#L162) diff --git a/docs/latest/development/api/modules/lib_k8s.md b/docs/latest/development/api/modules/lib_k8s.md new file mode 100644 index 0000000..aa5cd00 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s.md @@ -0,0 +1,341 @@ +# Module: lib/k8s + +## References + +### cluster + +Renames and re-exports [lib/k8s/cluster](lib_k8s_cluster.md) + +___ + +### clusterRole + +Renames and re-exports [lib/k8s/clusterRole](lib_k8s_clusterRole.md) + +___ + +### clusterRoleBinding + +Renames and re-exports [lib/k8s/clusterRoleBinding](lib_k8s_clusterRoleBinding.md) + +___ + +### configMap + +Renames and re-exports [lib/k8s/configMap](lib_k8s_configMap.md) + +___ + +### crd + +Renames and re-exports [lib/k8s/crd](lib_k8s_crd.md) + +___ + +### cronJob + +Renames and re-exports [lib/k8s/cronJob](lib_k8s_cronJob.md) + +___ + +### daemonSet + +Renames and re-exports [lib/k8s/daemonSet](lib_k8s_daemonSet.md) + +___ + +### deployment + +Renames and re-exports [lib/k8s/deployment](lib_k8s_deployment.md) + +___ + +### event + +Renames and re-exports [lib/k8s/event](lib_k8s_event.md) + +___ + +### ingress + +Renames and re-exports [lib/k8s/ingress](lib_k8s_ingress.md) + +___ + +### ingressClass + +Renames and re-exports [lib/k8s/ingressClass](lib_k8s_ingressClass.md) + +___ + +### job + +Renames and re-exports [lib/k8s/job](lib_k8s_job.md) + +___ + +### namespace + +Renames and re-exports [lib/k8s/namespace](lib_k8s_namespace.md) + +___ + +### node + +Renames and re-exports [lib/k8s/node](lib_k8s_node.md) + +___ + +### persistentVolume + +Renames and re-exports [lib/k8s/persistentVolume](lib_k8s_persistentVolume.md) + +___ + +### persistentVolumeClaim + +Renames and re-exports [lib/k8s/persistentVolumeClaim](lib_k8s_persistentVolumeClaim.md) + +___ + +### pod + +Renames and re-exports [lib/k8s/pod](lib_k8s_pod.md) + +___ + +### replicaSet + +Renames and re-exports [lib/k8s/replicaSet](lib_k8s_replicaSet.md) + +___ + +### role + +Renames and re-exports [lib/k8s/role](lib_k8s_role.md) + +___ + +### roleBinding + +Renames and re-exports [lib/k8s/roleBinding](lib_k8s_roleBinding.md) + +___ + +### secret + +Renames and re-exports [lib/k8s/secret](lib_k8s_secret.md) + +___ + +### service + +Renames and re-exports [lib/k8s/service](lib_k8s_service.md) + +___ + +### serviceAccount + +Renames and re-exports [lib/k8s/serviceAccount](lib_k8s_serviceAccount.md) + +___ + +### statefulSet + +Renames and re-exports [lib/k8s/statefulSet](lib_k8s_statefulSet.md) + +___ + +### storageClass + +Renames and re-exports [lib/k8s/storageClass](lib_k8s_storageClass.md) + +## Type aliases + +### CancellablePromise + +Ƭ **CancellablePromise**: `Promise`<() => `void`\> + +#### Defined in + +[lib/k8s/index.ts:144](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L144) + +## Variables + +### ResourceClasses + +• **ResourceClasses**: `Object` = `resourceClassesDict` + +#### Index signature + +▪ [className: `string`]: [`KubeObject`](lib_k8s_cluster.md#kubeobject) + +#### Defined in + +[lib/k8s/index.ts:88](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L88) + +## Functions + +### getVersion + +▸ **getVersion**(`clusterName?`): `Promise`<[`StringDict`](../interfaces/lib_k8s_cluster.StringDict.md)\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `clusterName` | `string` | `''` | + +#### Returns + +`Promise`<[`StringDict`](../interfaces/lib_k8s_cluster.StringDict.md)\> + +#### Defined in + +[lib/k8s/index.ts:140](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L140) + +___ + +### labelSelectorToQuery + +▸ **labelSelectorToQuery**(`labelSelector`): `string` + +See [Label selector examples](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering), +[deployment selector example](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#resources-that-support-set-based-requirements), +[possible operators](https://github.com/kubernetes/apimachinery/blob/be3a79b26814a8d7637d70f4d434a4626ee1c1e7/pkg/selection/operator.go#L24), and +[Format rule for expressions](https://github.com/kubernetes/apimachinery/blob/be3a79b26814a8d7637d70f4d434a4626ee1c1e7/pkg/labels/selector.go#L305). + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `labelSelector` | [`LabelSelector`](../interfaces/lib_k8s_cluster.LabelSelector.md) | + +#### Returns + +`string` + +#### Defined in + +[lib/k8s/index.ts:174](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L174) + +___ + +### matchExpressionSimplifier + +▸ **matchExpressionSimplifier**(`matchExpressions`): `string`[] \| ``""`` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `matchExpressions` | `undefined` \| { `key`: `string` ; `operator`: `string` ; `values`: `string`[] }[] | + +#### Returns + +`string`[] \| ``""`` + +#### Defined in + +[lib/k8s/index.ts:209](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L209) + +___ + +### matchLabelsSimplifier + +▸ **matchLabelsSimplifier**(`matchLabels`, `isEqualSeperator?`): `string`[] \| ``""`` + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `matchLabels` | `undefined` \| { `[key: string]`: `string`; } | `undefined` | +| `isEqualSeperator` | `boolean` | `false` | + +#### Returns + +`string`[] \| ``""`` + +#### Defined in + +[lib/k8s/index.ts:189](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L189) + +___ + +### useCluster + +▸ **useCluster**(): ``null`` \| `string` + +#### Returns + +``null`` \| `string` + +#### Defined in + +[lib/k8s/index.ts:112](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L112) + +___ + +### useClustersConf + +▸ **useClustersConf**(): `ConfigState`[``"allClusters"``] + +Hook for getting or fetching the clusters configuration. +This gets the clusters from the redux store. The redux store is updated +when the user changes the configuration. The configuration is stored in +the local storage. When stateless clusters are present, it combines the +stateless clusters with the clusters from the redux store. + +#### Returns + +`ConfigState`[``"allClusters"``] + +the clusters configuration. + +#### Defined in + +[lib/k8s/index.ts:97](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L97) + +___ + +### useClustersVersion + +▸ **useClustersVersion**(`clusters`): readonly [{ `[cluster: string]`: [`StringDict`](../interfaces/lib_k8s_cluster.StringDict.md); }, { `[cluster: string]`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) \| ``null``; }] + +Hook to get the version of the clusters given by the parameter. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `clusters` | [`Cluster`](../interfaces/lib_k8s_cluster.Cluster.md)[] | + +#### Returns + +readonly [{ `[cluster: string]`: [`StringDict`](../interfaces/lib_k8s_cluster.StringDict.md); }, { `[cluster: string]`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md) \| ``null``; }] + +a map with cluster -> version-info, and a map with cluster -> error. + +#### Defined in + +[lib/k8s/index.ts:286](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L286) + +___ + +### useConnectApi + +▸ **useConnectApi**(...`apiCalls`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `...apiCalls` | () => [`CancellablePromise`](lib_k8s.md#cancellablepromise)[] | + +#### Returns + +`void` + +#### Defined in + +[lib/k8s/index.ts:146](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/index.ts#L146) diff --git a/docs/latest/development/api/modules/lib_k8s_apiProxy.md b/docs/latest/development/api/modules/lib_k8s_apiProxy.md new file mode 100644 index 0000000..c29fb5a --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_apiProxy.md @@ -0,0 +1,709 @@ +# Module: lib/k8s/apiProxy + +## Interfaces + +- [ApiError](../interfaces/lib_k8s_apiProxy.ApiError.md) +- [ApiInfo](../interfaces/lib_k8s_apiProxy.ApiInfo.md) +- [ClusterRequest](../interfaces/lib_k8s_apiProxy.ClusterRequest.md) +- [ClusterRequestParams](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) +- [QueryParameters](../interfaces/lib_k8s_apiProxy.QueryParameters.md) +- [RequestParams](../interfaces/lib_k8s_apiProxy.RequestParams.md) +- [StreamArgs](../interfaces/lib_k8s_apiProxy.StreamArgs.md) +- [StreamResultsParams](../interfaces/lib_k8s_apiProxy.StreamResultsParams.md) + +## Type aliases + +### StreamErrCb + +Ƭ **StreamErrCb**: (`err`: `Error` & { `status?`: `number` }, `cancelStreamFunc?`: () => `void`) => `void` + +#### Type declaration + +▸ (`err`, `cancelStreamFunc?`): `void` + +The callback that's called when there's an error streaming the results. + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Error` & { `status?`: `number` } | +| `cancelStreamFunc?` | () => `void` | + +##### Returns + +`void` + +#### Defined in + +[lib/k8s/apiProxy.ts:457](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L457) + +___ + +### StreamResultsCb + +Ƭ **StreamResultsCb**: (...`args`: `any`[]) => `void` + +#### Type declaration + +▸ (...`args`): `void` + +The callback that's called when some results are streamed in. + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | `any`[] | + +##### Returns + +`void` + +#### Defined in + +[lib/k8s/apiProxy.ts:455](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L455) + +## Functions + +### apiFactory + +▸ **apiFactory**(...`args`): `Object` + +Creates an API client for a single or multiple Kubernetes resources. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `...args` | [group: string, version: string, resource: string] \| [group: string, version: string, resource: string][] | The arguments to pass to either `singleApiFactory` or `multipleApiFactory`. | + +#### Returns + +`Object` + +An API client for the specified Kubernetes resource(s). + +| Name | Type | +| :------ | :------ | +| `apiInfo` | { `group`: `string` ; `resource`: `string` ; `version`: `string` }[] | +| `delete` | (`name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `get` | (`name`: `string`, `cb`: [`StreamResultsCb`](lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `isNamespaced` | `boolean` | +| `list` | (`cb`: [`StreamResultsCb`](lib_k8s_apiProxy.md#streamresultscb), `errCb`: [`StreamErrCb`](lib_k8s_apiProxy.md#streamerrcb), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<() => `void`\> | +| `patch` | (`body`: `OpPatch`[], `name`: `string`, `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `post` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | +| `put` | (`body`: [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md), `queryParams?`: [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md), `cluster?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/apiProxy.ts:571](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L571) + +___ + +### apiFactoryWithNamespace + +▸ **apiFactoryWithNamespace**(...`args`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [group: string, version: string, resource: string, includeScale: boolean] \| [group: string, version: string, resource: string, includeScale: boolean][] | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `scale?` | { `get`: (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> ; `put`: (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> } | +| `scale.get` | (`namespace`: `string`, `name`: `string`, `clusterName?`: `string`) => `Promise`<`any`\> | +| `scale.put` | (`body`: { `metadata`: [`KubeMetadata`](../interfaces/lib_k8s_cluster.KubeMetadata.md) ; `spec`: { `replicas`: `number` } }, `clusterName?`: `string`) => `Promise`<`any`\> | + +#### Defined in + +[lib/k8s/apiProxy.ts:700](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L700) + +___ + +### apply + +▸ **apply**(`body`, `clusterName?`): `Promise`<`JSON`\> + +Applies the provided body to the Kubernetes API. + +Tries to POST, and if there's a conflict it does a PUT to the api endpoint. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `body` | [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) | The kubernetes object body to apply. | +| `clusterName?` | `string` | The cluster to apply the body to. By default uses the current cluster (URL defined). | + +#### Returns + +`Promise`<`JSON`\> + +The response from the kubernetes API server. + +#### Defined in + +[lib/k8s/apiProxy.ts:1521](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1521) + +___ + +### clusterRequest + +▸ **clusterRequest**(`path`, `params?`, `queryParams?`): `Promise`<`any`\> + +Sends a request to the backend. If the cluster is required in the params parameter, it will +be used as a request to the respective Kubernetes server. + +**`throws`** An ApiError if the response status is not ok. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `path` | `string` | The path to the API endpoint. | +| `params` | [`ClusterRequestParams`](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) | Optional parameters for the request. | +| `queryParams?` | [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | Optional query parameters for the k8s request. | + +#### Returns + +`Promise`<`any`\> + +A Promise that resolves to the JSON response from the API server. + +#### Defined in + +[lib/k8s/apiProxy.ts:339](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L339) + +___ + +### deleteCluster + +▸ **deleteCluster**(`cluster`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster` | `string` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1673](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1673) + +___ + +### deletePlugin + +▸ **deletePlugin**(`name`): `Promise`<`any`\> + +Deletes the plugin with the specified name from the system. + +This function sends a DELETE request to the server's plugin management +endpoint, targeting the plugin identified by its name. +The function handles the request asynchronously and returns a promise that +resolves with the server's response to the DELETE operation. + +**`throws`** — An ApiError if the response status is not ok. + +**`example`** +// Call to delete a plugin named 'examplePlugin' +deletePlugin('examplePlugin') + .then(response => console.log('Plugin deleted successfully', response)) + .catch(error => console.error('Failed to delete plugin', error)); + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` | The unique name of the plugin to delete. This identifier is used to construct the URL for the DELETE request. | + +#### Returns + +`Promise`<`any`\> + +— A Promise that resolves to the JSON response from the API server. + +#### Defined in + +[lib/k8s/apiProxy.ts:1925](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1925) + +___ + +### drainNode + +▸ **drainNode**(`cluster`, `nodeName`): `Promise`<`any`\> + +Drain a node + +**`throws`** {Error} if the request fails + +**`throws`** {Error} if the response is not ok + +This function is used to drain a node. It is used in the node detail page. +As draining a node is a long running process, we get the request received +message if the request is successful. And then we poll the drain node status endpoint +to get the status of the drain node process. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `cluster` | `string` | The cluster to drain the node | +| `nodeName` | `string` | The node name to drain | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1810](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1810) + +___ + +### drainNodeStatus + +▸ **drainNodeStatus**(`cluster`, `nodeName`): `Promise`<`DrainNodeStatus`\> + +Get the status of the drain node process. + +It is used in the node detail page. +As draining a node is a long running process, we poll this endpoint to get +the status of the drain node process. + +**`throws`** {Error} if the request fails + +**`throws`** {Error} if the response is not ok + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `cluster` | `string` | The cluster to get the status of the drain node process for. | +| `nodeName` | `string` | The node name to get the status of the drain node process for. | + +#### Returns + +`Promise`<`DrainNodeStatus`\> + +- The response from the API. @todo: what response? + +#### Defined in + +[lib/k8s/apiProxy.ts:1852](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1852) + +___ + +### listPortForward + +▸ **listPortForward**(`cluster`): `Promise`<`any`\> + +Lists the port forwards for the specified cluster. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `cluster` | `string` | The cluster to list the port forwards. | + +#### Returns + +`Promise`<`any`\> + +the list of port forwards for the cluster. + +#### Defined in + +[lib/k8s/apiProxy.ts:1787](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1787) + +___ + +### metrics + +▸ **metrics**(`url`, `onMetrics`, `onError?`, `cluster?`): `Promise`<() => `void`\> + +Gets the metrics for the specified resource. Gets new metrics every 10 seconds. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The url of the resource to get metrics for. | +| `onMetrics` | (`arg`: [`KubeMetrics`](../interfaces/lib_k8s_cluster.KubeMetrics.md)[]) => `void` | The function to call with the metrics. | +| `onError?` | (`err`: [`ApiError`](../interfaces/lib_k8s_apiProxy.ApiError.md)) => `void` | The function to call if there's an error. | +| `cluster?` | `string` | The cluster to get metrics for. By default uses the current cluster (URL defined). | + +#### Returns + +`Promise`<() => `void`\> + +A function to cancel the metrics request. + +#### Defined in + +[lib/k8s/apiProxy.ts:1583](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1583) + +___ + +### patch + +▸ **patch**(`url`, `json`, `autoLogoutOnAuthError?`, `options?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `url` | `string` | `undefined` | +| `json` | `any` | `undefined` | +| `autoLogoutOnAuthError` | `boolean` | `true` | +| `options` | [`ClusterRequestParams`](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) | `{}` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:976](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L976) + +___ + +### post + +▸ **post**(`url`, `json`, `autoLogoutOnAuthError?`, `options?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `url` | `string` | `undefined` | +| `json` | `object` \| [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| `JSON` | `undefined` | +| `autoLogoutOnAuthError` | `boolean` | `true` | +| `options` | [`ClusterRequestParams`](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) | `{}` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:957](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L957) + +___ + +### put + +▸ **put**(`url`, `json`, `autoLogoutOnAuthError?`, `requestOptions?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `url` | `string` | `undefined` | +| `json` | `Partial`<[`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md)\> | `undefined` | +| `autoLogoutOnAuthError` | `boolean` | `true` | +| `requestOptions` | [`ClusterRequestParams`](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) | `{}` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:996](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L996) + +___ + +### remove + +▸ **remove**(`url`, `requestOptions?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `requestOptions` | [`ClusterRequestParams`](../interfaces/lib_k8s_apiProxy.ClusterRequestParams.md) | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1015](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1015) + +___ + +### request + +▸ **request**(`path`, `params?`, `autoLogoutOnAuthError?`, `useCluster?`, `queryParams?`): `Promise`<`any`\> + +Sends a request to the backend. If the useCluster parameter is true (which it is, by default), it will be +treated as a request to the Kubernetes server of the currently defined (in the URL) cluster. + +**`throws`** An ApiError if the response status is not ok. + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `path` | `string` | `undefined` | The path to the API endpoint. | +| `params` | [`RequestParams`](../interfaces/lib_k8s_apiProxy.RequestParams.md) | `{}` | Optional parameters for the request. | +| `autoLogoutOnAuthError` | `boolean` | `true` | Whether to automatically log out the user if there is an authentication error. | +| `useCluster` | `boolean` | `true` | Whether to use the current cluster for the request. | +| `queryParams?` | [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | `undefined` | Optional query parameters for the request. | + +#### Returns + +`Promise`<`any`\> + +A Promise that resolves to the JSON response from the API server. + +#### Defined in + +[lib/k8s/apiProxy.ts:303](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L303) + +___ + +### setCluster + +▸ **setCluster**(`clusterReq`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `clusterReq` | [`ClusterRequest`](../interfaces/lib_k8s_apiProxy.ClusterRequest.md) | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1635](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1635) + +___ + +### startPortForward + +▸ **startPortForward**(`cluster`, `namespace`, `podname`, `containerPort`, `service`, `serviceNamespace`, `port?`, `address?`, `id?`): `Promise`<`any`\> + +Starts a portforward with the given details. + +**`throws`** {Error} if the request fails. + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `cluster` | `string` | `undefined` | The cluster to portforward for. | +| `namespace` | `string` | `undefined` | The namespace to portforward for. | +| `podname` | `string` | `undefined` | The pod to portforward for. | +| `containerPort` | `string` \| `number` | `undefined` | The container port to portforward for. | +| `service` | `string` | `undefined` | The service to portforward for. | +| `serviceNamespace` | `string` | `undefined` | The service namespace to portforward for. | +| `port?` | `string` | `undefined` | The port to portforward for. | +| `address` | `string` | `''` | - | +| `id` | `string` | `''` | The id to portforward for. | + +#### Returns + +`Promise`<`any`\> + +The response from the API. + +#### Defined in + +[lib/k8s/apiProxy.ts:1710](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1710) + +___ + +### stopOrDeletePortForward + +▸ **stopOrDeletePortForward**(`cluster`, `id`, `stopOrDelete?`): `Promise`<`string`\> + +Stops or deletes a portforward with the specified details. + +**`throws`** {Error} if the request fails. + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `cluster` | `string` | `undefined` | The cluster to portforward for. | +| `id` | `string` | `undefined` | The id to portforward for. | +| `stopOrDelete` | `boolean` | `true` | Whether to stop or delete the portforward. True for stop, false for delete. | + +#### Returns + +`Promise`<`string`\> + +The response from the API. + +#### Defined in + +[lib/k8s/apiProxy.ts:1760](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1760) + +___ + +### stream + +▸ **stream**(`url`, `cb`, `args`): `Object` + +Establishes a WebSocket connection to the specified URL and streams the results +to the provided callback function. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to connect to. | +| `cb` | [`StreamResultsCb`](lib_k8s_apiProxy.md#streamresultscb) | The callback function to receive the streamed results. | +| `args` | [`StreamArgs`](../interfaces/lib_k8s_apiProxy.StreamArgs.md) | Additional arguments to configure the stream. | + +#### Returns + +`Object` + +An object with two functions: `cancel`, which can be called to cancel +the stream, and `getSocket`, which returns the WebSocket object. + +| Name | Type | +| :------ | :------ | +| `cancel` | () => `void` | +| `getSocket` | () => ``null`` \| `WebSocket` | + +#### Defined in + +[lib/k8s/apiProxy.ts:1287](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1287) + +___ + +### streamResult + +▸ **streamResult**(`url`, `name`, `cb`, `errCb`, `queryParams?`, `cluster?`): `Promise`<() => `void`\> + +Streams the results of a Kubernetes API request into a 'cb' callback. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL of the Kubernetes API endpoint. | +| `name` | `string` | The name of the Kubernetes API resource. | +| `cb` | [`StreamResultsCb`](lib_k8s_apiProxy.md#streamresultscb) | The callback function to execute when the stream receives data. | +| `errCb` | [`StreamErrCb`](lib_k8s_apiProxy.md#streamerrcb) | The callback function to execute when an error occurs. | +| `queryParams?` | [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | The query parameters to include in the API request. | +| `cluster?` | `string` | - | + +#### Returns + +`Promise`<() => `void`\> + +A function to cancel the stream. + +#### Defined in + +[lib/k8s/apiProxy.ts:1033](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1033) + +___ + +### streamResults + +▸ **streamResults**(`url`, `cb`, `errCb`, `queryParams`): `Promise`<() => `void`\> + +Streams the results of a Kubernetes API request. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL of the Kubernetes API endpoint. | +| `cb` | [`StreamResultsCb`](lib_k8s_apiProxy.md#streamresultscb) | The callback function to execute when the stream receives data. | +| `errCb` | [`StreamErrCb`](lib_k8s_apiProxy.md#streamerrcb) | The callback function to execute when an error occurs. | +| `queryParams` | `undefined` \| [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | The query parameters to include in the API request. | + +#### Returns + +`Promise`<() => `void`\> + +A function to cancel the stream. + +#### Defined in + +[lib/k8s/apiProxy.ts:1100](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1100) + +___ + +### streamResultsForCluster + +▸ **streamResultsForCluster**(`url`, `params`, `queryParams`): `Promise`<() => `void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `params` | [`StreamResultsParams`](../interfaces/lib_k8s_apiProxy.StreamResultsParams.md) | +| `queryParams` | `undefined` \| [`QueryParameters`](../interfaces/lib_k8s_apiProxy.QueryParameters.md) | + +#### Returns + +`Promise`<() => `void`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1121](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1121) + +___ + +### testAuth + +▸ **testAuth**(`cluster?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `cluster` | `string` | `''` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1620](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1620) + +___ + +### testClusterHealth + +▸ **testClusterHealth**(`cluster?`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster?` | `string` | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[lib/k8s/apiProxy.ts:1630](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/apiProxy.ts#L1630) diff --git a/docs/latest/development/api/modules/lib_k8s_cluster.md b/docs/latest/development/api/modules/lib_k8s_cluster.md new file mode 100644 index 0000000..d1b5bf4 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_cluster.md @@ -0,0 +1,145 @@ +# Module: lib/k8s/cluster + +## References + +### ApiListOptions + +Re-exports [ApiListOptions](../interfaces/lib_k8s_cluster.ApiListOptions.md) + +___ + +### ApiListSingleNamespaceOptions + +Re-exports [ApiListSingleNamespaceOptions](../interfaces/lib_k8s_cluster.ApiListSingleNamespaceOptions.md) + +___ + +### AuthRequestResourceAttrs + +Re-exports [AuthRequestResourceAttrs](../interfaces/lib_k8s_cluster.AuthRequestResourceAttrs.md) + +___ + +### Cluster + +Re-exports [Cluster](../interfaces/lib_k8s_cluster.Cluster.md) + +___ + +### ContainerState + +Re-exports [ContainerState](../interfaces/lib_k8s_cluster.ContainerState.md) + +___ + +### HEADLAMP\_ALLOWED\_NAMESPACES + +Re-exports [HEADLAMP_ALLOWED_NAMESPACES](lib_k8s_cluster.md#headlamp_allowed_namespaces) + +___ + +### KubeCondition + +Re-exports [KubeCondition](../interfaces/lib_k8s_cluster.KubeCondition.md) + +___ + +### KubeContainer + +Re-exports [KubeContainer](../interfaces/lib_k8s_cluster.KubeContainer.md) + +___ + +### KubeContainerProbe + +Re-exports [KubeContainerProbe](../interfaces/lib_k8s_cluster.KubeContainerProbe.md) + +___ + +### KubeContainerStatus + +Re-exports [KubeContainerStatus](../interfaces/lib_k8s_cluster.KubeContainerStatus.md) + +___ + +### KubeManagedFields + +Re-exports [KubeManagedFields](../interfaces/lib_k8s_cluster.KubeManagedFields.md) + +___ + +### KubeManagedFieldsEntry + +Re-exports [KubeManagedFieldsEntry](../interfaces/lib_k8s_cluster.KubeManagedFieldsEntry.md) + +___ + +### KubeMetadata + +Re-exports [KubeMetadata](../interfaces/lib_k8s_cluster.KubeMetadata.md) + +___ + +### KubeMetrics + +Re-exports [KubeMetrics](../interfaces/lib_k8s_cluster.KubeMetrics.md) + +___ + +### KubeObject + +Re-exports [KubeObject](lib_k8s_cluster.md#kubeobject) + +___ + +### KubeObjectClass + +Re-exports [KubeObjectClass](lib_k8s_cluster.md#kubeobjectclass) + +___ + +### KubeObjectIface + +Re-exports [KubeObjectIface](../interfaces/lib_k8s_cluster.KubeObjectIface.md) + +___ + +### KubeObjectInterface + +Re-exports [KubeObjectInterface](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) + +___ + +### KubeOwnerReference + +Re-exports [KubeOwnerReference](../interfaces/lib_k8s_cluster.KubeOwnerReference.md) + +___ + +### LabelSelector + +Re-exports [LabelSelector](../interfaces/lib_k8s_cluster.LabelSelector.md) + +___ + +### StringDict + +Re-exports [StringDict](../interfaces/lib_k8s_cluster.StringDict.md) + +___ + +### Time + +Re-exports [Time](lib_k8s_cluster.md#time) + +___ + +### Workload + +Re-exports [Workload](lib_k8s_cluster.md#workload) + +___ + +### makeKubeObject + +Re-exports [makeKubeObject](lib_k8s_cluster.md#makekubeobject) diff --git a/docs/latest/development/api/modules/lib_k8s_clusterRole.md b/docs/latest/development/api/modules/lib_k8s_clusterRole.md new file mode 100644 index 0000000..2075f24 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_clusterRole.md @@ -0,0 +1,5 @@ +# Module: lib/k8s/clusterRole + +## Classes + +- [ClusterRole](../classes/lib_k8s_clusterRole.ClusterRole.md) diff --git a/docs/latest/development/api/modules/lib_k8s_clusterRoleBinding.md b/docs/latest/development/api/modules/lib_k8s_clusterRoleBinding.md new file mode 100644 index 0000000..e91818e --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_clusterRoleBinding.md @@ -0,0 +1,5 @@ +# Module: lib/k8s/clusterRoleBinding + +## Classes + +- [ClusterRoleBinding](../classes/lib_k8s_clusterRoleBinding.ClusterRoleBinding.md) diff --git a/docs/latest/development/api/modules/lib_k8s_configMap.md b/docs/latest/development/api/modules/lib_k8s_configMap.md new file mode 100644 index 0000000..cce6de4 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_configMap.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/configMap + +## Classes + +- [ConfigMap](../classes/lib_k8s_configMap.ConfigMap.md) + +## Interfaces + +- [KubeConfigMap](../interfaces/lib_k8s_configMap.KubeConfigMap.md) diff --git a/docs/latest/development/api/modules/lib_k8s_crd.md b/docs/latest/development/api/modules/lib_k8s_crd.md new file mode 100644 index 0000000..0c8999a --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_crd.md @@ -0,0 +1,49 @@ +# Module: lib/k8s/crd + +## Classes + +- [CustomResourceDefinition](../classes/lib_k8s_crd.CustomResourceDefinition.md) + +## Interfaces + +- [CRClassArgs](../interfaces/lib_k8s_crd.CRClassArgs.md) +- [KubeCRD](../interfaces/lib_k8s_crd.KubeCRD.md) + +## Functions + +### makeCustomResourceClass + +▸ **makeCustomResourceClass**(`args`, `isNamespaced`): `ReturnType` + +**`deprecated`** Use the version of the function that receives an object as its argument. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `args` | [group: string, version: string, pluralName: string][] | +| `isNamespaced` | `boolean` | + +#### Returns + +`ReturnType` + +#### Defined in + +[lib/k8s/crd.ts:104](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L104) + +▸ **makeCustomResourceClass**(`args`): `ReturnType` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `args` | [`CRClassArgs`](../interfaces/lib_k8s_crd.CRClassArgs.md) | + +#### Returns + +`ReturnType` + +#### Defined in + +[lib/k8s/crd.ts:108](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/crd.ts#L108) diff --git a/docs/latest/development/api/modules/lib_k8s_cronJob.md b/docs/latest/development/api/modules/lib_k8s_cronJob.md new file mode 100644 index 0000000..1f941dc --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_cronJob.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/cronJob + +## Classes + +- [CronJob](../classes/lib_k8s_cronJob.CronJob.md) + +## Interfaces + +- [KubeCronJob](../interfaces/lib_k8s_cronJob.KubeCronJob.md) diff --git a/docs/latest/development/api/modules/lib_k8s_daemonSet.md b/docs/latest/development/api/modules/lib_k8s_daemonSet.md new file mode 100644 index 0000000..eb97a37 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_daemonSet.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/daemonSet + +## Classes + +- [DaemonSet](../classes/lib_k8s_daemonSet.DaemonSet.md) + +## Interfaces + +- [KubeDaemonSet](../interfaces/lib_k8s_daemonSet.KubeDaemonSet.md) diff --git a/docs/latest/development/api/modules/lib_k8s_deployment.md b/docs/latest/development/api/modules/lib_k8s_deployment.md new file mode 100644 index 0000000..a1f1f28 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_deployment.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/deployment + +## Classes + +- [Deployment](../classes/lib_k8s_deployment.Deployment.md) + +## Interfaces + +- [KubeDeployment](../interfaces/lib_k8s_deployment.KubeDeployment.md) diff --git a/docs/latest/development/api/modules/lib_k8s_endpoints.md b/docs/latest/development/api/modules/lib_k8s_endpoints.md new file mode 100644 index 0000000..1fe6413 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_endpoints.md @@ -0,0 +1,12 @@ +# Module: lib/k8s/endpoints + +## Classes + +- [Endpoints](../classes/lib_k8s_endpoints.Endpoints.md) + +## Interfaces + +- [KubeEndpoint](../interfaces/lib_k8s_endpoints.KubeEndpoint.md) +- [KubeEndpointAddress](../interfaces/lib_k8s_endpoints.KubeEndpointAddress.md) +- [KubeEndpointPort](../interfaces/lib_k8s_endpoints.KubeEndpointPort.md) +- [KubeEndpointSubset](../interfaces/lib_k8s_endpoints.KubeEndpointSubset.md) diff --git a/docs/latest/development/api/modules/lib_k8s_event.md b/docs/latest/development/api/modules/lib_k8s_event.md new file mode 100644 index 0000000..cc9e89f --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_event.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/event + +## Classes + +- [Event](../classes/lib_k8s_event.Event.md) + +## Interfaces + +- [KubeEvent](../interfaces/lib_k8s_event.KubeEvent.md) diff --git a/docs/latest/development/api/modules/lib_k8s_hpa.md b/docs/latest/development/api/modules/lib_k8s_hpa.md new file mode 100644 index 0000000..e9f2cba --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_hpa.md @@ -0,0 +1,10 @@ +# Module: lib/k8s/hpa + +## Classes + +- [HPA](../classes/lib_k8s_hpa.HPA.md) + +## Interfaces + +- [CrossVersionObjectReference](../interfaces/lib_k8s_hpa.CrossVersionObjectReference.md) +- [KubeHPA](../interfaces/lib_k8s_hpa.KubeHPA.md) diff --git a/docs/latest/development/api/modules/lib_k8s_ingress.md b/docs/latest/development/api/modules/lib_k8s_ingress.md new file mode 100644 index 0000000..9179e95 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_ingress.md @@ -0,0 +1,11 @@ +# Module: lib/k8s/ingress + +## Classes + +- [Ingress](../classes/lib_k8s_ingress.Ingress.md) + +## Interfaces + +- [IngressBackend](../interfaces/lib_k8s_ingress.IngressBackend.md) +- [IngressRule](../interfaces/lib_k8s_ingress.IngressRule.md) +- [KubeIngress](../interfaces/lib_k8s_ingress.KubeIngress.md) diff --git a/docs/latest/development/api/modules/lib_k8s_ingressClass.md b/docs/latest/development/api/modules/lib_k8s_ingressClass.md new file mode 100644 index 0000000..ca20081 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_ingressClass.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/ingressClass + +## Classes + +- [IngressClass](../classes/lib_k8s_ingressClass.IngressClass.md) + +## Interfaces + +- [KubeIngressClass](../interfaces/lib_k8s_ingressClass.KubeIngressClass.md) diff --git a/docs/latest/development/api/modules/lib_k8s_job.md b/docs/latest/development/api/modules/lib_k8s_job.md new file mode 100644 index 0000000..aeea7d3 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_job.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/job + +## Classes + +- [Job](../classes/lib_k8s_job.Job.md) + +## Interfaces + +- [KubeJob](../interfaces/lib_k8s_job.KubeJob.md) diff --git a/docs/latest/development/api/modules/lib_k8s_kubeconfig.md b/docs/latest/development/api/modules/lib_k8s_kubeconfig.md new file mode 100644 index 0000000..130fae6 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_kubeconfig.md @@ -0,0 +1,5 @@ +# Module: lib/k8s/kubeconfig + +## Interfaces + +- [KubeconfigObject](../interfaces/lib_k8s_kubeconfig.KubeconfigObject.md) diff --git a/docs/latest/development/api/modules/lib_k8s_lease.md b/docs/latest/development/api/modules/lib_k8s_lease.md new file mode 100644 index 0000000..1b8b33e --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_lease.md @@ -0,0 +1,10 @@ +# Module: lib/k8s/lease + +## Classes + +- [Lease](../classes/lib_k8s_lease.Lease.md) + +## Interfaces + +- [KubeLease](../interfaces/lib_k8s_lease.KubeLease.md) +- [LeaseSpec](../interfaces/lib_k8s_lease.LeaseSpec.md) diff --git a/docs/latest/development/api/modules/lib_k8s_limitRange.md b/docs/latest/development/api/modules/lib_k8s_limitRange.md new file mode 100644 index 0000000..bc12d65 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_limitRange.md @@ -0,0 +1,10 @@ +# Module: lib/k8s/limitRange + +## Classes + +- [LimitRange](../classes/lib_k8s_limitRange.LimitRange.md) + +## Interfaces + +- [KubeLimitRange](../interfaces/lib_k8s_limitRange.KubeLimitRange.md) +- [LimitRangeSpec](../interfaces/lib_k8s_limitRange.LimitRangeSpec.md) diff --git a/docs/latest/development/api/modules/lib_k8s_mutatingWebhookConfiguration.md b/docs/latest/development/api/modules/lib_k8s_mutatingWebhookConfiguration.md new file mode 100644 index 0000000..afa1589 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_mutatingWebhookConfiguration.md @@ -0,0 +1,11 @@ +# Module: lib/k8s/mutatingWebhookConfiguration + +## Classes + +- [MutatingWebhookConfiguration](../classes/lib_k8s_mutatingWebhookConfiguration.MutatingWebhookConfiguration.md) + +## Interfaces + +- [KubeMutatingWebhookConfiguration](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeMutatingWebhookConfiguration.md) +- [KubeRuleWithOperations](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeRuleWithOperations.md) +- [KubeWebhookClientConfig](../interfaces/lib_k8s_mutatingWebhookConfiguration.KubeWebhookClientConfig.md) diff --git a/docs/latest/development/api/modules/lib_k8s_namespace.md b/docs/latest/development/api/modules/lib_k8s_namespace.md new file mode 100644 index 0000000..7923c3d --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_namespace.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/namespace + +## Classes + +- [Namespace](../classes/lib_k8s_namespace.Namespace.md) + +## Interfaces + +- [KubeNamespace](../interfaces/lib_k8s_namespace.KubeNamespace.md) diff --git a/docs/latest/development/api/modules/lib_k8s_networkpolicy.md b/docs/latest/development/api/modules/lib_k8s_networkpolicy.md new file mode 100644 index 0000000..6ad85e1 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_networkpolicy.md @@ -0,0 +1,14 @@ +# Module: lib/k8s/networkpolicy + +## Classes + +- [NetworkPolicy](../classes/lib_k8s_networkpolicy.NetworkPolicy.md) + +## Interfaces + +- [IPBlock](../interfaces/lib_k8s_networkpolicy.IPBlock.md) +- [KubeNetworkPolicy](../interfaces/lib_k8s_networkpolicy.KubeNetworkPolicy.md) +- [NetworkPolicyEgressRule](../interfaces/lib_k8s_networkpolicy.NetworkPolicyEgressRule.md) +- [NetworkPolicyIngressRule](../interfaces/lib_k8s_networkpolicy.NetworkPolicyIngressRule.md) +- [NetworkPolicyPeer](../interfaces/lib_k8s_networkpolicy.NetworkPolicyPeer.md) +- [NetworkPolicyPort](../interfaces/lib_k8s_networkpolicy.NetworkPolicyPort.md) diff --git a/docs/latest/development/api/modules/lib_k8s_node.md b/docs/latest/development/api/modules/lib_k8s_node.md new file mode 100644 index 0000000..00e75f6 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_node.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/node + +## Classes + +- [Node](../classes/lib_k8s_node.Node.md) + +## Interfaces + +- [KubeNode](../interfaces/lib_k8s_node.KubeNode.md) diff --git a/docs/latest/development/api/modules/lib_k8s_persistentVolume.md b/docs/latest/development/api/modules/lib_k8s_persistentVolume.md new file mode 100644 index 0000000..8fe228b --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_persistentVolume.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/persistentVolume + +## Classes + +- [PersistentVolume](../classes/lib_k8s_persistentVolume.PersistentVolume.md) + +## Interfaces + +- [KubePersistentVolume](../interfaces/lib_k8s_persistentVolume.KubePersistentVolume.md) diff --git a/docs/latest/development/api/modules/lib_k8s_persistentVolumeClaim.md b/docs/latest/development/api/modules/lib_k8s_persistentVolumeClaim.md new file mode 100644 index 0000000..d01500d --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_persistentVolumeClaim.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/persistentVolumeClaim + +## Classes + +- [PersistentVolumeClaim](../classes/lib_k8s_persistentVolumeClaim.PersistentVolumeClaim.md) + +## Interfaces + +- [KubePersistentVolumeClaim](../interfaces/lib_k8s_persistentVolumeClaim.KubePersistentVolumeClaim.md) diff --git a/docs/latest/development/api/modules/lib_k8s_pod.md b/docs/latest/development/api/modules/lib_k8s_pod.md new file mode 100644 index 0000000..7b88d60 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_pod.md @@ -0,0 +1,13 @@ +# Module: lib/k8s/pod + +## Classes + +- [Pod](../classes/lib_k8s_pod.Pod.md) + +## Interfaces + +- [ExecOptions](../interfaces/lib_k8s_pod.ExecOptions.md) +- [KubePod](../interfaces/lib_k8s_pod.KubePod.md) +- [KubePodSpec](../interfaces/lib_k8s_pod.KubePodSpec.md) +- [KubeVolume](../interfaces/lib_k8s_pod.KubeVolume.md) +- [LogOptions](../interfaces/lib_k8s_pod.LogOptions.md) diff --git a/docs/latest/development/api/modules/lib_k8s_podDisruptionBudget.md b/docs/latest/development/api/modules/lib_k8s_podDisruptionBudget.md new file mode 100644 index 0000000..6c46c31 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_podDisruptionBudget.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/podDisruptionBudget + +## Classes + +- [PDB](../classes/lib_k8s_podDisruptionBudget.PDB.md) + +## Interfaces + +- [KubePDB](../interfaces/lib_k8s_podDisruptionBudget.KubePDB.md) diff --git a/docs/latest/development/api/modules/lib_k8s_priorityClass.md b/docs/latest/development/api/modules/lib_k8s_priorityClass.md new file mode 100644 index 0000000..ca8e062 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_priorityClass.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/priorityClass + +## Classes + +- [PriorityClass](../classes/lib_k8s_priorityClass.PriorityClass.md) + +## Interfaces + +- [KubePriorityClass](../interfaces/lib_k8s_priorityClass.KubePriorityClass.md) diff --git a/docs/latest/development/api/modules/lib_k8s_priorityClasses.md b/docs/latest/development/api/modules/lib_k8s_priorityClasses.md new file mode 100644 index 0000000..cd9f221 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_priorityClasses.md @@ -0,0 +1,23 @@ +# Module: lib/k8s/priorityClasses + +## References + +### KubePriorityClass + +Re-exports [KubePriorityClass](../interfaces/lib_k8s_priorityClass.KubePriorityClass.md) + +___ + +### default + +Renames and re-exports [PriorityClass](../classes/lib_k8s_priorityClass.PriorityClass.md) + +## Type aliases + +### KubePriorityClasses + +Ƭ **KubePriorityClasses**: [`KubePriorityClass`](../interfaces/lib_k8s_priorityClass.KubePriorityClass.md) + +#### Defined in + +[lib/k8s/priorityClasses.ts:6](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/k8s/priorityClasses.ts#L6) diff --git a/docs/latest/development/api/modules/lib_k8s_replicaSet.md b/docs/latest/development/api/modules/lib_k8s_replicaSet.md new file mode 100644 index 0000000..d13f23f --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_replicaSet.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/replicaSet + +## Classes + +- [ReplicaSet](../classes/lib_k8s_replicaSet.ReplicaSet.md) + +## Interfaces + +- [KubeReplicaSet](../interfaces/lib_k8s_replicaSet.KubeReplicaSet.md) diff --git a/docs/latest/development/api/modules/lib_k8s_resourceQuota.md b/docs/latest/development/api/modules/lib_k8s_resourceQuota.md new file mode 100644 index 0000000..cb38880 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_resourceQuota.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/resourceQuota + +## Classes + +- [ResourceQuota](../classes/lib_k8s_resourceQuota.ResourceQuota.md) + +## Interfaces + +- [KubeResourceQuota](../interfaces/lib_k8s_resourceQuota.KubeResourceQuota.md) diff --git a/docs/latest/development/api/modules/lib_k8s_role.md b/docs/latest/development/api/modules/lib_k8s_role.md new file mode 100644 index 0000000..ec37d0e --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_role.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/role + +## Classes + +- [Role](../classes/lib_k8s_role.Role.md) + +## Interfaces + +- [KubeRole](../interfaces/lib_k8s_role.KubeRole.md) diff --git a/docs/latest/development/api/modules/lib_k8s_roleBinding.md b/docs/latest/development/api/modules/lib_k8s_roleBinding.md new file mode 100644 index 0000000..df7c15b --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_roleBinding.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/roleBinding + +## Classes + +- [RoleBinding](../classes/lib_k8s_roleBinding.RoleBinding.md) + +## Interfaces + +- [KubeRoleBinding](../interfaces/lib_k8s_roleBinding.KubeRoleBinding.md) diff --git a/docs/latest/development/api/modules/lib_k8s_runtime.md b/docs/latest/development/api/modules/lib_k8s_runtime.md new file mode 100644 index 0000000..800fe1e --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_runtime.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/runtime + +## Classes + +- [RuntimeClass](../classes/lib_k8s_runtime.RuntimeClass.md) + +## Interfaces + +- [KubeRuntimeClass](../interfaces/lib_k8s_runtime.KubeRuntimeClass.md) diff --git a/docs/latest/development/api/modules/lib_k8s_secret.md b/docs/latest/development/api/modules/lib_k8s_secret.md new file mode 100644 index 0000000..05da69e --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_secret.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/secret + +## Classes + +- [Secret](../classes/lib_k8s_secret.Secret.md) + +## Interfaces + +- [KubeSecret](../interfaces/lib_k8s_secret.KubeSecret.md) diff --git a/docs/latest/development/api/modules/lib_k8s_service.md b/docs/latest/development/api/modules/lib_k8s_service.md new file mode 100644 index 0000000..9306477 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_service.md @@ -0,0 +1,11 @@ +# Module: lib/k8s/service + +## Classes + +- [Service](../classes/lib_k8s_service.Service.md) + +## Interfaces + +- [KubeLoadBalancerIngress](../interfaces/lib_k8s_service.KubeLoadBalancerIngress.md) +- [KubePortStatus](../interfaces/lib_k8s_service.KubePortStatus.md) +- [KubeService](../interfaces/lib_k8s_service.KubeService.md) diff --git a/docs/latest/development/api/modules/lib_k8s_serviceAccount.md b/docs/latest/development/api/modules/lib_k8s_serviceAccount.md new file mode 100644 index 0000000..bd2562a --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_serviceAccount.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/serviceAccount + +## Classes + +- [ServiceAccount](../classes/lib_k8s_serviceAccount.ServiceAccount.md) + +## Interfaces + +- [KubeServiceAccount](../interfaces/lib_k8s_serviceAccount.KubeServiceAccount.md) diff --git a/docs/latest/development/api/modules/lib_k8s_statefulSet.md b/docs/latest/development/api/modules/lib_k8s_statefulSet.md new file mode 100644 index 0000000..162f788 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_statefulSet.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/statefulSet + +## Classes + +- [StatefulSet](../classes/lib_k8s_statefulSet.StatefulSet.md) + +## Interfaces + +- [KubeStatefulSet](../interfaces/lib_k8s_statefulSet.KubeStatefulSet.md) diff --git a/docs/latest/development/api/modules/lib_k8s_storageClass.md b/docs/latest/development/api/modules/lib_k8s_storageClass.md new file mode 100644 index 0000000..131ae40 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_storageClass.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/storageClass + +## Classes + +- [StorageClass](../classes/lib_k8s_storageClass.StorageClass.md) + +## Interfaces + +- [KubeStorageClass](../interfaces/lib_k8s_storageClass.KubeStorageClass.md) diff --git a/docs/latest/development/api/modules/lib_k8s_token.md b/docs/latest/development/api/modules/lib_k8s_token.md new file mode 100644 index 0000000..2d56a01 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_token.md @@ -0,0 +1,5 @@ +# Module: lib/k8s/token + +## Interfaces + +- [KubeToken](../interfaces/lib_k8s_token.KubeToken.md) diff --git a/docs/latest/development/api/modules/lib_k8s_validatingWebhookConfiguration.md b/docs/latest/development/api/modules/lib_k8s_validatingWebhookConfiguration.md new file mode 100644 index 0000000..1633835 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_validatingWebhookConfiguration.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/validatingWebhookConfiguration + +## Classes + +- [ValidatingWebhookConfiguration](../classes/lib_k8s_validatingWebhookConfiguration.ValidatingWebhookConfiguration.md) + +## Interfaces + +- [KubeValidatingWebhookConfiguration](../interfaces/lib_k8s_validatingWebhookConfiguration.KubeValidatingWebhookConfiguration.md) diff --git a/docs/latest/development/api/modules/lib_k8s_vpa.md b/docs/latest/development/api/modules/lib_k8s_vpa.md new file mode 100644 index 0000000..a315b92 --- /dev/null +++ b/docs/latest/development/api/modules/lib_k8s_vpa.md @@ -0,0 +1,9 @@ +# Module: lib/k8s/vpa + +## Classes + +- [VPA](../classes/lib_k8s_vpa.VPA.md) + +## Interfaces + +- [KubeVPA](../interfaces/lib_k8s_vpa.KubeVPA.md) diff --git a/docs/latest/development/api/modules/lib_router.md b/docs/latest/development/api/modules/lib_router.md new file mode 100644 index 0000000..b2d940e --- /dev/null +++ b/docs/latest/development/api/modules/lib_router.md @@ -0,0 +1,127 @@ +# Module: lib/router + +## Interfaces + +- [Route](../interfaces/lib_router.Route.md) +- [RouteURLProps](../interfaces/lib_router.RouteURLProps.md) + +## Variables + +### NotFoundRoute + +• **NotFoundRoute**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `component` | () => `Element` | +| `exact` | `boolean` | +| `name` | `string` | +| `noAuthRequired` | `boolean` | +| `path` | `string` | +| `sidebar` | ``null`` | + +#### Defined in + +[lib/router.tsx:761](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L761) + +## Functions + +### createRouteURL + +▸ **createRouteURL**(`routeName`, `params?`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `routeName` | `string` | +| `params` | [`RouteURLProps`](../interfaces/lib_router.RouteURLProps.md) | + +#### Returns + +`string` + +#### Defined in + +[lib/router.tsx:819](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L819) + +___ + +### getDefaultRoutes + +▸ **getDefaultRoutes**(): `Object` + +#### Returns + +`Object` + +#### Defined in + +[lib/router.tsx:847](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L847) + +___ + +### getRoute + +▸ **getRoute**(`routeName`): [`Route`](../interfaces/lib_router.Route.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `routeName` | `string` | + +#### Returns + +[`Route`](../interfaces/lib_router.Route.md) + +#### Defined in + +[lib/router.tsx:770](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L770) + +___ + +### getRoutePath + +▸ **getRoutePath**(`route`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `route` | [`Route`](../interfaces/lib_router.Route.md) | + +#### Returns + +`string` + +#### Defined in + +[lib/router.tsx:803](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L803) + +___ + +### getRouteUseClusterURL + +▸ **getRouteUseClusterURL**(`route`): `boolean` + +Should the route use a cluster URL? + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `route` | [`Route`](../interfaces/lib_router.Route.md) | + +#### Returns + +`boolean` + +true when a cluster URL contains cluster in the URL. eg. /c/minikube/my-url + false, the URL does not contain the cluster. eg. /my-url + +#### Defined in + +[lib/router.tsx:791](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/router.tsx#L791) diff --git a/docs/latest/development/api/modules/lib_util.auth.md b/docs/latest/development/api/modules/lib_util.auth.md new file mode 100644 index 0000000..77ec214 --- /dev/null +++ b/docs/latest/development/api/modules/lib_util.auth.md @@ -0,0 +1,112 @@ +# Namespace: auth + +[lib/util](lib_util.md).auth + +## Functions + +### deleteTokens + +▸ **deleteTokens**(): `void` + +#### Returns + +`void` + +#### Defined in + +[lib/auth.ts:41](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L41) + +___ + +### getToken + +▸ **getToken**(`cluster`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster` | `string` | + +#### Returns + +`any` + +#### Defined in + +[lib/auth.ts:7](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L7) + +___ + +### getUserInfo + +▸ **getUserInfo**(`cluster`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster` | `string` | + +#### Returns + +`any` + +#### Defined in + +[lib/auth.ts:17](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L17) + +___ + +### hasToken + +▸ **hasToken**(`cluster`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[lib/auth.ts:22](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L22) + +___ + +### logout + +▸ **logout**(): `void` + +#### Returns + +`void` + +#### Defined in + +[lib/auth.ts:45](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L45) + +___ + +### setToken + +▸ **setToken**(`cluster`, `token`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `cluster` | `string` | +| `token` | ``null`` \| `string` | + +#### Returns + +`void` + +#### Defined in + +[lib/auth.ts:30](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/auth.ts#L30) diff --git a/docs/latest/development/api/modules/lib_util.md b/docs/latest/development/api/modules/lib_util.md new file mode 100644 index 0000000..e1138ef --- /dev/null +++ b/docs/latest/development/api/modules/lib_util.md @@ -0,0 +1,484 @@ +# Module: lib/util + +## Namespaces + +- [auth](lib_util.auth.md) +- [units](lib_util.units.md) + +## Interfaces + +- [TimeAgoOptions](../interfaces/lib_util.TimeAgoOptions.md) + +## Type aliases + +### DateFormatOptions + +Ƭ **DateFormatOptions**: ``"brief"`` \| ``"mini"`` + +#### Defined in + +[lib/util.ts:33](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L33) + +___ + +### DateParam + +Ƭ **DateParam**: `string` \| `number` \| `Date` + +#### Defined in + +[lib/util.ts:31](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L31) + +## Variables + +### CLUSTER\_ACTION\_GRACE\_PERIOD + +• **CLUSTER\_ACTION\_GRACE\_PERIOD**: ``5000`` + +#### Defined in + +[lib/util.ts:29](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L29) + +## Functions + +### compareUnits + +▸ **compareUnits**(`quantity1`, `quantity2`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `quantity1` | `string` | +| `quantity2` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[lib/util.ts:302](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L302) + +___ + +### filterGeneric + +▸ **filterGeneric**<`T`\>(`item`, `search?`, `matchCriteria?`): `boolean` + +Filters a generic item based on the filter state. + +The item is considered to match if any of the matchCriteria (described as JSONPath) +matches the filter.search contents. Case matching is insensitive. + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | extends `Object` = { `[key: string]`: `any`; } | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `item` | `T` | The item to filter. | +| `search?` | `string` | - | +| `matchCriteria?` | `string`[] | The JSONPath criteria to match. | + +#### Returns + +`boolean` + +#### Defined in + +[redux/filterSlice.ts:71](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/filterSlice.ts#L71) + +___ + +### filterResource + +▸ **filterResource**(`item`, `filter`, `search?`, `matchCriteria?`): `boolean` + +Filters a resource based on the filter state. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `item` | [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md) | The item to filter. | +| `filter` | `FilterState` | The filter state. | +| `search?` | `string` | - | +| `matchCriteria?` | `string`[] | The JSONPath criteria to match. | + +#### Returns + +`boolean` + +True if the item matches the filter, false otherwise. + +#### Defined in + +[redux/filterSlice.ts:24](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/redux/filterSlice.ts#L24) + +___ + +### formatDuration + +▸ **formatDuration**(`duration`, `options?`): `string` + +Format a duration in milliseconds to a human-readable string. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `duration` | `number` | The duration in milliseconds. | +| `options` | [`TimeAgoOptions`](../interfaces/lib_util.TimeAgoOptions.md) | `format` takes "brief" or "mini". "brief" rounds the date and uses the largest suitable unit (e.g. "4 weeks"). "mini" uses something like "4w" (for 4 weeks). | + +#### Returns + +`string` + +The formatted duration. + +#### Defined in + +[lib/util.ts:65](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L65) + +___ + +### getCluster + +▸ **getCluster**(): `string` \| ``null`` + +#### Returns + +`string` \| ``null`` + +The current cluster name, or null if not in a cluster context. + +#### Defined in + +[lib/cluster.ts:20](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/cluster.ts#L20) + +___ + +### getClusterPrefixedPath + +▸ **getClusterPrefixedPath**(`path?`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `path?` | ``null`` \| `string` | + +#### Returns + +`string` + +A path prefixed with cluster path, and the given path. + +The given path does not start with a /, it will be added. + +#### Defined in + +[lib/cluster.ts:9](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/cluster.ts#L9) + +___ + +### getPercentStr + +▸ **getPercentStr**(`value`, `total`): ``null`` \| `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `number` | +| `total` | `number` | + +#### Returns + +``null`` \| `string` + +#### Defined in + +[lib/util.ts:102](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L102) + +___ + +### getReadyReplicas + +▸ **getReadyReplicas**(`item`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `item` | [`Workload`](lib_k8s_cluster.md#workload) | + +#### Returns + +`any` + +#### Defined in + +[lib/util.ts:111](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L111) + +___ + +### getResourceMetrics + +▸ **getResourceMetrics**(`item`, `metrics`, `resourceType`): `any`[] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `item` | [`Node`](../classes/lib_k8s_node.Node.md) | +| `metrics` | [`KubeMetrics`](../interfaces/lib_k8s_cluster.KubeMetrics.md)[] | +| `resourceType` | ``"cpu"`` \| ``"memory"`` | + +#### Returns + +`any`[] + +#### Defined in + +[lib/util.ts:129](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L129) + +___ + +### getResourceStr + +▸ **getResourceStr**(`value`, `resourceType`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `number` | +| `resourceType` | ``"cpu"`` \| ``"memory"`` | + +#### Returns + +`string` + +#### Defined in + +[lib/util.ts:119](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L119) + +___ + +### getTotalReplicas + +▸ **getTotalReplicas**(`item`): `any` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `item` | [`Workload`](lib_k8s_cluster.md#workload) | + +#### Returns + +`any` + +#### Defined in + +[lib/util.ts:115](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L115) + +___ + +### localeDate + +▸ **localeDate**(`date`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `date` | [`DateParam`](lib_util.md#dateparam) | + +#### Returns + +`string` + +#### Defined in + +[lib/util.ts:85](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L85) + +___ + +### normalizeUnit + +▸ **normalizeUnit**(`resourceType`, `quantity`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `resourceType` | `string` | +| `quantity` | `string` | + +#### Returns + +`string` + +#### Defined in + +[lib/util.ts:311](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L311) + +___ + +### timeAgo + +▸ **timeAgo**(`date`, `options?`): `string` + +Show the time passed since the given date, in the desired format. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `date` | [`DateParam`](lib_util.md#dateparam) | The date since which to calculate the duration. | +| `options` | [`TimeAgoOptions`](../interfaces/lib_util.TimeAgoOptions.md) | `format` takes "brief" or "mini". "brief" rounds the date and uses the largest suitable unit (e.g. "4 weeks"). "mini" uses something like "4w" (for 4 weeks). | + +#### Returns + +`string` + +The formatted date. + +#### Defined in + +[lib/util.ts:46](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L46) + +___ + +### useErrorState + +▸ **useErrorState**(`dependentSetter?`): `any`[] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `dependentSetter?` | (...`args`: `any`) => `void` | + +#### Returns + +`any`[] + +#### Defined in + +[lib/util.ts:169](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L169) + +___ + +### useFilterFunc + +▸ **useFilterFunc**<`T`\>(`matchCriteria?`): (`item`: `T`, `search?`: `string`) => `boolean` + +Get a function to filter kube resources based on the current global filter state. + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | extends [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md) \| { `[key: string]`: `any`; } = [`KubeObjectInterface`](../interfaces/lib_k8s_cluster.KubeObjectInterface.md) \| [`KubeEvent`](../interfaces/lib_k8s_event.KubeEvent.md) | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `matchCriteria?` | `string`[] | The JSONPath criteria to match. | + +#### Returns + +`fn` + +A filter function that can be used to filter a list of items. + +▸ (`item`, `search?`): `boolean` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `item` | `T` | +| `search?` | `string` | + +##### Returns + +`boolean` + +#### Defined in + +[lib/util.ts:154](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L154) + +___ + +### useId + +▸ **useId**(`prefix?`): `undefined` \| `string` + +Creates a unique ID, with the given prefix. +If UNDER_TEST is set to true, it will return the same ID every time, so snapshots do not get invalidated. + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `prefix` | `string` | `''` | + +#### Returns + +`undefined` \| `string` + +#### Defined in + +[lib/util.ts:390](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L390) + +___ + +### useURLState + +▸ **useURLState**(`key`, `defaultValue`): [`number`, `React.Dispatch`<`React.SetStateAction`<`number`\>\>] + +A hook to manage a state variable that is also stored in the URL. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The name of the key in the URL. If empty, then the hook behaves like useState. | +| `defaultValue` | `number` | - | + +#### Returns + +[`number`, `React.Dispatch`<`React.SetStateAction`<`number`\>\>] + +#### Defined in + +[lib/util.ts:194](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L194) + +▸ **useURLState**(`key`, `valueOrParams`): [`number`, `React.Dispatch`<`React.SetStateAction`<`number`\>\>] + +A hook to manage a state variable that is also stored in the URL. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The name of the key in the URL. If empty, then the hook behaves like useState. | +| `valueOrParams` | `number` \| `URLStateParams`<`number`\> | - | + +#### Returns + +[`number`, `React.Dispatch`<`React.SetStateAction`<`number`\>\>] + +#### Defined in + +[lib/util.ts:198](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/util.ts#L198) diff --git a/docs/latest/development/api/modules/lib_util.units.md b/docs/latest/development/api/modules/lib_util.units.md new file mode 100644 index 0000000..62ddcee --- /dev/null +++ b/docs/latest/development/api/modules/lib_util.units.md @@ -0,0 +1,143 @@ +# Namespace: units + +[lib/util](lib_util.md).units + +## Variables + +### TO\_GB + +• **TO\_GB**: `number` + +#### Defined in + +[lib/units.ts:10](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L10) + +___ + +### TO\_ONE\_CPU + +• **TO\_ONE\_CPU**: ``1000000000`` + +#### Defined in + +[lib/units.ts:12](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L12) + +___ + +### TO\_ONE\_M\_CPU + +• **TO\_ONE\_M\_CPU**: ``1000000`` + +#### Defined in + +[lib/units.ts:11](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L11) + +## Functions + +### parseCpu + +▸ **parseCpu**(`value`): `number` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `string` | + +#### Returns + +`number` + +#### Defined in + +[lib/units.ts:62](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L62) + +___ + +### parseDiskSpace + +▸ **parseDiskSpace**(`value`): `number` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `string` | + +#### Returns + +`number` + +#### Defined in + +[lib/units.ts:14](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L14) + +___ + +### parseRam + +▸ **parseRam**(`value`): `number` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `string` | + +#### Returns + +`number` + +#### Defined in + +[lib/units.ts:18](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L18) + +___ + +### unparseCpu + +▸ **unparseCpu**(`value`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `unit` | `string` | +| `value` | `number` | + +#### Defined in + +[lib/units.ts:72](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L72) + +___ + +### unparseRam + +▸ **unparseRam**(`value`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `number` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `unit` | `string` | +| `value` | `number` | + +#### Defined in + +[lib/units.ts:49](https://github.com/headlamp-k8s/headlamp/blob/65bfc11e/frontend/src/lib/units.ts#L49) diff --git a/docs/latest/development/api/modules/plugin_lib.md b/docs/latest/development/api/modules/plugin_lib.md new file mode 100644 index 0000000..d72a90f --- /dev/null +++ b/docs/latest/development/api/modules/plugin_lib.md @@ -0,0 +1,10 @@ +# Module: plugin/lib + +## Classes + +- [Headlamp](../classes/plugin_lib.Headlamp.md) +- [Plugin](../classes/plugin_lib.Plugin.md) + +## Interfaces + +- [AppMenu](../interfaces/plugin_lib.AppMenu.md) diff --git a/docs/latest/development/api/modules/plugin_registry.md b/docs/latest/development/api/modules/plugin_registry.md new file mode 100644 index 0000000..d7d6781 --- /dev/null +++ b/docs/latest/development/api/modules/plugin_registry.md @@ -0,0 +1,900 @@ +--- +title: "Module: plugin/registry" +linkTitle: "plugin/registry" +slug: "plugin_registry" +--- + +## Enumerations + +- [DefaultAppBarAction](../enums/plugin_registry.DefaultAppBarAction.md) +- [DefaultDetailsViewSection](../enums/plugin_registry.DefaultDetailsViewSection.md) +- [DefaultSidebars](../enums/plugin_registry.DefaultSidebars.md) + +## Classes + +- [Registry](../classes/plugin_registry.Registry.md) + +## Interfaces + +- [AppLogoProps](../interfaces/plugin_registry.AppLogoProps.md) +- [ClusterChooserProps](../interfaces/plugin_registry.ClusterChooserProps.md) +- [CreateResourceEvent](../interfaces/plugin_registry.CreateResourceEvent.md) +- [DeleteResourceEvent](../interfaces/plugin_registry.DeleteResourceEvent.md) +- [DetailsViewSectionProps](../interfaces/plugin_registry.DetailsViewSectionProps.md) +- [EditResourceEvent](../interfaces/plugin_registry.EditResourceEvent.md) +- [ErrorBoundaryEvent](../interfaces/plugin_registry.ErrorBoundaryEvent.md) +- [EventListEvent](../interfaces/plugin_registry.EventListEvent.md) +- [HeadlampEvent](../interfaces/plugin_registry.HeadlampEvent.md) +- [LogsEvent](../interfaces/plugin_registry.LogsEvent.md) +- [PluginLoadingErrorEvent](../interfaces/plugin_registry.PluginLoadingErrorEvent.md) +- [PluginSettingsDetailsProps](../interfaces/plugin_registry.PluginSettingsDetailsProps.md) +- [PluginsLoadedEvent](../interfaces/plugin_registry.PluginsLoadedEvent.md) +- [PodAttachEvent](../interfaces/plugin_registry.PodAttachEvent.md) +- [ResourceDetailsViewLoadedEvent](../interfaces/plugin_registry.ResourceDetailsViewLoadedEvent.md) +- [ResourceListViewLoadedEvent](../interfaces/plugin_registry.ResourceListViewLoadedEvent.md) +- [RestartResourceEvent](../interfaces/plugin_registry.RestartResourceEvent.md) +- [ScaleResourceEvent](../interfaces/plugin_registry.ScaleResourceEvent.md) +- [SectionFuncProps](../interfaces/plugin_registry.SectionFuncProps.md) +- [SidebarEntryProps](../interfaces/plugin_registry.SidebarEntryProps.md) +- [TerminalEvent](../interfaces/plugin_registry.TerminalEvent.md) + +## Type aliases + +### AppBarActionProcessorType + +Ƭ **AppBarActionProcessorType**: (`info`: `AppBarActionsProcessorArgs`) => `AppBarAction`[] + +#### Type declaration + +▸ (`info`): `AppBarAction`[] + +##### Parameters + +| Name | Type | +| :----- | :--------------------------- | +| `info` | `AppBarActionsProcessorArgs` | + +##### Returns + +`AppBarAction`[] + +#### Defined in + +[redux/actionButtonsSlice.ts:59](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/redux/actionButtonsSlice.ts#L59) + +--- + +### AppLogoType + +Ƭ **AppLogoType**: `React.ComponentType`<[`AppLogoProps`](../interfaces/plugin_registry.AppLogoProps.md)\> \| `ReactElement` \| typeof `React.Component` \| `null` + +#### Defined in + +[components/App/AppLogo.tsx:25](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/components/App/AppLogo.tsx#L25) + +--- + +### ClusterChooserType + +Ƭ **ClusterChooserType**: `React.ComponentType`<[`ClusterChooserProps`](../interfaces/plugin_registry.ClusterChooserProps.md)\> \| `ReactElement` \| `null` + +#### Defined in + +[components/cluster/ClusterChooser.tsx:10](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/components/cluster/ClusterChooser.tsx#L10) + +--- + +### DetailsViewHeaderActionType + +Ƭ **DetailsViewHeaderActionType**: `HeaderActionType` + +#### Defined in + +[plugin/registry.tsx:114](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L114) + +--- + +### DetailsViewHeaderActionsProcessor + +Ƭ **DetailsViewHeaderActionsProcessor**: `HeaderActionsProcessor` + +#### Defined in + +[plugin/registry.tsx:115](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L115) + +--- + +### DetailsViewSectionType + +Ƭ **DetailsViewSectionType**: (...`args`: `any`[]) => `JSX.Element` \| `null` \| `ReactNode` \| `null` \| `ReactElement` \| `ReactNode` + +#### Defined in + +[components/DetailsViewSection/DetailsViewSection.tsx:10](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/components/DetailsViewSection/DetailsViewSection.tsx#L10) + +--- + +### HeadlampEventCallback + +Ƭ **HeadlampEventCallback**: (`data`: [`HeadlampEvent`](../interfaces/plugin_registry.HeadlampEvent.md)) => `void` + +#### Type declaration + +▸ (`data`): `void` + +##### Parameters + +| Name | Type | +| :----- | :---------------------------------------------------------------- | +| `data` | [`HeadlampEvent`](../interfaces/plugin_registry.HeadlampEvent.md) | + +##### Returns + +`void` + +#### Defined in + +[redux/headlampEventSlice.ts:278](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/redux/headlampEventSlice.ts#L278) + +--- + +### PluginSettingsComponentType + +Ƭ **PluginSettingsComponentType**: `React.ComponentType`<[`PluginSettingsDetailsProps`](../interfaces/plugin_registry.PluginSettingsDetailsProps.md)\> \| `ReactElement` \| `null` + +PluginSettingsComponentType is the type of the component associated with the plugin's settings. + +#### Defined in + +[plugin/pluginsSlice.ts:24](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/pluginsSlice.ts#L24) + +--- + +### sectionFunc + +Ƭ **sectionFunc**: (`resource`: [`KubeObject`](lib_k8s_cluster.md#kubeobject)) => [`SectionFuncProps`](../interfaces/plugin_registry.SectionFuncProps.md) \| `null` \| `undefined` + +#### Type declaration + +▸ (`resource`): [`SectionFuncProps`](../interfaces/plugin_registry.SectionFuncProps.md) \| `null` \| `undefined` + +**`deprecated`** please used DetailsViewSectionType and registerDetailViewSection + +##### Parameters + +| Name | Type | +| :--------- | :-------------------------------------------- | +| `resource` | [`KubeObject`](lib_k8s_cluster.md#kubeobject) | + +##### Returns + +[`SectionFuncProps`](../interfaces/plugin_registry.SectionFuncProps.md) \| `null` \| `undefined` + +#### Defined in + +[plugin/registry.tsx:106](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L106) + +## Variables + +### DefaultHeadlampEvents + +• **DefaultHeadlampEvents**: typeof `HeadlampEventType` = `HeadlampEventType` + +#### Defined in + +[plugin/registry.tsx:100](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L100) + +--- + +### DetailsViewDefaultHeaderActions + +• **DetailsViewDefaultHeaderActions**: typeof `DefaultHeaderAction` = `DefaultHeaderAction` + +#### Defined in + +[plugin/registry.tsx:101](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L101) + +## Functions + +### getHeadlampAPIHeaders + +▸ **getHeadlampAPIHeaders**(): `Object` + +Returns headers for making API calls to the headlamp-server backend. + +#### Returns + +`Object` + +#### Defined in + +[helpers/index.ts:368](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/helpers/index.ts#L368) + +--- + +### registerAppBarAction + +▸ **registerAppBarAction**(`headerAction`): `void` + +Add a component into the app bar (at the top of the app). + +**`example`** + +```tsx +import { registerAppBarAction } from "@kinvolk/headlamp-plugin/lib"; +import { Button } from "@mui/material"; + +function ConsoleLogger() { + return ( + + ); +} + +registerAppBarAction(ConsoleLogger); +``` + +#### Parameters + +| Name | Type | Description | +| :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | +| `headerAction` | `AppBarAction` \| `AppBarActionsProcessor` \| [`AppBarActionProcessorType`](plugin_registry.md#appbaractionprocessortype) \| `AppBarActionType` | The action (link) to put in the app bar. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:446](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L446) + +--- + +### registerAppLogo + +▸ **registerAppLogo**(`logo`): `void` + +Add a logo for Headlamp to use instead of the default one. + +**`example`** + +```tsx +import { registerAppLogo } from "@kinvolk/headlamp-plugin/lib"; + +registerAppLogo(

my logo

); +``` + +More complete logo example in plugins/examples/change-logo: + +**`see`** [Change Logo Example](http://github.com/kinvolk/headlamp/plugins/examples/change-logo/) + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `logo` | [`AppLogoType`](plugin_registry.md#applogotype) | is a React Component that takes two required props `logoType` which is a constant string literal that accepts either of the two values `small` or `large` depending on whether the sidebar is in shrink or expanded state so that you can change your logo from small to large and the other optional prop is the `themeName` which is a string with two values 'light' and 'dark' base on which theme is selected. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:546](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L546) + +--- + +### registerClusterChooser + +▸ **registerClusterChooser**(`chooser`): `void` + +Use a custom cluster chooser button + +**`example`** + +```tsx +import { + ClusterChooserProps, + registerClusterChooser, +} from "@kinvolk/headlamp-plugin/lib"; + +registerClusterChooser(({ clickHandler, cluster }: ClusterChooserProps) => { + return ( + + ); +}); +``` + +**`see`** [Cluster Chooser example](http://github.com/kinvolk/headlamp/plugins/examples/cluster-chooser/) + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `chooser` | [`ClusterChooserType`](plugin_registry.md#clusterchoosertype) | is a React Component that takes one required props `clickHandler` which is the action handler that happens when the custom chooser button component click event occurs | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:569](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L569) + +--- + +### registerDetailsViewHeaderAction + +▸ **registerDetailsViewHeaderAction**(`headerAction`): `void` + +Add a component into the details view header. + +**`example`** + +```tsx +import { ActionButton } from "@kinvolk/headlamp-plugin/lib/CommonComponents"; +import { registerDetailsViewHeaderAction } from "@kinvolk/headlamp-plugin/lib"; + +function IconAction() { + return ( + console.log("Hello from IconAction!")} + /> + ); +} + +registerDetailsViewHeaderAction(IconAction); +``` + +#### Parameters + +| Name | Type | Description | +| :------------- | :----------------- | :--------------------------------------- | +| `headerAction` | `HeaderActionType` | The action (link) to put in the app bar. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:350](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L350) + +--- + +### registerDetailsViewHeaderActionsProcessor + +▸ **registerDetailsViewHeaderActionsProcessor**(`processor`): `void` + +Add a processor for the details view header actions. Allowing the modification of header actions. + +**`example`** + +```tsx +import { registerDetailsViewHeaderActionsProcessor, DetailsViewDefaultHeaderActions } from '@kinvolk/headlamp-plugin/lib'; + +// Processor that removes the default edit action. +registerDetailsViewHeaderActionsProcessor((resource, headerActions) => { + return headerActions.filter(action => action.name !== DetailsViewDefaultHeaderActions.EDIT); +}); + +More complete detail view example in plugins/examples/details-view: +@see [Detail View Example](http://github.com/kinvolk/headlamp/plugins/examples/details-view/) +``` + +#### Parameters + +| Name | Type | Description | +| :---------- | :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `processor` | `HeaderActionsProcessor` \| `HeaderActionFuncType` | The processor to add. Receives a resource (for which we are processing the header actions) and the current header actions and returns the new header actions. Return an empty array to remove all header actions. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:373](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L373) + +--- + +### registerDetailsViewSection + +▸ **registerDetailsViewSection**(`viewSection`): `void` + +Append a component to the details view for a given resource. + +**`example`** + +```tsx +import { + registerDetailsViewSection, + DetailsViewSectionProps, +} from "@kinvolk/headlamp-plugin/lib"; + +registerDetailsViewSection(({ resource }: DetailsViewSectionProps) => { + if (resource.kind === "Pod") { + return ( + + The body of our Section for {resource.kind} + + ); + } + return null; +}); +``` + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------- | :-------------------------------------------- | +| `viewSection` | [`DetailsViewSectionType`](plugin_registry.md#detailsviewsectiontype) | The section to add on different view screens. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:480](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L480) + +--- + +### registerDetailsViewSectionsProcessor + +▸ **registerDetailsViewSectionsProcessor**(`processor`): `void` + +Add a processor for the details view sections. Allowing the modification of what sections are shown. + +**`example`** + +```tsx +import { registerDetailsViewSectionsProcessor } from "@kinvolk/headlamp-plugin/lib"; + +registerDetailsViewSectionsProcessor(function addTopSection( + resource, + sections +) { + // Ignore if there is no resource. + if (!resource) { + return sections; + } + + // Check if we already have added our custom section (this function may be called multiple times). + const customSectionId = "my-custom-section"; + if (sections.findIndex((section) => section.id === customSectionId) !== -1) { + return sections; + } + + return [ + { + id: "my-custom-section", + section: , + }, + ...sections, + ]; +}); +``` + +#### Parameters + +| Name | Type | Description | +| :---------- | :------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `processor` | `DetailsViewSectionsProcessor` \| `DetailsViewSectionProcessorType` | The processor to add. Receives a resource (for which we are processing the sections) and the current sections and returns the new sections. Return an empty array to remove all sections. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:518](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L518) + +--- + +### registerGetTokenFunction + +▸ **registerGetTokenFunction**(`override`): `void` + +Override headlamp getToken method + +**`example`** + +```ts +registerGetTokenFunction(() => { + // set token logic here +}); +``` + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------------------------------------------- | :----------------------------------- | +| `override` | (`cluster`: `string`) => `undefined` \| `string` | The getToken override method to use. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:603](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L603) + +--- + +### registerHeadlampEventCallback + +▸ **registerHeadlampEventCallback**(`callback`): `void` + +Add a callback for headlamp events. + +**`example`** + +```ts +import { + DefaultHeadlampEvents, + registerHeadlampEventCallback, + HeadlampEvent, +} from "@kinvolk/headlamp-plugin/lib"; + +registerHeadlampEventCallback((event: HeadlampEvent) => { + if (event.type === DefaultHeadlampEvents.ERROR_BOUNDARY) { + console.error("Error:", event.data); + } else { + console.log(`Headlamp event of type ${event.type}: ${event.data}`); + } +}); +``` + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------ | :------------------- | +| `callback` | [`HeadlampEventCallback`](plugin_registry.md#headlampeventcallback) | The callback to add. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:629](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L629) + +--- + +### registerPluginSettings + +▸ **registerPluginSettings**(`name`, `component`, `displaySaveButton?`): `void` + +Register a plugin settings component. + +**`example`** + +```tsx +import { registerPluginSettings } from "@kinvolk/headlamp-plugin/lib"; +import { TextField } from "@mui/material"; + +function MyPluginSettingsComponent(props: PluginSettingsDetailsProps) { + const { data, onDataChange } = props; + + function onChange(value: string) { + if (onDataChange) { + onDataChange({ works: value }); + } + } + + return ( + onChange(e.target.value)} + label="Normal Input" + variant="outlined" + fullWidth + /> + ); +} + +const displaySaveButton = true; +// Register a plugin settings component. +registerPluginSettings( + "my-plugin", + MyPluginSettingsComponent, + displaySaveButton +); +``` + +More complete plugin settings example in plugins/examples/change-logo: + +**`see`** [Change Logo Example](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/change-logo) + +#### Parameters + +| Name | Type | Default value | Description | +| :------------------ | :------------------------------------------------------------------------------ | :------------ | :------------------------------------- | +| `name` | `string` | `undefined` | The name of the plugin. | +| `component` | [`PluginSettingsComponentType`](plugin_registry.md#pluginsettingscomponenttype) | `undefined` | The component to use for the settings. | +| `displaySaveButton` | `boolean` | `false` | Whether to display the save button. | + +#### Returns + +`void` + +void + +#### Defined in + +[plugin/registry.tsx:675](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L675) + +--- + +### registerResourceTableColumnsProcessor + +▸ **registerResourceTableColumnsProcessor**(`processor`): `void` + +Add a processor for the resource table columns. Allowing the modification of what tables show. + +**`example`** + +```tsx +import { registerResourceTableColumnsProcessor } from "@kinvolk/headlamp-plugin/lib"; + +// Processor that adds a column to show how many init containers pods have (in the default pods' list table). +registerResourceTableColumnsProcessor(function ageRemover({ id, columns }) { + if (id === "headlamp-pods") { + columns.push({ + label: "Init Containers", + getValue: (pod: Pod) => { + return pod.spec.initContainers.length; + }, + }); + } + + return columns; +}); +``` + +#### Parameters + +| Name | Type | Description | +| :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------- | +| `processor` | `TableColumnsProcessor` \| (`args`: { `columns`: (`ResourceTableColumn` \| `ColumnType`)[] ; `id`: `string` }) => (`ResourceTableColumn` \| `ColumnType`)[] | The processor ID and function. See #TableColumnsProcessor. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:404](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L404) + +--- + +### registerRoute + +▸ **registerRoute**(`routeSpec`): `void` + +Add a Route for a component. + +**`example`** + +```tsx +import { registerRoute } from "@kinvolk/headlamp-plugin/lib"; + +// Add a route that will display the given component and select +// the "traces" sidebar item. +registerRoute({ + path: "/traces", + sidebar: "traces", + component: () => , +}); +``` + +**`see`** [Route examples](https://github.com/kinvolk/headlamp/blob/main/frontend/src/lib/router.tsx) + +**`see`** [Sidebar Example](http://github.com/kinvolk/headlamp/plugins/examples/sidebar/) + +#### Parameters + +| Name | Type | Description | +| :---------- | :------------------------------------------- | :-------------------------------------------------------- | +| `routeSpec` | [`Route`](../interfaces/lib_router.Route.md) | details of URL, highlighted sidebar and component to use. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:322](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L322) + +--- + +### registerRouteFilter + +▸ **registerRouteFilter**(`filterFunc`): `void` + +Remove routes. + +**`example`** + +```tsx +import { registerRouteFilter } from "@kinvolk/headlamp-plugin/lib"; + +registerRouteFilter((route) => (route.path === "/workloads" ? null : route)); +``` + +#### Parameters + +| Name | Type | Description | +| :----------- | :---------------------------------------------------------------------------------------------------------------- | :------------------------------- | +| `filterFunc` | (`entry`: [`Route`](../interfaces/lib_router.Route.md)) => `null` \| [`Route`](../interfaces/lib_router.Route.md) | a function for filtering routes. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:295](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L295) + +--- + +### registerSetTokenFunction + +▸ **registerSetTokenFunction**(`override`): `void` + +Override headlamp setToken method + +**`example`** + +```ts +registerSetTokenFunction((cluster: string, token: string | null) => { + // set token logic here +}); +``` + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------------------------------------------------------- | :----------------------------------- | +| `override` | (`cluster`: `string`, `token`: `null` \| `string`) => `void` | The setToken override method to use. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:585](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L585) + +--- + +### registerSidebarEntry + +▸ **registerSidebarEntry**(`__namedParameters`): `void` + +Add a Sidebar Entry to the menu (on the left side of Headlamp). + +**`example`** + +```tsx +import { registerSidebarEntry } from "@kinvolk/headlamp-plugin/lib"; +registerSidebarEntry({ + parent: "cluster", + name: "traces", + label: "Traces", + url: "/traces", +}); +``` + +**`see`** [Sidebar Example](http://github.com/kinvolk/headlamp/plugins/examples/sidebar/) + +#### Parameters + +| Name | Type | +| :------------------ | :------------------------------------------------------------------------ | +| `__namedParameters` | [`SidebarEntryProps`](../interfaces/plugin_registry.SidebarEntryProps.md) | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:241](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L241) + +--- + +### registerSidebarEntryFilter + +▸ **registerSidebarEntryFilter**(`filterFunc`): `void` + +Remove sidebar menu items. + +**`example`** + +```tsx +import { registerSidebarEntryFilter } from "@kinvolk/headlamp-plugin/lib"; + +registerSidebarEntryFilter((entry) => + entry.name === "workloads" ? null : entry +); +``` + +#### Parameters + +| Name | Type | Description | +| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- | +| `filterFunc` | (`entry`: [`SidebarEntryProps`](../interfaces/plugin_registry.SidebarEntryProps.md)) => `null` \| [`SidebarEntryProps`](../interfaces/plugin_registry.SidebarEntryProps.md) | a function for filtering sidebar entries. | + +#### Returns + +`void` + +#### Defined in + +[plugin/registry.tsx:276](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/plugin/registry.tsx#L276) + +--- + +### runCommand + +▸ **runCommand**(`command`, `args`, `options`): `Object` + +Runs a shell command and returns an object that mimics the interface of a ChildProcess object returned by Node's spawn function. + +This function is intended to be used only when Headlamp is in app mode. + +**`see`** handleRunCommand in app/electron/main.ts + +This function uses the desktopApi.send and desktopApi.receive methods to communicate with the main process. + +**`example`** + +```ts +const minikube = runCommand("minikube", ["status"]); +minikube.stdout.on("data", (data) => { + console.log("stdout:", data); +}); +minikube.stderr.on("data", (data) => { + console.log("stderr:", data); +}); +minikube.on("exit", (code) => { + console.log("exit code:", code); +}); +``` + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------- | :-------------------------------------------- | +| `command` | `"minikube"` \| `"az"` | The command to run. | +| `args` | `string`[] | An array of arguments to pass to the command. | +| `options` | `Object` | - | + +#### Returns + +`Object` + +An object with `stdout`, `stderr`, and `on` properties. You can listen for 'data' events on `stdout` and `stderr`, and 'exit' events with `on`. + +| Name | Type | +| :---------- | :-------------------------------------------------------------------------------- | +| `stderr` | { `on`: (`event`: `string`, `listener`: (`chunk`: `any`) => `void`) => `void` } | +| `stderr.on` | [object Object] | +| `stdout` | { `on`: (`event`: `string`, `listener`: (`chunk`: `any`) => `void`) => `void` } | +| `stdout.on` | [object Object] | +| `on` | (`event`: `string`, `listener`: (`code`: `null` \| `number`) => `void`) => `void` | + +#### Defined in + +[components/App/runCommand.ts:27](https://github.com/headlamp-k8s/headlamp/blob/45b84205/frontend/src/components/App/runCommand.ts#L27) diff --git a/docs/latest/development/backend.md b/docs/latest/development/backend.md new file mode 100644 index 0000000..bb41cd4 --- /dev/null +++ b/docs/latest/development/backend.md @@ -0,0 +1,50 @@ +--- +title: Backend +sidebar_position: 1 +--- + +Headlamp's backend is written in Go and is in charge of redirecting the +client requests to the right clusters, as well as to return any available +plugins for the client to use. + +The backend most basic and essential function is to read the cluster information +from the given configuration, and set up proxies to the defined clusters as +well as endpoints to them. This means that instead of having a set of +endpoints related to the functionality available to the client, it simply +redirects the requests to the defined proxies. + +## Building and running + +The backend (Headlamp's server) can be quickly built using: + +```bash +make backend +``` + +Once built, it can be run in development mode (insecure / don't use in production) using: + +```bash +make run-backend +``` + +## Lint + +To lint the backend/ code. + +```bash +make backend-lint +``` + +## Format + +To format the backend code. + +```bash +make backend-format +``` + +## Test + +```bash +make backend-test +``` diff --git a/docs/latest/development/frontend.md b/docs/latest/development/frontend.md new file mode 100644 index 0000000..ec0f141 --- /dev/null +++ b/docs/latest/development/frontend.md @@ -0,0 +1,78 @@ +--- +title: Frontend +sidebar_position: 2 +--- + +The frontend is written in Typescript and React, as well as a few other important modules like: + +- Material UI +- React Router +- Redux +- Redux Sagas + +## Building and running + +The frontend can be quickly built using: + +```bash +make frontend +``` + +Once built, it can be run in development mode (auto-refresh) using: + +```bash +make run-frontend +``` + +This command leverages the `create-react-app`'s start script that launches +a development server for the frontend (by default at `localhost:3000`). + +## API documentation + +API documentation for TypeScript is done with [typedoc](https://typedoc.org/) and [typedoc-plugin-markdown](https://github.com/tgreyuk/typedoc-plugin-markdown), and is configured in tsconfig.json + +```bash +make docs +``` + +The API output markdown is generated in docs/development/api and is not +committed to git, but is shown on the website at +[headlamp/latest/development/api](https://headlamp.dev/docs/latest/development/api/) + +## Storybook + +Components can be discovered, developed, and tested inside the 'storybook'. + +From within the [Headlamp](https://github.com/headlamp-k8s/headlamp/) repo run: + +```bash +make storybook +``` + +If you are adding new stories, please wrap your story components with the `TestContext` helper +component as it sets up the store, memory router, and other utilities that may be needed for +current or future stories: + +```jsx + + + +``` + +## Accessibility (a11y) + +### Developer console warnings and errors + +axe-core is used to detect some a11y issues at runtime when running +Headlamp in developer mode. This detects more issues than testing +components via eslint or via unit tests. + +Any issues found are reported in the developer console. + +To enable the alert message during development, use the following: + +```bash +REACT_APP_SKIP_A11Y=false make run-frontend +``` + +This shows an alert when an a11y issue is detected. diff --git a/docs/latest/development/i18n/contributing.md b/docs/latest/development/i18n/contributing.md new file mode 100644 index 0000000..5044557 --- /dev/null +++ b/docs/latest/development/i18n/contributing.md @@ -0,0 +1,140 @@ +--- +title: Contributing to Internationalization +sidebar_label: Contributing +--- + +This section introduces some concepts for contributing translations, and is +especially important when submitting a new language. + +**Important:** If you are adding a new language, keep in mind that while all +the specific Kubernetes components' names are translatable, it doesn't mean +that all of them should have a corresponding name in your language. Please, +refer to the [Kubernetes localized docs](https://kubernetes.io/docs/home/) in +your language (if they exist) in order to understand which components should +be translated and which should be left in the original form. + +## Namespaces + +We have only two main [i18next namespaces](https://www.i18next.com/principles/namespaces): + +- **glossary**: For Kubernetes jargon or terms/sentences that are very technical. +- **translation**: Default namespace, used for everything else not in the **glossary** namespace. + +We do have a third namespace that concerns only the desktop app related strings: **app**. + +In Headlamp, namespaces are separated by a `|` character. E.g. `t('glossary|Pod')`. + +## Context + +In order to better express context for a translation, we use the [i18next context](https://www.i18next.com/principles/context) feature. It is used like this: + +```typescript +return t("translation|Desired", { context: "pods" }); +``` + +In the example above, we give the extra context of "pods" for the word "Desired", meaning it refers to the concept of pod, and precisely more than one (in case the target language of +the translation distinguishes between plural and singular for this word). + +In the translated files, the context will show up in the respective key as: + +```json + "Desired//context:pods": "" +``` + +And should be translated without that context suffix. For example, for Spanish: + +```json + "Desired//context:pods": "Deseados" +``` + +#### Technical Jargon words + +For some technical/jargon terms there often isn't a good translation for +them. To find these ones, it can be good to look at existing documentation +like the k8s docs. + +The word "Pods" is a good example of a technical word that is used in Spanish. +Maybe it could directly translate to "Vainas", but "Pods" is used instead. + +- https://kubernetes.io/es/docs/concepts/workloads/pods/pod/ +- https://kubernetes.io/docs/concepts/workloads/pods/pod/ + +## Number formatting + +Numbers are formatted in a locale specific way. For example in 'en' +they are formatted like `1,000,000` but with 'de' they are formatted +like `1.000.000`. + +Here is an example which can use number formatting: + +```JavaScript + return t('{{numReady, number}} / {{numItems, number}} Requested', { + numReady: podsReady.length, + numItems: items.length, + }); +``` + +Number formatting is being done with [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat). + +## Date formatting + +Here's an example of using date formatting: + +```Javascript + return t('appsection:When {{ date, date }}', { + + }); +``` + +## Adding a new language. + +Create a folder using the locale code in: +`frontend/src/i18n/locales/` and `app/electron/locales` + +Then run `make i18n`. This command parses the translatable strings in +the project and creates the corresponding catalog files. + +Integrated components may need to be adjusted (MaterialUI/Monaco etc). + +## Translating missing strings + +Since technical development happens more frequently than translations, chances +are that developers introduce new strings that need to be translated, and will +be stored as empty strings (defaulting to English) in the translation files. + +In order to more easily spot and translate the missing strings, we have two CLI +tools: + +- _extract-empty-translations.js_: This script (in ./frontend/src/i18n/tools/) + will extract the strings without a corresponding translation from the translation + files, and copy them into a new file. + E.g. `$ node copy-empty-translations.js ../locales/de/translation.json` will + by default create a `../locales/de/translation_empty.json`. This file can be + used to translate the strings in a more isolated way. +- _copy-translations.js_: This script (in ./frontend/src/i18n/tools/) + by default copies any existing translations from one source translation file to + a target one, if the same key is not translated in the destination file. + E.g. `$ node copy-translations.js ../locales/de/translation_no_longer_empty.json ../locales/de/translation.json` will + copy any new translations from the file given as the first argument to the one + given as the second argument, if the same key is not translated in the second. + There are some options to this script, which can be seen by running it with the + `--help` flag. + +## Material UI + +Some Material UI components are localized, and are configured +via a theme provider. + +See the Material UI +[Localization Guide](https://material-ui.com/guides/localization/), +and also `frontend/src/i18n/ThemeProviderNexti18n.tsx` where integration is done. + +## Storybook integration + +TODO: not implmented. There's no working addons that let you set a language easily. + +## Monaco editor integration + +See `frontend/src/components/common/Resource/EditorDialog.tsx` + +Note, that Monaco editor does not support pt, ta and other languages. diff --git a/docs/latest/development/i18n/index.md b/docs/latest/development/i18n/index.md new file mode 100644 index 0000000..07d06ce --- /dev/null +++ b/docs/latest/development/i18n/index.md @@ -0,0 +1,31 @@ +--- +title: i18n Internationalization / Localization +sidebar_label: Internationalization +sidebar_position: 5 +--- + +Headlamp's internationalization uses the i18next, i18next-parser, and +react-i18next libraries. + +## Default language, and locales + +We started with an international English, and that will be the fallback language. + +Now we're starting with locales familiar, and will accept +translations through github. + +## Browser based language detection + +We use +[i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector#readme) + +This can select the browser language through various means like through +cookies, the html language tag and other ways. + +One way to change the locale is to use `?lng=en` in the URL. + +## Lazy load locale files + +Dynamic imports and the webpack code splitting feature we +load locale files from `src/i18n/locales/{{lng}}/{{ns}}.json` +where `{{lng}}` is the language code, and `{{ns}}` is the namespace. diff --git a/docs/latest/development/index.md b/docs/latest/development/index.md new file mode 100644 index 0000000..64c808e --- /dev/null +++ b/docs/latest/development/index.md @@ -0,0 +1,280 @@ +--- +title: Development +sidebar_position: 5 +--- + +This is a quickstart guide for building and running Headlamp for development. + +Please make sure you read the [Contribution Guidelines](../contributing.md) as well +before starting to contribute to the project. + +See [platforms](../platforms.md) to find out which browsers, OS and flavours of Kubernetes we support. + +## Dependencies to get started + +These are the required dependencies to get started. Other dependencies are pulled in by the golang or node package managers (see frontend/package.json, app/package.json, backend/go.mod and Dockerfile). + +- [Node.js](https://nodejs.org/en/download/) Latest LTS (20.11.1 at time of writing). Many of us use [nvm](https://github.com/nvm-sh/nvm) for installing multiple versions of Node. +- [Go](https://go.dev/doc/install), (1.22 at time of writing) +- [Make](https://www.gnu.org/software/make/) (GNU). Often installed by default. On Windows this can be installed with the "chocolatey" package manager that is installed with node. +- [Kubernetes](https://kubernetes.io/), we suggest [minikube](https://minikube.sigs.k8s.io/docs/) as one good K8s installation for testing locally. Other k8s installations are supported (see [platforms](../platforms.md). + +## Build the code + +Headlamp is composed of a `backend` and a `frontend`. + +You can build both the `backend` and `frontend` by running. + +```bash +make +``` + +Or individually: + +```bash +make backend +``` + +and + +```bash +make frontend +``` + +## Run the code + +The quickest way to get the `backend` and `frontend` running for development is +the following (respectively): + +```bash +make run-backend +``` + +and in a different terminal instance: + +```bash +make run-frontend +``` + +## Build the app + +You can build the app for Linux, Windows, or Mac. + +Do so on the platform you are building for. That is build the mac app on a Mac, +and the linux app on a linux box. + +First, we need to + +```bash +make backend frontend +``` + +Then choose the relevant command. + +```bash +make app-linux +``` + +```bash +make app-mac +``` + +```bash +make app-win +``` + +For Windows, by default it will produce an installer using [NSIS (Nullsoft Scriptable Install System)](https://sourceforge.net/projects/nsis/). + +If you prefer an `.msi` installer, then be sure to install the [WiX Toolset](https://wixtoolset.org/) and have its `light.exe` and `candle.exe` in the Windows path. +E.g. if you are using WiX Toolset version 3.11, this can be done by running the following command, +before the one above: + +```bash +set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin +``` + +Then run the following command to generate the `.msi` installer: + +```bash +make app-win-msi +``` + +See the generated app files in app/dist/ . + +### Running the app on Ubuntu WSL + +Headlamp on WSL requires some packages installed (maybe it requires more) to run the app. + +```bash +sudo apt install libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 libnss3 libasound2 +``` + +Some of these are also needed some of them only for the end to end tests. + +```bash +sudo apt-get install firefox libgstreamer-plugins-bad1.0-0 libegl1 libnotify4 libopengl0 libwoff1 libharfbuzz-icu0 libgstreamer-gl1.0-0 libwebpdemux2 libenchant1c2a libsecret-1-0 libhyphen0 libevdev2 libgles2 gstreamer1.0-libav +``` + +## Build a container image + +The following command builds a container image for Headlamp from the current +source. It will run the `frontend` from a `backend`'s static server, and +options can be appended to the main command as arguments. + +```bash +make image +``` + +### Custom container base images + +The Dockerfile takes a build argument for the base image used. You can specify the +base image used using the IMAGE_BASE environment variable with make. + +```bash +IMAGE_BASE=debian:latest make image +``` + +If no IMAGE_BASE is specified, then a default image is used (see Dockerfile for exact default image used). + +This is useful if there are requirements on what base images can be used in an environment. + +So far Debian variants (including Ubuntu), and Alpine Linux are supported. +If you have other requirements, please get in touch. + +### Running the container image + +With docker you can run the Headlamp image(`ghcr.io/headlamp-k8s/headlamp:latest`). +Note, the mount arguments add folders that are referenced in the ~/.kube +folders - you may need to add other folders if your config refers +to more folders. + +```bash +docker run --network="host" -p 127.0.0.1:4466:4466/tcp --mount type=bind,source="/home/rene/.minikube",target=$HOME/.minikube --mount type=bind,source="$HOME/.kube",target=/root/.kube ghcr.io/headlamp-k8s/headlamp:latest /headlamp/headlamp-server -html-static-dir /headlamp/frontend -plugins-dir=/headlamp/plugins +``` + +If you want to make a new container image called `headlamp-k8s/headlamp:development` +you can run it like this: + +```bash +$ DOCKER_IMAGE_VERSION=development make image +... +Successfully tagged headlamp-k8s/headlamp:development + +$ docker run --network="host" -p 127.0.0.1:4466:4466/tcp --mount type=bind,source="/home/rene/.minikube",target=$HOME/.minikube --mount type=bind,source="$HOME/.kube",target=/root/.kube headlamp-k8s/headlamp:development /headlamp/headlamp-server -html-static-dir /headlamp/frontend -plugins-dir=/headlamp/plugins +``` + +Then go to https://localhost:4466 in your browser. + +### Minikube "in-cluster" + +These instructions are for if you want to use Headlamp running "in-cluster", +and test it locally on minikube with a local container image. + +We assume you've already setup a minikube +(probably with `minikube start --driver=docker`). + +#### Container image in the minikube docker environment + +First we have to make the container image in the minikube docker environment. +This is needed because minikube looks for container images in there, not +ones made in the local docker environment. + +```bash +eval $(minikube docker-env) +DOCKER_IMAGE_VERSION=development make image +``` + +#### Create a deployment yaml. + +```bash +kubectl create deployment headlamp -n kube-system --image=headlamp-k8s/headlamp:development -o yaml --dry-run -- /headlamp/headlamp-server -html-static-dir /headlamp/frontend -in-cluster -plugins-dir=/headlamp/plugins > minikube-headlamp.yaml +``` + +To use the local container image we change the `imagePullPolicy` to Never. +Making kubectl use local images - which is what you want in development. + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + creationTimestamp: null + labels: + app: headlamp + name: headlamp + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: headlamp + strategy: {} + template: + metadata: + creationTimestamp: null + labels: + app: headlamp + spec: + containers: + - command: + - /headlamp/headlamp-server + - -html-static-dir + - /headlamp/frontend + - -in-cluster + - -plugins-dir=/headlamp/plugins + image: headlamp-k8s/headlamp:development + name: headlamp + imagePullPolicy: Never + resources: {} +status: {} +``` + +Now we create the deployment. + +```bash +kubectl apply -f minikube-headlamp.yaml +``` + +Then we expose the deployment, and get a URL where we can see it. + +``` +$ kubectl expose deployment headlamp -n kube-system --type=NodePort --port=4466 +service/headlamp exposed + +$ kubectl get service headlamp -n kube-system +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +headlamp NodePort 10.99.144.210 4466:30712/TCP 6m57s + +$ minikube service headlamp -n kube-system --url +http://192.168.49.2:30342 +``` + +Go to the URL printed by minikube in your browser, and get your token to login. + +### Shipping plugins in the Docker image + +Since the Headlamp server has an option (`-plugins-dir`) for indicating where to find any plugins, +a deployment of Headlamp using the Docker image can mount a plugins folder +and point to it by using the mentioned option. + +An alternative is to build an image that ships some plugins in it. For that, +just create a ".plugins" folder in the Headlamp project directory as the Dockerfile +will include it and point to it by default. + +## Special Build Options + +Here are some options that can be used when building Headlamp, to change its default behavior. + +### Update Checks + +When in the **desktop app**, by default, Headlamp will check for new versions from its Github page and warn the user about it, +as well as showing the release notes after updating to a new version. + +This behavior can be turned off by adding the following to a `.env` file in the `app/` folder: + +```bash +HEADLAMP_CHECK_FOR_UPDATES=false +``` + +## Build Headlamp Base (Headlamp without any plugins) + +For building Headlamp Base (Headlamp without plugins), simply remove the `app/app-build-manifest.json` and run the build commands in the sections above. diff --git a/docs/latest/development/oidc.md b/docs/latest/development/oidc.md new file mode 100644 index 0000000..b91a877 --- /dev/null +++ b/docs/latest/development/oidc.md @@ -0,0 +1,84 @@ +--- +title: Testing OIDC +sidebar_position: 4 +--- + +OIDC (OpenID Connect) is a protocol that allows web applications to authenticate users through an identity provider and obtain basic profile information about the user. + +## Testing OIDC with Kubernetes API Server + +This guide will walk you through the process of testing OIDC on a Minikube cluster using an Azure App Registration. OIDC allows you to authenticate and interact with the cluster using kubectl. + +### Create an Application on Azure + +- Create an [application on Azure](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app) and specify the redirect URL as `http://localhost:8000`. +- Generate a secret for the application under "Certificates and Secrets" and make note of its value. + +### Start Minikube + +- Start Minikube without enabling OIDC: `minikube start`. This is done to avoid RBAC (Role-Based Access Control) issues during startup. However, we can enable OIDC once the cluster is running. + +### SSH into Minikube + +- Once the Minikube cluster is started, SSH into it: `minikube ssh`. +- Install the Vim text editor: `sudo apt-get update && sudo apt-get install vim`. + +### Edit the kube-apiserver Configuration + +- Edit the kube-apiserver configuration file using Vim: `sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml`. +- Add the following lines to the configuration file: + +```bash + - --oidc-issuer-url=https://sts.windows.net// + - --oidc-client-id= + - --oidc-username-claim=email +``` + +- Save the changes to the configuration file and exit Vim. + +### Wait for API Server Restart + +- Wait for approximately 1 minute for the API server to restart and apply the new configuration. + +### Install kubelogin + +- Install [kubelogin](https://github.com/int128/kubelogin), which is a tool for testing Kubernetes authentication: + +```bash +# Here's how to do it with Homebrew as an example: +brew install int128/kubelogin/kubelogin +``` + +### Create a Kubernetes User + +- Create a Kubernetes user using the following command: + +```bash +kubectl config set-credentials oidc-user \ +--exec-api-version=client.authentication.k8s.io/v1beta1 \ +--exec-command=kubectl \ +--exec-arg=oidc-login \ +--exec-arg=get-token \ +--exec-arg=--oidc-issuer-url=https://sts.windows.net// \ +--exec-arg=--oidc-client-id= \ +--exec-arg=--oidc-client-secret= \ +--exec-arg=--oidc-extra-scope="email offline_access profile openid" +``` + +### Set the Context for the OIDC User + +- Set the context of the OIDC user as the default context using the following command: + +```bash +kubectl config set-context --current --user=oidc-user +``` + +### Test Access to Pods + +- Now you can test access to pods using the OIDC user. Try running the following command to get a list of pods: + +```bash +kubectl get po -A +``` + +By following these steps, you can test OIDC with the Kubernetes API Server and authenticate using the OIDC user you created. Refer to [this doc](../installation/in-cluster/oidc.md) to access Headlamp using OIDC. diff --git a/docs/latest/development/plugins/building.md b/docs/latest/development/plugins/building.md new file mode 100644 index 0000000..8670df8 --- /dev/null +++ b/docs/latest/development/plugins/building.md @@ -0,0 +1,258 @@ +--- +title: Building and Shipping Plugins +sidebar_label: Building & Shipping +--- + +This section explains how to start developing a Headlamp plugin, and how +to ship it once finished. + +## Creating a new plugin + +This is how to start a new plugin: + +```bash +npx --yes @kinvolk/headlamp-plugin create headlamp-myfancy +cd headlamp-myfancy +npm run start +``` + +There's some basic code inside src/index.tsx. + +Now run Headlamp (the desktop app or the +[development version](../index.md#run-the-code)), +and your plugin should be loaded. + +Using the above commands means that Headlamp will **automatically reload** +whenever to make a change to the plugin. + +ℹ️ This automatic reload does not happen when running in-cluster, +even if the plugins folder is changed. i.e. if you want to serve +updated plugins, you need to restart the server. + +## Code Formatting, Linting, and Type Checking + +Your plugin has a few tools built in to help make development easier. + +#### Format code with prettier + +```bash +npm run format +``` + +#### Find code lint issues with eslint + +```bash +npm run lint +``` + +Eslint also allows you to try and automatically fix issues. + +```bash +npm run lint-fix +``` + +#### Run the type checker + +```bash +npm run tsc +``` + +#### Run the tests + +```bash +npm run test +``` + +## Building for production + +To build the previous plugin example for production, run the following +command: + +```bash +cd headlamp-myfancy +npm run build +``` + +This will create a file with the bundled plugin in +`headlamp-myfancy/dist/main.js`. + +### Building a folder of packages at once + +For convienience the `headlamp-plugin build` command can build a +package or folder of packages. + +```bash +npx @kinvolk/headlamp-plugin build myplugins/headlamp-myfancy +npx @kinvolk/headlamp-plugin build myplugins +``` + +## Shipping and Deploying Plugins + +Once a plugin is ready to be shipped (built for production) it needs to +be placed in a "plugins directory", for Headlamp to load them. + +For example, if we have built 3 plugins called MyPlugin1, MyPlugin2, and +MyPlugin3, they should be added to a directory in the following structure: + +``` +.plugins/ + MyPlugin1/ + main.js + MyPlugin2/ + main.js + MyPlugin3/ + main.js +``` + +If our plugins are places in `myplugins`, we can conveniently create that +folder with the following command: + +```bash +npx @kinvolk/headlamp-plugin extract ./myplugins /path/to/.plugins +``` + +This also works individually (for each plugin): + +```bash +npx @kinvolk/headlamp-plugin extract ./myplugins/MyPlugin1 /path/to/./plugins +``` + +### In-cluster deployment with plugins + +For in-cluster Headlamp deployments, when running Headlamp's server, +the `-plugin-dir` option should point to the directory: + +```bash +./headlamp-server -plugins-dir=.plugins +``` + +### Using plugins on the desktop version + +The Headlamp desktop app will look for the plugins directory (in the format +mentioned above) either under the user's Headlamp configuration folder, +or within the current folder as `.plugins` if the former doesn't exist. + +### Bundling plugins with desktop version + +To build a Headlamp app with a set of plugins, first extract some plugins +into the .plugins folder in the root of the "headlamp" repo. + +```bash +cd plugins/examples/pod-counter +npm install +npm run build +cd ../.. + +mkdir .plugins +npx @kinvolk/headlamp-plugin extract ./plugins/examples/ ./.plugins +ls -la .plugins +make app-linux +``` + +For more on how to extract files into there see "Shipping and Deploying Plugins" above. + +### More on making a headlamp container image including plugins + +See the blog post +"[Get up to speed deploying Headlamp with plugins](https://headlamp.dev/blog/2022/10/get-up-to-speed-deploying-headlamp-with-plugins/)" +for more information on building a container image with your plugins. + +## Writing storybook stories + +What is a storybook story? + +From https://storybook.js.org/docs/web-components/get-started/introduction + +> Storybook is a tool for UI development. It makes development faster and +> easier by isolating components. This allows you to work on one component +> at a time. You can develop entire UIs without needing to start up a +> complex dev stack, force certain data into your database, +> or navigate around your application. + +See an example in your browser: + +```bash +$ cd plugins/examples/pod-counter +$ ls src +headlamp-plugin.d.ts index.tsx Message.stories.tsx Message.tsx +$ npm install +$ npm run storybook +``` + +Your browser should open and show you a Message component with three +different states the component can be in. + +Notices that there is a Message.stories.tsx to go along with the Message.tsx +which has the `` component defined within it. See that file for an +example of how to write a story. + +### Snapshot testing + +Another benefit of writing storybook stories is that they can act as +unit tests for regression testing. With storyshots it will save snapshots +of html for the different states that a component can be in. See the +[Snapshot tests](https://storybook.js.org/docs/react/writing-tests/snapshot-testing) +guide in the storybook documentation for more information. + +This is in addition to the benefit of making sure your components can be +manually tested and developed quickly in isolation. + +See the [storybook documentation](https://storybook.js.org/docs/) for full +details on storybook. + +## Running tests on a github action + +A workflow for testing your plugin on github with actions. + +Below is based on the [Building and testing Node.js](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs) docs from GitHub. + +Place this in a file named something like `.github/workflows/headlamp-plugin-github-workflow.yaml` in the root of your repo. + +```yaml +name: Headlamp plugin linting, type checking, and testing + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: ./your-folder-of-plugins + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npx @kinvolk/headlamp-plugin lint . + - run: npx @kinvolk/headlamp-plugin format --check . + - run: npx @kinvolk/headlamp-plugin tsc . + - run: npx @kinvolk/headlamp-plugin test . + - run: npx @kinvolk/headlamp-plugin build . +``` + +Please see the github documentation for further details on workflows and actions. + +## Upgrading package + +There's a command which handles much of upgrading plugins to the latest headlamp-plugin version. This upgrade command also audits packages, formats code, lints and type checks. + +Additionally this handles some code changes needed for plugins. For example, it handles running the material-ui 4 to mui 5 'codemod' code changes, and creates missing configuration added in different versions of headlamp-plugin. + +Testing is necessary after running the upgrade command. +Of course make sure you have a backup of your plugin folder before running it. + +```bash +npx @kinvolk/headlamp-plugin upgrade --headlamp-plugin-version=latest your-plugin-folder +``` diff --git a/docs/latest/development/plugins/functionality.md b/docs/latest/development/plugins/functionality.md new file mode 100644 index 0000000..0a645e4 --- /dev/null +++ b/docs/latest/development/plugins/functionality.md @@ -0,0 +1,175 @@ +--- +title: Plugins Functionality +sidebar_label: Functionality +--- + +Headlamp's plugins exist for changing or adding functionality related to +the user interface and experience. + +## Plugins Lib + +The `@kinvolk/headlamp-plugin` module ships a library +(`@kinvolk/headlamp-plugin/lib`) where all the Headlamp-related development +modules can be found. + +The main ones are: + +- K8s: Kubernetes related functionality +- Headlamp: To register plugins +- CommonComponents: React components commonly used in the Headlamp UI +- Notification: This module contains two exported members one is Notification, a class which can be used to prepare notifications that are accepted by headlamp and the other one is setNotificationsInStore it is a dispatcher function which accepts a notification object prepared from the Notification class and when called it brings the notifications from plugin land to headlamp ecosystem so that headlamp can parse the notification and display it. +- Router: To get or generate routes + +### Shared Modules + +Headlamp ships many of the common npm modules that should be shared by both +the plugins and Headlamp itself, and includes the config files for editors +like VS Code to find them. + +These are: + +- react +- @iconify-react +- react-redux +- @material-ui/core +- @material-ui/styles +- lodash +- notistack +- recharts + +Thus, plugins only need to install dependencies that are not yet provided by Headlamp. +Yet, if any dependencies already covered by Headlamp are installed by the plugins, you +just need to make sure they are the same version that Headlamp supports, as these will +not be bundled when [building the plugin](./building.md). +Particularly, the mentioned modules will be replaced by their version that's included +in a global objects called `pluginLib`. + +Older plugin development guides still asked developers to use e.g. React in the following +way `const React: window.pluginLib.React`, but this is no longer needed. + +## Functionality + +The plugin registers makes functionality available to plugins in an easy way. + +The idea is to make more and more functionality available to plugins. Here is +what we have so far: + +### App Bar Action + +Show a component in the app bar (in the top right) with +[registerAppBarAction](../api/modules/plugin_registry.md#registerappbaraction). + +![screenshot of the header showing two actions](./images/podcounter_screenshot.png) + +- Example plugin shows [How To Register an App Bar Action](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/pod-counter) +- API reference for [registerAppBarAction](../api/modules/plugin_registry.md#registerappbaraction) + +### App Logo + +Change the logo (at the top left) with +[registerAppLogo](../api/modules/plugin_registry.md#registerapplogo). + +![screenshot of the logo being changed](./images/change-logo.png) + +- Example plugin shows [How To Change The Logo](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/change-logo) +- API reference for [registerAppLogo](../api/modules/plugin_registry.md#registerapplogo) + +### App Menus + +Add menus when Headlamp is running as an app. +[Headlamp.setAppMenu](../api/classes/plugin_lib.Headlamp.md#setappmenu) + +![screenshot of the logo being changed](./images/app-menus.png) + +- Example plugin shows [How To Add App Menus](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/app-menus) +- API reference for [Headlamp.setAppMenu](../api/classes/plugin_lib.Headlamp.md#setappmenu) + +### Cluster Chooser + +Change the Cluster Chooser button (in the middle top of the Headlamp app bar) with +[registerClusterChooser](../api/modules/plugin_registry.md#registerclusterchooser). + +![screenshot of the cluster chooser button](./images/cluster-chooser.png) + +- Example plugin shows [How To Register Cluster Chooser button](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/clusterchooser) +- API reference for [registerClusterChooser](../api/modules/plugin_registry.md#registerclusterchooser) + +### Details View Header Action + +Show a component to the top right area of a detail view +(in the area of the screenshot below that's highlighted as yellow) +[registerDetailsViewHeaderAction](../api/modules/plugin_registry.md#registerdetailsviewheaderaction). + +![screenshot of the header showing two actions](./images/header_actions_screenshot.png) + +- Example plugin shows [How To set a Details View Header Action](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/details-view) +- API reference for [registerDetailsViewHeaderAction](../api/modules/plugin_registry.md#registerdetailsviewheaderaction) + +### Details View Section + +Change sections in cluster resources' details views with [registerDetailsViewSectionsProcessor](../api/modules/plugin_registry.md#registerdetailsviewsectionsprocessor). This allows you to remove, add, update, or shuffle sections within details views, including the back link. + +Or simply append a component at the bottom of different details views with +[registerDetailsViewSection](../api/modules/plugin_registry.md#registerdetailsviewsection). + +![screenshot of the appended Details View Section](./images/details-view.jpeg) + +- Example plugin shows [How To set a Details View Section](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/details-view) +- API reference for [registerDetailsViewSection](../api/modules/plugin_registry.md#registerdetailsviewsection) + +### Dynamic Clusters + +Set a cluster dynamically, rather than have the backend read it from configuration files. +[Headlamp.setCluster](../api/classes/plugin_lib.Headlamp.md#setcluster). + +- Example plugin shows [How To Dynamically Set a Cluster](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/dynamic-clusters) +- API reference for [Headlamp.setCluster](../api/classes/plugin_lib.Headlamp.md#setcluster) + +### Route + +Show a component (in Headlamps main area) at a given URL with +[registerRoute](../api/modules/plugin_registry.md#registerroute). + +- Example plugin shows [How To Register a Route](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/sidebar), and how to remove a route. +- API reference for [registerRoute](../api/modules/plugin_registry.md#registerroute) +- API reference for [registerRouteFilter](../api/modules/plugin_registry.md#registerroutefilter) + +### Sidebar Item + +Add sidebar items (menu on the left) with +[registerSidebarEntry](../api/modules/plugin_registry.md#registersidebarentry). +Remove sidebar items with [registerSidebarEntryFilter](../api/modules/plugin_registry.md#registersidebarentryfilter). + +![screenshot of the sidebar being changed](./images/sidebar.png) + +- Example plugin shows [How To add items to the sidebar](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/sidebar), and also how to remove sidebar items. +- API reference for [registerSidebarEntry](../api/modules/plugin_registry.md#registersidebarentry) +- API reference for [registerSidebarEntryFilter](../api/modules/plugin_registry.md#registersidebarentryfilter) + +### Tables + +Change what tables across Headlamp show with [registerResourceTableColumnsProcessor](../api/modules/plugin_registry.md#registersidebarentry). This allows you to remove, add, update, or shuffle table columns. + +![screenshot of the pods list with a context menu added by a plugin](./images/table-context-menu.png) + +- Example plugin shows [How to add a context menu to each row in the pods list table](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/tables). +- API reference for [registerResourceTableColumnsProcessor](../api/modules/plugin_registry.md#registerresourcetablecolumnsprocessor) + +### Headlamp Events + +Headlamp has the concept of "Headlamp events". Those are fired when something relevant happens in Headlamp. + +React to Headlamp events with [registerHeadlampEventCallback](../api/modules/plugin_registry.md#registerheadlampeventcallback). + +![screenshot of a snackbar notification when an event occurred](./images/event-snackbar.png) + +- Example plugin shows [How to show snackbars for Headlamp events](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/headlamp-events). +- API reference for [registerHeadlampEventCallback](../api/modules/plugin_registry.md#registerheadlampeventcallback) + +### Plugin Settings + +The plugins can have user configurable settings that can be used to change the behavior of the plugin. The plugin settings can be created using [registerPluginSettings](../api/modules/plugin_registry.md#registerpluginsettings). + +- Example plugin shows [How to create plugin settings and use them](https://github.com/headlamp-k8s/headlamp/tree/main/plugins/examples/change-logo) + +![screenshot of the plugin settings](./images/plugin-settings.png) diff --git a/docs/latest/development/plugins/how-to.md b/docs/latest/development/plugins/how-to.md new file mode 100644 index 0000000..daed1a8 --- /dev/null +++ b/docs/latest/development/plugins/how-to.md @@ -0,0 +1,55 @@ +--- +title: How to create a Plugin +--- + +This section will walk you through a basic plugin development. + +## Types + +If you are using Typescript for developing the plugin, the +`@kinvolk/headlamp-plugin` package does ship some type declarations in +`@kinvolk/headlamp-plugin/types`. Please notice that the whole external +plugin mechanics are still in an early development phase and thus only the +actual type declarations (and not the corresponding code) is shipped in this +package at the moment. + +## Hello Kubernetes + +The following example will show a basic plugin declaration and registration +in a file that should match the `src/index.tsx` structure explained in the +[building](./building) section. + +```tsx title="/src/index.tsx" +import { registerAppBarAction } from "@kinvolk/headlamp-plugin/lib"; +registerAppBarAction(Hello Kubernetes); +``` + +## Plugin Example + +Let's create a plugin that just gets the number of pods in the cluster and +displays that information in the top bar (i.e. registers an "app bar action"). + +```tsx title="/src/index.tsx" +import { K8s, registerAppBarAction } from '@kinvolk/headlamp-plugin/lib'; +import { Typography } from '@mui/material'; + +function PodCounter() { + const [pods, error]: K8s.ResourceClasses.Pod.useList(); + const msg: pods === null ? 'Loading…' : pods.length.toString(); + + return ( + + {!error ? `# Pods: ${msg}` : 'Uh, pods!?'} + + ); +} + +registerAppBarAction(); +``` + +Here is the result, running Headlamp with this plugin and using with a Minikube cluster: + +![screenshot showing a label on the top bar with the number of pods available](./images/podcounter_screenshot.png) + +Please refer to the [functionality](./functionality.md) section for learning about +the different functionality that is available to plugins by the registry. diff --git a/docs/latest/development/plugins/images/app-menus.png b/docs/latest/development/plugins/images/app-menus.png new file mode 100644 index 0000000..c6f3b8b Binary files /dev/null and b/docs/latest/development/plugins/images/app-menus.png differ diff --git a/docs/latest/development/plugins/images/change-logo.png b/docs/latest/development/plugins/images/change-logo.png new file mode 100644 index 0000000..df46cf2 Binary files /dev/null and b/docs/latest/development/plugins/images/change-logo.png differ diff --git a/docs/latest/development/plugins/images/cluster-chooser.png b/docs/latest/development/plugins/images/cluster-chooser.png new file mode 100644 index 0000000..10ef558 Binary files /dev/null and b/docs/latest/development/plugins/images/cluster-chooser.png differ diff --git a/docs/latest/development/plugins/images/details-view.jpeg b/docs/latest/development/plugins/images/details-view.jpeg new file mode 100644 index 0000000..9ee1189 Binary files /dev/null and b/docs/latest/development/plugins/images/details-view.jpeg differ diff --git a/docs/latest/development/plugins/images/event-snackbar.png b/docs/latest/development/plugins/images/event-snackbar.png new file mode 100644 index 0000000..ee1b318 Binary files /dev/null and b/docs/latest/development/plugins/images/event-snackbar.png differ diff --git a/docs/latest/development/plugins/images/header_actions_screenshot.png b/docs/latest/development/plugins/images/header_actions_screenshot.png new file mode 100644 index 0000000..e35c384 Binary files /dev/null and b/docs/latest/development/plugins/images/header_actions_screenshot.png differ diff --git a/docs/latest/development/plugins/images/plugin-settings.png b/docs/latest/development/plugins/images/plugin-settings.png new file mode 100644 index 0000000..aea0c90 Binary files /dev/null and b/docs/latest/development/plugins/images/plugin-settings.png differ diff --git a/docs/latest/development/plugins/images/podcounter_screenshot.png b/docs/latest/development/plugins/images/podcounter_screenshot.png new file mode 100644 index 0000000..e79f164 Binary files /dev/null and b/docs/latest/development/plugins/images/podcounter_screenshot.png differ diff --git a/docs/latest/development/plugins/images/sidebar.png b/docs/latest/development/plugins/images/sidebar.png new file mode 100644 index 0000000..1215fba Binary files /dev/null and b/docs/latest/development/plugins/images/sidebar.png differ diff --git a/docs/latest/development/plugins/images/table-context-menu.png b/docs/latest/development/plugins/images/table-context-menu.png new file mode 100755 index 0000000..3861d8d Binary files /dev/null and b/docs/latest/development/plugins/images/table-context-menu.png differ diff --git a/docs/latest/development/plugins/index.md b/docs/latest/development/plugins/index.md new file mode 100644 index 0000000..93a725e --- /dev/null +++ b/docs/latest/development/plugins/index.md @@ -0,0 +1,40 @@ +--- +title: Plugins +sidebar_position: 6 +--- + +Plugins are one of the key features of Headlamp. They allow you to change how and what information is displayed, as well as other functionality. The ultimate goal of the plugins system is to allow vendors to build and deploy Headlamp with extra functionality without having to maintain a fork of the project. + +## Using plugins + +Headlamp looks for plugins in different places. +It looks at the Headlamp's configuration folder first: + +On a Mac and Linux desktop, the plugins folder is by default: +`$HOME/.config/Headlamp/plugins` + +On Windows, it is by default: +`$APPDATA/Headlamp/Config/plugins` + +In the plugins directory, plugins should be in the following format: + +``` +MyPlugin1/ + main.js +MyPlugin2/ + main.js +MyPlugin3/ + main.js +``` + +See the [shipping & deploying plugins](./building.md#shipping-and-deploying-plugins) section +for more details. + +## Developing Plugins + +Plugins are supposed to be built and shipped out-of-tree, i.e. instead of managing the plugins' +code within the Headlamp project or a Headlamp fork (which would require +always rebuilding/maintaining Headlamp when changing a plugin), they're +supposed to be built outside of the project and loaded by Headlamp. + +Learn [how to create a Headlamp plugin](./building.md). diff --git a/docs/latest/development/testing.md b/docs/latest/development/testing.md new file mode 100644 index 0000000..807720e --- /dev/null +++ b/docs/latest/development/testing.md @@ -0,0 +1,82 @@ +--- +title: Testing +sidebar_position: 3 +--- + +## Load testing Headlamp + +Can Headlamp work well with busy clusters? + +Limits we want to test for to begin with: + +- 10,000 pods +- 1,000 nodes +- 10,000 events +- 15 clusters (300 clusters max) + +Steps: + +- Create load in a cluster +- Run Headlamp and see if it works well compared to low load + - performance profiles + - CPU/memory usage + - feel + +### Kwok for low resource usage load testing of Headlamp + +> [KWOK](https://github.com/kubernetes-sigs/kwok) is a toolkit that enables setting up a cluster of thousands of Nodes in seconds. Under the scene, all Nodes are simulated to behave like real ones, so the overall approach employs a pretty low resource footprint that you can easily play around on your laptop. + +- [KWOK installation](https://kwok.sigs.k8s.io/docs/user/installation/) + +### Creating lots of Kubernetes activity + +Maybe you need to delete a cluster and create a fresh one. + +```bash +kwokctl delete cluster +kwokctl create cluster +``` + +Make sure your kubectl context is set to 'kwok-kwok'. + +```bash +kubectl config get-contexts +``` + +#### Generating Initial Data + +This will create 900 nodes, 9000 pods, and 1000 events as fast as possible. Then it will create 1 event per second up to a total of 9000 events. Also one per second: 100 new nodes, and 1000 new pods. Finally it will create 15 clusters. + +```bash +cd load-tests +npm install + +echo "Creating initial activity: 900 nodes, 9000 pods, and 1000 events" +node scripts/create-nodes.js 900 0 +node scripts/create-pods.js 9000 0 +node scripts/create-events.js 1000 0 +node scripts/create-deployments.js 500 0 +node scripts/create-clusters.js 15 0 +``` + +#### Generating Activity + +To make some activity after the initial data is loaded. + +```bash +echo "---------------" +echo "creating 1 node, 1 pod, and 1 event per second" +node scripts/create-events.js 9000 1 & node scripts/create-nodes.js 100 1 & node scripts/create-pods.js 1000 1 & +``` + +#### Cleaning up clusters + +Kwok clusters can take up a lot of resources even doing nothing, +due to the Kubernetes API server using resources even when idle. + +So when you're done, you can delete them like this. + +```bash +kwokctl delete cluster --name=kwok +node scripts/create-clusters.js 15 0 --delete +``` diff --git a/docs/latest/faq.md b/docs/latest/faq.md new file mode 100644 index 0000000..eaf97f4 --- /dev/null +++ b/docs/latest/faq.md @@ -0,0 +1,90 @@ +--- +title: Frequently Asked Questions +sidebar_position: 5 +--- + +## General Questions + +### What is Headlamp and who is it for? + +Headlamp is a graphical user interface specifically tailored for simplifying the management of Kubernetes clusters. + +### What Kubernetes flavors or vendors does Headlamp support? + +Headlamp is designed to be vendor-agnostic, supporting a variety of Kubernetes flavors. For a comprehensive list of compatible platforms please refer to our [platforms section in the documentation](./platforms.md). + +### Is Headlamp a desktop or web application? + +Headlamp is available both as a desktop application and a web application. The desktop version can be installed on your local machine and the web version can be accessed through a browser. + +### Is there any cost involved in using Headlamp? + +Headlamp a 100% open source project, under the Apache 2.0 License. It is thus available at no charge, and users are encouraged to modify and redistribute it in accordance with the license terms. + +### Can I use Headlamp for commercial purposes? + +Yes, and it's encouraged. Headlamp is developed under the permissive Apache 2.0 License making it ideal for personal and commercial use. + +### Where can I find the source code for Headlamp? + +The source code for Headlamp is publicly available on [GitHub](https://github.com/headlamp-k8s/headlamp). You are welcome to explore, fork, and contribute to the codebase. + +### Who maintains Headlamp? + +You can find the list of Headlamp's maintainers in its [MAINTAINERS.md](https://github.com/headlamp-k8s/headlamp/blob/main/MAINTAINERS.md) file in the repository. As a 100% open source project and a CNCF Sandbox project, Headlamp encourages any users/developers to participate in it. + +### What capabilities / credentials does Headlamp require to access my Kubernetes cluster? + +Headlamp doesn't require access to the cluster in itself. It instead relies to RBAC when connecting to the Kubernetes API server, meaning that it's the users that are required the credentials to access the cluster (via a service token or client certificate). Headlamp may store the token in the browser's local storage, but never in its backend/server. + +### Is Headlamp customizable? + +Yes, Headlamp is highly customizable, thanks to its robust plugin system. This system allows for the extension of Headlamp's core functionalities, catering to specific use cases and workflows. For more information on creating and managing plugins, visit our [plugins page](./development/plugins/building.md). + +### How often is Headlamp updated? + +Headlamp tries to have a new features version released every month. Sometimes, there may be delays for a couple of weeks. Bug fix versions can be released in between feature versions, whenever appropriate (releases fixing critical bugs are often released quickly after a fix is added). + +--- + +## Installation and Setup + +### How can I install and access Headlamp? + +To install Headlamp, follow the detailed instructions provided in the [official installation guide](./installation/index.mdx). The process will guide you through downloading the application, setting up your Kubernetes cluster access, and launching Headlamp to connect to your cluster. For desktop applications, you can find additional information in the [desktop installation guide](./installation/desktop/index.mdx). + +### Can I install Headlamp in my Kubernetes cluster? + +Absolutely, Headlamp can be deployed directly within your Kubernetes cluster. Detailed instructions for in-cluster installation can be found in the [in-cluster installation guide](./installation/in-cluster/index.md). + +--- + +## Usage and Features + +### Can I monitor multiple clusters with Headlamp? + +Yes, Headlamp allows you to monitor multiple clusters. You can switch between different clusters using the cluster switcher in the Headlamp interface. + +### Can I manage my Kubernetes resources directly through Headlamp? + +Yes, Headlamp enables direct management of Kubernetes resources through its user interface as allowed by the user's role and permissions. + +### Headlamp is not showing delete/edit/scale buttons in a resource, why is that? + +Headlamp shows controls based on the user's role (RBAC), so if the user has e.g. no permissions to delete a resource, the delete button is not shown. + +### I cannot access any section in my cluster, it keeps saying Access Denied. + +By default, Headlamp assumes users can list all namespaces. If you only have the permissions to list resources in certain namespaces, please access the cluster settings and set up the accessible namespaces. + +### How do I add or remove plugins in Headlamp? + +To add or remove plugins in Headlamp, you can follow the plugin management instructions provided in the [Headlamp plugin documentation](./development/plugins/index.md). + +### Is there a way to contribute to the development of Headlamp features? + +Absolutely! As an open-source project, Headlamp thrives on community contributions. You can contribute in various ways, including submitting pull requests, creating plugins, reporting issues, and suggesting new features. For more details on how to get involved, visit our [contribution section](./contributing.md). + +### How can I get help or assistance for Headlamp? + +For support, refer to the [Headlamp documentation](./development/index.md). For further assistance, join the [Headlamp community on Slack](https://kubernetes.slack.com/messages/headlamp) or file an issue on the [GitHub issues page](https://github.com/headlamp-k8s/headlamp/issues). diff --git a/docs/latest/headlamp_light.svg b/docs/latest/headlamp_light.svg new file mode 100644 index 0000000..986bc58 --- /dev/null +++ b/docs/latest/headlamp_light.svg @@ -0,0 +1,106 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/latest/index.mdx b/docs/latest/index.mdx new file mode 100644 index 0000000..700279c --- /dev/null +++ b/docs/latest/index.mdx @@ -0,0 +1,25 @@ +--- +title: Introduction +sidebar_position: 1 +--- + +Headlamp is an easy-to-use and extensible Kubernetes web UI. + +Headlamp was created to be a Kubernetes web UI that has the traditional functionality of other +web UIs/dashboards available (i.e. to list and view resources) as well as other features. + +Headlamp can be used [in-cluster](./installation/in-cluster), where it's accessed through a web browser, +or as a [desktop application](./installation/desktop) (using the information defined in the user's +kubeconfig). + +## Get involved + +Check out our [contributing](./contributing.md) section and join the +discussion on the +[#headlamp](https://kubernetes.slack.com/messages/headlamp) channel +in the Kubernetes Slack. + +## Frequently Asked Questions + +For more information about Headlamp, see the [Headlamp FAQ](./faq.md). + diff --git a/docs/latest/installation/base-url.md b/docs/latest/installation/base-url.md new file mode 100644 index 0000000..8ebbfc5 --- /dev/null +++ b/docs/latest/installation/base-url.md @@ -0,0 +1,53 @@ +--- +title: Run Headlamp with a base-url +sidebar_label: Base URL +sidebar_position: 3 +--- + +Normally Headlamp runs at the root of the domain. Hower you can also ask +to run it at a base-url like "/headlamp" for example. + +- default at the root of the domain: `https://headlamp.example.com/`. +- base-url `https://example.com/headlamp/` + +## A warning about multiple apps on the same sub domain + +Hosting multiple websites (apps) on the [same origin](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) can lead to possible conflicts between the apps. Each app is able to access information and make requests of the other. Therefore each app needs to be **tested** together, **trusted**, and a compatible **[Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)** should be considered for each of them. + +If in doubt, host Headlamp on a separate origin (domain or port, don't use the `-base-url` option). + +## How to use with a base-url + +### Dev mode + +```bash +./backend/headlamp-server -dev -base-url /headlamp +PUBLIC_URL="/headlamp" make run-frontend +``` + +Then go to http://localhost:3000/headlamp/ in your browser. + +### Static build mode + +```bash +cd frontend && npm install && npm run build && cd .. +./backend/headlamp-server -dev -base-url /headlamp -html-static-dir frontend/build +``` + +Then go to http://localhost:4466/headlamp/ in your browser. + +### Docker mode + +Append `--base-url /headlamp` to the docker run command. Note the extra "-". + +### Kubernetes + +You can modify your kubernetes deployment file to add `-base-url /headlamp` +to the containers args. + +```yaml +args: + - "-in-cluster" + - "-plugins-dir=/headlamp/plugins" + - "-base-url=/headlamp" +``` diff --git a/docs/latest/installation/desktop/headless.mdx b/docs/latest/installation/desktop/headless.mdx new file mode 100644 index 0000000..c732031 --- /dev/null +++ b/docs/latest/installation/desktop/headless.mdx @@ -0,0 +1,37 @@ +--- +title: Running in headless mode +sidebar_label: Headless Mode +sidebar_position: 4 +--- + +Some users prefer running Headlamp using the desktop app, but directly in their web browser instead +of the Electron's environment as this allows them to leverage the browser's functionality such as +bookmarks, groups, etc. + +Running Headlamp in the system's browser can be done by using the `--headless` CLI option. +Assuming you have already downloaded and installed Headlamp on your desktop, you can run it in headless mode as follows: + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + ```bash + flatpak run io.kinvolk.Headlamp --headless + ``` + or + ```bash + ./Headlamp.AppImage --headless # for AppImage + ``` + + + ```bash + ./Headlamp --headless + ``` + + + ```powershell + ./Headlamp.exe --headless + ``` + + diff --git a/docs/latest/installation/desktop/index.mdx b/docs/latest/installation/desktop/index.mdx new file mode 100644 index 0000000..727af72 --- /dev/null +++ b/docs/latest/installation/desktop/index.mdx @@ -0,0 +1,67 @@ +--- +title: Desktop App +sidebar_position: 2 +--- + +Headlamp can be run as a desktop application, for users who don't want to +deploy it in cluster, or those who want to manage unrelated clusters locally. + +Currently there are desktop apps for [Linux](./linux-installation.md), [Mac](./mac-installation.md), and [Windows](./win-installation.md). + +Please check the following guides for the installation in your desired platform. + +import DocCardList from '@theme/DocCardList'; + + + +## Use a non-default kube config file + +If you wish to use a non-default kube config file, then you can do it by +providing it as an argument to Headlamp, e.g.: + +```bash +/path/to/headlamp /my/different/kubeconfig +``` + +or by using an environment variable: + +```bash +KUBECONFIG=/my/different/kubeconfig /path/to/headlamp +``` + +### Use several kube config files + +If you need to use more than one kube config file at the same time, you can list +each config file path with a separator. + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + ```bash + KUBECONFIG=kubeconfig1:kubeconfig2:kubeconfig3 /path/to/headlamp + ``` + + + ```powershell + KUBECONFIG=kubeconfig1;kubeconfig2;kubeconfig3 /path/to/headlamp + ``` + + + + + +## Access using OIDC + +OIDC has a feature makes more sense when +[running Headlamp in a cluster](../in-cluster) as it will allow cluster operators to just +give users a URL that they can use for logging in and access Headlamp. +However, if you have your kube config set to use OIDC for the authentication (because you already +authenticated and produced a kube config with that data), Headlamp will read those settings and +try to use them for offering the effortless login to the cluster. + +Still, the kube config OIDC settings will not provide a OIDC callback URL, so make sure that your OIDC configuration for your cluster include Headlamp's OIDC callback in its redirect URIs. i.e. say you're using +Dex for the OIDC connection and you have it already configured in your +kube config, then be sure to add the `/oidc-callback` endpoint with Headlamp's the local address +to Dex's `staticClient.redirectURIs`: `http://localhost:6644/oidc-callback`. diff --git a/docs/latest/installation/desktop/linux-installation.md b/docs/latest/installation/desktop/linux-installation.md new file mode 100644 index 0000000..f99b9ad --- /dev/null +++ b/docs/latest/installation/desktop/linux-installation.md @@ -0,0 +1,53 @@ +--- +title: Linux Installation +sidebar_label: Linux +sidebar_position: 1 +--- + +We ship Headlamp the Linux desktop in several formats: [Flatpak](#flatpak), [AppImage](#appimage), [Tarballs](#tarballs). + +## Flatpak + +[Flatpak](https://flatpak.org/) gives an isolated and bundled way of running Headlamp, with decoupled runtime updates (besides other [benefits](https://en.wikipedia.org/wiki/Flatpak#Features)). + +Make sure you [install Flatpak and enable the flathub repository](https://flatpak.org/setup/), then install Headlamp with the following command: + +```bash +flatpak install io.kinvolk.Headlamp +``` + +For running it, just launch it as usually in your Linux desktop, or run: + +```bash +flatpak run io.kinvolk.Headlamp +``` + +### Upgrading + +To upgrading Headlamp when it's installed via Flatpak, run: + +```bash +flatpak update io.kinvolk.Headlamp +``` + +## AppImage + +Headlamp can be used as an [AppImage](https://appimage.org/) by downloading and running it directly. + +To download, choose the AppImage file from the [latest release page](https://github.com/headlamp-k8s/headlamp/releases/latest). +You can then run it with the following command (examplified for the AMD64, 0.16.0 version): + +```bash +./Headlamp-0.16.0-linux-x64.AppImage +``` + +## Tarballs + +To run Headlamp from one of the tarballs, after downloading the tarball for the [latest release](https://github.com/headlamp-k8s/headlamp/releases/latest), you have to extract the contents from it and run +the `headlamp` binary in the resulting folder (examplified below for the AMD64, 0.16.0 version): + +```bash +tar xvzf ./Headlamp-0.16.0-linux-x64.tar.gz +cd Headlamp-0.16.0-linux-x64 +./headlamp +``` diff --git a/docs/latest/installation/desktop/mac-installation.md b/docs/latest/installation/desktop/mac-installation.md new file mode 100644 index 0000000..246c523 --- /dev/null +++ b/docs/latest/installation/desktop/mac-installation.md @@ -0,0 +1,38 @@ +--- +title: Mac OS Installation +sidebar_label: Mac OS +sidebar_position: 2 +--- + +## Install via Homebrew + +Once you have the [Homebrew package manager](https://brew.sh/) itself installed, you can install the latest Headlamp release by running the following command: + +```sh +brew install --cask headlamp +``` + +### Upgrading + +To upgrade Headlamp when it's installed via Homebrew, run: + +```sh +brew upgrade headlamp +``` + +For more information on upgrading packages with Homebrew, including automatic updates, please +read the [official documentation](https://docs.brew.sh/Manpage). + +## Install via Github Releases + +For Mac OS we provide a _.dmg_ file, so you need to download it from the [releases page](https://github.com/headlamp-k8s/headlamp/releases) +and then follow the below steps : + +1. Double click the downloaded file to make its content available (name will show up in the Finder sidebar), usually a window opens showing the content as well +2. Drag the application from the _DMG_ window into /Applications to install wait for the copy process to finish. + +Once the installation process is completed you can find Headlamp as a desktop app in Applications directory. + +### Upgrading + +Until we have an automatic update, to upgrade Headlamp when it's installed directly via the releases page, you have to download any newer version and re-install it. diff --git a/docs/latest/installation/desktop/win-installation.md b/docs/latest/installation/desktop/win-installation.md new file mode 100644 index 0000000..cb53b09 --- /dev/null +++ b/docs/latest/installation/desktop/win-installation.md @@ -0,0 +1,51 @@ +--- +title: Windows Installation +sidebar_label: Windows +sidebar_position: 3 +--- + +Headlamp is available for Windows as a direct download from its [releases page](https://github.com/headlamp-k8s/headlamp/releases) on Github (.exe file) and from package registries +like [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/) and [Chocolatey](https://chocolatey.org/). + +## Install via Winget + +To install Headlamp from the Winget registry. Simply run the following command: + +```powershell +winget install headlamp +``` + +### Upgrading + +To upgrade Headlamp when its installed with Winget, run the command: + +```powershell +winget upgrade headlamp +``` + +## Install via Chocolatey + +To install Headlamp from the Chocolatey registry, first install the choco command by following +its [official instructions](https://chocolatey.org/install#generic). +After `choco` is available, [install Headlamp](https://community.chocolatey.org/packages/headlamp#install) by running the following command: + +```powershell +choco install headlamp +``` + +### Upgrading + +To upgrade Headlamp when its installed with Chocolatey, run the command: + +```powershell +choco upgrade headlamp +``` + +## Install via Github Releases + +To install Headlamp from its official installer, first download the _.exe_ file for the [latest release](https://github.com/headlamp-k8s/headlamp/releases/latest)'s assets section (located at the bottom of the section). Then double click the file and follow the installer's instructions. + +### Upgrading + +Until we have an automatic update, to upgrade Headlamp when it's installed directly from its +installer, you have to download the new version of the installer and re-install it. diff --git a/docs/latest/installation/in-cluster/dex/headlamp-access1.jpg b/docs/latest/installation/in-cluster/dex/headlamp-access1.jpg new file mode 100755 index 0000000..f306332 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/headlamp-access1.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/headlamp-access2.jpg b/docs/latest/installation/in-cluster/dex/headlamp-access2.jpg new file mode 100755 index 0000000..1a99f65 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/headlamp-access2.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/headlamp-access3.jpg b/docs/latest/installation/in-cluster/dex/headlamp-access3.jpg new file mode 100755 index 0000000..857bb46 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/headlamp-access3.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/headlamp-access4.jpg b/docs/latest/installation/in-cluster/dex/headlamp-access4.jpg new file mode 100755 index 0000000..14b22ec Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/headlamp-access4.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/headlamp-install.jpg b/docs/latest/installation/in-cluster/dex/headlamp-install.jpg new file mode 100755 index 0000000..2547383 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/headlamp-install.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/index.md b/docs/latest/installation/in-cluster/dex/index.md new file mode 100644 index 0000000..f5afa6b --- /dev/null +++ b/docs/latest/installation/in-cluster/dex/index.md @@ -0,0 +1,196 @@ +--- +title: How to Set Up Headlamp in minikube with Dex OIDC Authentication +sidebar_label: "Tutorial: OIDC with Dex" +--- + +In this tutorial, we'll walk through the process of configuring Headlamp within a Minikube cluster while utilizing Dex for OIDC (OpenID Connect) authentication. This tutorial is based on Dex version 2.38.0, Minikube version v1.31.2, and Headlamp version 0.22.0. + +## Configuring Dex + +To enable OIDC authentication in your Minikube cluster, you'll need to configure Dex. Before proceeding, follow the [getting started guide](https://dexidp.io/docs/getting-started/) to set up your Dex instance.Follow these steps to configure Dex: + +1. Create a Dex configuration file. The following example demonstrates a basic configuration file for Dex, containing a + static client, connector, and static password. + +```yaml title="dex-config.yaml" +issuer: + +storage: + type: sqlite3 + +web: + http: 0.0.0.0:5556 + +staticClients: + - id: example-app + redirectURIs: + - "http://localhost:8000" + name: "Example App" + secret: ZXhhbXBsZS1hcHAtc2VjcmV0 + +connectors: + - type: mockCallback + id: mock + name: Example + +# Let dex keep a list of passwords which can be used to login to dex. +enablePasswordDB: true + +staticPasswords: + - email: "admin@example.com" + # bcrypt hash of the string "password": $(echo password | htpasswd -BinC 10 admin | cut -d: -f2) + hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W" + username: "admin" + userID: "08a8684b-db88-4b73-90a9-3cd1661f5466" +``` + +2. Start Dex with the following command: + +```shell +dex serve dex-config.yaml +``` + +## Setting up Minikube with the Dex OIDC Configuration + +To configure Minikube for Dex OIDC integration, follow these steps: + +1. **Run the following command** to start Minikube with the necessary configuration options: + +```shell +minikube start -p=dex \ +--extra-config=apiserver.authorization-mode=Node,RBAC \ +--extra-config=apiserver.oidc-issuer-url=https:// \ +--extra-config=apiserver.oidc-username-claim=email \ +--extra-config=apiserver.oidc-client-id= +``` + +![Minikube start](./minikube-start.jpg) + +Note: +Replace `` with the actual URL of your Dex instance and `` with the actual client ID. + +## Configuring a ClusterRole Binding for the OIDC User + +Once your cluster is operational, you need to configure a cluster role and a cluster role binding for the Dex user. This step is essential for enabling the Kubernetes API server to identify the user. In this example, we'll be associating the user with the predefined `cluster-admin` Role. + +```yaml title="clusterRoleBinding.yaml" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-user-clusterrolebinding +subjects: + - kind: User + name: admin@example.com + apiGroup: rbac.authorization.k8s.io +roleRef: + kind: ClusterRole + name: cluster-admin + apiGroup: rbac.authorization.k8s.io +``` + +Create the cluster role binding by running the following command: + +```shell +kubectl apply -f clusterRoleBinding.yaml +``` + +## Configuring kubectl for OIDC User Authentication + +Once you've set up your cluster and created a ClusterRoleBinding, it's time to configure `kubectl` to work with your OIDC user for authentication. Follow these steps: + +1. Install the `oidc-login` plugin with [krew](https://krew.sigs.k8s.io/docs/user-guide/quickstart/) by executing the following command: + +```shell +kubectl krew install oidc-login +``` + +![OIDC Login Install](./oidc-login-install.jpg) + +2. Set Up `oidc-login`, Configure oidc-login with the necessary parameters by running the following command: + +```shell +kubectl oidc-login setup --oidc-issuer-url=https:// \ --oidc-client-id= \ +--oidc-client-secret= +``` + +![OIDC Login Setup](./oidc-login-setup1.jpg) +![OIDC Login Setup](./oidc-login-setup2.jpg) + +3. Create OIDC User for the Cluster, later this user will be mapped to the dex cluster. + +```shell +kubectl config set-credentials oidc-user \ + --exec-api-version=client.authentication.k8s.io/v1beta1 \ + --exec-command=kubectl \ + --exec-arg=oidc-login \ + --exec-arg=get-token \ + --exec-arg=--oidc-issuer-url= \ + --exec-arg=--oidc-client-id= \ + --exec-arg=--oidc-client-secret= \ + --exec-arg=--oidc-extra-scope=email +``` + +4. Link the User to the Cluster: To associate the user with the cluster, create a new context by running the following commands: + +```shell +kubectl config set-context dex-oidc --namespace=default --cluster=dex --user=oidc-user +kubectl config use-context dex-oidc +``` + +5. Test the Configuration: To verify that the configuration is working, list the namespaces in the cluster by executing the command: + +```shell +kubectl get ns +``` + +Upon running this command, a new browser window will open, prompting you to log in. Once you've completed the login process, you can close the window. You should see the namespaces in your cluster. + +# Setting up Headlamp with Dex OIDC Authentication + +To configure Headlamp, you can use the Headlamp Helm chart. Follow these steps to set it up with OIDC(OpenID Connect) authentication: + +1. Before setting up Headlamp add `http://localhost:4466/oidc-callback` to the `redirectURIs` + in the Dex configuration. + +2. Create a `values.yaml` file and add the following OIDC configuration to it: + +```yaml title="values.yaml" +config: + oidc: + clientID: "" + clientSecret: "" + issuerURL: "" + scopes: "email" +``` + +Replace ``,``,`` with your specific OIDC configuration details. + +3. Save the `values.yaml` file and Install Headlamp using helm with the following commands: + +```shell +helm repo add headlamp https://headlamp-k8s.github.io/headlamp/ +helm install headlamp-oidc headlamp/headlamp -f values.yaml --namespace=headlamp --create-namespace +``` + +![Headlamp install](./headlamp-install.jpg) + +This will install Headlamp in the headlamp namespace with the OIDC configuration from the values.yaml file. + +4. After a successful installation, you can access Headlamp by port-forwarding to the pod: + +```shell +kubectl port-forward svc/headlamp-oidc 4466:80 -n headlamp +``` + +5. Open your web browser and go to http://localhost:4466. Click on "sign-in." After completing the login flow successfully, you'll gain access to your Kubernetes cluster using Headlamp. + +![Headlamp access](./headlamp-access1.jpg) +![Headlamp access](./headlamp-access2.jpg) +![Headlamp access](./headlamp-access3.jpg) +![Headlamp access](./headlamp-access4.jpg) + +## Conclusion + +In this tutorial, we've explore the process of setting up Headlamp within a Kubernetes cluster, integrating it with OIDC (OpenID Connect) authentication provided by Dex. By following the steps outlined in this guide, you've successfully configured Headlamp to enhance your Kubernetes cluster management. + +This setup allows you to benefit from Headlamp's user-friendly interface and advanced features, all while ensuring a secure and streamlined authentication through Dex. With the power of OIDC, you can easily and safely access and manage your Kubernetes resources. diff --git a/docs/latest/installation/in-cluster/dex/minikube-start.jpg b/docs/latest/installation/in-cluster/dex/minikube-start.jpg new file mode 100755 index 0000000..c23e631 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/minikube-start.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/oidc-login-install.jpg b/docs/latest/installation/in-cluster/dex/oidc-login-install.jpg new file mode 100755 index 0000000..0e4b1ad Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/oidc-login-install.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/oidc-login-setup1.jpg b/docs/latest/installation/in-cluster/dex/oidc-login-setup1.jpg new file mode 100755 index 0000000..5d51401 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/oidc-login-setup1.jpg differ diff --git a/docs/latest/installation/in-cluster/dex/oidc-login-setup2.jpg b/docs/latest/installation/in-cluster/dex/oidc-login-setup2.jpg new file mode 100755 index 0000000..b2cd7e4 Binary files /dev/null and b/docs/latest/installation/in-cluster/dex/oidc-login-setup2.jpg differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/associate_oidc_identity_provider.png b/docs/latest/installation/in-cluster/eks/cluster/associate_oidc_identity_provider.png new file mode 100644 index 0000000..64c4b87 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/associate_oidc_identity_provider.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/configure_addons.png b/docs/latest/installation/in-cluster/eks/cluster/configure_addons.png new file mode 100644 index 0000000..0d84edc Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/configure_addons.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/configure_cluster1.png b/docs/latest/installation/in-cluster/eks/cluster/configure_cluster1.png new file mode 100644 index 0000000..19f1888 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/configure_cluster1.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/configure_cluster2.png b/docs/latest/installation/in-cluster/eks/cluster/configure_cluster2.png new file mode 100644 index 0000000..f095e86 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/configure_cluster2.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/configure_observability.png b/docs/latest/installation/in-cluster/eks/cluster/configure_observability.png new file mode 100644 index 0000000..cd2d16d Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/configure_observability.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/create_cluster.png b/docs/latest/installation/in-cluster/eks/cluster/create_cluster.png new file mode 100644 index 0000000..559eea3 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/create_cluster.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/elastic_kubernetes_cluster.png b/docs/latest/installation/in-cluster/eks/cluster/elastic_kubernetes_cluster.png new file mode 100644 index 0000000..0004359 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/elastic_kubernetes_cluster.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/select_addons.png b/docs/latest/installation/in-cluster/eks/cluster/select_addons.png new file mode 100644 index 0000000..931aceb Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/select_addons.png differ diff --git a/docs/latest/installation/in-cluster/eks/cluster/specify_networking.png b/docs/latest/installation/in-cluster/eks/cluster/specify_networking.png new file mode 100644 index 0000000..dfa3cc5 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cluster/specify_networking.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/cognito-service.png b/docs/latest/installation/in-cluster/eks/cognito/cognito-service.png new file mode 100644 index 0000000..7768b60 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/cognito-service.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/configure-message-delivery.png b/docs/latest/installation/in-cluster/eks/cognito/configure-message-delivery.png new file mode 100644 index 0000000..5e1f4a4 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/configure-message-delivery.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/create-user-pool.png b/docs/latest/installation/in-cluster/eks/cognito/create-user-pool.png new file mode 100644 index 0000000..5a91c74 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/create-user-pool.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app1.png b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app1.png new file mode 100644 index 0000000..acaed5a Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app1.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app2.png b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app2.png new file mode 100644 index 0000000..4617583 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app2.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app3.png b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app3.png new file mode 100644 index 0000000..f29af26 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/integrate-your-app3.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/security-requirements.png b/docs/latest/installation/in-cluster/eks/cognito/security-requirements.png new file mode 100644 index 0000000..d64eb0b Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/security-requirements.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/sign-in-experience.png b/docs/latest/installation/in-cluster/eks/cognito/sign-in-experience.png new file mode 100644 index 0000000..2799507 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/sign-in-experience.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito/sign-up-experience.png b/docs/latest/installation/in-cluster/eks/cognito/sign-up-experience.png new file mode 100644 index 0000000..df17953 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito/sign-up-experience.png differ diff --git a/docs/latest/installation/in-cluster/eks/cognito_auth.png b/docs/latest/installation/in-cluster/eks/cognito_auth.png new file mode 100644 index 0000000..cadf27e Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/cognito_auth.png differ diff --git a/docs/latest/installation/in-cluster/eks/headlamp_auth_screen.png b/docs/latest/installation/in-cluster/eks/headlamp_auth_screen.png new file mode 100644 index 0000000..667b7b7 Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/headlamp_auth_screen.png differ diff --git a/docs/latest/installation/in-cluster/eks/headlamp_dashboard.png b/docs/latest/installation/in-cluster/eks/headlamp_dashboard.png new file mode 100644 index 0000000..2d0b8fa Binary files /dev/null and b/docs/latest/installation/in-cluster/eks/headlamp_dashboard.png differ diff --git a/docs/latest/installation/in-cluster/eks/index.md b/docs/latest/installation/in-cluster/eks/index.md new file mode 100644 index 0000000..91cb67a --- /dev/null +++ b/docs/latest/installation/in-cluster/eks/index.md @@ -0,0 +1,161 @@ +--- +title: How to Set Up Headlamp in EKS with Cognito as the OIDC provider +sidebar_label: "Tutorial: Headlamp on EKS with Cognito" +--- + +This tutorial is about configuring Headlamp 0.23.2 with: + +1. [AWS Cognito](https://aws.amazon.com/cognito/) for [OpenID Connect (OIDC)](https://www.microsoft.com/en-us/security/business/security-101/what-is-openid-connect-oidc) authentication +2. [AWS EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) Platform eks.6 +3. Kubernetes 1.29 + +## Configuring Cognito + +Cognito is a fully managed identity provider that allows you to create and manage users for your applications. In this tutorial, we will use Cognito as the OIDC provider for our EKS cluster. Before proceeding, follow the [getting started guide](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html) to know more about Cognito. + +We will start by creating a Cognito user pool. This tutorial uses the AWS portal, but you can also use the 'ekctl' or AWS CLI tools for configuration. + +1. Go to the AWS console and navigate to the Cognito service. + ![Cognito](./cognito/cognito-service.png) +2. Click on Create user pool. + ![Create User Pool](./cognito/create-user-pool.png) +3. On the configure sign-in experience view, select User name, email and Allow user to sign in with a preferred username options. + ![Sign-in Experience](./cognito/sign-in-experience.png) +4. Click next to go to the Configure security requirements view +5. You can configure the password policy as per your requirements. For this tutorial we will use the default settings. + ![Security Requirements](./cognito/security-requirements.png) +6. Click next to go to the Configure sign-up experience +7. You can configure the email and phone verification settings as per your requirements. For this tutorial we will use the default settings. + ![Sign-up Experience](./cognito/sign-up-experience.png) +8. Click next to go to the Configure message delivery view +9. You can either chose sending email from Amazon SES or with Cognito, These emails are for MFA, account recovery, sign up, sign in workflows. For this tutorial we will use sending emails through Cognito. + ![congigure-message-delivery](./cognito/configure-message-delivery.png) +10. Click next to go to the Integrate your app view +11. There are few things you have to take care of here, + - You can either use the hosted UI or create your own UI for the authentication workflows (We are using the Cognito hosted UI). + - You can also configure the domain name for the hosted UI (Also remember this is the issuer URL as well which we will later use to setup EKS with). We are using Cognito domain for this tutorial but you can chose your own custom domain as well. + - You can also configure the callback URLs for the auth flow. For this tutorial we are setting it to be + http://localhost:8000/oidc-callback as we will be running headlamp on this port but you can chose your own callback host as well based on your needs make sure to append /oidc-callback to the host since this is where headlamp expect the redirect from auth to occur. + - Client Secret - We want to generate a client secret as our headlamp app needs it to start the auth dance, So select Generate a client secret client secret column. + - You can also configure the scopes and claims for the tokens. For this tutorial make sure openid, profile, email scopes are selected, other scopes are optional. + +![Part one of three of a long form Cognito uses for App Configuration](./cognito/integrate-your-app1.png) +![Second part of Integrating App Cognito Form](./cognito/integrate-your-app2.png) +![Final part of Integrating App Cognito Form](./cognito/integrate-your-app3.png) +In the above configurations make sure The Oauth 2.0 grant type is set to Authorization code grant. 12. Click next and you will be taken to the Review and Create view where you can review all the settings and create the user pool. + +## Setting up EKS cluster + +We will first start by creating an EKS cluster. For this tutorial we will use the aws console to create the cluster but you can use the eksctl or aws CLI as well. + +1. Go to the AWS console and navigate to the EKS service. + ![EKS](./cluster/elastic_kubernetes_cluster.png) +2. Click on Create Cluster or Add Cluster to create a new cluster. + ![Create Cluster](./cluster/create_cluster.png) +3. On the Configure Cluster view, select the EKS platform version, Kubernetes version, and the IAM role that has the necessary permissions to create the cluster. You can chose these configurations based on your requirements. + ![Configure Cluster](./cluster/configure_cluster1.png) + ![Configure Cluster](./cluster/configure_cluster2.png) +4. Click next to go to the Configure Networking view +5. You can configure the VPC, Subnets, and Security Groups for the cluster. For this tutorial we will use the default settings. + ![Specify Networking](./cluster/specify_networking.png) +6. Click next to go to the Configure Observability view, For this tutorial we will use the default settings. + ![Configure Observability](./cluster/configure_observability.png) +7. Click next to go to the Select Add-ons view, For this tutorial we will use the default selected add-ons. + ![Select Add-ons](./cluster/select_addons.png) +8. Click next to go to the Configure selected add-ons view, For this tutorial we will use the default settings. + ![Configure Add-ons](./cluster/configure_addons.png) +9. Click next to go to the Review and Create view where you can review all the settings and create the cluster. + +## Configuring OIDC provider for EKS + +After creating the EKS cluster, we need to configure the OIDC provider for the cluster. This will allow the cluster to authenticate users using Cognito. + +1. Go to the access tab on the cluster overview page of the cluster you created above and click on the Associate OIDC Identity provider. +2. In the Associate OIDC Identity provider view + 2.1 Enter a name for the Identity Provider Configuration + 2.2 Enter the issuer URL which can be found in the cognito user pool view you created. It should be something like `https://cognito-idp..amazonaws.com/USER_POOL_ID` + 2.3 Client ID can be found in the app integration tab on the user pool overview page. + 2.4 The other fields can be filled as shown in the image below. + ![Associate OIDC Identity provider](./cluster/associate_oidc_identity_provider.png) + +## Fetching EKS cluster locally to deploy Headlamp on it + +Make Sure you have the aws cli installed and setup with the necessary permissions to interact with the EKS cluster. + +1. Installation steps for aws cli can be found [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) +2. Signin to the aws cli can be done by following the steps [here](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) + +After setting up the aws cli, you can fetch the kubeconfig for the EKS cluster by running the following command + +```bash +aws eks --region update-kubeconfig --name +``` + +Where `` is the region where the EKS cluster is created and `` is the name of the EKS cluster. + +## Deploying Headlamp on the EKS cluster + +1. First make sure you have the [Helm package manager](https://helm.sh/) installed on your local machine. There is a [Helm installation guide](https://helm.sh/docs/intro/install/) if you need to install it. +2. Your cluster should be running. +3. Create a Cognito user through the AWS console. You will need the email for the next step. +4. Inside Kubernetes we need to give users a "cluster-admin" [ClusterRole](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-and-clusterrole). We do this by setting up a ClusterRoleBinding. So the cluster can authorize these users. + +**clusterRoleBinding.yaml** + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-user-clusterrolebinding +subjects: + - kind: User + name: admin@example.com + apiGroup: rbac.authorization.k8s.io +roleRef: + kind: ClusterRole + name: cluster-admin + apiGroup: rbac.authorization.k8s.io +``` + +Create the ClusterRoleBinding by running the following command: + +```shell +kubectl apply -f clusterRoleBinding.yaml +``` + +5. Create a `values.yaml` file and add the following OIDC configuration to it: + +```yaml +config: + oidc: + clientID: "" + clientSecret: "" + issuerURL: "https://cognito-idp..amazonaws.com/" + scopes: "profile,email,openid" +``` + +Replace ``,``,`` with your specific Cognito user pool app configuration details. + +6. Save the `values.yaml` file and Install Headlamp using helm with the following commands: + +```shell +helm repo add headlamp https://headlamp-k8s.github.io/headlamp/ +helm install headlamp-oidc headlamp/headlamp -f values.yaml --namespace=headlamp --create-namespace +``` + + + +This will install Headlamp in the headlamp namespace with the OIDC configuration from the values.yaml file. + +7. After a successful installation, you can access Headlamp by port-forwarding to the pod: + +Make sure the portforwarding is done to a port that you also set as the callback URL in the Cognito user pool configuration. So in our case if the callback URL is http://localhost:8000/oidc-callback then we should port forward to 8000. + +```shell +kubectl port-forward svc/headlamp-oidc 8000:80 -n headlamp +``` + +8. Open your web browser and go to http://localhost:8000. Click on "sign-in." After completing the login flow successfully, you'll gain access to your Kubernetes cluster using Headlamp. + ![Headlamp Login](./headlamp_auth_screen.png) + ![Cognito Login](./cognito_auth.png) + ![Headlamp Dashboard](./headlamp_dashboard.png) diff --git a/docs/latest/installation/in-cluster/index.md b/docs/latest/installation/in-cluster/index.md new file mode 100644 index 0000000..cc9a9e5 --- /dev/null +++ b/docs/latest/installation/in-cluster/index.md @@ -0,0 +1,83 @@ +--- +title: In-cluster +sidebar_position: 1 +--- + +A common use-case for any Kubernetes web UI is to deploy it in-cluster and +set up an ingress server for having it available to users. + +## Using Helm + +The easiest way to install headlamp in your existing cluster is to +use [helm](https://helm.sh/docs/intro/quickstart/) with our [helm chart](https://github.com/headlamp-k8s/headlamp/tree/main/charts/headlamp). + +```bash +# first add our custom repo to your local helm repositories +helm repo add headlamp https://headlamp-k8s.github.io/headlamp/ + +# now you should be able to install headlamp via helm +helm install my-headlamp headlamp/headlamp --namespace kube-system +``` + +As usual it is possible to configure the helm release via the [values file](https://github.com/headlamp-k8s/headlamp/blob/main/charts/headlamp/values.yaml) or setting your preferred values directly. + +```bash +# install headlamp with your own values.yaml +helm install my-headlamp headlamp/headlamp --namespace kube-system -f values.yaml + +# install headlamp by setting your values directly +helm install my-headlamp headlamp/headlamp --namespace kube-system --set replicaCount=2 +``` + +## Using simple yaml + +We also maintain a simple/vanilla [file](https://github.com/headlamp-k8s/headlamp/blob/main/kubernetes-headlamp.yaml) +for setting up a Headlamp deployment and service. Be sure to review it and change +anything you need. + +If you're happy with the options in this deployment file, and assuming +you have a running Kubernetes cluster and your `kubeconfig` pointing to it, +you can run: + +```bash +kubectl apply -f https://raw.githubusercontent.com/kinvolk/headlamp/main/kubernetes-headlamp.yaml +``` + +## Exposing Headlamp with an ingress server + +With the instructions in the previous section, the Headlamp service should be +running, but you still need the +ingress server as mentioned. We provide an example sample ingress yaml file +for this purpose, but you have to manually replace the **URL** placeholder +with the desired URL (the ingress file also assumes that you have contour +and a cert-manager set up, but if you don't then you'll just not have TLS). + +Assuming your URL is `headlamp.mydeployment.io`, getting the sample ingress +file and changing the URL can quickly be done by: + +```bash +curl -s https://raw.githubusercontent.com/kinvolk/headlamp/main/kubernetes-headlamp-ingress-sample.yaml | sed -e s/__URL__/headlamp.mydeployment.io/ > headlamp-ingress.yaml +``` + +and with that, you'll have a configured ingress file, so verify it and apply it: + +```bash +kubectl apply -f ./headlamp-ingress.yaml +``` + +## Exposing Headlamp with port-forwarding + +If you want to quickly access Headlamp (after having its service running) and +don't want to set up an ingress for it, you can run use port-forwarding as follows: + +```bash +kubectl port-forward -n kube-system service/headlamp 8080:80 +``` + +and then you can access `localhost:8080` in your browser. + +## Accessing Headlamp + +Once Headlamp is up and running, be sure to enable access to it either by creating +a [service account](../#create-a-service-account-token) or by setting up +[OIDC](./oidc). diff --git a/docs/latest/installation/in-cluster/keycloak/headlamp-access1.jpg b/docs/latest/installation/in-cluster/keycloak/headlamp-access1.jpg new file mode 100755 index 0000000..d283087 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/headlamp-access1.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/headlamp-access2.jpg b/docs/latest/installation/in-cluster/keycloak/headlamp-access2.jpg new file mode 100755 index 0000000..7b6a292 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/headlamp-access2.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/headlamp-access3.jpg b/docs/latest/installation/in-cluster/keycloak/headlamp-access3.jpg new file mode 100755 index 0000000..5bf0030 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/headlamp-access3.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/headlamp-install.jpg b/docs/latest/installation/in-cluster/keycloak/headlamp-install.jpg new file mode 100755 index 0000000..f5f8544 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/headlamp-install.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/index.md b/docs/latest/installation/in-cluster/keycloak/index.md new file mode 100644 index 0000000..20c466c --- /dev/null +++ b/docs/latest/installation/in-cluster/keycloak/index.md @@ -0,0 +1,184 @@ +--- +title: How to Set Up Headlamp in minikube with Keycloak OIDC Authentication +sidebar_label: "Tutorial: OIDC with Keycloak" +--- + +In this tutorial, we'll walk through the process of configuring Headlamp within a Minikube cluster while utilizing Keycloak for OIDC (OpenID Connect) authentication. This tutorial is based on Keycloak version 22.0.4, Minikube version v1.31.2, and Headlamp version 0.20.1. + +Note: This tutorial assumes that you have Keycloak hosted on a remote server. If you're using a local Keycloak instance, you may encounter issues with Minikube OIDC configuration. + +## Creating a Keycloak Client + +To enable OIDC authentication in your Minikube cluster, you'll need to create a Keycloak client.Before proceeding, follow the [getting started guide](https://www.keycloak.org/guides#getting-started) to set up your Keycloak instance. When creating a user in Keycloak, don't forget to also set the email address.Follow these steps to configure the client in your Keycloak admin panel: + +1. Start by accessing your Keycloak admin panel. + > \/admin + +![Keycloak Admin Panel](./keycloak-admin-panel.jpeg) + +2. Navigate to the "Clients" section and Click on the "Create client" option. + ![Keycloak Clients Page](./keycloak-clients-list.jpeg) + +3. Fill in the "client-id" and "Name" fields and proceed to the next step. + ![Keycloak Create Client](./keycloak-create-client1.jpeg) + +4. In the "Capability Config" step, enable "Client authentication" and proceed to the next step. + ![Keycloak Create Client](./keycloak-create-client2.jpeg) + +5. Add "http://localhost:8000/\*" to the "Valid redirect URIs" and save your settings. + ![Keycloak Create Client](./keycloak-create-client3.jpeg) + +## Setting up Minikube with the Keycloak OIDC Configuration + +To configure Minikube for Keycloak OIDC integration, follow these steps: + +1. **Run the following command** to start Minikube with the necessary configuration options: + +```shell +minikube start -p=keycloak \ +--extra-config=apiserver.authorization-mode=Node,RBAC \ +--extra-config=apiserver.oidc-issuer-url=/realms/ \ +--extra-config=apiserver.oidc-username-claim=email \ +--extra-config=apiserver.oidc-client-id= +``` + +![Minikube start](./minikube-start.jpg) + +Note: +Replace ``, ``, and `` with the actual values relevant to your Keycloak setup. + +## Configuring a ClusterRole Binding for the OIDC User + +Once your cluster is operational, you need to configure a cluster role and a cluster role binding for the user in your Keycloak realm. This step is essential for enabling the Kubernetes API server to identify the user. In this example, we'll be associating the user with the predefined `cluster-admin` Role. + +**clusterRoleBinding.yaml** + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-user-clusterrolebinding +subjects: + - kind: User + name: # Please note that the name is case-sensitive + apiGroup: rbac.authorization.k8s.io +roleRef: + kind: ClusterRole + name: cluster-admin # Specify the name of the ClusterRole to be bound + apiGroup: rbac.authorization.k8s.io +``` + +Note: Please replace `` with your keycloak user email. + +Create the cluster role binding by running the following command: + +```shell + kubectl apply -f clusterRoleBinding.yaml +``` + +# Configuring kubectl for OIDC User Authentication + +Once you've set up your cluster and created a ClusterRoleBinding, it's time to configure `kubectl` to work with your OIDC user for authentication. Follow these steps: + +1. Install the `oidc-login` plugin with [krew](https://krew.sigs.k8s.io/docs/user-guide/quickstart/) by executing the following command: + +```shell + kubectl krew install oidc-login +``` + +![OIDC Login Install](./oidc-login-install.jpg) + +2. Set Up `oidc-login`, Configure oidc-login with the necessary parameters by running the following command: + +```shell + kubectl oidc-login setup \ + --oidc-issuer-url=/realms/ \ + --oidc-client-id= \ + --oidc-client-secret= +``` + +![OIDC Login Setup](./oidc-login-setup1.jpg) +![OIDC Login Setup](./oidc-login-setup2.jpg) + +Note: You can find the `` from the Credentials tab of your client details page in Keycloak. + +3. Create OIDC User for the Cluster, later this user will be mapped to the keycloak cluster. + +```shell +kubectl config set-credentials keycloak-oidc \ + --exec-api-version=client.authentication.k8s.io/v1beta1 \ + --exec-command=kubectl \ + --exec-arg=oidc-login \ + --exec-arg=get-token \ + --exec-arg=--oidc-issuer-url=/realms/ \ + --exec-arg=--oidc-client-id= \ + --exec-arg=--oidc-client-secret= \ + --exec-arg=--oidc-extra-scope=email,profile +``` + +4. Link the User to the Cluster: To associate the user with the cluster, create a new context using these commands: + +```shell +kubectl config set-context keycloak-oidc --namespace=default --cluster=keycloak --user=keycloak-oidc +kubectl config use-context keycloak-oidc +``` + +5. Test the Configuration: To verify that the configuration is working, list the namespaces in the cluster by executing the command: + +```shell +kubectl get ns +``` + +Upon running this command, a new browser window will open, prompting you to log in. Once you've completed the login process, you can close the window. You should see the namespaces in your cluster. + +Note: Make sure to replace ``, ``, ``, and `` with your specific Keycloak configuration details wherever necessary. + +# Setting up Headlamp with OIDC Configuration + +To configure Headlamp, you can use the Headlamp Helm chart. Follow these steps to set it up with OIDC (OpenID Connect) authentication: + +1. Before setting up Headlamp Go to Keycloak Admin Dashboard, click on Client > Client Details and Edit Client, Add `http://localhost:4466/oidc-callback` to the list of `Valid redirect URIs`. + +![Keycloak redirect URL](./keycloak-redirect.jpeg) + +2. Create a `values.yaml` file and add the following OIDC configuration to it: + +```yaml +config: + oidc: + clientID: "" + clientSecret: "" + issuerURL: "/realms/" + scopes: "email,profile" +``` + +Replace ``, ``, ``, and `` with your specific OIDC configuration details. + +3. Save the `values.yaml` file and Install Headlamp using helm with the following commands: + +```shell +helm repo add headlamp https://headlamp-k8s.github.io/headlamp/ +helm install headlamp-oidc headlamp/headlamp -f values.yaml --namespace=headlamp --create-namespace +``` + +![Headlamp install](./headlamp-install.jpg) + +This will install Headlamp in the headlamp namespace with the OIDC configuration from the values.yaml file. + +4. After a successful installation, you can access Headlamp by port-forwarding to the pod: + +```shell +kubectl port-forward svc/headlamp-oidc 4466:80 -n headlamp +``` + +5. Open your web browser and go to http://localhost:4466. Click on "sign-in." After completing the login flow successfully, you'll gain access to your Kubernetes cluster using Headlamp. + +![Headlamp access](./headlamp-access1.jpg) +![Headlamp access](./headlamp-access2.jpg) +![Headlamp access](./headlamp-access3.jpg) + +## Conclusion + +In this tutorial, we've explored the process of setting up Headlamp within a Kubernetes cluster, integrating it with OIDC (OpenID Connect) authentication provided by Keycloak. By following the steps outlined in this guide, you've successfully configured Headlamp to enhance your Kubernetes cluster management. + +This setup allows you to benefit from Headlamp's user-friendly interface and advanced features, all while ensuring a secure and streamlined authentication through Keycloak. With the power of OIDC, you can easily and safely access and manage your Kubernetes resources. diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-admin-panel.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-admin-panel.jpeg new file mode 100755 index 0000000..995a57a Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-admin-panel.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-clients-list.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-clients-list.jpeg new file mode 100755 index 0000000..1ef84f0 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-clients-list.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-create-client1.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client1.jpeg new file mode 100755 index 0000000..7c566aa Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client1.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-create-client2.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client2.jpeg new file mode 100755 index 0000000..c52be6f Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client2.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-create-client3.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client3.jpeg new file mode 100755 index 0000000..5ae2c7c Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-create-client3.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/keycloak-redirect.jpeg b/docs/latest/installation/in-cluster/keycloak/keycloak-redirect.jpeg new file mode 100755 index 0000000..efd98f4 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/keycloak-redirect.jpeg differ diff --git a/docs/latest/installation/in-cluster/keycloak/minikube-start.jpg b/docs/latest/installation/in-cluster/keycloak/minikube-start.jpg new file mode 100755 index 0000000..8d36f3c Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/minikube-start.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/oidc-login-install.jpg b/docs/latest/installation/in-cluster/keycloak/oidc-login-install.jpg new file mode 100755 index 0000000..23f597d Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/oidc-login-install.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/oidc-login-setup1.jpg b/docs/latest/installation/in-cluster/keycloak/oidc-login-setup1.jpg new file mode 100755 index 0000000..48221bd Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/oidc-login-setup1.jpg differ diff --git a/docs/latest/installation/in-cluster/keycloak/oidc-login-setup2.jpg b/docs/latest/installation/in-cluster/keycloak/oidc-login-setup2.jpg new file mode 100755 index 0000000..431c832 Binary files /dev/null and b/docs/latest/installation/in-cluster/keycloak/oidc-login-setup2.jpg differ diff --git a/docs/latest/installation/in-cluster/oidc.md b/docs/latest/installation/in-cluster/oidc.md new file mode 100644 index 0000000..2f2dc45 --- /dev/null +++ b/docs/latest/installation/in-cluster/oidc.md @@ -0,0 +1,53 @@ +--- +title: Accessing using OpenID Connect +sidebar_label: OIDC +--- + +Headlamp supports OIDC for cluster users to effortlessly log in using a "Sign in" button. + +![screenshot the login dialog for a cluster](./oidc_button.png) + +For OIDC to be used, Headlamp needs to know how to configure it, so you have to provide the different OIDC-related arguments to Headlamp from your OIDC provider. Those are: + +- the client ID: `-oidc-client-id` or env var `HEADLAMP_CONFIG_OIDC_CLIENT_ID` +- the client secret: `-oidc-client-secret` or env var `HEADLAMP_CONFIG_OIDC_CLIENT_SECRET` +- the issuer URL: `-oidc-idp-issuer-url` or env var `HEADLAMP_CONFIG_OIDC_IDP_ISSUER_URL` +- (optionally) the OpenId scopes: `-oidc-scopes` or env var `HEADLAMP_CONFIG_OIDC_SCOPES` + +and you have to tell the OIDC provider about the callback URL, which in Headlamp it is your URL + the `/oidc-callback` path, e.g.: +`https://YOUR_URL/oidc-callback`. + +### Scopes + +Besides the mandatory _openid_ scope, Headlamp also requests the optional +_profile_ and _email_ +[scopes](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes). +Scopes can be overridden by using the `-oidc-scopes` option. Remember to +include the default ones if you need them when using that option. +For example, if you need to keep the default scopes and add Github's `repo`, +then add them all to the option: + +`-oidc-scopes=profile,email,repo` + +**Note:** Before Headlamp 0.3.0, a scope _groups_ was also included, as it's +used by Dex and other services, but since it's not part of the default spec, +it was removed in the mentioned version. + +### Example: OIDC with Keycloak in Minikube + +If you are interested in a comprehensive example of using OIDC and Headlamp, +you can check the +[tutorial on setting up OIDC with Keycloack in Minikube](./keycloak/). + +### Example: OIDC with Dex + +If you are using Dex and want to configure Headlamp to use it for OIDC, +then you have to: + +- Add the callback URL (e.g. `https://YOUR_URL/oidc-callback`) to Dex's `staticClient.redirectURIs` +- Set `-oidc-client-id` as Dex's `staticClient.id` +- Set `-oidc-client-secret` as Dex's `staticClient.secret` +- Set `-oidc-idp-issuer-url` as Dex's URL (same as in `--oidc-issuer-url` in the Kubernetes APIServer) +- Set `-oidc-scopes` if needed, e.g. `-oidc-scopes=profile,email,groups` + +**Note** If you already have another static client configured for Kubernetes to be used by the [apiserver's OIDC](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#configuring-the-api-server) (OpenID Connect) configuration, it is important to ensure that a **single static client ID** i.e `-oidc-client-id` is used for both Dex and Headlamp. Additionally, the **redirectURIs** need to be specified for each client. diff --git a/docs/latest/installation/in-cluster/oidc_button.png b/docs/latest/installation/in-cluster/oidc_button.png new file mode 100644 index 0000000..c7b21a7 Binary files /dev/null and b/docs/latest/installation/in-cluster/oidc_button.png differ diff --git a/docs/latest/installation/index.mdx b/docs/latest/installation/index.mdx new file mode 100644 index 0000000..f1b2767 --- /dev/null +++ b/docs/latest/installation/index.mdx @@ -0,0 +1,69 @@ +--- +title: Installation +sidebar_position: 2 +--- + +Headlamp can be deployed in a Kubernetes [cluster](./in-cluster/index.md), or run as a [desktop](./desktop/index.mdx) application. + +## Authentication / Log-in + +Currently you can log in Headlamp by using a **client-certificate** (as you may have configured with e.g. minikube), or a **bearer token**. + +Headlamp uses [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac) for checking whether and how users can access resources. This means that the +recommended way to log in into Headlamp is to use a Service Account token. + +### Create a Service Account token + +As an example, you can create a service account for using Headlamp and retrieve its token to +authenticate: + +1. Create a Service Account: + +```shell +kubectl -n kube-system create serviceaccount headlamp-admin +``` + +2. Give admin rights to the account (check the + : + +:::tip + +Check [RBAC docs](https://kubernetes.io/docs/reference/access-authn-authz/rbac) if you want to set more + restrictive permissions) + +::: + +```shell +kubectl create clusterrolebinding headlamp-admin --serviceaccount=kube-system:headlamp-admin --clusterrole=cluster-admin +``` + +3. Create the token using the following command: + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + ```shell + kubectl create token headlamp-admin -n kube-system + ``` + + + ```shell + export HEADLAMP_SECRET=$(kubectl get secrets --namespace kube-system -o custom-columns=":metadata.name" | grep "headlamp-admin-token") + kubectl get secret $HEADLAMP_SECRET --namespace kube-system --template=\{\{.data.token\}\} | base64 --decode + ``` + + + + + +Otherwise, run the following command to get the token associated with the service account: + + + +Once you have the Service Account token, paste it when prompted by Headlamp. + +### Use OIDC + +For OpenIDConnect, please see the [in-cluster installation](./in-cluster/oidc.md) docs. diff --git a/docs/latest/installation/metrics-server.md b/docs/latest/installation/metrics-server.md new file mode 100644 index 0000000..feb5977 --- /dev/null +++ b/docs/latest/installation/metrics-server.md @@ -0,0 +1,24 @@ +--- +title: Kubernetes Metrics Server +sidebar_label: Metrics Server +sidebar_position: 4 +--- + +Headlamp can show information for resources usage if the Metrics Server is +installed. If the Metrics Server is not installed, then a related notice is +displayed as shown in the following screenshot: + +![screenshot for no-metrics-notice](./no-metrics-server.png) + +To read more about metrics server check out the +[metrics-server documentation](https://kubernetes.io/docs/tasks/debug-application-cluster/resource-metrics-pipeline/#metrics-server). + +## Minikube + +If you are running Minikube, then you can install the Metrics Server by +enabling the +[respective add-on](https://kubernetes.io/docs/tutorials/hello-minikube/#enable-addons). i.e.: + +```shell +minikube addons enable metrics-server +``` diff --git a/docs/latest/installation/no-metrics-server.png b/docs/latest/installation/no-metrics-server.png new file mode 100644 index 0000000..86b4517 Binary files /dev/null and b/docs/latest/installation/no-metrics-server.png differ diff --git a/docs/latest/platforms.md b/docs/latest/platforms.md new file mode 100644 index 0000000..37331c8 --- /dev/null +++ b/docs/latest/platforms.md @@ -0,0 +1,50 @@ +--- +title: Platforms +sidebar_position: 3 +--- + +## Tested Kubernetes Platforms + +This section shows the different platforms where Headlamp has been tested (in-cluster) or is intended to be tested, and useful observations about it. +If you have tested Headlamp on a different flavor or Kubernetes, please file a PR or [issue](https://github.com/headlamp-k8s/headlamp/issues/new/choose) to add your remarks to the list. + +The "works" column refers to the overall Kubernetes related functionality when running in the respective platform; it may have 3 different values: + +- ✔️ : Has been tried and works fine to the extent of what has been tested +- ❌ : Has been tried and didn't work or had issues that prevented a regular use of it +- ❔: Hasn't been tried/reported yet + +| Platform | Works | Comments | +| ------------------------------------------------------------------------------- | :---: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Amazon EKS](https://aws.amazon.com/eks/) | ✔️ | - As reported [here](https://github.com/headlamp-k8s/headlamp/issues/266). | +| [Azure Kubernetes AKS](https://azure.microsoft.com/products/kubernetes-service) | ✔️ | Worked fine in-cluster and also working perfectly while using kubeconfig file with headlamp application. | +| [DigitalOcean Kubernetes](https://www.digitalocean.com/products/kubernetes/) | ❔ | - Have you tried Headlamp on this platform? Please report your experience. | +| [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine) | ❔ | - Have you tried Headlamp on this platform? Please report your experience. | +| [K3s](https://k3s.io/) | ✔️ | - Simple to install / expose with the regular [in-cluster instructions](https://headlamp.dev/docs/latest/installation/in-cluster/). | +| [Kind](https://kind.sigs.k8s.io/) | ✔️ | - Simple to install / expose with the regular [in-cluster instructions](https://headlamp.dev/docs/latest/installation/in-cluster/). | +| [Microsoft AKS](https://azure.microsoft.com/) | ✔️ | - Testing (not suitable for production):
- Deploy Headlamp from the [in-cluster instructions](https://headlamp.dev/docs/latest/installation/in-cluster/)
- [Enable the http_application_routing addon](https://docs.microsoft.com/en-us/azure/aks/http-application-routing#use-http-routing) (this creates a DNS zone)
- Use the DNS zone name as the domain for Headlamp, i.e. if it is `1234567.eastus.aksapp.io`, then apply [Headlamp's ingress](https://raw.githubusercontent.com/headlamp-k8s/headlamp/main/kubernetes-headlamp-ingress-sample.yaml) using `headlamp.1234567.eastus.aksapp.io` as the path and use `kubernetes.io/ingress.class: addon-http-application-routing` as the ingress class annotation.

For production, please follow the [intructions to deploy with an HTTPS ingress controller](https://docs.microsoft.com/en-us/azure/aks/ingress-tls). | +| [Minikube](https://minikube.sigs.k8s.io/) | ✔️ | - For exposing with an ingress, enable ingresses with `minikube addons enable ingress`:
- There are docs about the [development](./development/index.md#minikube-in-cluster) with Minikube. | +| [Vultr Kubernetes Engine](https://www.vultr.com/kubernetes/) | ✔️ | - Simple to install / expose with the regular [in-cluster instructions](https://headlamp.dev/docs/latest/installation/in-cluster/). | + +## Tested Browsers + +We mostly test with 'modern browsers' defined as the latest version and two older versions. But we try to make Headlamp work with web standards, so it's quite likely other standards conforming browsers will also work. + +| Platform | Works | Comments | +| -------------------- | :---: | -------- | +| Edge | ✔️ | +| Safari | ✔️ | +| Firefox | ✔️ | +| Chrome | ✔️ | +| Internet Explorer 11 | ❌ | + +## Tested Desktop OS, for App version + +We test on MacOS, various flavours of Linux, and Windows. Headlamp runs in the browser, but also as an App. + +| Platform | Works | Comments | +| ---------------------------------- | :---: | -------- | +| Windows 10, 11 (including in WSL2) | ✔️ | +| MacOS (arm, x86) | ✔️ | +| Ubuntu 20.04, 22.04, 22.10 | ✔️ | +| Fedora | ✔️ | diff --git a/docusaurus.config.ts b/docusaurus.config.ts new file mode 100644 index 0000000..50cb0f5 --- /dev/null +++ b/docusaurus.config.ts @@ -0,0 +1,187 @@ +import { themes as prismThemes } from "prism-react-renderer"; +import type { Config } from "@docusaurus/types"; +import type * as Preset from "@docusaurus/preset-classic"; +import { githubA11yLight } from "./src/prismColorTheme"; + +const config: Config = { + title: "Headlamp", + tagline: "Headlamp is a user-friendly Kubernetes UI focused on extensibility", + favicon: "img/favicon.png", + + // Set the production url of your site here + url: "https://headlamp.dev/", + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: "/", + + onBrokenLinks: "warn", + onBrokenMarkdownLinks: "warn", + + plugins: ["docusaurus-lunr-search"], + + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: "en", + locales: ["en"], + }, + + markdown: { + format: "detect", + }, + + presets: [ + [ + "classic", + { + docs: { + sidebarPath: "./sidebars.ts", + editUrl: "https://github.com/headlamp-k8s/headlamp-website", + }, + blog: { + showReadingTime: true, + }, + theme: { + customCss: "./src/css/custom.css", + }, + } satisfies Preset.Options, + ], + ], + + headTags: [ + { + tagName: "link", + attributes: { + rel: "preconnect", + href: "https://fonts.googleapis.com", + }, + }, + { + tagName: "link", + attributes: { + rel: "preconnect", + href: "https://fonts.gstatic.com", + crossorigin: "true", + }, + }, + { + tagName: "link", + attributes: { + rel: "stylesheet", + href: "https://fonts.googleapis.com/css2?family=Overpass+Mono:wght@300..700&family=Overpass:ital,wght@0,100..900;1,100..900&display=swap", + }, + }, + ], + + themeConfig: { + image: "img/social-card.png", + metadata: [ + { name: "og:url", content: "/" }, + { name: "og:site_name", content: "Your Kubernetes Experience" }, + { name: "og:image:width", content: "1200" }, + { name: "og:image:height", content: "600" }, + { name: "twitter:creator", content: "@headlamp_ui" }, + { name: "twitter:site", content: "@headlamp_ui" }, + ], + navbar: { + logo: { + alt: "Headlamp logo", + src: "img/logo.svg", + srcDark: "img/logo-dark.svg", + width: "155", + height: "32", + }, + items: [ + { + position: "left", + to: "/", + label: "Home", + activeBaseRegex: `^\/$`, + }, + { + type: "docSidebar", + sidebarId: "mainSidebar", + position: "left", + label: "Docs", + }, + { to: "/blog", label: "Blog", position: "left" }, + { + href: "https://kubernetes.slack.com/messages/headlamp", + label: "Slack", + position: "right", + }, + { + href: "https://github.com/headlamp-k8s/headlamp", + label: "GitHub", + position: "right", + }, + ], + }, + footer: { + style: "light", + logo: { + alt: "Headlamp logo", + src: "img/logo.svg", + srcDark: "img/logo-dark.svg", + width: "155", + height: "32", + }, + links: [ + { + title: "Community", + items: [ + { + label: "Slack", + href: "https://kubernetes.slack.com/messages/headlamp", + }, + { + label: "Contribute", + href: "https://headlamp.dev/docs/latest/contributing/", + }, + { + label: "Github", + href: "https://github.com/headlamp-k8s/headlamp", + }, + { + label: "Twitter", + href: "https://twitter.com/headlamp_ui", + }, + ], + }, + { + title: "Documentation", + items: [ + { + label: "In-Cluster Deployment", + to: "/docs/latest/installation/in-cluster", + }, + { + label: "Desktop App Installation", + href: "/docs/latest/installation/desktop", + }, + { + label: "Plugin Development", + href: "/docs/latest/development/plugins", + }, + { + label: "F.A.Q.", + href: "/docs/latest/faq", + }, + ], + }, + ], + copyright: `Copyright ${new Date().getFullYear()} The Headlamp Contributors
+ The Linux Foundation® (TLF) has registered trademarks and uses trademarks.
+ For a list of TLF trademarks, see + Trademark Usage`, + }, + prism: { + additionalLanguages: ["bash", "yaml", "docker"], + theme: githubA11yLight, + darkTheme: prismThemes.oceanicNext, + }, + } satisfies Preset.ThemeConfig, +}; + +export default config; diff --git a/layouts/partials/download_button.html b/layouts/partials/download_button.html deleted file mode 100644 index d2aa677..0000000 --- a/layouts/partials/download_button.html +++ /dev/null @@ -1,6 +0,0 @@ -{{- $platform := index . "platform" -}} -{{- $name := index . "name" -}} -{{- $url := index . "url" -}} - - Install on {{ $name }} - \ No newline at end of file diff --git a/layouts/partials/quick-features.html b/layouts/partials/quick-features.html deleted file mode 100644 index 6dc1a18..0000000 --- a/layouts/partials/quick-features.html +++ /dev/null @@ -1,60 +0,0 @@ -{{ $features := .Params.quick_features.features }} -{{ $title := .Params.quick_features.title }} -{{ $description := .Params.quick_features.description }} -{{ $shapes := slice "blue" "yellow" "red" "green" }} -{{ $useSeparator := default true .Params.quick_features.top_separator }} - -{{ if $useSeparator }} -{{/* This is a trick to make the separator only visible when we want */}} -
-{{ end }} -
-
- {{ if $title }}

{{ $title }}

{{ end }} - {{ if $description }}
{{ $description | markdownify }}
{{ end }} - {{ partial "download_button.html" ( dict "platform" "linux" "name" "Linux" ) }} - {{ partial "download_button.html" ( dict "platform" "mac" "name" "Mac OS" ) }} - {{ partial "download_button.html" ( dict "platform" "windows" "name" "Windows" "url" "win" ) }} -
-

We are a Cloud Native Computing Foundation Sandbox Project.

- -
-
- {{ if $features }} - {{- $shapeBgColor := (default "#e0f7f7" .Params.quick_features.shape_color) -}} - {{- $iconColor := (default "#09BAC8" .Params.quick_features.icon_color) -}} - {{ $i := 0 }} - {{ range $features }} -
- {{- $svgBg := resources.Get (print "/images/" .shape ".svg") -}} - {{- if not $svgBg -}} - {{- $svgBg = resources.Get (print "/images/shape-" .shape ".svg") -}} - {{- end -}} - {{- $svgContents := partial "fillsvg.html" (dict "svg" $svgBg.Content "color" $shapeBgColor) -}} -
- {{ if .icon }} - {{- $svg := resources.Get (print "/images/icon-" .icon ".svg") -}} - {{- $svgContents = partial "fillsvg.html" (dict "svg" $svg.Content "color" $iconColor) -}} - {{ .icon }} - {{ else }} -

{{ (default .title .text) | markdownify }}

- {{ end }} -
- {{ if .icon }} - {{ if .title }} -

{{ .title }}

- {{ end }} - {{ if .text }} -

{{ .text | markdownify }}

- {{ end }} - {{ end }} -
- {{ $i = mod (add $i 1) (len $shapes) }} - {{ end }} - {{ end }} -
-
-
diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5089b64 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17585 @@ +{ + "name": "headlamp-website", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "headlamp-website", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "^3.4.0", + "@docusaurus/preset-classic": "^3.4.0", + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "docusaurus-lunr-search": "^3.4.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-aria-components": "^1.2.1", + "react-dom": "^18.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.4.0", + "@docusaurus/tsconfig": "^3.4.0", + "@docusaurus/types": "3.3.2", + "typescript": "~5.2.2" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz", + "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.23.3" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz", + "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==", + "license": "MIT" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz", + "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.23.3" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz", + "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz", + "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz", + "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz", + "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz", + "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/logger-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz", + "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==", + "license": "MIT" + }, + "node_modules/@algolia/logger-console": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz", + "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==", + "license": "MIT", + "dependencies": { + "@algolia/logger-common": "4.23.3" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz", + "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.3", + "@algolia/cache-common": "4.23.3", + "@algolia/cache-in-memory": "4.23.3", + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/logger-console": "4.23.3", + "@algolia/requester-browser-xhr": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/requester-node-http": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz", + "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz", + "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==", + "license": "MIT" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz", + "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz", + "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", + "dependencies": { + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/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==" + }, + "node_modules/@babel/highlight/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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", + "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.24.5", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", + "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", + "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz", + "integrity": "sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", + "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", + "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", + "dependencies": { + "@babel/compat-data": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.5", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.5", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.5", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.24.5", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.5", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.5", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", + "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-react-display-name": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz", + "integrity": "sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.0", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz", + "integrity": "sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/generator": "^7.23.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@babel/runtime-corejs3": "^7.22.6", + "@babel/traverse": "^7.22.8", + "@docusaurus/cssnano-preset": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "autoprefixer": "^10.4.14", + "babel-loader": "^9.1.3", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.2", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.31.1", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "del": "^6.1.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "html-minifier-terser": "^7.2.0", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.5.3", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.7.6", + "p-map": "^4.0.0", + "postcss": "^8.4.26", + "postcss-loader": "^7.3.3", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "rtl-detect": "^1.0.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.5", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "url-loader": "^4.1.1", + "webpack": "^5.88.1", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz", + "integrity": "sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.4.38", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz", + "integrity": "sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz", + "integrity": "sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^1.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz", + "integrity": "sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.4.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz", + "integrity": "sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz", + "integrity": "sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz", + "integrity": "sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz", + "integrity": "sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^1.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz", + "integrity": "sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz", + "integrity": "sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz", + "integrity": "sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz", + "integrity": "sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz", + "integrity": "sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/plugin-debug": "3.4.0", + "@docusaurus/plugin-google-analytics": "3.4.0", + "@docusaurus/plugin-google-gtag": "3.4.0", + "@docusaurus/plugin-google-tag-manager": "3.4.0", + "@docusaurus/plugin-sitemap": "3.4.0", + "@docusaurus/theme-classic": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-search-algolia": "3.4.0", + "@docusaurus/types": "3.4.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz", + "integrity": "sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.4.0", + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-translations": "3.4.0", + "@docusaurus/types": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "copy-text-to-clipboard": "^3.2.0", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.26", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", + "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz", + "integrity": "sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.4.0", + "@docusaurus/module-type-aliases": "3.4.0", + "@docusaurus/plugin-content-blog": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/plugin-content-pages": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz", + "integrity": "sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.5.2", + "@docusaurus/core": "3.4.0", + "@docusaurus/logger": "3.4.0", + "@docusaurus/plugin-content-docs": "3.4.0", + "@docusaurus/theme-common": "3.4.0", + "@docusaurus/theme-translations": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-validation": "3.4.0", + "algoliasearch": "^4.18.0", + "algoliasearch-helper": "^3.13.3", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz", + "integrity": "sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/tsconfig": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.4.0.tgz", + "integrity": "sha512-0qENiJ+TRaeTzcg4olrnh0BQ7eCxTgbYWBnWUeQDc84UYkt/T3pDNnm3SiQkqPb+YQ1qtYFlC0RriAElclo8Dg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docusaurus/types": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.3.2.tgz", + "integrity": "sha512-5p201S7AZhliRxTU7uMKtSsoC8mgPA9bs9b5NQg1IRdRxJfflursXNVsgc3PcMqiUTul/v1s3k3rXXFlRE890w==", + "devOptional": true, + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz", + "integrity": "sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "@svgr/webpack": "^8.1.0", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz", + "integrity": "sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz", + "integrity": "sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.4.0", + "@docusaurus/utils": "3.4.0", + "@docusaurus/utils-common": "3.4.0", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", + "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/icu-skeleton-parser": "1.8.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", + "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz", + "integrity": "sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.1.tgz", + "integrity": "sha512-ldr5QO2MneAX5W5WBCYB2pZp/PiHDD1hy9YEBLcXUyJb0qnO86oP8RU+CgmYVSH/R4Dbe2ernhcWOrcgaKD9NQ==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@internationalized/date": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", + "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.4.tgz", + "integrity": "sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.3.tgz", + "integrity": "sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.3.tgz", + "integrity": "sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/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==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", + "integrity": "sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/link": "^3.7.1", + "@react-aria/utils": "^3.24.1", + "@react-types/breadcrumbs": "^3.7.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/button": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz", + "integrity": "sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/toggle": "^3.7.4", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz", + "integrity": "sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/calendar": "^3.5.1", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz", + "integrity": "sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.0.5", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/toggle": "^3.10.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/checkbox": "^3.6.5", + "@react-stately/form": "^3.0.3", + "@react-stately/toggle": "^3.7.4", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/color": { + "version": "3.0.0-beta.33", + "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0-beta.33.tgz", + "integrity": "sha512-nhqnIHYm5p6MbuF3cC6lnqzG7MjwBsBd0DtpO+ByFYO+zxpMMbeC5R+1SFxvapR4uqmAzTotbtiUCGsG+SUaIg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/numberfield": "^3.11.3", + "@react-aria/slider": "^3.7.8", + "@react-aria/spinbutton": "^3.6.5", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/color": "^3.6.1", + "@react-stately/form": "^3.0.3", + "@react-types/color": "3.0.0-beta.25", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz", + "integrity": "sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/listbox": "^3.12.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/menu": "^3.14.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/combobox": "^3.8.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz", + "integrity": "sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/spinbutton": "^3.6.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/datepicker": "^3.9.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/datepicker": "^3.7.4", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz", + "integrity": "sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/utils": "^3.24.1", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/dnd": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.6.1.tgz", + "integrity": "sha512-6WnujUTD+cIYZVF/B+uXdHyJ+WSpbYa8jH282epvY4FUAq1qLmen12/HHcoj/5dswKQe8X6EM3OhkQM89d9vFw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/string": "^3.2.3", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/overlays": "^3.22.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/dnd": "^3.3.1", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", + "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/form": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz", + "integrity": "sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.9.1.tgz", + "integrity": "sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/grid": "^3.8.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/virtualizer": "^3.7.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/gridlist": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.8.1.tgz", + "integrity": "sha512-vVPkkA+Ct0NDcpnNm/tnYaBumg0fP9pXxsPLqL1rxvsTyj1PaIpFTZ4corabPTbTDExZwUSTS3LG1n+o1OvBtQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/grid": "^3.9.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/list": "^3.10.5", + "@react-stately/tree": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz", + "integrity": "sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.21.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", + "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz", + "integrity": "sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/link": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz", + "integrity": "sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz", + "integrity": "sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/list": "^3.10.5", + "@react-types/listbox": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.3.4.tgz", + "integrity": "sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz", + "integrity": "sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/menu": "^3.7.1", + "@react-stately/tree": "^3.8.1", + "@react-types/button": "^3.9.4", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/meter": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.13.tgz", + "integrity": "sha512-oG6KvHQM3ri93XkYQkgEaMKSMO9KNDVpcW1MUqFfqyUXHFBRZRrJB4BTXMZ4nyjheFVQjVboU51fRwoLjOzThg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/progress": "^3.4.13", + "@react-types/meter": "^3.4.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/numberfield": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.3.tgz", + "integrity": "sha512-QQ9ZTzBbRI8d9ksaBWm6YVXbgv+5zzUsdxVxwzJVXLznvivoORB8rpdFJzUEWVCo25lzoBxluCEPYtLOxP1B0w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/spinbutton": "^3.6.5", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-stately/numberfield": "^3.9.3", + "@react-types/button": "^3.9.4", + "@react-types/numberfield": "^3.8.3", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz", + "integrity": "sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/overlays": "^3.6.7", + "@react-types/button": "^3.9.4", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz", + "integrity": "sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-types/progress": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/radio": "^3.10.4", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/searchfield": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.5.tgz", + "integrity": "sha512-h1sMUOWjhevaKKUHab/luHbM6yiyeN57L4RxZU0IIc9Ww0h5Rp2GUuKZA3pcdPiExHje0aijcImL3wBHEbKAzw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/searchfield": "^3.5.3", + "@react-types/button": "^3.9.4", + "@react-types/searchfield": "^3.5.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/select": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.5.tgz", + "integrity": "sha512-s8jixBuTUNdKWRHe2tIJqp55ORHeUObGMw1s7PQRRVrrHPdNSYseAOI9B2W7qpl3hKhvjJg40UW+45mcb1WKbw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/listbox": "^3.12.1", + "@react-aria/menu": "^3.14.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/select": "^3.6.4", + "@react-types/button": "^3.9.4", + "@react-types/select": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz", + "integrity": "sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/selection": "^3.15.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/separator": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.13.tgz", + "integrity": "sha512-hofA6JCPnAOqSE9vxnq7Dkazr7Kb2A0I5sR16fOG7ddjYRc/YEY5Nv7MWfKUGU0kNFHkgNjsDAILERtLechzeA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz", + "integrity": "sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/slider": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.5.tgz", + "integrity": "sha512-0aACBarF/Xr/7ixzjVBTQ0NBwwwsoGkf5v6AVFVMTC0uYMXHTALvRs+ULHjHMa5e/cX/aPlEvaVT7jfSs+Xy9Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz", + "integrity": "sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/toggle": "^3.10.4", + "@react-stately/toggle": "^3.7.4", + "@react-types/switch": "^3.5.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/table": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz", + "integrity": "sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/grid": "^3.9.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/table": "^3.11.8", + "@react-stately/virtualizer": "^3.7.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz", + "integrity": "sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/tabs": "^3.6.6", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tag": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.1.tgz", + "integrity": "sha512-gcIGPYZ2OBwMT4IHnlczEezKlxr0KRPL/mSfm2Q91GE027ZGOJnqusH9az6DX1qxrQx8x3vRdqYT2KmuefkrBQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/gridlist": "^3.8.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/list": "^3.10.5", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz", + "integrity": "sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/textfield": "^3.9.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.4.tgz", + "integrity": "sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/toggle": "^3.7.4", + "@react-types/checkbox": "^3.8.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/toolbar": { + "version": "3.0.0-beta.5", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.5.tgz", + "integrity": "sha512-c8spY7aeLI6L+ygdXvEbAzaT41vExsxZ1Ld0t7BB+6iEF3nyBNJHshjkgdR7nv8FLgNk0no4tj0GTq4Jj4UqHQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz", + "integrity": "sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/tooltip": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tree": { + "version": "3.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-alpha.1.tgz", + "integrity": "sha512-CucyeJ4VeAvWO5UJHt/l9JO65CVtsOVUctMOVNCQS77Isqp3olX9pvfD3LXt8fD5Ph2g0Q/b7siVpX5ieVB32g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/gridlist": "^3.8.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/tree": "^3.8.1", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", + "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.12", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz", + "integrity": "sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz", + "integrity": "sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-stately/utils": "^3.10.1", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz", + "integrity": "sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz", + "integrity": "sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/color": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.6.1.tgz", + "integrity": "sha512-iW0nAhl3+fUBegHMw5EcAbFVDpgwHBrivfC85pVoTM3pyzp66hqNN6R6xWxW6ETyljS8UOer59+/w4GDVGdPig==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/i18n": "^3.11.1", + "@react-stately/form": "^3.0.3", + "@react-stately/numberfield": "^3.9.3", + "@react-stately/slider": "^3.5.4", + "@react-stately/utils": "^3.10.1", + "@react-types/color": "3.0.0-beta.25", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz", + "integrity": "sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/overlays": "^3.6.7", + "@react-stately/select": "^3.6.4", + "@react-stately/utils": "^3.10.1", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/data": { + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.4.tgz", + "integrity": "sha512-PbnUQxeE6AznSuEWYnRmrYQ9t5z1Asx98Jtrl96EeA6Iapt9kOjTN9ySqCxtPxMKleb1NIqG3+uHU3veIqmLsg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz", + "integrity": "sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/string": "^3.2.3", + "@react-stately/form": "^3.0.3", + "@react-stately/overlays": "^3.6.7", + "@react-stately/utils": "^3.10.1", + "@react-types/datepicker": "^3.7.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/dnd": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.3.1.tgz", + "integrity": "sha512-I/Ci5xB8hSgAXzoWYWScfMM9UK1MX/eTlARBhiSlfudewweOtNJAI+cXJgU7uiUnGjh4B4v3qDBtlAH1dWDCsw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/selection": "^3.15.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.0.3.tgz", + "integrity": "sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/form": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz", + "integrity": "sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.8.7.tgz", + "integrity": "sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/list": { + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz", + "integrity": "sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz", + "integrity": "sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.7", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/numberfield": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.3.tgz", + "integrity": "sha512-UlPTLSabhLEuHtgzM0PgfhtEaHy3yttbzcRb8yHNvGo4KbCHeHpTHd3QghKfTFm024Mug7+mVlWCmMtW0f5ttg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/number": "^3.5.3", + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/numberfield": "^3.8.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz", + "integrity": "sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/overlays": "^3.8.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/searchfield": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.3.tgz", + "integrity": "sha512-H0OvlgwPIFdc471ypw79MDjz3WXaVq9+THaY6JM4DIohEJNN5Dwei7O9g6r6m/GqPXJIn5TT3b74kJ2Osc00YQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/searchfield": "^3.5.5", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/select": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.4.tgz", + "integrity": "sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/overlays": "^3.6.7", + "@react-types/select": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.15.1.tgz", + "integrity": "sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz", + "integrity": "sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/table": { + "version": "3.11.8", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz", + "integrity": "sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/grid": "^3.8.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz", + "integrity": "sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/list": "^3.10.5", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz", + "integrity": "sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.7", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz", + "integrity": "sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz", + "integrity": "sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz", + "integrity": "sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz", + "integrity": "sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz", + "integrity": "sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz", + "integrity": "sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/color": { + "version": "3.0.0-beta.25", + "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0-beta.25.tgz", + "integrity": "sha512-D24ASvLeSWouBwOBi4ftUe4/BhrZj5AiHV7tXwrVeMGOy9Z9jyeK65Xysq+R3ecaSONLXsgai5CQMvj13cOacA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz", + "integrity": "sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz", + "integrity": "sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/calendar": "^3.4.6", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.10.tgz", + "integrity": "sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/form": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.4.tgz", + "integrity": "sha512-HZojAWrb6feYnhDEOy3vBamDVAHDl0l2JQZ7aIDLHmeTAGQC3JNZcm2fLTxqLye46zz8w8l8OHgI+NdD4PHdOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/grid": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz", + "integrity": "sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/link": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz", + "integrity": "sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.4.9.tgz", + "integrity": "sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/menu": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz", + "integrity": "sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/meter": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.1.tgz", + "integrity": "sha512-AIJV4NDFAqKH94s02c5Da4TH2qgJjfrw978zuFM0KUBFD85WRPKh7MvgWpomvUgmzqE6lMCzIdi1KPKqrRabdw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/progress": "^3.5.4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/numberfield": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.3.tgz", + "integrity": "sha512-z5fGfVj3oh5bmkw9zDvClA1nDBSFL9affOuyk2qZ/M2SRUmykDAPCksbfcMndft0XULWKbF4s2CYbVI+E/yrUA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz", + "integrity": "sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz", + "integrity": "sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/radio": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz", + "integrity": "sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/searchfield": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.5.tgz", + "integrity": "sha512-T/NHg12+w23TxlXMdetogLDUldk1z5dDavzbnjKrLkajLb221bp8brlR/+O6C1CtFpuJGALqYHgTasU1qkQFSA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@react-types/textfield": "^3.9.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/select": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz", + "integrity": "sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", + "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/slider": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.3.tgz", + "integrity": "sha512-F8qFQaD2mqug2D0XeWMmjGBikiwbdERFlhFzdvNGbypPLz3AZICBKp1ZLPWdl0DMuy03G/jy6Gl4mDobl7RT2g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.3.tgz", + "integrity": "sha512-Nb6+J5MrPaFa8ZNFKGMzAsen/NNzl5UG/BbC65SLGPy7O0VDa/sUpn7dcu8V2xRpRwwIN/Oso4v63bt2sgdkgA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/table": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz", + "integrity": "sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz", + "integrity": "sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz", + "integrity": "sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "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==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "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==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "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==" + }, + "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==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prismjs": { + "version": "1.26.4", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz", + "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/react": { + "version": "18.3.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", + "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dependencies": { + "@webassemblyjs/ast": "1.12.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==" + }, + "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==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "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==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "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==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "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==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/algoliasearch": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz", + "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.3", + "@algolia/cache-common": "4.23.3", + "@algolia/cache-in-memory": "4.23.3", + "@algolia/client-account": "4.23.3", + "@algolia/client-analytics": "4.23.3", + "@algolia/client-common": "4.23.3", + "@algolia/client-personalization": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/logger-console": "4.23.3", + "@algolia/recommend": "4.23.3", + "@algolia/requester-browser-xhr": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/requester-node-http": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.21.0.tgz", + "integrity": "sha512-hjVOrL15I3Y3K8xG0icwG1/tWE+MocqBrhW6uVBWpU+/kVEMK0BnM2xdssj6mZM61eJ4iRxHR0djEI3ENOpR8w==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "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==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autocomplete.js": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.37.1.tgz", + "integrity": "sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ==", + "dependencies": { + "immediate": "^3.2.3" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bcp-47-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz", + "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "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==" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/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==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "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==", + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "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==", + "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/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "engines": { + "node": ">=10" + } + }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", + "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "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==", + "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/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "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==", + "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-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" + }, + "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==", + "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==", + "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==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "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==", + "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-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "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==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/docusaurus-lunr-search": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/docusaurus-lunr-search/-/docusaurus-lunr-search-3.4.0.tgz", + "integrity": "sha512-GfllnNXCLgTSPH9TAKWmbn8VMfwpdOAZ1xl3T2GgX8Pm26qSDLfrrdVwjguaLfMJfzciFL97RKrAJlgrFM48yw==", + "dependencies": { + "autocomplete.js": "^0.37.0", + "clsx": "^1.2.1", + "gauge": "^3.0.0", + "hast-util-select": "^4.0.0", + "hast-util-to-text": "^2.0.0", + "hogan.js": "^3.0.2", + "lunr": "^2.3.8", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "minimatch": "^3.0.4", + "rehype-parse": "^7.0.1", + "to-vfile": "^6.1.0", + "unified": "^9.0.0", + "unist-util-is": "^4.0.2" + }, + "engines": { + "node": ">= 8.10.0" + }, + "peerDependencies": { + "@docusaurus/core": "^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0", + "react": "^16.8.4 || ^17 || ^18", + "react-dom": "^16.8.4 || ^17 || ^18" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/docusaurus-lunr-search/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/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==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "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==", + "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" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "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/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.774", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.774.tgz", + "integrity": "sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", + "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.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==", + "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==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.1.tgz", + "integrity": "sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "is-plain-obj": "^4.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "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==", + "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/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-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==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/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==" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "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==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "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==", + "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==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", + "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.3.tgz", + "integrity": "sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-4.0.2.tgz", + "integrity": "sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==", + "dependencies": { + "bcp-47-match": "^1.0.0", + "comma-separated-tokens": "^1.0.0", + "css-selector-parser": "^1.0.0", + "direction": "^1.0.0", + "hast-util-has-property": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-to-string": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0", + "unist-util-visit": "^2.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/hast-util-select/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-select/node_modules/hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-select/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", + "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", + "integrity": "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==", + "dependencies": { + "hast-util-is-element": "^1.0.0", + "repeat-string": "^1.0.0", + "unist-util-find-after": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.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==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hogan.js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", + "dependencies": { + "mkdirp": "0.3.0", + "nopt": "1.0.10" + }, + "bin": { + "hulk": "bin/hulk" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "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/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "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==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "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==", + "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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/intl-messageformat": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", + "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.8", + "tslib": "^2.4.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", + "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "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==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==" + }, + "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==" + }, + "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==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/lunr-languages": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", + "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==" + }, + "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==" + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.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/mdast-util-find-and-replace/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", + "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", + "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-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "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==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", + "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "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-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "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-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "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-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "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-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "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-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "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.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "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==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" + }, + "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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "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==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "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==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "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==", + "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/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", + "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-aria": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.33.1.tgz", + "integrity": "sha512-hFC3K/UA+90Krlx2IgRTgzFbC6FSPi4pUwHT+STperPLK+cTEHkI+3Lu0YYwQSBatkgxnIv9+GtFuVbps2kROw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/string": "^3.2.3", + "@react-aria/breadcrumbs": "^3.5.13", + "@react-aria/button": "^3.9.5", + "@react-aria/calendar": "^3.5.8", + "@react-aria/checkbox": "^3.14.3", + "@react-aria/combobox": "^3.9.1", + "@react-aria/datepicker": "^3.10.1", + "@react-aria/dialog": "^3.5.14", + "@react-aria/dnd": "^3.6.1", + "@react-aria/focus": "^3.17.1", + "@react-aria/gridlist": "^3.8.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/link": "^3.7.1", + "@react-aria/listbox": "^3.12.1", + "@react-aria/menu": "^3.14.1", + "@react-aria/meter": "^3.4.13", + "@react-aria/numberfield": "^3.11.3", + "@react-aria/overlays": "^3.22.1", + "@react-aria/progress": "^3.4.13", + "@react-aria/radio": "^3.10.4", + "@react-aria/searchfield": "^3.7.5", + "@react-aria/select": "^3.14.5", + "@react-aria/selection": "^3.18.1", + "@react-aria/separator": "^3.3.13", + "@react-aria/slider": "^3.7.8", + "@react-aria/ssr": "^3.9.4", + "@react-aria/switch": "^3.6.4", + "@react-aria/table": "^3.14.1", + "@react-aria/tabs": "^3.9.1", + "@react-aria/tag": "^3.4.1", + "@react-aria/textfield": "^3.14.5", + "@react-aria/tooltip": "^3.7.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/react-aria-components": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.2.1.tgz", + "integrity": "sha512-iGIdDjbTyLLn0/tGUyBQxxu+E1bw4/H4AU89d0cRcu8yIdw6MXG29YElmRHn0ugiyrERrk/YQALihstnns5kRQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/string": "^3.2.3", + "@react-aria/color": "3.0.0-beta.33", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/menu": "^3.14.1", + "@react-aria/toolbar": "3.0.0-beta.5", + "@react-aria/tree": "3.0.0-alpha.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/color": "^3.6.1", + "@react-stately/menu": "^3.7.1", + "@react-stately/table": "^3.11.8", + "@react-stately/utils": "^3.10.1", + "@react-types/color": "3.0.0-beta.25", + "@react-types/form": "^3.7.4", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0", + "client-only": "^0.0.1", + "react-aria": "^3.33.1", + "react-stately": "^3.31.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/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==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/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==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-view-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz", + "integrity": "sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-stately": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.31.1.tgz", + "integrity": "sha512-wuq673NHkYSdoceGryjtMJJvB9iQgyDkQDsnTN0t2v91pXjGDsN/EcOvnUrxXSBtY9eLdIw74R54z9GX5cJNEg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/calendar": "^3.5.1", + "@react-stately/checkbox": "^3.6.5", + "@react-stately/collections": "^3.10.7", + "@react-stately/combobox": "^3.8.4", + "@react-stately/data": "^3.11.4", + "@react-stately/datepicker": "^3.9.4", + "@react-stately/dnd": "^3.3.1", + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/menu": "^3.7.1", + "@react-stately/numberfield": "^3.9.3", + "@react-stately/overlays": "^3.6.7", + "@react-stately/radio": "^3.10.4", + "@react-stately/searchfield": "^3.5.3", + "@react-stately/select": "^3.6.4", + "@react-stately/selection": "^3.15.1", + "@react-stately/slider": "^3.5.4", + "@react-stately/table": "^3.11.8", + "@react-stately/tabs": "^3.6.6", + "@react-stately/toggle": "^3.7.4", + "@react-stately/tooltip": "^3.4.9", + "@react-stately/tree": "^3.8.1", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", + "license": "MIT" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "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==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/rehype-parse": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", + "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==", + "dependencies": { + "hast-util-from-parse5": "^6.0.0", + "parse5": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/rehype-parse/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/rehype-parse/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/rehype-parse/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-parse/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-parse/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==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", + "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "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==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==" + }, + "node_modules/rtlcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz", + "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "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/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz", + "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==", + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/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==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "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/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.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==" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/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==", + "engines": { + "node": ">=0.10.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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/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==", + "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-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "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.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "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/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/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==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/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==" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/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==" + }, + "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==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-vfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", + "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/to-vfile/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==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-find-after": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz", + "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "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==", + "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==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/url-loader/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==" + }, + "node_modules/url-loader/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.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==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.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==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "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.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "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-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "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/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/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==" + }, + "node_modules/webpack/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" + }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c92a9b8 --- /dev/null +++ b/package.json @@ -0,0 +1,52 @@ +{ + "name": "headlamp-website", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc" + }, + "dependencies": { + "@docusaurus/core": "^3.4.0", + "@docusaurus/preset-classic": "^3.4.0", + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "docusaurus-lunr-search": "^3.4.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-aria-components": "^1.2.1", + "react-dom": "^18.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.4.0", + "@docusaurus/tsconfig": "^3.4.0", + "@docusaurus/types": "3.3.2", + "typescript": "~5.2.2" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=18.0" + } +} diff --git a/sidebars.ts b/sidebars.ts new file mode 100644 index 0000000..aa8d36e --- /dev/null +++ b/sidebars.ts @@ -0,0 +1,7 @@ +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + +const sidebars: SidebarsConfig = { + mainSidebar: [{ type: "autogenerated", dirName: "latest" }], +}; + +export default sidebars; diff --git a/src/components/LandingPage/DownloadPlatformsSection.module.css b/src/components/LandingPage/DownloadPlatformsSection.module.css new file mode 100644 index 0000000..4a8df82 --- /dev/null +++ b/src/components/LandingPage/DownloadPlatformsSection.module.css @@ -0,0 +1,39 @@ +.container { + display: flex; + gap: 1rem; + justify-content: center; + flex-direction: column; + width: 100%; + max-width: 800px; + padding: 5rem 1rem; + margin: 0 auto; +} + +.container :global .tabs__item { + white-space: nowrap; +} + +.title { + font-size: 2rem; +} + +.buttons { + display: flex; + align-items: center; + gap: 2rem 1rem; + justify-content: center; + flex-wrap: wrap; +} + +.flexContent { + display: flex; + gap: 1rem; + flex-wrap: wrap; +} + +.inClusterTitle { + display: flex; + align-items: center; + gap: 0.5rem; + margin-top: 5rem; +} diff --git a/src/components/LandingPage/DownloadPlatformsSection.tsx b/src/components/LandingPage/DownloadPlatformsSection.tsx new file mode 100644 index 0000000..1d4bdfb --- /dev/null +++ b/src/components/LandingPage/DownloadPlatformsSection.tsx @@ -0,0 +1,154 @@ +import { DownloadButton, DownloadButtonWithScript } from "./DownloadSection"; +import styles from "./DownloadPlatformsSection.module.css"; +import Link from "@docusaurus/Link"; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import CodeBlock from "@theme/CodeBlock"; +import IconExternalLink from "@theme/Icon/ExternalLink"; +import clsx from "clsx"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faDesktop } from "@fortawesome/free-solid-svg-icons"; +import K8s from "./images/k8s.svg"; + +const FlexContent = ({ children }) => ( +
{children}
+); + +export function DownloadPlatformsContent() { + return ( + <> +

+ Desktop App +

+
+
+ Headlamp can be run as a desktop application, for users who don't want + to deploy it in cluster, or those who want to manage unrelated + clusters locally. +
+ + + +
+ Download binary + +
+ +
+ Install using{" "} + + WinGet + + winget install headlamp +
+ +
+ Install using{" "} + Chocolatey +
+ choco install headlamp +
+
+
+
+ + +
+ Download binary + +
+ +
+ Install using Flatpak. + Make sure you have{" "} + set up the Flathub{" "} + repository + + flatpak install flathub io.kinvolk.Headlamp + +
+
+
+ + +
+ Download binary + +
+
+ Install using Homebrew + + brew install --cask headlamp + +
+
+
+
+
+ +

+
In-cluster
+

+
+
+ A common use-case for any Kubernetes web UI is to deploy it in-cluster + and set up an ingress server for having it available to users. +
+ + +

+ Install Headlamp in your cluster using{" "} + Helm. Run the following: +

+ + {`helm repo add headlamp https://headlamp-k8s.github.io/headlamp/ +helm install my-headlamp headlamp/headlamp --namespace kube-system`} + + + Learn more + +
+ +

+ Use configuration file for setting up a Headlamp deployment and + service. Be sure to review it and change anything you need. +

+ + kubectl apply -f + https://raw.githubusercontent.com/headlamp-k8s/headlamp/main/kubernetes-headlamp.yaml + + + Learn more + +
+ +

To enable Headlamp in Minikube, run the following commands:

+ + {`minikube addons enable headlamp\nminikube service headlamp -n headlamp`} + + + Learn more + +
+ +

Headlamp ships as a Docker Desktop extension

+ + Get the Docker Desktop Extension + +
+
+
+ + ); +} + +function DownloadPlatformsSection() { + return ( +
+

Get Headlamp

+ +
+ ); +} + +export default DownloadPlatformsSection; diff --git a/src/components/LandingPage/DownloadSection.module.css b/src/components/LandingPage/DownloadSection.module.css new file mode 100644 index 0000000..c0625c6 --- /dev/null +++ b/src/components/LandingPage/DownloadSection.module.css @@ -0,0 +1,71 @@ +.section { + display: flex; + align-items: center; + flex-direction: column; + margin-top: 2rem; +} + +.container { + display: flex; + align-items: center; + gap: 1rem; +} + +@media (max-width: 630px) { + .container { + flex-direction: column; + gap: 0.5rem; + } +} + +.downloadButton { + font-weight: normal; + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + padding: 0.62rem 1.5rem; + font-size: 1rem; + width: fit-content; + margin: 0 auto; +} + +.codeBlock { + margin: 0 !important; +} + +.buttonMenu { + max-height: inherit; + box-sizing: border-box; + overflow: auto; + padding: 2px; + min-width: 150px; + box-sizing: border-box; + outline: none; + background: var(--ifm-color-emphasis-100); + border-radius: 6px; + border: 1px solid var(--ifm-color-emphasis-300); +} + +a.buttonMenuItem { + text-decoration: none !important; + margin: 2px; + padding: 0.3rem 0.6rem; + border-radius: 6px; + outline: none; + cursor: pointer; + color: var(--text-color); + font-size: 0.85rem; + position: relative; + display: grid; + grid-template-areas: + "label kbd" + "desc kbd"; + align-items: center; + column-gap: 20px; + forced-color-adjust: none; +} + +a.buttonMenuItem[data-focused] { + background: var(--ifm-color-emphasis-200); +} diff --git a/src/components/LandingPage/DownloadSection.tsx b/src/components/LandingPage/DownloadSection.tsx new file mode 100644 index 0000000..603d956 --- /dev/null +++ b/src/components/LandingPage/DownloadSection.tsx @@ -0,0 +1,197 @@ +import Link from "@docusaurus/Link"; +import CodeBlock from "@theme/CodeBlock"; +import styles from "./DownloadSection.module.css"; +import clsx from "clsx"; +import { useState, useEffect } from "react"; +import { + Button, + Menu, + MenuItem, + MenuTrigger, + Popover, +} from "react-aria-components"; +import BrowserOnly from "@docusaurus/BrowserOnly"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faChevronDown } from "@fortawesome/free-solid-svg-icons/faChevronDown"; + +type Platform = "win" | "mac" | "linux" | "unknown"; + +interface DownloadInfo { + label: string; + /** In case we can't grab a release from github */ + fallbackDownloadLink: string; + /** bash/powershell script to install headlamp */ + script?: string; +} + +const downloadInfo: Record = { + win: { + label: "Download for Windows", + fallbackDownloadLink: + "/docs/latest/installation/desktop/windows-installation", + script: "choco install headlamp", + }, + mac: { + label: "Download for macOS", + fallbackDownloadLink: "/docs/latest/installation/desktop/mac-installation", + script: "brew install headlamp", + }, + linux: { + label: "Download for Linux", + fallbackDownloadLink: + "/docs/latest/installation/desktop/linux-installation", + script: "flatpak install io.kinvolk.Headlamp", + }, + unknown: { + label: "Install on your platform", + fallbackDownloadLink: "/docs/latest/installation", + }, +}; + +// Format bytes to human readable megabytes +const formatBytes = (bytes: number) => { + return (bytes / 1024 / 1024).toFixed(2) + " MB"; +}; + +const usePlatform = (): Platform => { + const getPlatform = () => { + if (typeof navigator === "undefined") return "unknown"; // for SSR (server side rendering) + const userAgent = navigator.userAgent.toLowerCase(); + if (userAgent.includes("win")) return "win"; + if (userAgent.includes("mac")) return "mac"; + if (userAgent.includes("linux")) return "linux"; + return "unknown"; + }; + + const platform = getPlatform(); + + return platform; +}; + +const latestReleasePromise = fetch( + "https://api.github.com/repos/headlamp-k8s/headlamp/releases/latest" +).then((response) => response.json()); + +const useLatestRelease = () => { + const [latestRelease, setLatestRelease] = useState(null); + + useEffect(() => { + latestReleasePromise.then((data) => { + setLatestRelease(data); + }); + }, []); + + return latestRelease; +}; + +export function DownloadButton({ + platform, + secondary, +}: { + platform: Platform; + secondary?: boolean; +}) { + const platformInfo = downloadInfo[platform]; + const release = useLatestRelease(); + const assets = release?.assets?.filter((it) => it.name.includes(platform)); + const fallbackUrl = platformInfo.fallbackDownloadLink; + + const buttonClassName = clsx( + secondary ? "button button--secondary" : "button button--primary", + styles.downloadButton + ); + + return ( + <> + {(!assets || assets?.length <= 1) && ( + + Download icon + {platformInfo.label} + + )} + {assets && assets.length > 1 && ( + + + + + {assets?.map((it) => ( + + {it.name} ({formatBytes(it.size)}) + + ))} + + + + )} + + ); +} + +function DownloadSection({ forcePlatform }: { forcePlatform?: Platform }) { + const platform = forcePlatform ?? usePlatform(); + const platformInfo = downloadInfo[platform]; + + return ( +
+
+ + {platformInfo?.script !== undefined && ( + <> + or +
+ + {platformInfo?.script} + +
+ + )} +
+ {platform !== "unknown" && ( + + Install on other platforms + + )} +
+ ); +} + +export default function (props) { + return ( + + Install on your platform + + } + > + {() => } + + ); +} diff --git a/src/components/LandingPage/Features.module.css b/src/components/LandingPage/Features.module.css new file mode 100644 index 0000000..a27fa08 --- /dev/null +++ b/src/components/LandingPage/Features.module.css @@ -0,0 +1,9 @@ +.container { + display: flex; + justify-content: center; + margin-top: 3rem; + padding: 3rem 1rem; + width: 100%; + background: var(--ifm-color-emphasis-100); + background-repeat: no-repeat; +} diff --git a/src/components/LandingPage/Features.tsx b/src/components/LandingPage/Features.tsx new file mode 100644 index 0000000..102080f --- /dev/null +++ b/src/components/LandingPage/Features.tsx @@ -0,0 +1,125 @@ +import Heading from "@theme/Heading"; +import styles from "./Features.module.css"; + +export function Features() { + return ( +
+ {fluffLeft} +
+
+ Adaptable UI & Branding +

Create custom experiences with minimal effort

+
+
+ RBAC-Based controls +

Headlamp adapts to a user’s cluster permissions.

+
+
+ Desktop and Web +

It can be run as a web app, desktop app, or both.

+
+
+ {fluffRight} +
+ ); +} + +const fluffLeft = ( + + + + + + + + + + + + + + +); + +const fluffRight = ( + + + + + + + + + + + + + +); diff --git a/src/components/LandingPage/FeaturesDemo.module.css b/src/components/LandingPage/FeaturesDemo.module.css new file mode 100644 index 0000000..538bcac --- /dev/null +++ b/src/components/LandingPage/FeaturesDemo.module.css @@ -0,0 +1,3 @@ +.container { + padding: "4rem 1rem"; +} diff --git a/src/components/LandingPage/FeaturesDemo.tsx b/src/components/LandingPage/FeaturesDemo.tsx new file mode 100644 index 0000000..1ea7a31 --- /dev/null +++ b/src/components/LandingPage/FeaturesDemo.tsx @@ -0,0 +1,11 @@ +import clsx from "clsx"; +import styles from "./FeaturesDemo.module.css"; + +export function FeaturesDemo() { + return ( +
+

Features

+ demo +
+ ); +} diff --git a/src/components/LandingPage/LandingPage.module.css b/src/components/LandingPage/LandingPage.module.css new file mode 100644 index 0000000..0fb1015 --- /dev/null +++ b/src/components/LandingPage/LandingPage.module.css @@ -0,0 +1,76 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.title { + font-size: 3rem; +} + +@media (max-width: 576px) { + .title { + font-size: 2.5rem; + } +} + +.heroBanner { + display: flex; + color: var(--ifm-hero-text-color); + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + /* padding: 2rem 0; */ + } +} + +.buttons { + /* display: flex; + align-items: center; + justify-content: center; */ +} + +.aboutContainer { + background: var(--ifm-color-emphasis-100); +} + +.about { + width: 100%; + display: flex; + margin: 0 auto; + align-items: center; + flex-direction: column; + text-align: center; + padding: 40px 1rem; +} + +.aboutTitle { + font-size: 2.5rem; +} + +.clusterLink { + padding: 1rem 0; +} + +.layoutWrapper { + background: radial-gradient(circle at 10% 10%, #fff2001c, transparent 20%), + radial-gradient(circle at 90% 400px, #fff2001c, transparent 30%), + url("/img/big-circles.svg") 0% 100% no-repeat; +} + +.videoContainer { + display: flex; + justify-content: center; + margin: 0 1rem; +} + +.video { + max-width: 900px; + width: 100%; + border-radius: var(--ifm-card-border-radius); + border: 3px solid #ffd500; +} diff --git a/src/components/LandingPage/LandingPage.tsx b/src/components/LandingPage/LandingPage.tsx new file mode 100644 index 0000000..c63e5d9 --- /dev/null +++ b/src/components/LandingPage/LandingPage.tsx @@ -0,0 +1,75 @@ +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import Heading from "@theme/Heading"; +import Layout from "@theme/Layout"; +import clsx from "clsx"; + +import DownloadSection from "./DownloadSection"; +import CncfLogo from "./images/cncf_light.svg"; +import styles from "./LandingPage.module.css"; +import DownloadPlatformsSection from "./DownloadPlatformsSection"; +import SupportedClusters from "./SupportedClusters"; +import { FeaturesDemo } from "./FeaturesDemo"; +import { Features } from "./Features"; + +function HomepageHeader() { + const { siteConfig } = useDocusaurusContext(); + return ( +
+
+ + Your Kubernetes Experience + +

{siteConfig.tagline}

+ +
+
+ ); +} + +export default function LandingPage(): JSX.Element { + const { siteConfig } = useDocusaurusContext(); + + return ( + +
+ +
+
+ + + + +
+
+

+ We are a{" "} + + Cloud Native Computing Foundation + {" "} + Sandbox Project. +

+
+ +
+
+
+
+
+ ); +} diff --git a/src/components/LandingPage/SupportedClusters.module.css b/src/components/LandingPage/SupportedClusters.module.css new file mode 100644 index 0000000..1aa4d6d --- /dev/null +++ b/src/components/LandingPage/SupportedClusters.module.css @@ -0,0 +1,20 @@ +.container { + display: flex; + gap: 2rem; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 4rem 1rem; +} + +.logos { + display: flex; + flex-wrap: wrap; + gap: 1rem 4rem; + justify-content: center; +} + +.description { + max-width: 550px; + text-align: center; +} diff --git a/src/components/LandingPage/SupportedClusters.tsx b/src/components/LandingPage/SupportedClusters.tsx new file mode 100644 index 0000000..edcd228 --- /dev/null +++ b/src/components/LandingPage/SupportedClusters.tsx @@ -0,0 +1,36 @@ +import styles from "./SupportedClusters.module.css"; +import Aws from "./images/aws.svg"; +import Azure from "./images/azure.svg"; +//@ts-ignore +import gcloud from "./images/gcloud.png"; +import Minikube from "./images/minikube.svg"; +//@ts-ignore +import kind from "./images/kind.png"; + +const iconSize = 50; + +function SupportedClusters() { + return ( +
+
+ + + Google Cloud logo + Kind logo + + {/* */} + {/* */} +
+

+ Headlamp works with your favorite Kubernetes flavor +

+
+ ); +} + +export default SupportedClusters; diff --git a/src/components/LandingPage/images/aws.svg b/src/components/LandingPage/images/aws.svg new file mode 100644 index 0000000..4715937 --- /dev/null +++ b/src/components/LandingPage/images/aws.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + diff --git a/src/components/LandingPage/images/azure.svg b/src/components/LandingPage/images/azure.svg new file mode 100644 index 0000000..ff5dfa5 --- /dev/null +++ b/src/components/LandingPage/images/azure.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/images/cncf_light.svg b/src/components/LandingPage/images/cncf_light.svg similarity index 100% rename from static/images/cncf_light.svg rename to src/components/LandingPage/images/cncf_light.svg diff --git a/src/components/LandingPage/images/do.svg b/src/components/LandingPage/images/do.svg new file mode 100644 index 0000000..62b2470 --- /dev/null +++ b/src/components/LandingPage/images/do.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/LandingPage/images/gcloud.png b/src/components/LandingPage/images/gcloud.png new file mode 100644 index 0000000..51816ee Binary files /dev/null and b/src/components/LandingPage/images/gcloud.png differ diff --git a/src/components/LandingPage/images/k3s.svg b/src/components/LandingPage/images/k3s.svg new file mode 100644 index 0000000..23a51e4 --- /dev/null +++ b/src/components/LandingPage/images/k3s.svg @@ -0,0 +1 @@ +sub-project-brand-logo-variants \ No newline at end of file diff --git a/src/components/LandingPage/images/k8s.svg b/src/components/LandingPage/images/k8s.svg new file mode 100644 index 0000000..6ef7efe --- /dev/null +++ b/src/components/LandingPage/images/k8s.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/components/LandingPage/images/kind.png b/src/components/LandingPage/images/kind.png new file mode 100644 index 0000000..b6896ab Binary files /dev/null and b/src/components/LandingPage/images/kind.png differ diff --git a/src/components/LandingPage/images/minikube.svg b/src/components/LandingPage/images/minikube.svg new file mode 100644 index 0000000..1425e76 --- /dev/null +++ b/src/components/LandingPage/images/minikube.svg @@ -0,0 +1 @@ +minikubeCreated with Sketch. \ No newline at end of file diff --git a/src/components/LandingPage/images/openshift.svg b/src/components/LandingPage/images/openshift.svg new file mode 100644 index 0000000..bb8f1d1 --- /dev/null +++ b/src/components/LandingPage/images/openshift.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + diff --git a/src/components/LandingPage/images/rancher.svg b/src/components/LandingPage/images/rancher.svg new file mode 100644 index 0000000..8353dec --- /dev/null +++ b/src/components/LandingPage/images/rancher.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/css/custom.css b/src/css/custom.css new file mode 100644 index 0000000..a268ef9 --- /dev/null +++ b/src/css/custom.css @@ -0,0 +1,121 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +body { + /* background: ; */ + /* background-repeat: no-repeat; */ +} + +pre { + font-weight: 400; + font-variant-ligatures: none; +} + +a:not(.card):not(.menu__link):not(.navbar__item):not(.button):not( + .table-of-contents__link + ):not(.navbar__brand):not(.pagination-nav__link):not(.breadcrumbs__link) { + text-decoration: underline; +} + +a.table-of-contents__link--active { + text-decoration: underline; +} + +.menu__link { + text-transform: capitalize; +} + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #111111; + --ifm-color-primary-dark: #0f0f0f; + --ifm-color-primary-darker: #0e0e0e; + --ifm-color-primary-darkest: #0c0c0c; + --ifm-color-primary-light: #131313; + --ifm-color-primary-lighter: #141414; + --ifm-color-primary-lightest: #161616; + + --ifm-font-family-monospace: "Overpass Mono", monospace; + --ifm-font-family-base: "Overpass", sans-serif; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + + --ifm-heading-color: #292827; + + --brand-core-yellow: #f2e600; +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +html[data-theme="dark"] { + --ifm-font-family-monospace: "Overpass Mono", monospace; + --ifm-font-family-base: "Overpass", sans-serif; + --ifm-color-primary: #f8f8f8; + --ifm-color-primary-dark: #dfdfdf; + --ifm-color-primary-darker: #d3d3d3; + --ifm-color-primary-darkest: #aeaeae; + --ifm-color-primary-light: #ffffff; + --ifm-color-primary-lighter: #ffffff; + --ifm-color-primary-lightest: #ffffff; + --ifm-heading-color: #fff; +} + +.navbar__items { + gap: 0.25rem; +} + +.navbar__link { + border-radius: 0.25rem; +} + +.navbar__link--active { + background-color: var(--ifm-menu-color-background-active); +} + +.navbar__link:hover { + background-color: var(--ifm-menu-color-background-hover); +} + +/* Make logo smaller on mobile so it fits with the search */ +@media screen and (max-width: 380px) { + .navbar__logo > img { + width: 120px; + } +} +@media screen and (max-width: 340px) { + .navbar__logo > img { + width: 100px; + } +} + +.button--primary { + background-color: var(--brand-core-yellow); + border: none; + color: #111; + transition: box-shadow; + transition-duration: 0.1s; +} +.button--primary:hover { + color: #111; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2), + 0px 1px 3px 1px rgba(0, 0, 0, 0.1); +} +.button--primary:active { + background-color: #d0c71f; + box-shadow: none; +} + +.hero { + background: transparent; +} + +/* Utility classes */ +.fit-content { + max-width: fit-content; +} + +.search-icon { + display: none; +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000..90cdbd0 --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,3 @@ +import LandingPage from "../components/LandingPage/LandingPage"; + +export default LandingPage; diff --git a/src/prismColorTheme.ts b/src/prismColorTheme.ts new file mode 100644 index 0000000..dad604d --- /dev/null +++ b/src/prismColorTheme.ts @@ -0,0 +1,37 @@ +import { PrismTheme } from "prism-react-renderer"; + +// Modified version of github theme but with a11y colors +export const githubA11yLight: PrismTheme = { + plain: { color: "#393A34", backgroundColor: "#f6f8fa" }, + styles: [ + { + types: ["comment", "prolog", "doctype", "cdata"], + style: { color: "#6e6e61", fontStyle: "italic" }, + }, + { types: ["namespace"], style: { opacity: 0.7 } }, + { types: ["string", "attr-value"], style: { color: "#d71066" } }, + { types: ["punctuation", "operator"], style: { color: "#393A34" } }, + { + types: [ + "entity", + "url", + "symbol", + "number", + "boolean", + "variable", + "constant", + "property", + "regex", + "inserted", + ], + style: { color: "#257c7a" }, + }, + { + types: ["atrule", "keyword", "attr-name", "selector"], + style: { color: "#00769f" }, + }, + { types: ["function", "deleted", "tag"], style: { color: "#cc3745" } }, + { types: ["function-variable"], style: { color: "#6f42c1" } }, + { types: ["tag", "selector", "keyword"], style: { color: "#00009f" } }, + ], +}; diff --git a/src/theme/BlogLayout/index.tsx b/src/theme/BlogLayout/index.tsx new file mode 100644 index 0000000..8bc21eb --- /dev/null +++ b/src/theme/BlogLayout/index.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import clsx from "clsx"; +import Layout from "@theme/Layout"; +import BlogSidebar from "@theme/BlogSidebar"; + +import type { Props } from "@theme/BlogLayout"; +import { LatestBlogPostItem } from "../BlogPostItems/LatestBlogPostItem/LatestBlogPostItem"; + +export default function BlogLayout(props: Props): JSX.Element { + const { toc, children, ...layoutProps } = props; + + return {children}; +} diff --git a/src/theme/BlogListPage/StructuredData/index.tsx b/src/theme/BlogListPage/StructuredData/index.tsx new file mode 100644 index 0000000..0a4a4df --- /dev/null +++ b/src/theme/BlogListPage/StructuredData/index.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import Head from '@docusaurus/Head'; +import {useBlogListPageStructuredData} from '@docusaurus/theme-common'; +import type {Props} from '@theme/BlogListPage/StructuredData'; + +export default function BlogListPageStructuredData(props: Props): JSX.Element { + const structuredData = useBlogListPageStructuredData(props); + return ( + + + + ); +} diff --git a/src/theme/BlogListPage/index.tsx b/src/theme/BlogListPage/index.tsx new file mode 100644 index 0000000..61a6bc9 --- /dev/null +++ b/src/theme/BlogListPage/index.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import clsx from "clsx"; + +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import { + PageMetadata, + HtmlClassNameProvider, + ThemeClassNames, +} from "@docusaurus/theme-common"; +import BlogLayout from "@theme/BlogLayout"; +import BlogListPaginator from "@theme/BlogListPaginator"; +import SearchMetadata from "@theme/SearchMetadata"; +import type { Props } from "@theme/BlogListPage"; +import BlogListPageStructuredData from "@theme/BlogListPage/StructuredData"; +import BlogPostItems from "../BlogPostItems"; + +function BlogListPageMetadata(props: Props): JSX.Element { + const { metadata } = props; + const { + siteConfig: { title: siteTitle }, + } = useDocusaurusContext(); + const { blogDescription, blogTitle, permalink } = metadata; + const isBlogOnlyMode = permalink === "/"; + const title = isBlogOnlyMode ? siteTitle : blogTitle; + return ( + <> + + + + ); +} + +function BlogListPageContent(props: Props): JSX.Element { + const { metadata, items, sidebar } = props; + return ( + + +
+ +
+
+ ); +} + +export default function BlogListPage(props: Props): JSX.Element { + return ( + + + + + + ); +} diff --git a/src/theme/BlogPostItem/Container/index.tsx b/src/theme/BlogPostItem/Container/index.tsx new file mode 100644 index 0000000..1768db1 --- /dev/null +++ b/src/theme/BlogPostItem/Container/index.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import type {Props} from '@theme/BlogPostItem/Container'; + +export default function BlogPostItemContainer({ + children, + className, +}: Props): JSX.Element { + return
{children}
; +} diff --git a/src/theme/BlogPostItem/Content/index.tsx b/src/theme/BlogPostItem/Content/index.tsx new file mode 100644 index 0000000..966c977 --- /dev/null +++ b/src/theme/BlogPostItem/Content/index.tsx @@ -0,0 +1,25 @@ +import React from "react"; +import clsx from "clsx"; +import { blogPostContainerID } from "@docusaurus/utils-common"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import MDXContent from "@theme/MDXContent"; +import type { Props } from "@theme/BlogPostItem/Content"; + +export default function BlogPostItemContent({ + children, + className, +}: Props): JSX.Element { + const { isBlogPostPage } = useBlogPost(); + + if (!isBlogPostPage) return null; + + return ( +
+ {children} +
+ ); +} diff --git a/src/theme/BlogPostItem/Footer/ReadMoreLink/index.tsx b/src/theme/BlogPostItem/Footer/ReadMoreLink/index.tsx new file mode 100644 index 0000000..703db13 --- /dev/null +++ b/src/theme/BlogPostItem/Footer/ReadMoreLink/index.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import Translate, {translate} from '@docusaurus/Translate'; +import Link from '@docusaurus/Link'; +import type {Props} from '@theme/BlogPostItem/Footer/ReadMoreLink'; + +function ReadMoreLabel() { + return ( + + + Read More + + + ); +} + +export default function BlogPostItemFooterReadMoreLink( + props: Props, +): JSX.Element { + const {blogPostTitle, ...linkProps} = props; + return ( + + + + ); +} diff --git a/src/theme/BlogPostItem/Footer/index.tsx b/src/theme/BlogPostItem/Footer/index.tsx new file mode 100644 index 0000000..890f96a --- /dev/null +++ b/src/theme/BlogPostItem/Footer/index.tsx @@ -0,0 +1,85 @@ +import React from "react"; +import clsx from "clsx"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import { ThemeClassNames } from "@docusaurus/theme-common"; +import EditMetaRow from "@theme/EditMetaRow"; +import TagsListInline from "@theme/TagsListInline"; +import ReadMoreLink from "@theme/BlogPostItem/Footer/ReadMoreLink"; + +export default function BlogPostItemFooter(): JSX.Element | null { + const { metadata, isBlogPostPage } = useBlogPost(); + const { + tags, + title, + editUrl, + hasTruncateMarker, + lastUpdatedBy, + lastUpdatedAt, + } = metadata; + + // A post is truncated if it's in the "list view" and it has a truncate marker + const truncatedPost = !isBlogPostPage && hasTruncateMarker; + + const tagsExists = tags.length > 0; + + const renderFooter = tagsExists || truncatedPost || editUrl; + + if (!renderFooter) { + return null; + } + + // BlogPost footer - details view + if (isBlogPostPage) { + const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy); + + return ( +
+ {tagsExists && ( +
+
+ +
+
+ )} + {canDisplayEditMetaRow && ( + + )} +
+ ); + } + // BlogPost footer - list view + else { + return ( +
+ {tagsExists && ( +
+ +
+ )} + {truncatedPost && ( +
+ +
+ )} +
+ ); + } +} diff --git a/src/theme/BlogPostItem/Header/Author/index.tsx b/src/theme/BlogPostItem/Header/Author/index.tsx new file mode 100644 index 0000000..f07a7ac --- /dev/null +++ b/src/theme/BlogPostItem/Header/Author/index.tsx @@ -0,0 +1,40 @@ +import React from "react"; +import clsx from "clsx"; +import Link, { type Props as LinkProps } from "@docusaurus/Link"; + +import type { Props } from "@theme/BlogPostItem/Header/Author"; + +function MaybeLink(props: LinkProps): JSX.Element { + if (props.href) { + return ; + } + return <>{props.children}; +} + +export default function BlogPostItemHeaderAuthor({ + author, + className, +}: Props): JSX.Element { + const { name, title, url, imageURL, email } = author; + const link = url || (email && `mailto:${email}`) || undefined; + return ( +
+ {imageURL && ( + + {name} + + )} + + {name && ( +
+
+ + {name} + +
+ {title && {title}} +
+ )} +
+ ); +} diff --git a/src/theme/BlogPostItem/Header/Authors/index.tsx b/src/theme/BlogPostItem/Header/Authors/index.tsx new file mode 100644 index 0000000..6db4cc2 --- /dev/null +++ b/src/theme/BlogPostItem/Header/Authors/index.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import clsx from "clsx"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import BlogPostItemHeaderAuthor from "@theme/BlogPostItem/Header/Author"; +import type { Props } from "@theme/BlogPostItem/Header/Authors"; +import styles from "./styles.module.css"; + +// Component responsible for the authors layout +export default function BlogPostItemHeaderAuthors({ + className, +}: Props): JSX.Element | null { + const { + metadata: { authors }, + assets, + } = useBlogPost(); + const authorsCount = authors.length; + if (authorsCount === 0) { + return null; + } + return ( +
+ {authors.map((author, idx) => ( +
+ +
+ ))} +
+ ); +} diff --git a/src/theme/BlogPostItem/Header/Authors/styles.module.css b/src/theme/BlogPostItem/Header/Authors/styles.module.css new file mode 100644 index 0000000..cb7335c --- /dev/null +++ b/src/theme/BlogPostItem/Header/Authors/styles.module.css @@ -0,0 +1,10 @@ +.authorCol { + max-width: inherit !important; + flex-grow: 1 !important; +} + +.imageOnlyAuthorRow { + display: flex; + flex-flow: row wrap; + gap: 0.5rem; +} diff --git a/src/theme/BlogPostItem/Header/Info/index.tsx b/src/theme/BlogPostItem/Header/Info/index.tsx new file mode 100644 index 0000000..a41b6ab --- /dev/null +++ b/src/theme/BlogPostItem/Header/Info/index.tsx @@ -0,0 +1,79 @@ +import React from "react"; +import clsx from "clsx"; +import { translate } from "@docusaurus/Translate"; +import { usePluralForm } from "@docusaurus/theme-common"; +import { + useBlogPost, + useDateTimeFormat, +} from "@docusaurus/theme-common/internal"; +import type { Props } from "@theme/BlogPostItem/Header/Info"; + +import styles from "./styles.module.css"; + +// Very simple pluralization: probably good enough for now +function useReadingTimePlural() { + const { selectMessage } = usePluralForm(); + return (readingTimeFloat: number) => { + const readingTime = Math.ceil(readingTimeFloat); + return selectMessage( + readingTime, + translate( + { + id: "theme.blog.post.readingTime.plurals", + description: + 'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)', + message: "One min read|{readingTime} min read", + }, + { readingTime } + ) + ); + }; +} + +function ReadingTime({ readingTime }: { readingTime: number }) { + const readingTimePlural = useReadingTimePlural(); + return <>{readingTimePlural(readingTime)}; +} + +function DateTime({ + date, + formattedDate, +}: { + date: string; + formattedDate: string; +}) { + return ; +} + +function Spacer() { + return <>{" · "}; +} + +export default function BlogPostItemHeaderInfo({ + className, +}: Props): JSX.Element { + const { metadata } = useBlogPost(); + const { date, readingTime } = metadata; + + const dateTimeFormat = useDateTimeFormat({ + day: "numeric", + month: "long", + year: "numeric", + timeZone: "UTC", + }); + + const formatDate = (blogDate: string) => + dateTimeFormat.format(new Date(blogDate)); + + return ( +
+ + {typeof readingTime !== "undefined" && ( + <> + + + + )} +
+ ); +} diff --git a/src/theme/BlogPostItem/Header/Info/styles.module.css b/src/theme/BlogPostItem/Header/Info/styles.module.css new file mode 100644 index 0000000..fc59325 --- /dev/null +++ b/src/theme/BlogPostItem/Header/Info/styles.module.css @@ -0,0 +1,5 @@ +.container { + font-size: 0.9rem; + display: flex; + gap: 0.5rem; +} diff --git a/src/theme/BlogPostItem/Header/Title/index.tsx b/src/theme/BlogPostItem/Header/Title/index.tsx new file mode 100644 index 0000000..99b10dd --- /dev/null +++ b/src/theme/BlogPostItem/Header/Title/index.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import clsx from "clsx"; +import Link from "@docusaurus/Link"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import type { Props } from "@theme/BlogPostItem/Header/Title"; + +import styles from "./styles.module.css"; + +export default function BlogPostItemHeaderTitle({ + className, +}: Props): JSX.Element { + const { metadata, isBlogPostPage } = useBlogPost(); + const { permalink, title } = metadata; + const TitleHeading = isBlogPostPage ? "h1" : "h2"; + return ( + + {title} + + ); +} diff --git a/src/theme/BlogPostItem/Header/Title/styles.module.css b/src/theme/BlogPostItem/Header/Title/styles.module.css new file mode 100644 index 0000000..f76cd07 --- /dev/null +++ b/src/theme/BlogPostItem/Header/Title/styles.module.css @@ -0,0 +1,16 @@ +h2.title { + font-size: 1.25rem; +} + +.title a { + text-decoration: none !important; +} + +/** + Blog post title should be smaller on smaller devices +**/ +@media (max-width: 576px) { + h2.title { + font-size: 1rem; + } +} diff --git a/src/theme/BlogPostItem/Header/index.tsx b/src/theme/BlogPostItem/Header/index.tsx new file mode 100644 index 0000000..b991c12 --- /dev/null +++ b/src/theme/BlogPostItem/Header/index.tsx @@ -0,0 +1,15 @@ +import React from "react"; +import BlogPostItemHeaderTitle from "@theme/BlogPostItem/Header/Title"; +import BlogPostItemHeaderInfo from "@theme/BlogPostItem/Header/Info"; +import BlogPostItemHeaderAuthors from "@theme/BlogPostItem/Header/Authors"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; + +export default function BlogPostItemHeader(): JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/theme/BlogPostItem/index.tsx b/src/theme/BlogPostItem/index.tsx new file mode 100644 index 0000000..b105664 --- /dev/null +++ b/src/theme/BlogPostItem/index.tsx @@ -0,0 +1,87 @@ +import React from "react"; +import clsx from "clsx"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import BlogPostItemContainer from "@theme/BlogPostItem/Container"; +import BlogPostItemHeader from "@theme/BlogPostItem/Header"; +import BlogPostItemContent from "@theme/BlogPostItem/Content"; +import BlogPostItemFooter from "@theme/BlogPostItem/Footer"; +import TOC from "@theme/TOC"; +import type { Props } from "@theme/BlogPostItem"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import styles from "./styles.module.css"; +import Link from "@docusaurus/Link"; +import BlogPostItemHeaderTitle from "./Header/Title"; +import BlogPostItemHeaderAuthors from "./Header/Authors"; +import BlogPostItemHeaderInfo from "./Header/Info"; + +export default function BlogPostItem({ + children, + className, +}: Props): JSX.Element { + const post = useBlogPost(); + + const isPage = post.isBlogPostPage; + const isTOC = isPage && post.toc?.length > 0; + + // Post preview as a card + if (!isPage) { + return ( + +
+ article image +
+ +
+
+ + +
+
Read more {`->`}
+
+
+
+ + ); + } + + // Full post page + return ( +
+
+
+
+ article image + + {children} + +
+ + {isTOC && ( +
+ +
+ )} +
+
+
+ ); +} diff --git a/src/theme/BlogPostItem/styles.module.css b/src/theme/BlogPostItem/styles.module.css new file mode 100644 index 0000000..76552a1 --- /dev/null +++ b/src/theme/BlogPostItem/styles.module.css @@ -0,0 +1,33 @@ +.postCard { + height: 100%; + text-decoration: none; +} + +a.postLink { + text-decoration: none !important; + border: 1px solid transparent; + border-radius: var(--ifm-card-border-radius); + /* color: #fff; */ +} + +a.postLink:hover { + border: 1px solid #605e5c; +} + +.postCardHeader { + display: flex; + flex-direction: column; + padding: 1rem; + flex-grow: 1; +} + +.postCardBottom { + margin-top: auto; + display: flex; +} + +.readMore { + margin-left: auto; + align-self: flex-end; + text-decoration: underline; +} diff --git a/src/theme/BlogPostItems/LatestBlogPostItem/LatestBlogPostItem.tsx b/src/theme/BlogPostItems/LatestBlogPostItem/LatestBlogPostItem.tsx new file mode 100644 index 0000000..fec0cf0 --- /dev/null +++ b/src/theme/BlogPostItems/LatestBlogPostItem/LatestBlogPostItem.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import styles from "./styles.module.css"; +import { useBlogPost } from "@docusaurus/theme-common/internal"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import BlogPostItemHeaderAuthors from "../../BlogPostItem/Header/Authors"; +import BlogPostItemHeaderInfo from "../../BlogPostItem/Header/Info"; +import Link from "@docusaurus/Link"; + +export function LatestBlogPostItem({ children }) { + const post = useBlogPost(); + + return ( +
+ Article image +
+

{post.metadata.title}

+ +
+ + +
+ +
{children}
+ Read more {`->`} +
+
+ ); +} diff --git a/src/theme/BlogPostItems/LatestBlogPostItem/styles.module.css b/src/theme/BlogPostItems/LatestBlogPostItem/styles.module.css new file mode 100644 index 0000000..c2fae70 --- /dev/null +++ b/src/theme/BlogPostItems/LatestBlogPostItem/styles.module.css @@ -0,0 +1,42 @@ +.container { + display: flex; + gap: 3rem; +} + +.metaContainer { + display: flex; + flex-direction: column; + gap: 0rem; +} + +.info { + display: flex; + gap: 2rem; +} + +.image { + width: 50%; + object-fit: cover; + border-radius: var(--ifm-card-border-radius); + border: 1px solid #ffd500; + flex-shrink: 0; +} + +.title { + font-size: 2.5rem; + margin-bottom: 1.5rem; +} + +.content { + margin-top: 2rem; +} + +@media (max-width: 1000px) { + .container { + flex-direction: column; + } + .image { + height: 250px; + width: 100%; + } +} diff --git a/src/theme/BlogPostItems/index.tsx b/src/theme/BlogPostItems/index.tsx new file mode 100644 index 0000000..5af1a77 --- /dev/null +++ b/src/theme/BlogPostItems/index.tsx @@ -0,0 +1,49 @@ +import React from "react"; +import { BlogPostProvider } from "@docusaurus/theme-common/internal"; +import BlogPostItem from "@theme/BlogPostItem"; +import type { Props } from "@theme/BlogPostItems"; +import { LatestBlogPostItem } from "./LatestBlogPostItem/LatestBlogPostItem"; +import clsx from "clsx"; +import styles from "./styles.module.css"; + +export default function BlogPostItems({ + items, + metadata, + component: BlogPostItemComponent = BlogPostItem, +}: Props & { metadata: any }): JSX.Element { + const [latestBlog, ...rest] = items; + + const showLatest = metadata?.page === 1; + + return ( + <> + {showLatest && ( +
+
+

Latest

+ + {latestBlog.content()} + +
+
+ )} +
+
+ {(showLatest ? rest : items).map(({ content: BlogPostContent }) => ( + + + + + + ))} +
+
+ + ); +} diff --git a/src/theme/BlogPostItems/styles.module.css b/src/theme/BlogPostItems/styles.module.css new file mode 100644 index 0000000..74543cd --- /dev/null +++ b/src/theme/BlogPostItems/styles.module.css @@ -0,0 +1,24 @@ +:root { + --blog-latest-background: #f8f8f8; +} + +html[data-theme="dark"] { + --blog-latest-background: #292827; +} + +.latestContainer { + padding: 5rem 0 6rem 0; + background: radial-gradient(circle at 10% 10%, #fff2001c, transparent 20%), + radial-gradient(circle at 90% 400px, #fff2001c, transparent 30%); + background-color: var(--blog-latest-background); +} + +.itemGrid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 2rem; +} + +.title { + font-size: 40px; +} diff --git a/src/theme/BlogPostPaginator/index.tsx b/src/theme/BlogPostPaginator/index.tsx new file mode 100644 index 0000000..4fb54de --- /dev/null +++ b/src/theme/BlogPostPaginator/index.tsx @@ -0,0 +1,47 @@ +import React from "react"; +import Translate, { translate } from "@docusaurus/Translate"; +import PaginatorNavLink from "@theme/PaginatorNavLink"; +import type { Props } from "@theme/BlogPostPaginator"; + +export default function BlogPostPaginator(props: Props): JSX.Element { + const { nextItem, prevItem } = props; + + return ( + + ); +} diff --git a/themes/kinvolk-generic/assets/js/.gitignore b/static/.nojekyll similarity index 100% rename from themes/kinvolk-generic/assets/js/.gitignore rename to static/.nojekyll diff --git a/static/.well-known/microsoft-identity-association.json b/static/.well-known/microsoft-identity-association.json deleted file mode 100644 index e190059..0000000 --- a/static/.well-known/microsoft-identity-association.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "associatedApplications": [ - { - "applicationId": "b5678886-26a5-4a15-8513-17d67aaeaf68" - }, - { - "applicationId": "c37c261f-9e18-443a-89ee-7857b1ae7fd5" - } - ] - } diff --git a/static/hl-preview.mp4 b/static/hl-preview.mp4 new file mode 100644 index 0000000..9d194a6 Binary files /dev/null and b/static/hl-preview.mp4 differ diff --git a/static/images/features-bottom-pattern-2.png b/static/images/features-bottom-pattern-2.png deleted file mode 100644 index 0288c1c..0000000 Binary files a/static/images/features-bottom-pattern-2.png and /dev/null differ diff --git a/static/images/icon-headlamp-app.svg b/static/images/icon-headlamp-app.svg deleted file mode 100644 index c43b675..0000000 --- a/static/images/icon-headlamp-app.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/static/images/icon-headlamp-secure.svg b/static/images/icon-headlamp-secure.svg deleted file mode 100644 index ac47c14..0000000 --- a/static/images/icon-headlamp-secure.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/static/images/icon-headlamp-wrench.svg b/static/images/icon-headlamp-wrench.svg deleted file mode 100644 index e84b7b6..0000000 --- a/static/images/icon-headlamp-wrench.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/static/images/round-dots.svg b/static/images/round-dots.svg deleted file mode 100644 index c0efdef..0000000 --- a/static/images/round-dots.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/big-circles.svg b/static/img/big-circles.svg new file mode 100644 index 0000000..60d83b7 --- /dev/null +++ b/static/img/big-circles.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/img/download.svg b/static/img/download.svg new file mode 100644 index 0000000..de083f1 --- /dev/null +++ b/static/img/download.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/media/favicon.png b/static/img/favicon.png similarity index 100% rename from static/media/favicon.png rename to static/img/favicon.png diff --git a/static/img/hero-poster.jpg b/static/img/hero-poster.jpg new file mode 100644 index 0000000..c920820 Binary files /dev/null and b/static/img/hero-poster.jpg differ diff --git a/static/img/landing-headlamp.png b/static/img/landing-headlamp.png new file mode 100644 index 0000000..b2c42d5 Binary files /dev/null and b/static/img/landing-headlamp.png differ diff --git a/static/img/logo-dark.svg b/static/img/logo-dark.svg new file mode 100644 index 0000000..390d807 --- /dev/null +++ b/static/img/logo-dark.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/img/logo.svg b/static/img/logo.svg new file mode 100644 index 0000000..bddd768 --- /dev/null +++ b/static/img/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/images/social-card.png b/static/img/social-card.png similarity index 100% rename from static/images/social-card.png rename to static/img/social-card.png diff --git a/static/media/brand-logo.svg b/static/media/brand-logo.svg deleted file mode 100644 index cb0cc74..0000000 --- a/static/media/brand-logo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/static/media/footer-logo.svg b/static/media/footer-logo.svg deleted file mode 100644 index c51fccf..0000000 --- a/static/media/footer-logo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/static/media/splash/rana-sawalha-W_-6PWGbYaU-unsplash-1600.jpg b/static/media/splash/rana-sawalha-W_-6PWGbYaU-unsplash-1600.jpg deleted file mode 100644 index cf4ba18..0000000 Binary files a/static/media/splash/rana-sawalha-W_-6PWGbYaU-unsplash-1600.jpg and /dev/null differ diff --git a/themes/kinvolk-generic/LICENSE.txt b/themes/kinvolk-generic/LICENSE.txt deleted file mode 100644 index b2f52a2..0000000 --- a/themes/kinvolk-generic/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Microsoft Corporation. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/themes/kinvolk-generic/README.md b/themes/kinvolk-generic/README.md deleted file mode 100644 index 616070b..0000000 --- a/themes/kinvolk-generic/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Websites Theme - -A generic theme for projects' websites. - -## License - -This project is released under the [MIT License](./LICENSE.txt) terms. diff --git a/themes/kinvolk-generic/assets/images/icon-container.svg b/themes/kinvolk-generic/assets/images/icon-container.svg deleted file mode 100644 index b244d97..0000000 --- a/themes/kinvolk-generic/assets/images/icon-container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/themes/kinvolk-generic/assets/images/icon-expand.svg b/themes/kinvolk-generic/assets/images/icon-expand.svg deleted file mode 100644 index c4b8081..0000000 --- a/themes/kinvolk-generic/assets/images/icon-expand.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/themes/kinvolk-generic/assets/images/icon-filesystem.svg b/themes/kinvolk-generic/assets/images/icon-filesystem.svg deleted file mode 100644 index 1af5f87..0000000 --- a/themes/kinvolk-generic/assets/images/icon-filesystem.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/themes/kinvolk-generic/assets/images/icon-integration.svg b/themes/kinvolk-generic/assets/images/icon-integration.svg deleted file mode 100644 index 5d1cff5..0000000 --- a/themes/kinvolk-generic/assets/images/icon-integration.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/themes/kinvolk-generic/assets/images/icon-layers.svg b/themes/kinvolk-generic/assets/images/icon-layers.svg deleted file mode 100644 index 67e78fc..0000000 --- a/themes/kinvolk-generic/assets/images/icon-layers.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/themes/kinvolk-generic/assets/images/icon-update.svg b/themes/kinvolk-generic/assets/images/icon-update.svg deleted file mode 100644 index 8f26c41..0000000 --- a/themes/kinvolk-generic/assets/images/icon-update.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/themes/kinvolk-generic/assets/images/shape-blue-1.svg b/themes/kinvolk-generic/assets/images/shape-blue-1.svg deleted file mode 100644 index fdab6dd..0000000 --- a/themes/kinvolk-generic/assets/images/shape-blue-1.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/themes/kinvolk-generic/assets/images/shape-blue-2.svg b/themes/kinvolk-generic/assets/images/shape-blue-2.svg deleted file mode 100644 index 33a5ffc..0000000 --- a/themes/kinvolk-generic/assets/images/shape-blue-2.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/themes/kinvolk-generic/assets/images/shape-blue-3.svg b/themes/kinvolk-generic/assets/images/shape-blue-3.svg deleted file mode 100644 index abcc7f9..0000000 --- a/themes/kinvolk-generic/assets/images/shape-blue-3.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/themes/kinvolk-generic/assets/js/anchor.js b/themes/kinvolk-generic/assets/js/anchor.js deleted file mode 100644 index e9095e2..0000000 --- a/themes/kinvolk-generic/assets/js/anchor.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2018 Google LLC - -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 - - https://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. - -This file has been taken from the Kubernetes documentation and has just -the class attribute modification. - -*/ - -(function ($) { - 'use strict'; - - // Headers' anchor link that shows on hover - $(function () { - // append anchor links to headings in markdown. - var article = document.getElementsByTagName('main')[0]; - if (!article) { - return; - } - var headings = article.querySelectorAll('h1, h2, h3, h4, h5, h6'); - headings.forEach(function (heading) { - if (heading.id) { - var a = document.createElement('a'); - // set visibility: hidden, not display: none to avoid layout change - a.style.visibility = 'hidden'; - // [a11y] hide this from screen readers, etc.. - a.setAttribute('aria-hidden', 'true'); - a.setAttribute('class', 'heading-anchor'); - // material insert_link icon in svg format - a.innerHTML = ' '; - a.href = '#' + heading.id; - heading.insertAdjacentElement('beforeend', a); - heading.addEventListener('mouseenter', function () { - a.style.visibility = 'initial'; - }); - heading.addEventListener('mouseleave', function () { - a.style.visibility = 'hidden'; - }); - } - }); - }); - -}(jQuery)); diff --git a/themes/kinvolk-generic/assets/js/common.js b/themes/kinvolk-generic/assets/js/common.js deleted file mode 100644 index 2f15fa2..0000000 --- a/themes/kinvolk-generic/assets/js/common.js +++ /dev/null @@ -1,84 +0,0 @@ -$('.mobile-menu').on('click', function(e) { - $('body').toggleClass("mobile-menu_open"); -}); - -$('.docs-menu').on('click', function(e) { - $('body').toggleClass("show"); -}); - -function closeMenu(elem) { - if($("body").hasClass("mobile-menu_open")) { - if(!elem.classList.contains("dropdown-toggle")) { - $('.mobile-menu').click(); - } - } -} - - document.querySelectorAll(".nav-item.dropdown .nav-link").forEach(function(item) { - item.addEventListener("click", function(e) { - e.preventDefault(); - if($("body").hasClass("mobile-menu_open")) { - if(!this.classList.contains("nav-link_selected")) { - document.querySelectorAll(".nav-link").forEach(function(elem) { - elem.classList.remove("nav-link_selected"); - }); - this.classList.add("nav-link_selected"); - } else { - this.classList.remove("nav-link_selected"); - } - } - }) - }); - - document.querySelectorAll(".nav-item.dropdown .nav-link").forEach(function(item) { - if(!$("body").hasClass("mobile-menu_open")) { - item.addEventListener("focus", function(e) { - item.parentElement.classList.add("focus"); - }); - - // This logic is based on https://www.a11ywithlindsey.com/blog/create-accessible-dropdown-navigation - item.parentElement.querySelectorAll(".dropdown-menu").forEach(function(dropdown) { - const subMenuLinks = dropdown.querySelectorAll('a') - const lastLink = subMenuLinks[subMenuLinks.length - 1] - - lastLink.addEventListener('blur', function() { - item.parentElement.classList.remove('focus') - }) - }); - } - }); - - [".nav-link", ".dropdown-item"].forEach(className => - document.querySelectorAll(className).forEach(function(item) { - item.addEventListener("click", function(e) { - closeMenu(this); - }) - }) - ); - - -// Cookies - -function getCookie(cname) { - var name = cname + "="; - var decodedCookie = decodeURIComponent(document.cookie); - var ca = decodedCookie.split(';'); - for(var i = 0; i -var first = list.firstChild; // first child of search list -var last = list.lastChild; // last child of search list -var maininput = document.getElementById('searchInput'); // input box for search -var searchResults = document.getElementById("searchResults"); -var resultsAvailable = false; // Did we get any search results? - -// ========================================== -// The main keyboard event listener running the show -// -document.addEventListener('keydown', function(event) { - // Typing / focuses search - if (event.key === '/') { - // Load json search index if first time invoking search - // Means we don't load json unless searches are going to happen; keep user payload small unless needed - - - // Toggle visibility of search box - if (!searchVisible) { - maininput.focus(); // put focus in input box so you can just start typing - searchVisible = true; // search visible - event.preventDefault(); - maininput.value = ''; - } - // else { - // searchResults.style.visibility = "hidden"; // hide search box - // document.activeElement.blur(); // remove focus from search box - // searchVisible = false; // search not visible - // } - } - - // Close search box - if (event.key === 'Escape') { - if (searchVisible) { - maininput.value = ''; - searchResults.style.visibility = "hidden"; - document.activeElement.blur(); - searchVisible = false; - } - } - - // Next result - if (event.key === 'ArrowDown') { - if (resultsAvailable) { - event.preventDefault(); // stop window from scrolling - if ( document.activeElement == maininput) { first.focus(); } // if the currently focused element is the main input --> focus the first
  • - else if ( document.activeElement == last ) { last.focus(); } // if we're at the bottom, stay there - else { document.activeElement.parentElement.nextSibling.firstElementChild.focus(); } // otherwise select the next search result - } - } - - // Previous result - if (event.key === 'ArrowUp') { - if (resultsAvailable) { - event.preventDefault(); // stop window from scrolling - if ( document.activeElement == maininput) { maininput.focus(); } // If we're in the input box, do nothing - else if ( document.activeElement == first) { maininput.focus(); } // If we're at the first item, go to input box - else { document.activeElement.parentElement.previousSibling.firstElementChild.focus(); } // Otherwise, select the search result above the current active one - } - } -}); - - -// ========================================== -// execute search as each character is typed -// -let searchThrottleId = -1; -maininput.onkeyup = function(e) { - if (e.code.startsWith('Key')) { - if (!fuse && firstRun) { - loadSearch(); // loads our json data and builds fuse.js search index - firstRun = false; // let's never do this again - return; - } - - if (searchThrottleId >= 0) { - clearTimeout(searchThrottleId); - } - searchThrottleId = setTimeout(() => { - searchThrottleId = -1; - searchVisible = true; - executeSearch(this.value); - }, - 150); - } -} - - -// ========================================== -// fetch some json without jquery -// -function fetchJSONFile(path, callback) { - var httpRequest = new XMLHttpRequest(); - httpRequest.onreadystatechange = function() { - if (httpRequest.readyState === 4) { - if (httpRequest.status === 200) { - var data = JSON.parse(httpRequest.responseText); - if (callback) callback(data); - } - } - }; - httpRequest.open('GET', path); - httpRequest.send(); -} - - -// ========================================== -// load our search index, only executed once -// on first call of search box (CMD-/) -// -function loadSearch() { - let searchTerms = maininput.value; - if (!!searchTerms && !resultsAvailable) { - list.innerHTML = '
  • Searching…
  • '; - } - fetchJSONFile((window.location.baseurl || '') + '/index.json', function(data) { - index = data; - - function makeIndex(version, data) { - return lunr(function() { - this.ref('permalink'); - this.field('title'); - this.field('permalink'); - this.field('categories'); - this.field('contentList'); - this.field('tags'); - data[version].forEach(p => { - let index = indexes[version] || {}; - index[p.permalink] = p - indexes[version] = index - - this.add(p); - }); - }); - } - - Object.keys(data).forEach(version => { - lunars[version] = makeIndex(version, data); - }); - - // Let's a seach here because we may have taken a while to fetch all the info. - let searchTerms = maininput.value; - if (!!searchTerms && !resultsAvailable) { - executeSearch(searchTerms); - } - }); -} - - -// ========================================== -// using the index we loaded on CMD-/, run -// a search query (for "term") every time a letter is typed -// in the search box -// -function executeSearch(term) { - if (Object.keys(lunars).length === 0) { - return; - } - - searchResults.style.visibility = "visible"; - - let version = maininput.dataset.searchVersion; - - if (!resultsAvailable) { - list.innerHTML = '
  • Searching…
  • '; - } - - let results = lunars[version].search(term + '*'); - let searchitems = ''; // our results bucket - - if (results.length === 0) { // no results based on what was typed into the input box - resultsAvailable = false; - searchitems = '
  • No results. Try different search terms.
  • '; - } else { // build our html - for (let result of results.slice(0,100)) { - let item = indexes[version][result.ref]; - if (item.title === 0) { - continue; - } - - let contents = `${item.contentList.slice(0, 100).join(' ')}` - searchitems += `
  • ${item.title}
    ${contents}
  • `; - } - resultsAvailable = true; - } - - list.innerHTML = searchitems; - if (results.length > 0) { - first = list.firstChild.firstElementChild; // first result container — used for checking against keyboard up/down location - last = list.lastChild.firstElementChild; // last result container — used for checking against keyboard up/down location - } -} - diff --git a/themes/kinvolk-generic/assets/js/lunr.js b/themes/kinvolk-generic/assets/js/lunr.js deleted file mode 100644 index 6aa370f..0000000 --- a/themes/kinvolk-generic/assets/js/lunr.js +++ /dev/null @@ -1,3475 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ - -;(function(){ - -/** - * A convenience function for configuring and constructing - * a new lunr Index. - * - * A lunr.Builder instance is created and the pipeline setup - * with a trimmer, stop word filter and stemmer. - * - * This builder object is yielded to the configuration function - * that is passed as a parameter, allowing the list of fields - * and other builder parameters to be customised. - * - * All documents _must_ be added within the passed config function. - * - * @example - * var idx = lunr(function () { - * this.field('title') - * this.field('body') - * this.ref('id') - * - * documents.forEach(function (doc) { - * this.add(doc) - * }, this) - * }) - * - * @see {@link lunr.Builder} - * @see {@link lunr.Pipeline} - * @see {@link lunr.trimmer} - * @see {@link lunr.stopWordFilter} - * @see {@link lunr.stemmer} - * @namespace {function} lunr - */ -var lunr = function (config) { - var builder = new lunr.Builder - - builder.pipeline.add( - lunr.trimmer, - lunr.stopWordFilter, - lunr.stemmer - ) - - builder.searchPipeline.add( - lunr.stemmer - ) - - config.call(builder, builder) - return builder.build() -} - -lunr.version = "2.3.9" -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A namespace containing utils for the rest of the lunr library - * @namespace lunr.utils - */ -lunr.utils = {} - -/** - * Print a warning message to the console. - * - * @param {String} message The message to be printed. - * @memberOf lunr.utils - * @function - */ -lunr.utils.warn = (function (global) { - /* eslint-disable no-console */ - return function (message) { - if (global.console && console.warn) { - console.warn(message) - } - } - /* eslint-enable no-console */ -})(this) - -/** - * Convert an object to a string. - * - * In the case of `null` and `undefined` the function returns - * the empty string, in all other cases the result of calling - * `toString` on the passed object is returned. - * - * @param {Any} obj The object to convert to a string. - * @return {String} string representation of the passed object. - * @memberOf lunr.utils - */ -lunr.utils.asString = function (obj) { - if (obj === void 0 || obj === null) { - return "" - } else { - return obj.toString() - } -} - -/** - * Clones an object. - * - * Will create a copy of an existing object such that any mutations - * on the copy cannot affect the original. - * - * Only shallow objects are supported, passing a nested object to this - * function will cause a TypeError. - * - * Objects with primitives, and arrays of primitives are supported. - * - * @param {Object} obj The object to clone. - * @return {Object} a clone of the passed object. - * @throws {TypeError} when a nested object is passed. - * @memberOf Utils - */ -lunr.utils.clone = function (obj) { - if (obj === null || obj === undefined) { - return obj - } - - var clone = Object.create(null), - keys = Object.keys(obj) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i], - val = obj[key] - - if (Array.isArray(val)) { - clone[key] = val.slice() - continue - } - - if (typeof val === 'string' || - typeof val === 'number' || - typeof val === 'boolean') { - clone[key] = val - continue - } - - throw new TypeError("clone is not deep and does not support nested objects") - } - - return clone -} -lunr.FieldRef = function (docRef, fieldName, stringValue) { - this.docRef = docRef - this.fieldName = fieldName - this._stringValue = stringValue -} - -lunr.FieldRef.joiner = "/" - -lunr.FieldRef.fromString = function (s) { - var n = s.indexOf(lunr.FieldRef.joiner) - - if (n === -1) { - throw "malformed field ref string" - } - - var fieldRef = s.slice(0, n), - docRef = s.slice(n + 1) - - return new lunr.FieldRef (docRef, fieldRef, s) -} - -lunr.FieldRef.prototype.toString = function () { - if (this._stringValue == undefined) { - this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef - } - - return this._stringValue -} -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A lunr set. - * - * @constructor - */ -lunr.Set = function (elements) { - this.elements = Object.create(null) - - if (elements) { - this.length = elements.length - - for (var i = 0; i < this.length; i++) { - this.elements[elements[i]] = true - } - } else { - this.length = 0 - } -} - -/** - * A complete set that contains all elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.complete = { - intersect: function (other) { - return other - }, - - union: function () { - return this - }, - - contains: function () { - return true - } -} - -/** - * An empty set that contains no elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.empty = { - intersect: function () { - return this - }, - - union: function (other) { - return other - }, - - contains: function () { - return false - } -} - -/** - * Returns true if this set contains the specified object. - * - * @param {object} object - Object whose presence in this set is to be tested. - * @returns {boolean} - True if this set contains the specified object. - */ -lunr.Set.prototype.contains = function (object) { - return !!this.elements[object] -} - -/** - * Returns a new set containing only the elements that are present in both - * this set and the specified set. - * - * @param {lunr.Set} other - set to intersect with this set. - * @returns {lunr.Set} a new set that is the intersection of this and the specified set. - */ - -lunr.Set.prototype.intersect = function (other) { - var a, b, elements, intersection = [] - - if (other === lunr.Set.complete) { - return this - } - - if (other === lunr.Set.empty) { - return other - } - - if (this.length < other.length) { - a = this - b = other - } else { - a = other - b = this - } - - elements = Object.keys(a.elements) - - for (var i = 0; i < elements.length; i++) { - var element = elements[i] - if (element in b.elements) { - intersection.push(element) - } - } - - return new lunr.Set (intersection) -} - -/** - * Returns a new set combining the elements of this and the specified set. - * - * @param {lunr.Set} other - set to union with this set. - * @return {lunr.Set} a new set that is the union of this and the specified set. - */ - -lunr.Set.prototype.union = function (other) { - if (other === lunr.Set.complete) { - return lunr.Set.complete - } - - if (other === lunr.Set.empty) { - return this - } - - return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) -} -/** - * A function to calculate the inverse document frequency for - * a posting. This is shared between the builder and the index - * - * @private - * @param {object} posting - The posting for a given term - * @param {number} documentCount - The total number of documents. - */ -lunr.idf = function (posting, documentCount) { - var documentsWithTerm = 0 - - for (var fieldName in posting) { - if (fieldName == '_index') continue // Ignore the term index, its not a field - documentsWithTerm += Object.keys(posting[fieldName]).length - } - - var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) - - return Math.log(1 + Math.abs(x)) -} - -/** - * A token wraps a string representation of a token - * as it is passed through the text processing pipeline. - * - * @constructor - * @param {string} [str=''] - The string token being wrapped. - * @param {object} [metadata={}] - Metadata associated with this token. - */ -lunr.Token = function (str, metadata) { - this.str = str || "" - this.metadata = metadata || {} -} - -/** - * Returns the token string that is being wrapped by this object. - * - * @returns {string} - */ -lunr.Token.prototype.toString = function () { - return this.str -} - -/** - * A token update function is used when updating or optionally - * when cloning a token. - * - * @callback lunr.Token~updateFunction - * @param {string} str - The string representation of the token. - * @param {Object} metadata - All metadata associated with this token. - */ - -/** - * Applies the given function to the wrapped string token. - * - * @example - * token.update(function (str, metadata) { - * return str.toUpperCase() - * }) - * - * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. - * @returns {lunr.Token} - */ -lunr.Token.prototype.update = function (fn) { - this.str = fn(this.str, this.metadata) - return this -} - -/** - * Creates a clone of this token. Optionally a function can be - * applied to the cloned token. - * - * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. - * @returns {lunr.Token} - */ -lunr.Token.prototype.clone = function (fn) { - fn = fn || function (s) { return s } - return new lunr.Token (fn(this.str, this.metadata), this.metadata) -} -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A function for splitting a string into tokens ready to be inserted into - * the search index. Uses `lunr.tokenizer.separator` to split strings, change - * the value of this property to change how strings are split into tokens. - * - * This tokenizer will convert its parameter to a string by calling `toString` and - * then will split this string on the character in `lunr.tokenizer.separator`. - * Arrays will have their elements converted to strings and wrapped in a lunr.Token. - * - * Optional metadata can be passed to the tokenizer, this metadata will be cloned and - * added as metadata to every token that is created from the object to be tokenized. - * - * @static - * @param {?(string|object|object[])} obj - The object to convert into tokens - * @param {?object} metadata - Optional metadata to associate with every token - * @returns {lunr.Token[]} - * @see {@link lunr.Pipeline} - */ -lunr.tokenizer = function (obj, metadata) { - if (obj == null || obj == undefined) { - return [] - } - - if (Array.isArray(obj)) { - return obj.map(function (t) { - return new lunr.Token( - lunr.utils.asString(t).toLowerCase(), - lunr.utils.clone(metadata) - ) - }) - } - - var str = obj.toString().toLowerCase(), - len = str.length, - tokens = [] - - for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - var char = str.charAt(sliceEnd), - sliceLength = sliceEnd - sliceStart - - if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { - - if (sliceLength > 0) { - var tokenMetadata = lunr.utils.clone(metadata) || {} - tokenMetadata["position"] = [sliceStart, sliceLength] - tokenMetadata["index"] = tokens.length - - tokens.push( - new lunr.Token ( - str.slice(sliceStart, sliceEnd), - tokenMetadata - ) - ) - } - - sliceStart = sliceEnd + 1 - } - - } - - return tokens -} - -/** - * The separator used to split a string into tokens. Override this property to change the behaviour of - * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. - * - * @static - * @see lunr.tokenizer - */ -lunr.tokenizer.separator = /[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Pipelines maintain an ordered list of functions to be applied to all - * tokens in documents entering the search index and queries being ran against - * the index. - * - * An instance of lunr.Index created with the lunr shortcut will contain a - * pipeline with a stop word filter and an English language stemmer. Extra - * functions can be added before or after either of these functions or these - * default functions can be removed. - * - * When run the pipeline will call each function in turn, passing a token, the - * index of that token in the original list of all tokens and finally a list of - * all the original tokens. - * - * The output of functions in the pipeline will be passed to the next function - * in the pipeline. To exclude a token from entering the index the function - * should return undefined, the rest of the pipeline will not be called with - * this token. - * - * For serialisation of pipelines to work, all functions used in an instance of - * a pipeline should be registered with lunr.Pipeline. Registered functions can - * then be loaded. If trying to load a serialised pipeline that uses functions - * that are not registered an error will be thrown. - * - * If not planning on serialising the pipeline then registering pipeline functions - * is not necessary. - * - * @constructor - */ -lunr.Pipeline = function () { - this._stack = [] -} - -lunr.Pipeline.registeredFunctions = Object.create(null) - -/** - * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token - * string as well as all known metadata. A pipeline function can mutate the token string - * or mutate (or add) metadata for a given token. - * - * A pipeline function can indicate that the passed token should be discarded by returning - * null, undefined or an empty string. This token will not be passed to any downstream pipeline - * functions and will not be added to the index. - * - * Multiple tokens can be returned by returning an array of tokens. Each token will be passed - * to any downstream pipeline functions and all will returned tokens will be added to the index. - * - * Any number of pipeline functions may be chained together using a lunr.Pipeline. - * - * @interface lunr.PipelineFunction - * @param {lunr.Token} token - A token from the document being processed. - * @param {number} i - The index of this token in the complete list of tokens for this document/field. - * @param {lunr.Token[]} tokens - All tokens for this document/field. - * @returns {(?lunr.Token|lunr.Token[])} - */ - -/** - * Register a function with the pipeline. - * - * Functions that are used in the pipeline should be registered if the pipeline - * needs to be serialised, or a serialised pipeline needs to be loaded. - * - * Registering a function does not add it to a pipeline, functions must still be - * added to instances of the pipeline for them to be used when running a pipeline. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @param {String} label - The label to register this function with - */ -lunr.Pipeline.registerFunction = function (fn, label) { - if (label in this.registeredFunctions) { - lunr.utils.warn('Overwriting existing registered function: ' + label) - } - - fn.label = label - lunr.Pipeline.registeredFunctions[fn.label] = fn -} - -/** - * Warns if the function is not registered as a Pipeline function. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @private - */ -lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { - var isRegistered = fn.label && (fn.label in this.registeredFunctions) - - if (!isRegistered) { - lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) - } -} - -/** - * Loads a previously serialised pipeline. - * - * All functions to be loaded must already be registered with lunr.Pipeline. - * If any function from the serialised data has not been registered then an - * error will be thrown. - * - * @param {Object} serialised - The serialised pipeline to load. - * @returns {lunr.Pipeline} - */ -lunr.Pipeline.load = function (serialised) { - var pipeline = new lunr.Pipeline - - serialised.forEach(function (fnName) { - var fn = lunr.Pipeline.registeredFunctions[fnName] - - if (fn) { - pipeline.add(fn) - } else { - throw new Error('Cannot load unregistered function: ' + fnName) - } - }) - - return pipeline -} - -/** - * Adds new functions to the end of the pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. - */ -lunr.Pipeline.prototype.add = function () { - var fns = Array.prototype.slice.call(arguments) - - fns.forEach(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - this._stack.push(fn) - }, this) -} - -/** - * Adds a single function after a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.after = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - pos = pos + 1 - this._stack.splice(pos, 0, newFn) -} - -/** - * Adds a single function before a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.before = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - this._stack.splice(pos, 0, newFn) -} - -/** - * Removes a function from the pipeline. - * - * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. - */ -lunr.Pipeline.prototype.remove = function (fn) { - var pos = this._stack.indexOf(fn) - if (pos == -1) { - return - } - - this._stack.splice(pos, 1) -} - -/** - * Runs the current list of functions that make up the pipeline against the - * passed tokens. - * - * @param {Array} tokens The tokens to run through the pipeline. - * @returns {Array} - */ -lunr.Pipeline.prototype.run = function (tokens) { - var stackLength = this._stack.length - - for (var i = 0; i < stackLength; i++) { - var fn = this._stack[i] - var memo = [] - - for (var j = 0; j < tokens.length; j++) { - var result = fn(tokens[j], j, tokens) - - if (result === null || result === void 0 || result === '') continue - - if (Array.isArray(result)) { - for (var k = 0; k < result.length; k++) { - memo.push(result[k]) - } - } else { - memo.push(result) - } - } - - tokens = memo - } - - return tokens -} - -/** - * Convenience method for passing a string through a pipeline and getting - * strings out. This method takes care of wrapping the passed string in a - * token and mapping the resulting tokens back to strings. - * - * @param {string} str - The string to pass through the pipeline. - * @param {?object} metadata - Optional metadata to associate with the token - * passed to the pipeline. - * @returns {string[]} - */ -lunr.Pipeline.prototype.runString = function (str, metadata) { - var token = new lunr.Token (str, metadata) - - return this.run([token]).map(function (t) { - return t.toString() - }) -} - -/** - * Resets the pipeline by removing any existing processors. - * - */ -lunr.Pipeline.prototype.reset = function () { - this._stack = [] -} - -/** - * Returns a representation of the pipeline ready for serialisation. - * - * Logs a warning if the function has not been registered. - * - * @returns {Array} - */ -lunr.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - - return fn.label - }) -} -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A vector is used to construct the vector space of documents and queries. These - * vectors support operations to determine the similarity between two documents or - * a document and a query. - * - * Normally no parameters are required for initializing a vector, but in the case of - * loading a previously dumped vector the raw elements can be provided to the constructor. - * - * For performance reasons vectors are implemented with a flat array, where an elements - * index is immediately followed by its value. E.g. [index, value, index, value]. This - * allows the underlying array to be as sparse as possible and still offer decent - * performance when being used for vector calculations. - * - * @constructor - * @param {Number[]} [elements] - The flat list of element index and element value pairs. - */ -lunr.Vector = function (elements) { - this._magnitude = 0 - this.elements = elements || [] -} - - -/** - * Calculates the position within the vector to insert a given index. - * - * This is used internally by insert and upsert. If there are duplicate indexes then - * the position is returned as if the value for that index were to be updated, but it - * is the callers responsibility to check whether there is a duplicate at that index - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @returns {Number} - */ -lunr.Vector.prototype.positionForIndex = function (index) { - // For an empty vector the tuple can be inserted at the beginning - if (this.elements.length == 0) { - return 0 - } - - var start = 0, - end = this.elements.length / 2, - sliceLength = end - start, - pivotPoint = Math.floor(sliceLength / 2), - pivotIndex = this.elements[pivotPoint * 2] - - while (sliceLength > 1) { - if (pivotIndex < index) { - start = pivotPoint - } - - if (pivotIndex > index) { - end = pivotPoint - } - - if (pivotIndex == index) { - break - } - - sliceLength = end - start - pivotPoint = start + Math.floor(sliceLength / 2) - pivotIndex = this.elements[pivotPoint * 2] - } - - if (pivotIndex == index) { - return pivotPoint * 2 - } - - if (pivotIndex > index) { - return pivotPoint * 2 - } - - if (pivotIndex < index) { - return (pivotPoint + 1) * 2 - } -} - -/** - * Inserts an element at an index within the vector. - * - * Does not allow duplicates, will throw an error if there is already an entry - * for this index. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - */ -lunr.Vector.prototype.insert = function (insertIdx, val) { - this.upsert(insertIdx, val, function () { - throw "duplicate index" - }) -} - -/** - * Inserts or updates an existing index within the vector. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - * @param {function} fn - A function that is called for updates, the existing value and the - * requested value are passed as arguments - */ -lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { - this._magnitude = 0 - var position = this.positionForIndex(insertIdx) - - if (this.elements[position] == insertIdx) { - this.elements[position + 1] = fn(this.elements[position + 1], val) - } else { - this.elements.splice(position, 0, insertIdx, val) - } -} - -/** - * Calculates the magnitude of this vector. - * - * @returns {Number} - */ -lunr.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude - - var sumOfSquares = 0, - elementsLength = this.elements.length - - for (var i = 1; i < elementsLength; i += 2) { - var val = this.elements[i] - sumOfSquares += val * val - } - - return this._magnitude = Math.sqrt(sumOfSquares) -} - -/** - * Calculates the dot product of this vector and another vector. - * - * @param {lunr.Vector} otherVector - The vector to compute the dot product with. - * @returns {Number} - */ -lunr.Vector.prototype.dot = function (otherVector) { - var dotProduct = 0, - a = this.elements, b = otherVector.elements, - aLen = a.length, bLen = b.length, - aVal = 0, bVal = 0, - i = 0, j = 0 - - while (i < aLen && j < bLen) { - aVal = a[i], bVal = b[j] - if (aVal < bVal) { - i += 2 - } else if (aVal > bVal) { - j += 2 - } else if (aVal == bVal) { - dotProduct += a[i + 1] * b[j + 1] - i += 2 - j += 2 - } - } - - return dotProduct -} - -/** - * Calculates the similarity between this vector and another vector. - * - * @param {lunr.Vector} otherVector - The other vector to calculate the - * similarity with. - * @returns {Number} - */ -lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / this.magnitude() || 0 -} - -/** - * Converts the vector to an array of the elements within the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toArray = function () { - var output = new Array (this.elements.length / 2) - - for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { - output[j] = this.elements[i] - } - - return output -} - -/** - * A JSON serializable representation of the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toJSON = function () { - return this.elements -} -/* eslint-disable */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/** - * lunr.stemmer is an english language stemmer, this is a JavaScript - * implementation of the PorterStemmer taken from http://tartarus.org/~martin - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token - The string to stem - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - * @function - */ -lunr.stemmer = (function(){ - var step2list = { - "ational" : "ate", - "tional" : "tion", - "enci" : "ence", - "anci" : "ance", - "izer" : "ize", - "bli" : "ble", - "alli" : "al", - "entli" : "ent", - "eli" : "e", - "ousli" : "ous", - "ization" : "ize", - "ation" : "ate", - "ator" : "ate", - "alism" : "al", - "iveness" : "ive", - "fulness" : "ful", - "ousness" : "ous", - "aliti" : "al", - "iviti" : "ive", - "biliti" : "ble", - "logi" : "log" - }, - - step3list = { - "icate" : "ic", - "ative" : "", - "alize" : "al", - "iciti" : "ic", - "ical" : "ic", - "ful" : "", - "ness" : "" - }, - - c = "[^aeiou]", // consonant - v = "[aeiouy]", // vowel - C = c + "[^aeiouy]*", // consonant sequence - V = v + "[aeiou]*", // vowel sequence - - mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 - meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 - mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 - s_v = "^(" + C + ")?" + v; // vowel in stem - - var re_mgr0 = new RegExp(mgr0); - var re_mgr1 = new RegExp(mgr1); - var re_meq1 = new RegExp(meq1); - var re_s_v = new RegExp(s_v); - - var re_1a = /^(.+?)(ss|i)es$/; - var re2_1a = /^(.+?)([^s])s$/; - var re_1b = /^(.+?)eed$/; - var re2_1b = /^(.+?)(ed|ing)$/; - var re_1b_2 = /.$/; - var re2_1b_2 = /(at|bl|iz)$/; - var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); - var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var re_1c = /^(.+?[^aeiou])y$/; - var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - - var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - - var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - var re2_4 = /^(.+?)(s|t)(ion)$/; - - var re_5 = /^(.+?)e$/; - var re_5_1 = /ll$/; - var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var porterStemmer = function porterStemmer(w) { - var stem, - suffix, - firstch, - re, - re2, - re3, - re4; - - if (w.length < 3) { return w; } - - firstch = w.substr(0,1); - if (firstch == "y") { - w = firstch.toUpperCase() + w.substr(1); - } - - // Step 1a - re = re_1a - re2 = re2_1a; - - if (re.test(w)) { w = w.replace(re,"$1$2"); } - else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } - - // Step 1b - re = re_1b; - re2 = re2_1b; - if (re.test(w)) { - var fp = re.exec(w); - re = re_mgr0; - if (re.test(fp[1])) { - re = re_1b_2; - w = w.replace(re,""); - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = re_s_v; - if (re2.test(stem)) { - w = stem; - re2 = re2_1b_2; - re3 = re3_1b_2; - re4 = re4_1b_2; - if (re2.test(w)) { w = w + "e"; } - else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } - else if (re4.test(w)) { w = w + "e"; } - } - } - - // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) - re = re_1c; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - w = stem + "i"; - } - - // Step 2 - re = re_2; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step2list[suffix]; - } - } - - // Step 3 - re = re_3; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step3list[suffix]; - } - } - - // Step 4 - re = re_4; - re2 = re2_4; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - if (re.test(stem)) { - w = stem; - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = re_mgr1; - if (re2.test(stem)) { - w = stem; - } - } - - // Step 5 - re = re_5; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - re2 = re_meq1; - re3 = re3_5; - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { - w = stem; - } - } - - re = re_5_1; - re2 = re_mgr1; - if (re.test(w) && re2.test(w)) { - re = re_1b_2; - w = w.replace(re,""); - } - - // and turn initial Y back to y - - if (firstch == "y") { - w = firstch.toLowerCase() + w.substr(1); - } - - return w; - }; - - return function (token) { - return token.update(porterStemmer); - } -})(); - -lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.generateStopWordFilter builds a stopWordFilter function from the provided - * list of stop words. - * - * The built in lunr.stopWordFilter is built using this generator and can be used - * to generate custom stopWordFilters for applications or non English languages. - * - * @function - * @param {Array} token The token to pass through the filter - * @returns {lunr.PipelineFunction} - * @see lunr.Pipeline - * @see lunr.stopWordFilter - */ -lunr.generateStopWordFilter = function (stopWords) { - var words = stopWords.reduce(function (memo, stopWord) { - memo[stopWord] = stopWord - return memo - }, {}) - - return function (token) { - if (token && words[token.toString()] !== token.toString()) return token - } -} - -/** - * lunr.stopWordFilter is an English language stop word list filter, any words - * contained in the list will not be passed through the filter. - * - * This is intended to be used in the Pipeline. If the token does not pass the - * filter then undefined will be returned. - * - * @function - * @implements {lunr.PipelineFunction} - * @params {lunr.Token} token - A token to check for being a stop word. - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - */ -lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'all', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'any', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'do', - 'does', - 'either', - 'else', - 'ever', - 'every', - 'for', - 'from', - 'get', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'in', - 'into', - 'is', - 'it', - 'its', - 'just', - 'least', - 'let', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'where', - 'which', - 'while', - 'who', - 'whom', - 'why', - 'will', - 'with', - 'would', - 'yet', - 'you', - 'your' -]) - -lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.trimmer is a pipeline function for trimming non word - * characters from the beginning and end of tokens before they - * enter the index. - * - * This implementation may not work correctly for non latin - * characters and should either be removed or adapted for use - * with languages with non-latin characters. - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token The token to pass through the filter - * @returns {lunr.Token} - * @see lunr.Pipeline - */ -lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^\W+/, '').replace(/\W+$/, '') - }) -} - -lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A token set is used to store the unique list of all tokens - * within an index. Token sets are also used to represent an - * incoming query to the index, this query token set and index - * token set are then intersected to find which tokens to look - * up in the inverted index. - * - * A token set can hold multiple tokens, as in the case of the - * index token set, or it can hold a single token as in the - * case of a simple query token set. - * - * Additionally token sets are used to perform wildcard matching. - * Leading, contained and trailing wildcards are supported, and - * from this edit distance matching can also be provided. - * - * Token sets are implemented as a minimal finite state automata, - * where both common prefixes and suffixes are shared between tokens. - * This helps to reduce the space used for storing the token set. - * - * @constructor - */ -lunr.TokenSet = function () { - this.final = false - this.edges = {} - this.id = lunr.TokenSet._nextId - lunr.TokenSet._nextId += 1 -} - -/** - * Keeps track of the next, auto increment, identifier to assign - * to a new tokenSet. - * - * TokenSets require a unique identifier to be correctly minimised. - * - * @private - */ -lunr.TokenSet._nextId = 1 - -/** - * Creates a TokenSet instance from the given sorted array of words. - * - * @param {String[]} arr - A sorted array of strings to create the set from. - * @returns {lunr.TokenSet} - * @throws Will throw an error if the input array is not sorted. - */ -lunr.TokenSet.fromArray = function (arr) { - var builder = new lunr.TokenSet.Builder - - for (var i = 0, len = arr.length; i < len; i++) { - builder.insert(arr[i]) - } - - builder.finish() - return builder.root -} - -/** - * Creates a token set from a query clause. - * - * @private - * @param {Object} clause - A single clause from lunr.Query. - * @param {string} clause.term - The query clause term. - * @param {number} [clause.editDistance] - The optional edit distance for the term. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromClause = function (clause) { - if ('editDistance' in clause) { - return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) - } else { - return lunr.TokenSet.fromString(clause.term) - } -} - -/** - * Creates a token set representing a single string with a specified - * edit distance. - * - * Insertions, deletions, substitutions and transpositions are each - * treated as an edit distance of 1. - * - * Increasing the allowed edit distance will have a dramatic impact - * on the performance of both creating and intersecting these TokenSets. - * It is advised to keep the edit distance less than 3. - * - * @param {string} str - The string to create the token set from. - * @param {number} editDistance - The allowed edit distance to match. - * @returns {lunr.Vector} - */ -lunr.TokenSet.fromFuzzyString = function (str, editDistance) { - var root = new lunr.TokenSet - - var stack = [{ - node: root, - editsRemaining: editDistance, - str: str - }] - - while (stack.length) { - var frame = stack.pop() - - // no edit - if (frame.str.length > 0) { - var char = frame.str.charAt(0), - noEditNode - - if (char in frame.node.edges) { - noEditNode = frame.node.edges[char] - } else { - noEditNode = new lunr.TokenSet - frame.node.edges[char] = noEditNode - } - - if (frame.str.length == 1) { - noEditNode.final = true - } - - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) - } - - if (frame.editsRemaining == 0) { - continue - } - - // insertion - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode - } - - if (frame.str.length == 0) { - insertionNode.final = true - } - - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - - // deletion - // can only do a deletion if we have enough edits remaining - // and if there are characters left to delete in the string - if (frame.str.length > 1) { - stack.push({ - node: frame.node, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // deletion - // just removing the last character from the str - if (frame.str.length == 1) { - frame.node.final = true - } - - // substitution - // can only do a substitution if we have enough edits remaining - // and if there are characters left to substitute - if (frame.str.length >= 1) { - if ("*" in frame.node.edges) { - var substitutionNode = frame.node.edges["*"] - } else { - var substitutionNode = new lunr.TokenSet - frame.node.edges["*"] = substitutionNode - } - - if (frame.str.length == 1) { - substitutionNode.final = true - } - - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // transposition - // can only do a transposition if there are edits remaining - // and there are enough characters to transpose - if (frame.str.length > 1) { - var charA = frame.str.charAt(0), - charB = frame.str.charAt(1), - transposeNode - - if (charB in frame.node.edges) { - transposeNode = frame.node.edges[charB] - } else { - transposeNode = new lunr.TokenSet - frame.node.edges[charB] = transposeNode - } - - if (frame.str.length == 1) { - transposeNode.final = true - } - - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) - } - } - - return root -} - -/** - * Creates a TokenSet from a string. - * - * The string may contain one or more wildcard characters (*) - * that will allow wildcard matching when intersecting with - * another TokenSet. - * - * @param {string} str - The string to create a TokenSet from. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromString = function (str) { - var node = new lunr.TokenSet, - root = node - - /* - * Iterates through all characters within the passed string - * appending a node for each character. - * - * When a wildcard character is found then a self - * referencing edge is introduced to continually match - * any number of any characters. - */ - for (var i = 0, len = str.length; i < len; i++) { - var char = str[i], - final = (i == len - 1) - - if (char == "*") { - node.edges[char] = node - node.final = final - - } else { - var next = new lunr.TokenSet - next.final = final - - node.edges[char] = next - node = next - } - } - - return root -} - -/** - * Converts this TokenSet into an array of strings - * contained within the TokenSet. - * - * This is not intended to be used on a TokenSet that - * contains wildcards, in these cases the results are - * undefined and are likely to cause an infinite loop. - * - * @returns {string[]} - */ -lunr.TokenSet.prototype.toArray = function () { - var words = [] - - var stack = [{ - prefix: "", - node: this - }] - - while (stack.length) { - var frame = stack.pop(), - edges = Object.keys(frame.node.edges), - len = edges.length - - if (frame.node.final) { - /* In Safari, at this point the prefix is sometimes corrupted, see: - * https://github.com/olivernn/lunr.js/issues/279 Calling any - * String.prototype method forces Safari to "cast" this string to what - * it's supposed to be, fixing the bug. */ - frame.prefix.charAt(0) - words.push(frame.prefix) - } - - for (var i = 0; i < len; i++) { - var edge = edges[i] - - stack.push({ - prefix: frame.prefix.concat(edge), - node: frame.node.edges[edge] - }) - } - } - - return words -} - -/** - * Generates a string representation of a TokenSet. - * - * This is intended to allow TokenSets to be used as keys - * in objects, largely to aid the construction and minimisation - * of a TokenSet. As such it is not designed to be a human - * friendly representation of the TokenSet. - * - * @returns {string} - */ -lunr.TokenSet.prototype.toString = function () { - // NOTE: Using Object.keys here as this.edges is very likely - // to enter 'hash-mode' with many keys being added - // - // avoiding a for-in loop here as it leads to the function - // being de-optimised (at least in V8). From some simple - // benchmarks the performance is comparable, but allowing - // V8 to optimize may mean easy performance wins in the future. - - if (this._str) { - return this._str - } - - var str = this.final ? '1' : '0', - labels = Object.keys(this.edges).sort(), - len = labels.length - - for (var i = 0; i < len; i++) { - var label = labels[i], - node = this.edges[label] - - str = str + label + node.id - } - - return str -} - -/** - * Returns a new TokenSet that is the intersection of - * this TokenSet and the passed TokenSet. - * - * This intersection will take into account any wildcards - * contained within the TokenSet. - * - * @param {lunr.TokenSet} b - An other TokenSet to intersect with. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.prototype.intersect = function (b) { - var output = new lunr.TokenSet, - frame = undefined - - var stack = [{ - qNode: b, - output: output, - node: this - }] - - while (stack.length) { - frame = stack.pop() - - // NOTE: As with the #toString method, we are using - // Object.keys and a for loop instead of a for-in loop - // as both of these objects enter 'hash' mode, causing - // the function to be de-optimised in V8 - var qEdges = Object.keys(frame.qNode.edges), - qLen = qEdges.length, - nEdges = Object.keys(frame.node.edges), - nLen = nEdges.length - - for (var q = 0; q < qLen; q++) { - var qEdge = qEdges[q] - - for (var n = 0; n < nLen; n++) { - var nEdge = nEdges[n] - - if (nEdge == qEdge || qEdge == '*') { - var node = frame.node.edges[nEdge], - qNode = frame.qNode.edges[qEdge], - final = node.final && qNode.final, - next = undefined - - if (nEdge in frame.output.edges) { - // an edge already exists for this character - // no need to create a new node, just set the finality - // bit unless this node is already final - next = frame.output.edges[nEdge] - next.final = next.final || final - - } else { - // no edge exists yet, must create one - // set the finality bit and insert it - // into the output - next = new lunr.TokenSet - next.final = final - frame.output.edges[nEdge] = next - } - - stack.push({ - qNode: qNode, - output: next, - node: node - }) - } - } - } - } - - return output -} -lunr.TokenSet.Builder = function () { - this.previousWord = "" - this.root = new lunr.TokenSet - this.uncheckedNodes = [] - this.minimizedNodes = {} -} - -lunr.TokenSet.Builder.prototype.insert = function (word) { - var node, - commonPrefix = 0 - - if (word < this.previousWord) { - throw new Error ("Out of order word insertion") - } - - for (var i = 0; i < word.length && i < this.previousWord.length; i++) { - if (word[i] != this.previousWord[i]) break - commonPrefix++ - } - - this.minimize(commonPrefix) - - if (this.uncheckedNodes.length == 0) { - node = this.root - } else { - node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child - } - - for (var i = commonPrefix; i < word.length; i++) { - var nextNode = new lunr.TokenSet, - char = word[i] - - node.edges[char] = nextNode - - this.uncheckedNodes.push({ - parent: node, - char: char, - child: nextNode - }) - - node = nextNode - } - - node.final = true - this.previousWord = word -} - -lunr.TokenSet.Builder.prototype.finish = function () { - this.minimize(0) -} - -lunr.TokenSet.Builder.prototype.minimize = function (downTo) { - for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { - var node = this.uncheckedNodes[i], - childKey = node.child.toString() - - if (childKey in this.minimizedNodes) { - node.parent.edges[node.char] = this.minimizedNodes[childKey] - } else { - // Cache the key for this node since - // we know it can't change anymore - node.child._str = childKey - - this.minimizedNodes[childKey] = node.child - } - - this.uncheckedNodes.pop() - } -} -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * An index contains the built index of all documents and provides a query interface - * to the index. - * - * Usually instances of lunr.Index will not be created using this constructor, instead - * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be - * used to load previously built and serialized indexes. - * - * @constructor - * @param {Object} attrs - The attributes of the built search index. - * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.fieldVectors - Field vectors - * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. - * @param {string[]} attrs.fields - The names of indexed document fields. - * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. - */ -lunr.Index = function (attrs) { - this.invertedIndex = attrs.invertedIndex - this.fieldVectors = attrs.fieldVectors - this.tokenSet = attrs.tokenSet - this.fields = attrs.fields - this.pipeline = attrs.pipeline -} - -/** - * A result contains details of a document matching a search query. - * @typedef {Object} lunr.Index~Result - * @property {string} ref - The reference of the document this result represents. - * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. - * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. - */ - -/** - * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple - * query language which itself is parsed into an instance of lunr.Query. - * - * For programmatically building queries it is advised to directly use lunr.Query, the query language - * is best used for human entered text rather than program generated text. - * - * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported - * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' - * or 'world', though those that contain both will rank higher in the results. - * - * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can - * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding - * wildcards will increase the number of documents that will be found but can also have a negative - * impact on query performance, especially with wildcards at the beginning of a term. - * - * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term - * hello in the title field will match this query. Using a field not present in the index will lead - * to an error being thrown. - * - * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term - * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported - * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. - * Avoid large values for edit distance to improve query performance. - * - * Each term also supports a presence modifier. By default a term's presence in document is optional, however - * this can be changed to either required or prohibited. For a term's presence to be required in a document the - * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and - * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not - * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. - * - * To escape special characters the backslash character '\' can be used, this allows searches to include - * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead - * of attempting to apply a boost of 2 to the search term "foo". - * - * @typedef {string} lunr.Index~QueryString - * @example Simple single term query - * hello - * @example Multiple term query - * hello world - * @example term scoped to a field - * title:hello - * @example term with a boost of 10 - * hello^10 - * @example term with an edit distance of 2 - * hello~2 - * @example terms with presence modifiers - * -foo +bar baz - */ - -/** - * Performs a search against the index using lunr query syntax. - * - * Results will be returned sorted by their score, the most relevant results - * will be returned first. For details on how the score is calculated, please see - * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. - * - * For more programmatic querying use lunr.Index#query. - * - * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. - * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.search = function (queryString) { - return this.query(function (query) { - var parser = new lunr.QueryParser(queryString, query) - parser.parse() - }) -} - -/** - * A query builder callback provides a query object to be used to express - * the query to perform on the index. - * - * @callback lunr.Index~queryBuilder - * @param {lunr.Query} query - The query object to build up. - * @this lunr.Query - */ - -/** - * Performs a query against the index using the yielded lunr.Query object. - * - * If performing programmatic queries against the index, this method is preferred - * over lunr.Index#search so as to avoid the additional query parsing overhead. - * - * A query object is yielded to the supplied function which should be used to - * express the query to be run against the index. - * - * Note that although this function takes a callback parameter it is _not_ an - * asynchronous operation, the callback is just yielded a query object to be - * customized. - * - * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.query = function (fn) { - // for each query clause - // * process terms - // * expand terms from token set - // * find matching documents and metadata - // * get document vectors - // * score documents - - var query = new lunr.Query(this.fields), - matchingFields = Object.create(null), - queryVectors = Object.create(null), - termFieldCache = Object.create(null), - requiredMatches = Object.create(null), - prohibitedMatches = Object.create(null) - - /* - * To support field level boosts a query vector is created per - * field. An empty vector is eagerly created to support negated - * queries. - */ - for (var i = 0; i < this.fields.length; i++) { - queryVectors[this.fields[i]] = new lunr.Vector - } - - fn.call(query, query) - - for (var i = 0; i < query.clauses.length; i++) { - /* - * Unless the pipeline has been disabled for this term, which is - * the case for terms with wildcards, we need to pass the clause - * term through the search pipeline. A pipeline returns an array - * of processed terms. Pipeline functions may expand the passed - * term, which means we may end up performing multiple index lookups - * for a single query term. - */ - var clause = query.clauses[i], - terms = null, - clauseMatches = lunr.Set.empty - - if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term, { - fields: clause.fields - }) - } else { - terms = [clause.term] - } - - for (var m = 0; m < terms.length; m++) { - var term = terms[m] - - /* - * Each term returned from the pipeline needs to use the same query - * clause object, e.g. the same boost and or edit distance. The - * simplest way to do this is to re-use the clause object but mutate - * its term property. - */ - clause.term = term - - /* - * From the term in the clause we create a token set which will then - * be used to intersect the indexes token set to get a list of terms - * to lookup in the inverted index - */ - var termTokenSet = lunr.TokenSet.fromClause(clause), - expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() - - /* - * If a term marked as required does not exist in the tokenSet it is - * impossible for the search to return any matches. We set all the field - * scoped required matches set to empty and stop examining any further - * clauses. - */ - if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = lunr.Set.empty - } - - break - } - - for (var j = 0; j < expandedTerms.length; j++) { - /* - * For each term get the posting and termIndex, this is required for - * building the query vector. - */ - var expandedTerm = expandedTerms[j], - posting = this.invertedIndex[expandedTerm], - termIndex = posting._index - - for (var k = 0; k < clause.fields.length; k++) { - /* - * For each field that this query term is scoped by (by default - * all fields are in scope) we need to get all the document refs - * that have this term in that field. - * - * The posting is the entry in the invertedIndex for the matching - * term from above. - */ - var field = clause.fields[k], - fieldPosting = posting[field], - matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field, - matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) - - /* - * if the presence of this term is required ensure that the matching - * documents are added to the set of required matches for this clause. - * - */ - if (clause.presence == lunr.Query.presence.REQUIRED) { - clauseMatches = clauseMatches.union(matchingDocumentsSet) - - if (requiredMatches[field] === undefined) { - requiredMatches[field] = lunr.Set.complete - } - } - - /* - * if the presence of this term is prohibited ensure that the matching - * documents are added to the set of prohibited matches for this field, - * creating that set if it does not yet exist. - */ - if (clause.presence == lunr.Query.presence.PROHIBITED) { - if (prohibitedMatches[field] === undefined) { - prohibitedMatches[field] = lunr.Set.empty - } - - prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) - - /* - * Prohibited matches should not be part of the query vector used for - * similarity scoring and no metadata should be extracted so we continue - * to the next field - */ - continue - } - - /* - * The query field vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. - * Using upsert because there could already be an entry in the vector - * for the term we are working with. In that case we just add the scores - * together. - */ - queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) - - /** - * If we've already seen this term, field combo then we've already collected - * the matching documents and metadata, no need to go through all that again - */ - if (termFieldCache[termField]) { - continue - } - - for (var l = 0; l < matchingDocumentRefs.length; l++) { - /* - * All metadata for this term/field/document triple - * are then extracted and collected into an instance - * of lunr.MatchData ready to be returned in the query - * results - */ - var matchingDocumentRef = matchingDocumentRefs[l], - matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), - metadata = fieldPosting[matchingDocumentRef], - fieldMatch - - if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { - matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) - } else { - fieldMatch.add(expandedTerm, field, metadata) - } - - } - - termFieldCache[termField] = true - } - } - } - - /** - * If the presence was required we need to update the requiredMatches field sets. - * We do this after all fields for the term have collected their matches because - * the clause terms presence is required in _any_ of the fields not _all_ of the - * fields. - */ - if (clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) - } - } - } - - /** - * Need to combine the field scoped required and prohibited - * matching documents into a global set of required and prohibited - * matches - */ - var allRequiredMatches = lunr.Set.complete, - allProhibitedMatches = lunr.Set.empty - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i] - - if (requiredMatches[field]) { - allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) - } - - if (prohibitedMatches[field]) { - allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) - } - } - - var matchingFieldRefs = Object.keys(matchingFields), - results = [], - matches = Object.create(null) - - /* - * If the query is negated (contains only prohibited terms) - * we need to get _all_ fieldRefs currently existing in the - * index. This is only done when we know that the query is - * entirely prohibited terms to avoid any cost of getting all - * fieldRefs unnecessarily. - * - * Additionally, blank MatchData must be created to correctly - * populate the results. - */ - if (query.isNegated()) { - matchingFieldRefs = Object.keys(this.fieldVectors) - - for (var i = 0; i < matchingFieldRefs.length; i++) { - var matchingFieldRef = matchingFieldRefs[i] - var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) - matchingFields[matchingFieldRef] = new lunr.MatchData - } - } - - for (var i = 0; i < matchingFieldRefs.length; i++) { - /* - * Currently we have document fields that match the query, but we - * need to return documents. The matchData and scores are combined - * from multiple fields belonging to the same document. - * - * Scores are calculated by field, using the query vectors created - * above, and combined into a final document score using addition. - */ - var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef - - if (!allRequiredMatches.contains(docRef)) { - continue - } - - if (allProhibitedMatches.contains(docRef)) { - continue - } - - var fieldVector = this.fieldVectors[fieldRef], - score = queryVectors[fieldRef.fieldName].similarity(fieldVector), - docMatch - - if ((docMatch = matches[docRef]) !== undefined) { - docMatch.score += score - docMatch.matchData.combine(matchingFields[fieldRef]) - } else { - var match = { - ref: docRef, - score: score, - matchData: matchingFields[fieldRef] - } - matches[docRef] = match - results.push(match) - } - } - - /* - * Sort the results objects by score, highest first. - */ - return results.sort(function (a, b) { - return b.score - a.score - }) -} - -/** - * Prepares the index for JSON serialization. - * - * The schema for this JSON blob will be described in a - * separate JSON schema file. - * - * @returns {Object} - */ -lunr.Index.prototype.toJSON = function () { - var invertedIndex = Object.keys(this.invertedIndex) - .sort() - .map(function (term) { - return [term, this.invertedIndex[term]] - }, this) - - var fieldVectors = Object.keys(this.fieldVectors) - .map(function (ref) { - return [ref, this.fieldVectors[ref].toJSON()] - }, this) - - return { - version: lunr.version, - fields: this.fields, - fieldVectors: fieldVectors, - invertedIndex: invertedIndex, - pipeline: this.pipeline.toJSON() - } -} - -/** - * Loads a previously serialized lunr.Index - * - * @param {Object} serializedIndex - A previously serialized lunr.Index - * @returns {lunr.Index} - */ -lunr.Index.load = function (serializedIndex) { - var attrs = {}, - fieldVectors = {}, - serializedVectors = serializedIndex.fieldVectors, - invertedIndex = Object.create(null), - serializedInvertedIndex = serializedIndex.invertedIndex, - tokenSetBuilder = new lunr.TokenSet.Builder, - pipeline = lunr.Pipeline.load(serializedIndex.pipeline) - - if (serializedIndex.version != lunr.version) { - lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") - } - - for (var i = 0; i < serializedVectors.length; i++) { - var tuple = serializedVectors[i], - ref = tuple[0], - elements = tuple[1] - - fieldVectors[ref] = new lunr.Vector(elements) - } - - for (var i = 0; i < serializedInvertedIndex.length; i++) { - var tuple = serializedInvertedIndex[i], - term = tuple[0], - posting = tuple[1] - - tokenSetBuilder.insert(term) - invertedIndex[term] = posting - } - - tokenSetBuilder.finish() - - attrs.fields = serializedIndex.fields - - attrs.fieldVectors = fieldVectors - attrs.invertedIndex = invertedIndex - attrs.tokenSet = tokenSetBuilder.root - attrs.pipeline = pipeline - - return new lunr.Index(attrs) -} -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Builder performs indexing on a set of documents and - * returns instances of lunr.Index ready for querying. - * - * All configuration of the index is done via the builder, the - * fields to index, the document reference, the text processing - * pipeline and document scoring parameters are all set on the - * builder before indexing. - * - * @constructor - * @property {string} _ref - Internal reference to the document reference field. - * @property {string[]} _fields - Internal reference to the document fields to index. - * @property {object} invertedIndex - The inverted index maps terms to document fields. - * @property {object} documentTermFrequencies - Keeps track of document term frequencies. - * @property {object} documentLengths - Keeps track of the length of documents added to the index. - * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. - * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. - * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. - * @property {number} documentCount - Keeps track of the total number of documents indexed. - * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. - * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. - * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. - * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. - */ -lunr.Builder = function () { - this._ref = "id" - this._fields = Object.create(null) - this._documents = Object.create(null) - this.invertedIndex = Object.create(null) - this.fieldTermFrequencies = {} - this.fieldLengths = {} - this.tokenizer = lunr.tokenizer - this.pipeline = new lunr.Pipeline - this.searchPipeline = new lunr.Pipeline - this.documentCount = 0 - this._b = 0.75 - this._k1 = 1.2 - this.termIndex = 0 - this.metadataWhitelist = [] -} - -/** - * Sets the document field used as the document reference. Every document must have this field. - * The type of this field in the document should be a string, if it is not a string it will be - * coerced into a string by calling toString. - * - * The default ref is 'id'. - * - * The ref should _not_ be changed during indexing, it should be set before any documents are - * added to the index. Changing it during indexing can lead to inconsistent results. - * - * @param {string} ref - The name of the reference field in the document. - */ -lunr.Builder.prototype.ref = function (ref) { - this._ref = ref -} - -/** - * A function that is used to extract a field from a document. - * - * Lunr expects a field to be at the top level of a document, if however the field - * is deeply nested within a document an extractor function can be used to extract - * the right field for indexing. - * - * @callback fieldExtractor - * @param {object} doc - The document being added to the index. - * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. - * @example Extracting a nested field - * function (doc) { return doc.nested.field } - */ - -/** - * Adds a field to the list of document fields that will be indexed. Every document being - * indexed should have this field. Null values for this field in indexed documents will - * not cause errors but will limit the chance of that document being retrieved by searches. - * - * All fields should be added before adding documents to the index. Adding fields after - * a document has been indexed will have no effect on already indexed documents. - * - * Fields can be boosted at build time. This allows terms within that field to have more - * importance when ranking search results. Use a field boost to specify that matches within - * one field are more important than other fields. - * - * @param {string} fieldName - The name of a field to index in all documents. - * @param {object} attributes - Optional attributes associated with this field. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. - * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. - * @throws {RangeError} fieldName cannot contain unsupported characters '/' - */ -lunr.Builder.prototype.field = function (fieldName, attributes) { - if (/\//.test(fieldName)) { - throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") - } - - this._fields[fieldName] = attributes || {} -} - -/** - * A parameter to tune the amount of field length normalisation that is applied when - * calculating relevance scores. A value of 0 will completely disable any normalisation - * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b - * will be clamped to the range 0 - 1. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.b = function (number) { - if (number < 0) { - this._b = 0 - } else if (number > 1) { - this._b = 1 - } else { - this._b = number - } -} - -/** - * A parameter that controls the speed at which a rise in term frequency results in term - * frequency saturation. The default value is 1.2. Setting this to a higher value will give - * slower saturation levels, a lower value will result in quicker saturation. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.k1 = function (number) { - this._k1 = number -} - -/** - * Adds a document to the index. - * - * Before adding fields to the index the index should have been fully setup, with the document - * ref and all fields to index already having been specified. - * - * The document must have a field name as specified by the ref (by default this is 'id') and - * it should have all fields defined for indexing, though null or undefined values will not - * cause errors. - * - * Entire documents can be boosted at build time. Applying a boost to a document indicates that - * this document should rank higher in search results than other documents. - * - * @param {object} doc - The document to add to the index. - * @param {object} attributes - Optional attributes associated with this document. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. - */ -lunr.Builder.prototype.add = function (doc, attributes) { - var docRef = doc[this._ref], - fields = Object.keys(this._fields) - - this._documents[docRef] = attributes || {} - this.documentCount += 1 - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i], - extractor = this._fields[fieldName].extractor, - field = extractor ? extractor(doc) : doc[fieldName], - tokens = this.tokenizer(field, { - fields: [fieldName] - }), - terms = this.pipeline.run(tokens), - fieldRef = new lunr.FieldRef (docRef, fieldName), - fieldTerms = Object.create(null) - - this.fieldTermFrequencies[fieldRef] = fieldTerms - this.fieldLengths[fieldRef] = 0 - - // store the length of this field for this document - this.fieldLengths[fieldRef] += terms.length - - // calculate term frequencies for this field - for (var j = 0; j < terms.length; j++) { - var term = terms[j] - - if (fieldTerms[term] == undefined) { - fieldTerms[term] = 0 - } - - fieldTerms[term] += 1 - - // add to inverted index - // create an initial posting if one doesn't exist - if (this.invertedIndex[term] == undefined) { - var posting = Object.create(null) - posting["_index"] = this.termIndex - this.termIndex += 1 - - for (var k = 0; k < fields.length; k++) { - posting[fields[k]] = Object.create(null) - } - - this.invertedIndex[term] = posting - } - - // add an entry for this term/fieldName/docRef to the invertedIndex - if (this.invertedIndex[term][fieldName][docRef] == undefined) { - this.invertedIndex[term][fieldName][docRef] = Object.create(null) - } - - // store all whitelisted metadata about this token in the - // inverted index - for (var l = 0; l < this.metadataWhitelist.length; l++) { - var metadataKey = this.metadataWhitelist[l], - metadata = term.metadata[metadataKey] - - if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { - this.invertedIndex[term][fieldName][docRef][metadataKey] = [] - } - - this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) - } - } - - } -} - -/** - * Calculates the average document length for this index - * - * @private - */ -lunr.Builder.prototype.calculateAverageFieldLengths = function () { - - var fieldRefs = Object.keys(this.fieldLengths), - numberOfFields = fieldRefs.length, - accumulator = {}, - documentsWithField = {} - - for (var i = 0; i < numberOfFields; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName - - documentsWithField[field] || (documentsWithField[field] = 0) - documentsWithField[field] += 1 - - accumulator[field] || (accumulator[field] = 0) - accumulator[field] += this.fieldLengths[fieldRef] - } - - var fields = Object.keys(this._fields) - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i] - accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] - } - - this.averageFieldLength = accumulator -} - -/** - * Builds a vector space model of every document using lunr.Vector - * - * @private - */ -lunr.Builder.prototype.createFieldVectors = function () { - var fieldVectors = {}, - fieldRefs = Object.keys(this.fieldTermFrequencies), - fieldRefsLength = fieldRefs.length, - termIdfCache = Object.create(null) - - for (var i = 0; i < fieldRefsLength; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - fieldName = fieldRef.fieldName, - fieldLength = this.fieldLengths[fieldRef], - fieldVector = new lunr.Vector, - termFrequencies = this.fieldTermFrequencies[fieldRef], - terms = Object.keys(termFrequencies), - termsLength = terms.length - - - var fieldBoost = this._fields[fieldName].boost || 1, - docBoost = this._documents[fieldRef.docRef].boost || 1 - - for (var j = 0; j < termsLength; j++) { - var term = terms[j], - tf = termFrequencies[term], - termIndex = this.invertedIndex[term]._index, - idf, score, scoreWithPrecision - - if (termIdfCache[term] === undefined) { - idf = lunr.idf(this.invertedIndex[term], this.documentCount) - termIdfCache[term] = idf - } else { - idf = termIdfCache[term] - } - - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) - score *= fieldBoost - score *= docBoost - scoreWithPrecision = Math.round(score * 1000) / 1000 - // Converts 1.23456789 to 1.234. - // Reducing the precision so that the vectors take up less - // space when serialised. Doing it now so that they behave - // the same before and after serialisation. Also, this is - // the fastest approach to reducing a number's precision in - // JavaScript. - - fieldVector.insert(termIndex, scoreWithPrecision) - } - - fieldVectors[fieldRef] = fieldVector - } - - this.fieldVectors = fieldVectors -} - -/** - * Creates a token set of all tokens in the index using lunr.TokenSet - * - * @private - */ -lunr.Builder.prototype.createTokenSet = function () { - this.tokenSet = lunr.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort() - ) -} - -/** - * Builds the index, creating an instance of lunr.Index. - * - * This completes the indexing process and should only be called - * once all documents have been added to the index. - * - * @returns {lunr.Index} - */ -lunr.Builder.prototype.build = function () { - this.calculateAverageFieldLengths() - this.createFieldVectors() - this.createTokenSet() - - return new lunr.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline - }) -} - -/** - * Applies a plugin to the index builder. - * - * A plugin is a function that is called with the index builder as its context. - * Plugins can be used to customise or extend the behaviour of the index - * in some way. A plugin is just a function, that encapsulated the custom - * behaviour that should be applied when building the index. - * - * The plugin function will be called with the index builder as its argument, additional - * arguments can also be passed when calling use. The function will be called - * with the index builder as its context. - * - * @param {Function} plugin The plugin to apply. - */ -lunr.Builder.prototype.use = function (fn) { - var args = Array.prototype.slice.call(arguments, 1) - args.unshift(this) - fn.apply(this, args) -} -/** - * Contains and collects metadata about a matching document. - * A single instance of lunr.MatchData is returned as part of every - * lunr.Index~Result. - * - * @constructor - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - * @property {object} metadata - A cloned collection of metadata associated with this document. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData = function (term, field, metadata) { - var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata || {}) - - // Cloning the metadata to prevent the original - // being mutated during match data combination. - // Metadata is kept in an array within the inverted - // index so cloning the data can be done with - // Array#slice - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - clonedMetadata[key] = metadata[key].slice() - } - - this.metadata = Object.create(null) - - if (term !== undefined) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata - } -} - -/** - * An instance of lunr.MatchData will be created for every term that matches a - * document. However only one instance is required in a lunr.Index~Result. This - * method combines metadata from another instance of lunr.MatchData with this - * objects metadata. - * - * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData.prototype.combine = function (otherMatchData) { - var terms = Object.keys(otherMatchData.metadata) - - for (var i = 0; i < terms.length; i++) { - var term = terms[i], - fields = Object.keys(otherMatchData.metadata[term]) - - if (this.metadata[term] == undefined) { - this.metadata[term] = Object.create(null) - } - - for (var j = 0; j < fields.length; j++) { - var field = fields[j], - keys = Object.keys(otherMatchData.metadata[term][field]) - - if (this.metadata[term][field] == undefined) { - this.metadata[term][field] = Object.create(null) - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k] - - if (this.metadata[term][field][key] == undefined) { - this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] - } else { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) - } - - } - } - } -} - -/** - * Add metadata for a term/field pair to this instance of match data. - * - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - */ -lunr.MatchData.prototype.add = function (term, field, metadata) { - if (!(term in this.metadata)) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = metadata - return - } - - if (!(field in this.metadata[term])) { - this.metadata[term][field] = metadata - return - } - - var metadataKeys = Object.keys(metadata) - - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - - if (key in this.metadata[term][field]) { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) - } else { - this.metadata[term][field][key] = metadata[key] - } - } -} -/** - * A lunr.Query provides a programmatic way of defining queries to be performed - * against a {@link lunr.Index}. - * - * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method - * so the query object is pre-initialized with the right index fields. - * - * @constructor - * @property {lunr.Query~Clause[]} clauses - An array of query clauses. - * @property {string[]} allFields - An array of all available fields in a lunr.Index. - */ -lunr.Query = function (allFields) { - this.clauses = [] - this.allFields = allFields -} - -/** - * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. - * - * This allows wildcards to be added to the beginning and end of a term without having to manually do any string - * concatenation. - * - * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. - * - * @constant - * @default - * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour - * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists - * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with trailing wildcard - * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) - * @example query term with leading and trailing wildcard - * query.term('foo', { - * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING - * }) - */ - -lunr.Query.wildcard = new String ("*") -lunr.Query.wildcard.NONE = 0 -lunr.Query.wildcard.LEADING = 1 -lunr.Query.wildcard.TRAILING = 2 - -/** - * Constants for indicating what kind of presence a term must have in matching documents. - * - * @constant - * @enum {number} - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with required presence - * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) - */ -lunr.Query.presence = { - /** - * Term's presence in a document is optional, this is the default value. - */ - OPTIONAL: 1, - - /** - * Term's presence in a document is required, documents that do not contain - * this term will not be returned. - */ - REQUIRED: 2, - - /** - * Term's presence in a document is prohibited, documents that do contain - * this term will not be returned. - */ - PROHIBITED: 3 -} - -/** - * A single clause in a {@link lunr.Query} contains a term and details on how to - * match that term against a {@link lunr.Index}. - * - * @typedef {Object} lunr.Query~Clause - * @property {string[]} fields - The fields in an index this clause should be matched against. - * @property {number} [boost=1] - Any boost that should be applied when matching this clause. - * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. - * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. - * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. - */ - -/** - * Adds a {@link lunr.Query~Clause} to this query. - * - * Unless the clause contains the fields to be matched all fields will be matched. In addition - * a default boost of 1 is applied to the clause. - * - * @param {lunr.Query~Clause} clause - The clause to add to this query. - * @see lunr.Query~Clause - * @returns {lunr.Query} - */ -lunr.Query.prototype.clause = function (clause) { - if (!('fields' in clause)) { - clause.fields = this.allFields - } - - if (!('boost' in clause)) { - clause.boost = 1 - } - - if (!('usePipeline' in clause)) { - clause.usePipeline = true - } - - if (!('wildcard' in clause)) { - clause.wildcard = lunr.Query.wildcard.NONE - } - - if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { - clause.term = "*" + clause.term - } - - if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { - clause.term = "" + clause.term + "*" - } - - if (!('presence' in clause)) { - clause.presence = lunr.Query.presence.OPTIONAL - } - - this.clauses.push(clause) - - return this -} - -/** - * A negated query is one in which every clause has a presence of - * prohibited. These queries require some special processing to return - * the expected results. - * - * @returns boolean - */ -lunr.Query.prototype.isNegated = function () { - for (var i = 0; i < this.clauses.length; i++) { - if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { - return false - } - } - - return true -} - -/** - * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} - * to the list of clauses that make up this query. - * - * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion - * to a token or token-like string should be done before calling this method. - * - * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an - * array, each term in the array will share the same options. - * - * @param {object|object[]} term - The term(s) to add to the query. - * @param {object} [options] - Any additional properties to add to the query clause. - * @returns {lunr.Query} - * @see lunr.Query#clause - * @see lunr.Query~Clause - * @example adding a single term to a query - * query.term("foo") - * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard - * query.term("foo", { - * fields: ["title"], - * boost: 10, - * wildcard: lunr.Query.wildcard.TRAILING - * }) - * @example using lunr.tokenizer to convert a string to tokens before using them as terms - * query.term(lunr.tokenizer("foo bar")) - */ -lunr.Query.prototype.term = function (term, options) { - if (Array.isArray(term)) { - term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) - return this - } - - var clause = options || {} - clause.term = term.toString() - - this.clause(clause) - - return this -} -lunr.QueryParseError = function (message, start, end) { - this.name = "QueryParseError" - this.message = message - this.start = start - this.end = end -} - -lunr.QueryParseError.prototype = new Error -lunr.QueryLexer = function (str) { - this.lexemes = [] - this.str = str - this.length = str.length - this.pos = 0 - this.start = 0 - this.escapeCharPositions = [] -} - -lunr.QueryLexer.prototype.run = function () { - var state = lunr.QueryLexer.lexText - - while (state) { - state = state(this) - } -} - -lunr.QueryLexer.prototype.sliceString = function () { - var subSlices = [], - sliceStart = this.start, - sliceEnd = this.pos - - for (var i = 0; i < this.escapeCharPositions.length; i++) { - sliceEnd = this.escapeCharPositions[i] - subSlices.push(this.str.slice(sliceStart, sliceEnd)) - sliceStart = sliceEnd + 1 - } - - subSlices.push(this.str.slice(sliceStart, this.pos)) - this.escapeCharPositions.length = 0 - - return subSlices.join('') -} - -lunr.QueryLexer.prototype.emit = function (type) { - this.lexemes.push({ - type: type, - str: this.sliceString(), - start: this.start, - end: this.pos - }) - - this.start = this.pos -} - -lunr.QueryLexer.prototype.escapeCharacter = function () { - this.escapeCharPositions.push(this.pos - 1) - this.pos += 1 -} - -lunr.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) { - return lunr.QueryLexer.EOS - } - - var char = this.str.charAt(this.pos) - this.pos += 1 - return char -} - -lunr.QueryLexer.prototype.width = function () { - return this.pos - this.start -} - -lunr.QueryLexer.prototype.ignore = function () { - if (this.start == this.pos) { - this.pos += 1 - } - - this.start = this.pos -} - -lunr.QueryLexer.prototype.backup = function () { - this.pos -= 1 -} - -lunr.QueryLexer.prototype.acceptDigitRun = function () { - var char, charCode - - do { - char = this.next() - charCode = char.charCodeAt(0) - } while (charCode > 47 && charCode < 58) - - if (char != lunr.QueryLexer.EOS) { - this.backup() - } -} - -lunr.QueryLexer.prototype.more = function () { - return this.pos < this.length -} - -lunr.QueryLexer.EOS = 'EOS' -lunr.QueryLexer.FIELD = 'FIELD' -lunr.QueryLexer.TERM = 'TERM' -lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' -lunr.QueryLexer.BOOST = 'BOOST' -lunr.QueryLexer.PRESENCE = 'PRESENCE' - -lunr.QueryLexer.lexField = function (lexer) { - lexer.backup() - lexer.emit(lunr.QueryLexer.FIELD) - lexer.ignore() - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexTerm = function (lexer) { - if (lexer.width() > 1) { - lexer.backup() - lexer.emit(lunr.QueryLexer.TERM) - } - - lexer.ignore() - - if (lexer.more()) { - return lunr.QueryLexer.lexText - } -} - -lunr.QueryLexer.lexEditDistance = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexBoost = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.BOOST) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexEOS = function (lexer) { - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } -} - -// This matches the separator used when tokenising fields -// within a document. These should match otherwise it is -// not possible to search for some tokens within a document. -// -// It is possible for the user to change the separator on the -// tokenizer so it _might_ clash with any other of the special -// characters already used within the search string, e.g. :. -// -// This means that it is possible to change the separator in -// such a way that makes some words unsearchable using a search -// string. -lunr.QueryLexer.termSeparator = lunr.tokenizer.separator - -lunr.QueryLexer.lexText = function (lexer) { - while (true) { - var char = lexer.next() - - if (char == lunr.QueryLexer.EOS) { - return lunr.QueryLexer.lexEOS - } - - // Escape character is '\' - if (char.charCodeAt(0) == 92) { - lexer.escapeCharacter() - continue - } - - if (char == ":") { - return lunr.QueryLexer.lexField - } - - if (char == "~") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexEditDistance - } - - if (char == "^") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexBoost - } - - // "+" indicates term presence is required - // checking for length to ensure that only - // leading "+" are considered - if (char == "+" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - // "-" indicates term presence is prohibited - // checking for length to ensure that only - // leading "-" are considered - if (char == "-" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - if (char.match(lunr.QueryLexer.termSeparator)) { - return lunr.QueryLexer.lexTerm - } - } -} - -lunr.QueryParser = function (str, query) { - this.lexer = new lunr.QueryLexer (str) - this.query = query - this.currentClause = {} - this.lexemeIdx = 0 -} - -lunr.QueryParser.prototype.parse = function () { - this.lexer.run() - this.lexemes = this.lexer.lexemes - - var state = lunr.QueryParser.parseClause - - while (state) { - state = state(this) - } - - return this.query -} - -lunr.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx] -} - -lunr.QueryParser.prototype.consumeLexeme = function () { - var lexeme = this.peekLexeme() - this.lexemeIdx += 1 - return lexeme -} - -lunr.QueryParser.prototype.nextClause = function () { - var completedClause = this.currentClause - this.query.clause(completedClause) - this.currentClause = {} -} - -lunr.QueryParser.parseClause = function (parser) { - var lexeme = parser.peekLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.type) { - case lunr.QueryLexer.PRESENCE: - return lunr.QueryParser.parsePresence - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expected either a field or a term, found " + lexeme.type - - if (lexeme.str.length >= 1) { - errorMessage += " with value '" + lexeme.str + "'" - } - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } -} - -lunr.QueryParser.parsePresence = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.str) { - case "-": - parser.currentClause.presence = lunr.Query.presence.PROHIBITED - break - case "+": - parser.currentClause.presence = lunr.Query.presence.REQUIRED - break - default: - var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term or field, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseField = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - if (parser.query.allFields.indexOf(lexeme.str) == -1) { - var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), - errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.fields = [lexeme.str] - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseTerm = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - parser.currentClause.term = lexeme.str.toLowerCase() - - if (lexeme.str.indexOf("*") != -1) { - parser.currentClause.usePipeline = false - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseEditDistance = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var editDistance = parseInt(lexeme.str, 10) - - if (isNaN(editDistance)) { - var errorMessage = "edit distance must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.editDistance = editDistance - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseBoost = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var boost = parseInt(lexeme.str, 10) - - if (isNaN(boost)) { - var errorMessage = "boost must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.boost = boost - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - - /** - * export the module via AMD, CommonJS or as a browser global - * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js - */ - ;(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(factory) - } else if (typeof exports === 'object') { - /** - * Node. Does not work with strict CommonJS, but - * only CommonJS-like enviroments that support module.exports, - * like Node. - */ - module.exports = factory() - } else { - // Browser globals (root is window) - root.lunr = factory() - } - }(this, function () { - /** - * Just return a value to define the module export. - * This example returns an object, but the module - * can return a function as the exported value. - */ - return lunr - })) -})(); diff --git a/themes/kinvolk-generic/assets/scss/_custom.scss b/themes/kinvolk-generic/assets/scss/_custom.scss deleted file mode 100644 index 70e253a..0000000 --- a/themes/kinvolk-generic/assets/scss/_custom.scss +++ /dev/null @@ -1,242 +0,0 @@ -// This file should only contain variables and elements -// overridden from the Bootstrap defaults. - -// Variable overrides - -// Corners -$enable-rounded: false; - -$enable-validation-icons: false; - -// Fonts -$font-family-sans-serif: "Overpass", sans-serif; -$font-family-monospace: "Overpass Mono", monospace; - -$font-weight-extra-light: 200; -$font-weight-light: 300; -$font-weight-semi-bold: 600; -$font-weight-bold: 700; -$font-weight-extra-bold: 800; - -$list-inline-padding: 1.25rem; - -// Text - -$headings-font-weight: 600; - -$h2-font-size: 2.25rem; -$h3-font-size: 2rem; -$h5-font-size: 1.125rem; - -$headings-line-height: 1.47em; -$headings-margin-bottom: 0.31em; -$headings-font-weight: $font-weight-bold; - -// Colors -$blue: #09bac8; -$pink: #de1040; -$red: #eb1a45; -$green: #01BF83; -$darkergreen: #168203; -$yellow: #fff200; -$cyan: #23ecfa; -$black: #000000; -$white: #ffffff; -$gray: #c4c4c4; -$gold: #BE8900; - - -$branding-main-darker: #F72E5C !default; -$branding-dark: #34002C !default; -$branding-main-bg: $branding-dark !default; -$branding-main: #EC83AB !default; - -$primary: $black; -$success: $branding-main; -$info: $green; -$warning: $yellow; -$danger: $branding-main-darker; - -// Body - -$body-color: $black; - -// Links - -$link-hover-color: $green; -$link-hover-decoration: none; - -// Paragraphs - -$paragraph-margin-bottom: 0; - -// Grid breakpoints - -$grid-breakpoints: ( - xs: 0, - sm: 576px, - md: 768px, - lg: 992px, - xl: 1440px, - xxl: 1920px -); - -// Grid containers - -$container-max-widths: ( - sm: 740px, - md: 920px, - lg: 1160px -); - -// Grid columns - -$grid-gutter-width: 40px; - -// Buttons - -$btn-font-size: 1rem; -$btn-line-height: 1em; - -$btn-padding-y: 1.33em; -$btn-padding-x: 1.68em; - -$btn-border-radius: 0; -$btn-border-radius-lg: 0; -$btn-border-radius-md: 0; -$btn-border-radius-sm: 0; - -$btn-font-weight: $font-weight-extra-bold; - -$btn-border-width: 0; - -$btn-padding-y-sm: 1.33em; -$btn-padding-x-sm: 1.68em; -$btn-font-size-sm: 0.75rem; -$btn-line-height-sm: 1em; - -$btn-padding-y-md: 1.33em; -$btn-padding-x-md: 1.875em; -$btn-font-size-md: 1rem; -$btn-line-height-md: 1em; - -$btn-padding-y-lg: 1.33em; -$btn-padding-x-lg: 2.44em; -$btn-font-size-lg: 1rem; -$btn-line-height-lg: 1em; - -// Forms - -$label-margin-bottom: 0; - -$input-padding-y: 0.625em; -$input-padding-x: 1.25em; -$input-font-size: 16px; -$input-line-height: 1.875em; -$input-border-width: 1px; -$input-color: $black; -$input-border-color: #E5E5E5; -$input-border-radius: 0; -$input-focus-border-color: #CCCCCC; -$input-focus-box-shadow: none; - -$input-box-shadow: none; - -$input-height: $input-line-height + $input-padding-y * 2; - -$input-placeholder-color: $black; - -$form-group-margin-bottom: 1.875rem; - -// Form validation - -// Navbar - -$navbar-brand-padding-y: 0; -$nav-link-padding-y: 0; -$nav-link-padding-x: 6px; - -$navbar-nav-link-padding-x: 0.5em; - -// Dropdowns - -$dropdown-padding-y: 1em; -$dropdown-padding-y-lg: 1em; -$dropdown-bg: $black; -$dropdown-border-width: 0; -$dropdown-spacer: 0; - -$dropdown-box-shadow: none; -$dropdown-link-color: $white; -$dropdown-link-hover-color: $black; -$dropdown-link-hover-color-lg: $white; -$dropdown-link-hover-bg: $yellow; -$dropdown-link-hover-bg-lg: none; - -$dropdown-item-padding-y: 0.57em; -$dropdown-item-padding-x: 1em; -$dropdown-item-padding-x-lg: 1em; - -// Cards - -$card-spacer-x: 0; -$card-spacer-x-sm: 0; -$card-spacer-y: 30px; -$card-spacer-y-sm: 20px; -$card-border-width: 0; -$card-cap-bg: rgba($white, 0); -$card-bg: rgba($white, 0); - -// Spacing - -$spacer: 1rem; -$spacers: (); - -$spacers: map-merge( - ( - 0: 0, - 1: ($spacer * .25), - 2: ($spacer * .5), - 3: $spacer, - 4: ($spacer * 1.5), - 5: ($spacer * 3.75), - 6: ($spacer * 4.375), - 7: ($spacer * 5) - ), - $spacers -); - -// Carousel - -$carousel-indicator-width: 0.625rem; -$carousel-indicator-height: 0.625rem; -$carousel-indicator-hit-area-height: 0px; -$carousel-indicator-spacer: 0.625rem; -$carousel-indicator-active-bg: $gray; -$carousel-indicator-bg: $gold; -$carousel-indicator-transition: background-color .6s ease; - -// Pagination - -$pagination-padding-y: .875em; -$pagination-padding-x: .585em; -$pagination-line-height: 0em; -$pagination-color: $black; -$pagination-bg: $white; -$pagination-border-width: 0; -$pagination-border-color: $gray; -$pagination-focus-box-shadow: none; -$pagination-hover-color: $white; -$pagination-hover-bg: $green; -$pagination-active-color: $white; -$pagination-active-bg: $green; -$pagination-disabled-bg: $gray !important; - -// Let's start by bring in all of bootstrap -// Later we canbring in only what we need: -// https://getbootstrap.com/docs/4.0/getting-started/theming/#importing -@import "./bootstrap/bootstrap"; - -// Elements overrides - -@import "./styles"; diff --git a/themes/kinvolk-generic/assets/scss/_fonts.scss b/themes/kinvolk-generic/assets/scss/_fonts.scss deleted file mode 100644 index e69de29..0000000 diff --git a/themes/kinvolk-generic/assets/scss/_styles.scss b/themes/kinvolk-generic/assets/scss/_styles.scss deleted file mode 100644 index 0b183aa..0000000 --- a/themes/kinvolk-generic/assets/scss/_styles.scss +++ /dev/null @@ -1,361 +0,0 @@ -// Headings - -h2 { - @include media-breakpoint-down(md) { - font-size: 1.75rem; - } - - @include media-breakpoint-down(sm) { - font-size: 1.25rem; - } -} - -h3 { - @include media-breakpoint-down(md) { - font-size: 1.5rem; - } - @include media-breakpoint-down(sm) { - font-size: 1.25rem; - } -} - -h4 { - @include media-breakpoint-down(md) { - font-size: 1.375rem; - } - @include media-breakpoint-down(sm) { - font-size: 1.25rem; - } -} - -h5 { - @include media-breakpoint-down(md) { - font-size: 1rem; - } - @include media-breakpoint-down(sm) { - font-size: 0.875rem; - } -} - -h6 { - font-weight: $font-weight-semi-bold; -} - -// Buttons - -.btn-md { - @include button-size($btn-padding-y-md, $btn-padding-x-md, $btn-font-size-md, $btn-line-height-md, $btn-border-radius-md); - letter-spacing: 1px; -} - -// Navbar - -.navbar-toggler { - position: relative; - border: none; - width: 20px; - height: 18px; - outline: none !important; - - > span { - background: white; - width: 100%; - height: 2px; - position: absolute; - top: 0%; - left: 0; - width: 100%; - transition: all 0.3s; - - &:before, - &:after { - content: ""; - position: absolute; - top: 0; - left: 0; - display: block; - width: 100%; - height: 2px; - transition: all 0.3s; - } - - &:before { - box-shadow: 0 8px white; - backface-visibility: hidden; - } - - &:after { - box-shadow: 0 16px white; - } - } -} - -// Dropdown - -.dropdown-menu { - border-top: 2em solid rgba($white, 0); - font-size: 1.17em; - min-width: 9.3em; - - @include media-breakpoint-down(sm) { - font-size: 0.875em; - border: none; - } -} - -.dropdown-item { - font-weight: $font-weight-extra-bold; - transition: color 0.3s, background-color 0.3s; - - @include media-breakpoint-down(sm) { - text-align: center; - line-height: 1.71em; - } -} - -.dropdown-menu_lg { - padding: $dropdown-padding-y-lg 0; - - @include media-breakpoint-down(sm) { - padding: 0px 16px; - font-size: 1em; - } - - .dropdown-item { - display: flex; - align-items: flex-start; - padding: 0 $dropdown-item-padding-x-lg; - - @include media-breakpoint-down(sm) { - justify-content: center; - align-items: center; - padding: 26px 10px; - } - } - - .dropdown-item__icon { - width: 4.64em; - margin-right: 2.07em; - - @include media-breakpoint-down(xs) { - margin-right: 20px; - } - } - - .dropdown-item__title { - font-size: 1.43em; - line-height: 1.5em; - text-transform: uppercase; - margin-bottom: 0.25em; - transition: color 0.3s; - - @include media-breakpoint-down(sm) { - font-size: 1em; - margin-bottom: 0; - } - } - - .dropdown-item__text { - font-size: 1em; - line-height: 1.43em; - font-weight: $font-weight-normal; - transition: color 0.3s; - } - - .dropdown-item__icon { - transition: fill 0.3s; - } - - .dropdown-item:nth-child(1) { - .dropdown-item__title { - color: $cyan; - } - - .dropdown-item__icon { - fill: $cyan; - } - } - - .dropdown-item:nth-child(2) { - .dropdown-item__title { - color: $yellow; - } - - .dropdown-item__icon { - fill: $yellow; - } - } - - .dropdown-item:hover { - @include media-breakpoint-up(md) { - color: $dropdown-link-hover-color-lg; - background: $dropdown-link-hover-bg-lg; - - .dropdown-item__title { - color: $dropdown-link-hover-color-lg; - } - - .dropdown-item__icon { - fill: $dropdown-link-hover-color-lg; - } - } - } -} - -.nav-item.dropdown:hover>.dropdown-menu.dropdown-menu_lg { - @include media-breakpoint-up(md) { - display: flex; - } -} - -// Form - -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - box-shadow: none; -} - -// Cards - -.card-header { - padding: 0; -} - -.card-body { - padding: $card-spacer-y $card-spacer-x 0; - - @include media-breakpoint-down(xs) { - padding: $card-spacer-y-sm $card-spacer-x-sm 0; - } -} - -.card-title { - @include media-breakpoint-down(xs) { - margin-bottom: $card-spacer-y-sm; - } -} - -.card p { - font-size: 1rem; - - @include media-breakpoint-down(sm) { - font-size: 0.875rem; - } -} - -.card-header { - font-size: 1.125rem; -} - -// Carousel - -.carousel-inner { - padding-bottom: 40px; -} - -.carousel-indicators li { - background: $carousel-indicator-bg; - opacity: 1; - - &.active { - background: $carousel-indicator-active-bg; - } -} - -// Pagination - -.pagination { - align-items: center; -} - -.page-link { - font-weight: $font-weight-semi-bold; - min-width: 1.75em; - text-align: center; - transition: color 0.3s, background-color 0.3s; -} - -.page-item:first-child, .page-item:last-child { - display: none; -} - -.page-item:nth-child(2), .page-item:nth-last-child(2) { - .page-link { - padding: 1.25em; - background: $branding-main-bg; - box-shadow: inset 0 0 0 3px $branding-main-bg; - } - - .page-link span { - display: none; - } - - .page-link { - position: relative; - - &:before { - content: ""; - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: auto; - background: url("/images/arrow-big-white.svg") no-repeat center; - background-size: contain; - width: 1.5em; - height: 1.5em; - } - } -} - -.page-item:nth-child(2) { - margin-right: 26px; - - @include media-breakpoint-down(xs) { - margin-right: 16px; - } - - .page-link:before { - transform: rotate(-180deg); - } -} - -.page-item:nth-last-child(2) { - margin-left: 26px; - - @include media-breakpoint-down(xs) { - margin-left: 16px; - } -} - -.page-item + .page-item:not(:nth-child(2)):not(:nth-child(3)):not(:nth-last-child(2)) { - margin-left: 12px; -} - -.page-item.disabled { - .page-link { - box-shadow: inset 0 0 0 3px $gray; - } -} - -.page-item:nth-child(2):not(.disabled):hover, -.page-item:nth-last-child(2):not(.disabled):hover { - .page-link { - color: $black; - background: none; - - &:before { - background-image: url("/images/arrow-big.svg"); - } - } -} - -a:hover { - color: $branding-main; -} - -.page-item.active .page-link, .page-link:hover { - background-color: $branding-main; - border-color: $branding-main; -} diff --git a/themes/kinvolk-generic/assets/scss/bootstrap/_alert.scss b/themes/kinvolk-generic/assets/scss/bootstrap/_alert.scss deleted file mode 100755 index dd43e23..0000000 --- a/themes/kinvolk-generic/assets/scss/bootstrap/_alert.scss +++ /dev/null @@ -1,51 +0,0 @@ -// -// Base styles -// - -.alert { - position: relative; - padding: $alert-padding-y $alert-padding-x; - margin-bottom: $alert-margin-bottom; - border: $alert-border-width solid transparent; - @include border-radius($alert-border-radius); -} - -// Headings for larger alerts -.alert-heading { - // Specified to prevent conflicts of changing $headings-color - color: inherit; -} - -// Provide class for links that match alerts -.alert-link { - font-weight: $alert-link-font-weight; -} - - -// Dismissible alerts -// -// Expand the right padding and account for the close button's positioning. - -.alert-dismissible { - padding-right: ($close-font-size + $alert-padding-x * 2); - - // Adjust close link position - .close { - position: absolute; - top: 0; - right: 0; - padding: $alert-padding-y $alert-padding-x; - color: inherit; - } -} - - -// Alternate styles -// -// Generate contextual modifier classes for colorizing the alert. - -@each $color, $value in $theme-colors { - .alert-#{$color} { - @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); - } -} diff --git a/themes/kinvolk-generic/assets/scss/bootstrap/_badge.scss b/themes/kinvolk-generic/assets/scss/bootstrap/_badge.scss deleted file mode 100755 index bdbe4b9..0000000 --- a/themes/kinvolk-generic/assets/scss/bootstrap/_badge.scss +++ /dev/null @@ -1,53 +0,0 @@ -// Base class -// -// Requires one of the contextual, color modifier classes for `color` and -// `background-color`. - -.badge { - display: inline-block; - padding: $badge-padding-y $badge-padding-x; - font-size: $badge-font-size; - font-weight: $badge-font-weight; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - @include border-radius($badge-border-radius); - - @at-root a#{&} { - @include hover-focus { - text-decoration: none; - } - } - - // Empty badges collapse automatically - &:empty { - display: none; - } -} - -// Quick fix for badges in buttons -.btn .badge { - position: relative; - top: -1px; -} - -// Pill badges -// -// Make them extra rounded with a modifier to replace v3's badges. - -.badge-pill { - padding-right: $badge-pill-padding-x; - padding-left: $badge-pill-padding-x; - @include border-radius($badge-pill-border-radius); -} - -// Colors -// -// Contextual variations (linked badges get darker on :hover). - -@each $color, $value in $theme-colors { - .badge-#{$color} { - @include badge-variant($value); - } -} diff --git a/themes/kinvolk-generic/assets/scss/bootstrap/_breadcrumb.scss b/themes/kinvolk-generic/assets/scss/bootstrap/_breadcrumb.scss deleted file mode 100755 index be30950..0000000 --- a/themes/kinvolk-generic/assets/scss/bootstrap/_breadcrumb.scss +++ /dev/null @@ -1,41 +0,0 @@ -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: $breadcrumb-padding-y $breadcrumb-padding-x; - margin-bottom: $breadcrumb-margin-bottom; - list-style: none; - background-color: $breadcrumb-bg; - @include border-radius($breadcrumb-border-radius); -} - -.breadcrumb-item { - // The separator between breadcrumbs (by default, a forward-slash: "/") - + .breadcrumb-item { - padding-left: $breadcrumb-item-padding; - - &::before { - display: inline-block; // Suppress underlining of the separator in modern browsers - padding-right: $breadcrumb-item-padding; - color: $breadcrumb-divider-color; - content: $breadcrumb-divider; - } - } - - // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built - // without `