diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a90e3c4ac223..f568662666f6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @ananzh @kavilla @seanneumann @AMoo-Miki @ashwin-pc @joshuarrrr @abbyhu2000 @zengyan-amazon @kristenTian @zhongnansu @manasvinibs @ZilongX @Flyingliuhub @BSFishy +* @ananzh @kavilla @seanneumann @AMoo-Miki @ashwin-pc @joshuarrrr @abbyhu2000 @zengyan-amazon @kristenTian @zhongnansu @manasvinibs @ZilongX @Flyingliuhub @BSFishy @curq @bandinib-amzn @SuZhou-Joe diff --git a/.github/workflows/build_and_test_workflow.yml b/.github/workflows/build_and_test_workflow.yml index a836cf3e1085..15befcf1be79 100644 --- a/.github/workflows/build_and_test_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -281,7 +281,7 @@ jobs: - name: Build plugins run: node scripts/build_opensearch_dashboards_platform_plugins --no-examples --workers 10 --scan-dir "./test/plugin_functional/plugins" - - name: Run functional plugin tests + - name: Run functional plugin tests id: plugin-ftr-tests run: node scripts/functional_tests.js --config test/plugin_functional/config.ts @@ -308,6 +308,16 @@ jobs: ext: tar.gz suffix: linux-arm64 script: build-platform --linux-arm --skip-os-packages + - os: macos-latest + name: macOS x64 + ext: tar.gz + suffix: darwin-x64 + script: build-platform --darwin --skip-os-packages + - os: macos-latest + name: macOS ARM64 + ext: tar.gz + suffix: darwin-arm64 + script: build-platform --darwin-arm --skip-os-packages - os: windows-latest name: Windows x64 ext: zip @@ -433,7 +443,7 @@ jobs: id: verify-opensearch-exists run: | if curl -I -L ${{ env.OPENSEARCH_URL }}; then - echo "::set-output name=version-exists::true" + echo "name=version-exists::true" >> $GITHUB_OUTPUT fi - name: Skipping tests diff --git a/.github/workflows/cypress_workflow.yml b/.github/workflows/cypress_workflow.yml index 90bacdbefb57..cab511ddc551 100644 --- a/.github/workflows/cypress_workflow.yml +++ b/.github/workflows/cypress_workflow.yml @@ -128,7 +128,7 @@ jobs: - name: Get Cypress version id: cypress_version run: | - echo "::set-output name=cypress_version::$(cat ./${{ env.FTR_PATH }}/package.json | jq '.devDependencies.cypress' | tr -d '"')" + echo "name=cypress_version::$(cat ./${{ env.FTR_PATH }}/package.json | jq '.devDependencies.cypress' | tr -d '"')" >> $GITHUB_OUTPUT - name: Cache Cypress id: cache-cypress diff --git a/CHANGELOG.md b/CHANGELOG.md index 9083b1fe0c0c..074a51ccae5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,22 +8,77 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 🛡 Security +- Add support for TLS v1.3 ([#5133](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5133)) +- [CVE-2023-45133] Bump all babel dependencies from `7.16.x` to `7.22.9` to fix upstream vulnerability ([#5428](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5428)) + ### 📈 Features/Enhancements +- Add support for read-only mode through tenants ([#4498](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4498)) +- [Workspace] Add core workspace service module to enable the implementation of workspace features within OSD plugins ([#5092](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5092)) +- [Workspace] Setup workspace skeleton and implement basic CRUD API ([#5075](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5075)) +- [Decouple] Add new cross compatibility check core service which export functionality for plugins to verify if their OpenSearch plugin counterpart is installed on the cluster or has incompatible version to configure the plugin behavior([#4710](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4710)) +- [Discover] Display inner properties in the left navigation bar [#5429](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5429) + ### 🐛 Bug Fixes +- [TSVB, Dashboards] Fix inconsistent dark mode code editor themes ([#4609](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4609)) +- Fix `maps.proxyOpenSearchMapsServiceInMaps` config definition so it can be set ([#5170](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5170)) +- [BUG] Add platform "darwin-arm64" to unit test ([#5290](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5290)) +- [BUG][Dev Tool] Add dev tool documentation link to dev tool's help menu [#5166](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5166) +- Fix missing border for header navigation control on right ([#5450](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5450)) + ### 🚞 Infrastructure +- [CI] Enable inputs for manually triggered Cypress test jobs ([#5134](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5134)) +- [CI] Replace usage of deprecated `set-output` in workflows ([#5340](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5340)) + ### 📝 Documentation +- Add plugin development section in DEVELOPER_GUIDE.md ([#3989](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3989)) +- Remove ftr test step from PR template ([#5217](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5217)) +- [Doc] Update EUI doc site links to point to OUI doc site ([#5293](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5293)) + ### 🛠 Maintenance + +- Replace `node-sass` with `sass-embedded` ([#5338](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5338)) - [Version] Bump version to 2.12.0 ([#5294](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5294)) +- Add @SuZhou-Joe as a maintainer. ([#5594](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5594)) + +### 🪛 Refactoring + +- [Console] Remove unused ul element and its custom styling ([#3993](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3993)) +- Remove unused Sass in `tile_map` plugin ([#4110](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4110)) +- [Home] Remove unused tutorials ([#5212](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5212)) ### 🔩 Tests -## [2.11.0 - TBD] +## [2.11.1 - 2023-11-21](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.11.1) -### Deprecations +### 🛡 Security + +- [CVE-2023-45133] Add package resolution for `@babel/traverse` to `7.23.2` to fix vulnerability ([#5309](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5309)) +- [CVE-2023-46234] Bump `eslint-import-resolver-webpack` from `0.11.1` to `0.13.8` and `browserify-sign` from `4.2.1` to `4.2.2` ([#5414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5414/)) + +### 📈 Features/Enhancements + +### 🐛 Bug Fixes + +- Fix navigation issue across dashboards ([#5435](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5435)) +- [Discover] Fix table panel auto-sizing ([#5441](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5441)) + +### 🚞 Infrastructure + +- [CI][Test] Add plugin functional tests on GitHub Actions ([#5383](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5383)) + +### 📝 Documentation + +- Add Release Notes and update CHANGELOG.md for 2.11.1 ([#5486](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5486)) + +### 🔩 Tests + +### 🛠 Maintenance + +## [2.11.0 - 2023-10-18](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.11.0) ### 🛡 Security @@ -33,6 +88,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Console] Add support for JSON with long numerals ([#4562](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4562)) - [Data] Add `DataSource` service and `DataSourceSelector` for multiple datasource support ([#5167](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5167)) +- [Discover] Update embeddable for saved searches ([#5081](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5081)) ### 🐛 Bug Fixes @@ -48,16 +104,20 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Table Visualization] Fix filter actions on data table vis cells ([#4837](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4837)) - [Vis Augmenter] Fix errors in conditions for activating `vizAugmenter` ([#5213](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5213)) - [Vis Augmenter] Fix `visAugmenter` forming empty key-value pairs in its calls to the `SavedObject` API ([#5190](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5190)) +- [Data Explorer] Remove the `X` icon in data source selection field ([#5238](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5238)) +- [BUG][Fuctional Test] Make setDefaultAbsoluteRange more robust and update doc views tests ([#5242](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5242)) ### 🚞 Infrastructure - [CI] Add `NODE_OPTIONS` and disable disk allocation threshold ([#5172](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5172)) - -### 📝 Documentation +- [CI] Supprt CI Groups for Cypress test jobs ([#5298](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5298)) ### 🛠 Maintenance - [Version] Version increment from 2.10 to 2.11 ([#4975](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4975)) +- Remove angular html extractor ([#4680](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4680)) +- Add @bandinib-amzn as maintainer ([#5113](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5113)) +- Add @bandinib-amzn to CODEOWNERS file. ([#5456](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5456)) ### 🔩 Tests @@ -65,7 +125,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Unit][Data Explorer][Discover] Fix wrong test due to time conversion ([#5174](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5174)) - [Unit][Data Explorer][Discover]Fix `buildPointSeriesData` unit test fails due to local timezone ([#4992](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4992)) -## [2.10.0 - 2023-09-25] +## [2.10.0 - 2023-09-25](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.10.0) ### 🛡 Security @@ -126,6 +186,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Version increment from 2.9 to 2.10 ([#4545](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4545)) - Bump OpenSearch-Dashboards 2.10.0 to use nodejs 18.16.0 version ([#4948](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4948)) - Bump `oui` to `1.3.0` ([#4941](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4941)) +- Add @curq as maintainer ([#4760](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4760)) ### 🪛 Refactoring @@ -139,6 +200,8 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Remove minimum constraint on opensearch hosts ([#4701](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4701)) - [CCI] Remove unused tags in the navigation plugin ([#3964](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3964)) - Refactor logo usage ([#4702](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4702)) +- [Markdown] Replace custom CSS styles and HTML markup with OUI components ([#4390](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4390)) +- Fix EUI/OUI type errors ([#3798](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3798)) ### 🔩 Tests @@ -150,7 +213,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Test (linkchecker): Exclude checking dead link ([#4720](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4720)) - Update baseline images for functional tests ([#4879](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4879)) -## [2.9.0 - 2023-07-24] +## [2.9.0 - 2023-07-24](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.9.0) ### 🛡 Security @@ -165,7 +228,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Hide any output from use_node checking for Node compatibility ([#4237](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4237)) - Add category option within groups for context menus ([#4144](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4144)) - [Saved Object Service] Add Repository Factory Provider ([#4149](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4149)) -- [Sample Data] Add visual consistency dashboard to sample logs data ([#4339](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4339)) +- [Sample Data] Add visual consistency dashboard to sample logs data ([#4339](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4339), [#4619](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4619)) - [@osd/pm] Fix `file:`-linked dependencies' resolution to improve ability to test with local packages ([#4342](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4342)) - [Multiple DataSource] Backend support for adding sample data ([#4268](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4268)) - Add configurable defaults and overrides to uiSettings ([#4344](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4344)) @@ -177,20 +240,29 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Enable plugins to augment visualizations with additional data and context ([#4361](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4361)) - Dashboard De-Angularization ([#4502](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4502)) - New management overview page and rename stack management to dashboard management ([#4287](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4287)) +- [Console] Add support for JSON with long numerals ([#4562](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4562)) - [Vis Augmenter] Update base vis height in view events flyout ([#4535](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4535)) +- [Dashboard De-Angular] Add more unit tests for utils folder ([#4641](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4641)) +- [Dashboard De-Angular] Add unit tests for dashboard_listing and dashboard_top_nav ([#4640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4640)) +- Optimize `augment-vis` saved obj searching by adding arg to saved obj client ([#4595](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4595)) ### 🐛 Bug Fixes +- [Chore] Update deprecated url methods (url.parse(), url.format()) ([#2910](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2910)) +- Cleanup unused url ([#3847](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3847)) +- Fix `i18n` generation scripts ([#4252](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4252)) - [Saved Objects Management] Fix relationships header overflow ([#4070](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4070)) - Update main menu to display 'Dashboards' for consistency ([#4453](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4453)) - [Multiple DataSource] Retain the original sample data API ([#4526](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4526)) - Remove `lmdb-store` to fix backport issue ([#4266](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4266)) +- Fix Node.js download link ([#4556](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4556)) ### 🚞 Infrastructure - Upgrade the backport workflow ([#4343](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4343)) - [Lint] Add custom stylelint rules and config to prevent unintended style overrides ([#4290](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4290)) - [Lint] Add stylelint rule to define properties that are restricted from being used ([#4374](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4374)) +- [Lint] Add stylelint rule to define values that are restricted from being used ([#4413](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4413)) - [Lint] Add typing to Stylelint rules ([#4392](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4392)) - [CI] Split build and verify into parallel jobs ([#4467](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4467)) @@ -202,12 +274,12 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Adding @ZilongX and @Flyingliuhub as maintainers. ([#4137](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4137)) - Add new MAINTAINERS to CODEOWNERS file. ([#4199](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4199)) -- Bump `oui` to `1.3.0` ([#4941](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4941)) - Adding @BSFishy as maintainer. ([#4469](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4469)) ### 🪛 Refactoring - [Table Visualization] Remove custom styling for text-align:center in favor of OUI utility class. ([#4164](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4164)) +- [Table Visualization] Replace div containers with OuiFlex components ([#4272](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4272)) - Migrate from legacy elasticsearch client to opensearch-js client in `osd-opensearch-archiver` package([#4142](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4142)) - Replace the use of `bluebird` in `saved_objects` plugin ([#4026](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4026)) - Relocate tutorials imagery into `src/plugins/home/public/assets/tutorials/logos` ([#4382](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4382)) @@ -219,14 +291,17 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Vis Colors] [Timeline] Replace `vis_type_timeline` colors with `ouiPaletteColorBlind()` ([#4366](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4366)) - [Vis Colors] Update legacy seed colors to use `ouiPaletteColorBlind()` ([#4348](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4348)) - [Console] Migrate `/lib/mappings/` module to TypeScript ([#4008](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4008)) +- [Console] Migrate `/lib/autocomplete/` module to TypeScript ([#4148](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4148)) +- [Dashboard] Restructure the `Dashboard` plugin folder to be more cohesive with the project ([#4575](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4575)) +- [Chrome] Remove breadcrumb style overrrides ([#4621](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4621)) +- Replace tinymath with math.js ([#4492](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4492)) ### 🔩 Tests - [Vis Augmenter Add UT for few fns ([#4516](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4516)) - [BWC Tests] Add BWC tests for 2.7.0 and 2.8.0 ([#4023](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4023)) - -## [2.8.0 - 2023-06-06] +## [2.8.0 - 2023-06-06](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.8.0) ### Deprecations @@ -234,7 +309,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 🛡 Security -- [CVE-2023-2251] Bump yaml to `2.2.2` ([#3947](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3947)) +- [CVE-2023-2251] Bump `yaml` to `2.2.2` ([#3947](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3947)) ### 📈 Features/Enhancements @@ -246,17 +321,25 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 🐛 Bug Fixes - [BUG] Fix bottom bar visibility using createPortal ([#3978](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3978)) +- [Dashboards Listing] Fix listing limit to utilize `savedObjects:listingLimit` instead of `savedObjects:perPage` ([#4021](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4021)) ### 🚞 Infrastructure +- Install chrome driver for functional tests from path set by environment variable `TEST_BROWSER_BINARY_PATH`([#3997](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3997)) - Add threshold to code coverage config to prevent workflow failures ([#4040](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4040)) - [CI] Skip checksum verification on OpenSearch snapshot for cypress tests ([#4188](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4188)) +### 📝 Documentation + ### 🛠 Maintenance - Use `exec` in the CLI shell scripts to prevent new process creation ([#3955](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3955)) -## [2.7.0] +### 🪛 Refactoring + +### 🔩 Tests + +## [2.7.0 - 2023-05-02](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.7.0) ### Deprecations @@ -265,7 +348,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [CVE-2023-26486] Bump vega from `5.22.1` to `5.23.0` ([#3533](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3533)) - [CVE-2023-26487] Bump vega from `5.22.1` to `5.23.0` ([#3533](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3533)) - [CVE-2023-0842] Bump xml2js from `0.4.23` to `0.5.0` ([#3842](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3842)) -- Bump `joi` to v14 to avoid the possibility of prototype poisoning in a nested dependency ([#3952](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3952)) +- [Multi DataSource] Add private IP blocking validation on server side ([#3912](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3912)) ### 📈 Features/Enhancements @@ -277,6 +360,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Monaco editor] Add json worker support ([#3424](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3424)) - [Multiple DataSource] Allow create and distinguish index pattern with same name but from different datasources ([#3604](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3604)) - [Multiple DataSource] Integrate multiple datasource with dev tool console ([#3754](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3754)) +- [Navigation] Remove unused tags ([#3964](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3964)) - [Notifications] Add id to toast api for deduplication ([#3752](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3752)) - [UI] Add support for comma delimiters in the global filter bar ([#3686](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3686)) - [UI] Indicate that IE is no longer supported ([#3641](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3641)) @@ -284,6 +368,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [VisBuilder] Add metric to metric, bucket to bucket aggregation persistence ([#3495](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3495)) - [VisBuilder] Add UI actions handler ([#3732](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3732)) - [VisBuilder] Add persistence to visualizations inner state ([#3751](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3751)) +- [Console] Add support for exporting and restoring commands in Dev Tools ([#3810](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3810)) ### 🐛 Bug Fixes @@ -329,26 +414,25 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Allow selecting the Node.js binary using `NODE_HOME` and `OSD_NODE_HOME` ([#3508](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3508)) - Remove the unused `renovate.json5` file ([#3489](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3489)) - Bump `styled-components` from `5.3.5` to `5.3.9` ([#3678](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3678)) -- Bump `oui` from `1.0.0` to `1.1.1` ([3884](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3884)) - [Timeline] Update default expressions from `.es(*)` to `.opensearch(*)`. ([#2720](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2720)) ### 🪛 Refactoring - Remove automatic addition of `osd-version` header to requests outside of OpenSearch Dashboards ([#3643](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3643)) +- [Console] Replace jQuery usage in console plugin with native methods ([#3733](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3733)) - [Doc Links] Clean up docs_link_service organization so that strings are in the right categories. ([#3685](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3685)) - [I18n] Fix Listr type errors and error handlers ([#3629](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3629)) - [Multiple DataSource] Refactor dev tool console to use opensearch-js client to send requests ([#3544](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3544)) - [Multiple DataSource] Present the authentication type choices in a drop-down ([#3693](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3693)) - [Table Visualization] Move format table, consolidate types and add unit tests ([#3397](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3397)) -- Fix EUI/OUI type errors ([#3798](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3798)) ### 🔩 Tests - Update caniuse to `1.0.30001460` to fix failed integration tests ([#3538](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3538)) - [Tests] Fix unit tests for `get_keystore` ([#3854](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3854)) -- [Tests] Use `scripts/use_node` instead of `node` in functional test plugins ([#3783](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3783)) +- [BWC Tests] Add BWC tests for 2.7.0 and 2.8.0 ([#4023](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4023)) -## [2.6.0] +## [2.6.0 - 2023-02-28](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.6.0) ### Deprecations @@ -372,8 +456,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add disablePrototypePoisoningProtection configuration to prevent JS client from erroring when cluster utilizes JS reserved words ([#2992](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2992)) - [Multiple DataSource] Add support for SigV4 authentication ([#3058](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3058)) -- [Multiple DataSource] Refactor test connection to support SigV4 auth type ([#3456](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3456)) -- Replace re2 with RegExp in timeline and add unit tests ([#3908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3908)) +- [Multiple DataSource] Refactor test connection to support SigV4 auth type ([#3456](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3456)) ### 🐛 Bug Fixes @@ -393,7 +476,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Bump `re2` and `supertest` ([#3018](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3018)) - Upgrade vega-tooltip to `0.30.0` to support custom tooltips ([#3359](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3359)) - Allow relaxing the Node.js runtime version requirement ([#3402](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3402)) -- Make build scripts find and use the latest version of Node.js that satisfies `engines.node` ([#3467](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3467)) +- Make build scripts find and use the latest version of Node.js that satisfies `engines.node` ([#3467](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3467)) - Add `@opensearch-project/opensearch@^2.x` as dependency aliased as `@opensearch-project/opensearch-next` ([#3469](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3469)) ### 🪛 Refactoring @@ -403,7 +486,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [BWC Tests] Add BWC tests for `2.6.0` ([#3356](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3356)) - Prevent primitive linting limitations from being applied to unit tests found under `src/setup_node_env` ([#3403](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3403)) -## [2.5.0] +## [2.5.0 - 2023-01-25](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.5.0) ### 🛡 Security @@ -456,7 +539,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 🪛 Refactoring - [VisBuilder] Extend the use of i18n ([#2867](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2867)) -- [Console] Switch to using `core.http` when calling OSD APIs in console ([#3080]https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3080)) +- [Console] Switch to using `core.http` when calling OSD APIs in console ([#3080](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3080)) - [Table Visualization] Refactor table visualization using React and DataGrid component ([#2863](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2863)) ### 🛠 Maintenance @@ -473,7 +556,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Correct the linting logic for `no-restricted-path` to ignore trailing slashes ([#3020](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3020)) - [VisBuilder] Create unit tests for field utilities ([#3211](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3211)) -## [2.4.1] +## [2.4.1 - 2022-12-14](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.4.1) ### 🐛 Bug Fixes @@ -483,7 +566,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Correct the linting logic for `no-restricted-path` to ignore trailing slashes ([#3020](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3020)) -## [2.4.0] +## [2.4.0 - 2022-11-15](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.4.0) ### 🛡 Security @@ -500,6 +583,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 📈 Features/Enhancements +- Add DataSource service and DataSourceSelector for multiple datasource support ([#5167](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5167)) - Add extension point in saved object management to register namespaces and show filter ([#2656](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2656)) - Add updated_at column to Saved Objects' tables ([#1218](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/1218)) - Change the links in the visualize plugin to use `href` rather than `onClick` ([#2395](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2395)) @@ -516,7 +600,6 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Multi DataSource] Support legacy client for data source ([#2204](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2204)) - [Multi DataSource] UX enhancement on Data source management creation page ([#2051](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2501)) - [Multi DataSource] UX enhancement on Data source management stack ([#2521](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2521)) -- [Multi DataSource] UX enhancement on Index Pattern management stack ([#2505](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2505)) - [Multi DataSource] UX enhancement on Index Pattern management stack ([#2505](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2505))([#2527](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2527)) - [Multi DataSource] UX enhancement on Update stored password modal for Data source management stack ([#2532](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2532)) - [Plugin Helpers] Facilitate version changes ([#2398](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2398)) diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md index e250df6fcf73..040c5ff4428a 100644 --- a/DEVELOPER_GUIDE.md +++ b/DEVELOPER_GUIDE.md @@ -244,12 +244,19 @@ Options: -E Additional key=value settings to pass to OpenSearch --download-only Download the snapshot but don't actually start it --ssl Sets up SSL on OpenSearch + --security Installs and sets up OpenSearch Security plugin on the cluster --P OpenSearch plugin artifact URL to install it on the cluster. ```bash -$ yarn opensearch snapshot --version 2.2.0 -E cluster.name=test -E path.data=/tmp/opensearch-data --P org.opensearch.plugin:test-plugin:2.2.0.0 --P file:/home/user/opensearch-test-plugin-2.2.0.0.zip +$ yarn opensearch snapshot --version 2.2.0 -E cluster.name=test -E path.data=/tmp/opensearch-data --P org.opensearch.plugin:test-plugin:2.2.0.0 --P file:/home/user/opensearch-test-plugin-2.2.0.0.zip --security ``` +#### Read Only capabilities + +_This feature will only work if you have the [`security` plugin](https://github.com/opensearch-project/security) installed on your OpenSearch cluster with https/authentication enabled._ + +Please follow the design described in [the docs](https://github.com/opensearch-project/OpenSearch/blob/main/docs/capabilities/read_only_mode.md#design) + ### Alternative - Run OpenSearch from tarball If you would like to run OpenSearch from the tarball, you'll need to download the minimal distribution, install it, and then run the executable. (You'll also need Java installed and the `JAVA_HOME` environmental variable set - see [OpenSearch developer guide](https://github.com/opensearch-project/OpenSearch/blob/main/DEVELOPER_GUIDE.md#install-prerequisites) for details). @@ -267,6 +274,18 @@ This method can also be used to develop against the [full distribution of OpenSe _This step is only mandatory if you have the [`security` plugin](https://github.com/opensearch-project/security) installed on your OpenSearch cluster with https/authentication enabled._ +> 1. Run `export initialAdminPassword=` since it's needed by the configuration script +> 2. Run `yarn opensearch snapshot --security` +> 3. Wait a few seconds while the plugin is installed, configured, and OpenSearch starts up. + +Then within another window. You can start: + +> 1. Run `export OPENSEARCH_USERNAME=admin` +> 2. Run `export OPENSEARCH_PASSWORD=` +> 3. Optional: Run `export OPENSEARCH_SECURITY_READONLY_ROLE=` +> 4. Run `yarn start:security` +> 5. Navigate to OpenSearch Dashboards and login with the above username and password. + Once the bootstrap of OpenSearch Dashboards is finished, you need to apply some changes to the default [`opensearch_dashboards.yml`](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/config/opensearch_dashboards.yml#L25-L72) in order to connect to OpenSearch. diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 1deb190bdd19..9b48eba88f0c 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -20,6 +20,9 @@ This document contains a list of maintainers in this repo. See [opensearch-proje | Tao Liu | [Flyingliuhub](https://github.com/Flyingliuhub) | Amazon | | Zilong Xia | [ZilongX](https://github.com/ZilongX) | Amazon | | Matt Provost | [BSFishy](https://github.com/BSFishy) | Amazon | +| Sirazh Gabdullin | [curq](https://github.com/curq) | External contributor | +| Bandini Bhopi | [bandinib-amzn](https://github.com/bandinib-amzn) | Amazon | +| Su Zhou | [SuZhou-Joe](https://github.com/SuZhou-Joe) | Amazon | ## Emeritus diff --git a/README.md b/README.md index 4d4924046027..0bd86bec6560 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ We aim to be an exceptional community-driven platform and to foster open partici You can [contribute to this project](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/CONTRIBUTING.md) by [opening issues](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/new/choose) to give feedback, share ideas, identify bugs, and contribute code. -Set up your [OpenSearch Dashboards development environment](ttps://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/DEVELOPER_GUIDE.md#getting-started-guide) today! The project team looks forward to your contributions. +Set up your [OpenSearch Dashboards development environment](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/DEVELOPER_GUIDE.md#getting-started-guide) today! The project team looks forward to your contributions. ## Code Summary diff --git a/docs/capabilities/read_only_mode.md b/docs/capabilities/read_only_mode.md new file mode 100644 index 000000000000..a1e14d119cbf --- /dev/null +++ b/docs/capabilities/read_only_mode.md @@ -0,0 +1,80 @@ +# Read-only Mode + +There are two distinct functionalities for "read-only" access in Dashboards. One of them is associated with roles and one is associated with tenants. Regarding the first one, the Dashboards Security plugin contains a feature of hiding all plugin navigation links except Dashboards and Visualizations when the logged-in user has a certain role (more about it in [Read-only Role](#read-only-role)). + +The second one is limiting Dashboards access rights via assigning a specific role to a tenant (therefore, making a tenant read-only). Due to past issues and the deprecation of the first functionality, using read-only tenants is now the recommended way to limit users' access to Dashboards. + +## Design + +Whenever a plugin registers capabilities that should be limited (in other words, set to false) for read-only tenants, such capabilities should be registered through `registerSwitcher` with using method `core.security.readonlyService().hideForReadonly()` + +### Example + +```ts +public setup(core: CoreSetup) { + core.capabilities.registerProvider({ + myAwesomePlugin: { + show: true, + save: true, + delete: true, + } + }); + + core.capabilities.registerSwitcher(async (request, capabilites) => { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + myAwesomePlugin: { + save: false, + delete: false, + }, + }); + }); +} +``` + +In this case, we might assume that a plugin relies on the `save` and `delete` capabilities to limit changes somewhere in the UI. Therefore, those capabilities are processed through `registerSwitcher`, they will be set to `false` whenever a read-only tenant is accessed. + +If `registerSwitcher` will try to provide or remove capabilites when invoking the switcher will be ignored. + +*In case of a disabled / not installed `security` plugin changes will be never applied to a capabilites.* + +## Requirements + +This feature will only work if you have the [`security` plugin](https://github.com/opensearch-project/security) installed on your OpenSearch cluster with https/authentication enabled. + +## Read-only Role + +The role is called `kibana_read_only` by default, but the name can be changed using the dashboard config option `opensearch_security.readonly_mode.roles`. One big issue with this feature is that the backend site of a Dashboard Security plugin is completely unaware of it. Thus, users in this mode still have write access to the Dashboards saved objects via the API as the implementation effectively hides everything except the Dashboards and Visualization plugins. + +**We highly do not recommend using it!** + +For more context, see [this group issues of problems connected with read-only roles](https://github.com/opensearch-project/security/issues/2701). + +### Usage + +1. Go to `Management > Security > Internal users` +2. Create or select an already existing user +3. Add a new `Backend role` called `kibana_read_only` (or use name used in `opensearch_security.readonly_mode.roles`) +4. Save changes + +## Read-only Tenant (recommended) + +Dashboards Security plugin recognizes the selection of read-only tenant after logging in and sets the capabilities associated with write access or showing write controls to false for a variety of plugins. This can be easily checked for example by trying to re-arrange some visualizations on Dashboards. Such action will be resulting in a 403 error due to limited read-only access. + +### Usage + +1. Prepare tenant: + * Use an existing tenant or create a new one in `Management > Security > Tenants` +2. Prepare role: + * Go to `Management > Security > Roles` + * Use an existing role or create a new one + * Fill **index permissions** with: + * `indices:data/read/search` + * `indices:data/read/get` + * Add new **tenant permission** with: + * your name of the tenant + * read only +3. Assign a role to a user: + * Go to role + * Click the tab `Mapped users` + * Click `Manage mapping` + * In `Users` select the user that will be affected diff --git a/package.json b/package.json index 963dbdf00e33..8ab84f1e0234 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "build": "scripts/use_node scripts/build --all-platforms", "start": "scripts/use_node scripts/opensearch_dashboards --dev", "start:docker": "scripts/use_node scripts/opensearch_dashboards --dev --opensearch.hosts=$OPENSEARCH_HOSTS --opensearch.ignoreVersionMismatch=true --server.host=$SERVER_HOST", + "start:security": "scripts/use_node scripts/opensearch_dashboards --dev --security", "debug": "scripts/use_node --nolazy --inspect scripts/opensearch_dashboards --dev", "debug-break": "scripts/use_node --nolazy --inspect-brk scripts/opensearch_dashboards --dev", "lint": "yarn run lint:es && yarn run lint:style", @@ -105,7 +106,8 @@ "**/set-value": "^4.1.0", "**/xml2js": "^0.5.0", "**/yaml": "^2.2.2", - "**/eslint-plugin-mocha-next/mocha": "npm:mocha@^10.1.0" + "**/eslint-plugin-mocha-next/mocha": "npm:mocha@^10.1.0", + "**/@babel/traverse": "^7.23.2" }, "workspaces": { "packages": [ @@ -229,10 +231,10 @@ "yauzl": "^2.10.0" }, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/parser": "^7.16.6", - "@babel/register": "^7.16.5", - "@babel/types": "^7.16.0", + "@babel/core": "^7.22.9", + "@babel/parser": "^7.22.9", + "@babel/register": "^7.22.9", + "@babel/types": "^7.22.9", "@elastic/apm-rum": "^5.6.1", "@elastic/charts": "31.1.0", "@elastic/ems-client": "7.10.0", diff --git a/packages/osd-analytics/babel.config.js b/packages/osd-analytics/babel.config.js index 06979152709a..31c41164c3ef 100644 --- a/packages/osd-analytics/babel.config.js +++ b/packages/osd-analytics/babel.config.js @@ -30,7 +30,7 @@ // We can't use common OpenSearch Dashboards presets here because of babel versions incompatibility module.exports = { - plugins: ['@babel/plugin-proposal-class-properties'], + plugins: ['@babel/plugin-transform-class-properties'], env: { web: { presets: ['@osd/babel-preset/webpack_preset'], diff --git a/packages/osd-analytics/package.json b/packages/osd-analytics/package.json index 954f6cc51ba4..73fdd2b102cb 100644 --- a/packages/osd-analytics/package.json +++ b/packages/osd-analytics/package.json @@ -14,7 +14,7 @@ "osd:watch": "../../scripts/use_node scripts/build --source-maps --watch" }, "devDependencies": { - "@babel/cli": "^7.16.0", + "@babel/cli": "^7.22.9", "@osd/dev-utils": "1.0.0", "@osd/babel-preset": "1.0.0", "typescript": "4.0.2" diff --git a/packages/osd-babel-preset/common_preset.js b/packages/osd-babel-preset/common_preset.js index 3b0bdf22fec2..493c67afbcb1 100644 --- a/packages/osd-babel-preset/common_preset.js +++ b/packages/osd-babel-preset/common_preset.js @@ -29,30 +29,23 @@ */ const plugins = [ + '@babel/plugin-transform-class-properties', + '@babel/plugin-transform-private-methods', require.resolve('babel-plugin-add-module-exports'), - // The class properties proposal was merged with the private fields proposal - // into the "class fields" proposal which is stage 3. - // See https://github.com/babel/proposals/issues/12 for progress - require.resolve('@babel/plugin-proposal-class-properties'), - // Optional Chaining proposal is stage 4 (https://github.com/tc39/proposal-optional-chaining) // Need this since we are using TypeScript 3.7+ - require.resolve('@babel/plugin-proposal-optional-chaining'), + require.resolve('@babel/plugin-transform-optional-chaining'), // Nullish coalescing proposal is stage 4 (https://github.com/tc39/proposal-nullish-coalescing) // Need this since we are using TypeScript 3.7+ - require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'), + require.resolve('@babel/plugin-transform-nullish-coalescing-operator'), // Proposal is merged into ECMA-262 (https://github.com/tc39/proposal-export-ns-from) // Need this since we are using TypeScript 3.8+ - require.resolve('@babel/plugin-proposal-export-namespace-from'), - - // Proposal is merged into ECMA-262 (https://github.com/tc39/proposal-export-ns-from) - // Need this since we are using TypeScript 3.9+ - require.resolve('@babel/plugin-proposal-private-methods'), + require.resolve('@babel/plugin-transform-export-namespace-from'), // Proposal is on stage 4 (https://github.com/tc39/proposal-logical-assignment) - require.resolve('@babel/plugin-proposal-logical-assignment-operators'), + require.resolve('@babel/plugin-transform-logical-assignment-operators'), ]; module.exports = { diff --git a/packages/osd-babel-preset/package.json b/packages/osd-babel-preset/package.json index b471529bbda0..676afffe7cdc 100644 --- a/packages/osd-babel-preset/package.json +++ b/packages/osd-babel-preset/package.json @@ -7,15 +7,13 @@ "devOnly": true }, "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-react": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.9", + "@babel/plugin-transform-optional-chaining": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.9", + "@babel/preset-typescript": "^7.22.9", "babel-plugin-add-module-exports": "^1.0.4", "babel-plugin-styled-components": "^2.0.2", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", diff --git a/packages/osd-dev-utils/package.json b/packages/osd-dev-utils/package.json index 6a7a4fd9d647..a361388647c5 100644 --- a/packages/osd-dev-utils/package.json +++ b/packages/osd-dev-utils/package.json @@ -13,7 +13,7 @@ "devOnly": true }, "dependencies": { - "@babel/core": "^7.16.5", + "@babel/core": "^7.22.9", "@osd/utils": "1.0.0", "axios": "^0.27.2", "chalk": "^4.1.0", diff --git a/packages/osd-eslint-import-resolver-opensearch-dashboards/package.json b/packages/osd-eslint-import-resolver-opensearch-dashboards/package.json index 1112cb1ed223..2dfa00a516ba 100755 --- a/packages/osd-eslint-import-resolver-opensearch-dashboards/package.json +++ b/packages/osd-eslint-import-resolver-opensearch-dashboards/package.json @@ -15,7 +15,7 @@ "dependencies": { "debug": "^2.6.9", "eslint-import-resolver-node": "0.3.2", - "eslint-import-resolver-webpack": "0.11.1", + "eslint-import-resolver-webpack": "0.13.8", "glob-all": "^3.2.1", "lru-cache": "^4.1.5", "resolve": "^1.7.1", diff --git a/packages/osd-i18n/package.json b/packages/osd-i18n/package.json index cda6b10c428b..ca15c98cf0fb 100644 --- a/packages/osd-i18n/package.json +++ b/packages/osd-i18n/package.json @@ -7,8 +7,8 @@ "license": "Apache-2.0", "private": true, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", + "@babel/cli": "^7.22.9", + "@babel/core": "^7.22.9", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "@types/intl-relativeformat": "^2.1.0", diff --git a/packages/osd-interpreter/package.json b/packages/osd-interpreter/package.json index 5667f0661e1f..bc439b791c72 100644 --- a/packages/osd-interpreter/package.json +++ b/packages/osd-interpreter/package.json @@ -9,16 +9,16 @@ "osd:watch": "../../scripts/use_node scripts/build --dev --watch" }, "dependencies": { - "@babel/runtime": "^7.16.5", + "@babel/runtime": "^7.22.9", "@osd/i18n": "1.0.0", "lodash": "^4.17.21", "uuid": "3.3.2" }, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-runtime": "^7.16.5", + "@babel/cli": "^7.22.9", + "@babel/core": "^7.22.9", + "@babel/plugin-transform-modules-commonjs": "^7.22.9", + "@babel/plugin-transform-runtime": "^7.22.9", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "babel-loader": "^8.2.3", diff --git a/packages/osd-opensearch/package.json b/packages/osd-opensearch/package.json index 89e24f46dc43..3eebd036ad53 100644 --- a/packages/osd-opensearch/package.json +++ b/packages/osd-opensearch/package.json @@ -29,7 +29,7 @@ }, "devDependencies": { "@osd/babel-preset": "1.0.0", - "@babel/cli": "^7.16.0", + "@babel/cli": "^7.22.9", "del": "^6.1.1" } } diff --git a/packages/osd-opensearch/src/cli_commands/snapshot.js b/packages/osd-opensearch/src/cli_commands/snapshot.js index 3cf8701856bd..ff21dbe851c8 100644 --- a/packages/osd-opensearch/src/cli_commands/snapshot.js +++ b/packages/osd-opensearch/src/cli_commands/snapshot.js @@ -49,6 +49,7 @@ exports.help = (defaults = {}) => { -E Additional key=value settings to pass to OpenSearch --download-only Download the snapshot but don't actually start it --ssl Sets up SSL on OpenSearch + --security Installs and sets up the OpenSearch Security plugin on the cluster --P OpenSearch plugin artifact URL to install it on the cluster. We can use the flag multiple times to install multiple plugins on the cluster snapshot. The argument value can be url to zip file, maven coordinates of the plugin or for local zip files, use file:. @@ -74,6 +75,8 @@ exports.run = async (defaults = {}) => { boolean: ['download-only'], + boolean: ['security'], + default: defaults, }); @@ -91,6 +94,10 @@ exports.run = async (defaults = {}) => { await cluster.installOpenSearchPlugins(installPath, options.opensearchPlugins); } + if (options.security) { + await cluster.setupSecurity(installPath, options.version ?? defaults.version); + } + options.bundledJDK = true; await cluster.run(installPath, options); diff --git a/packages/osd-opensearch/src/cluster.js b/packages/osd-opensearch/src/cluster.js index 3527668eed05..455a1e5f919f 100644 --- a/packages/osd-opensearch/src/cluster.js +++ b/packages/osd-opensearch/src/cluster.js @@ -34,7 +34,7 @@ const execa = require('execa'); const chalk = require('chalk'); const path = require('path'); const { downloadSnapshot, installSnapshot, installSource, installArchive } = require('./install'); -const { OPENSEARCH_BIN, OPENSEARCH_PLUGIN } = require('./paths'); +const { OPENSEARCH_BIN, OPENSEARCH_PLUGIN, OPENSEARCH_SECURITY_INSTALL } = require('./paths'); const { log: defaultLog, parseOpenSearchLog, extractConfigFiles, decompress } = require('./utils'); const { createCliError } = require('./errors'); const { promisify } = require('util'); @@ -42,6 +42,19 @@ const treeKillAsync = promisify(require('tree-kill')); const { parseSettings, SettingsFilter } = require('./settings'); const { CA_CERT_PATH, OPENSEARCH_P12_PATH, OPENSEARCH_P12_PASSWORD } = require('@osd/dev-utils'); const readFile = util.promisify(fs.readFile); +const chmodAsync = util.promisify(fs.chmod); + +const LATEST_ENGINE_PLUGIN_BASE_URL = + 'https://ci.opensearch.org/ci/dbc/distribution-build-opensearch'; + +function generateEnginePluginUrl(version, plugin) { + const legacyVersion = `${version}.0`; + const [platform, type] = + process.platform === 'win32' ? ['windows', 'zip'] : [process.platform, 'tar']; + const arch = process.arch === 'arm64' ? 'arm64' : 'x64'; + + return `${LATEST_ENGINE_PLUGIN_BASE_URL}/${version}/latest/${platform}/${arch}/${type}/builds/opensearch/plugins/${plugin}-${legacyVersion}.zip`; +} // listen to data on stream until map returns anything but undefined const first = (stream, map) => @@ -57,9 +70,10 @@ const first = (stream, map) => }); exports.Cluster = class Cluster { - constructor({ log = defaultLog, ssl = false } = {}) { + constructor({ log = defaultLog, ssl = false, security = false } = {}) { this._log = log; this._ssl = ssl; + this._security = security; this._caCertPromise = ssl ? readFile(CA_CERT_PATH) : undefined; } @@ -193,6 +207,23 @@ exports.Cluster = class Cluster { } } + /** + * Setups cluster with security demo configuration + * + * @param {string} installPath + * @property {String} version - version of OpenSearch + */ + async setupSecurity(installPath, version) { + const pluginUrl = generateEnginePluginUrl(version, 'opensearch-security'); + await this.installOpenSearchPlugins(installPath, pluginUrl); + this._log.info('Setting up security'); + const pluginPath = path.resolve(installPath, OPENSEARCH_SECURITY_INSTALL); + if (pluginPath) { + await chmodAsync(pluginPath, '755'); + await execa(OPENSEARCH_SECURITY_INSTALL, ['-y', '-i', '-s'], { cwd: installPath }); + } + } + /** * Starts OpenSearch and returns resolved promise once started * diff --git a/packages/osd-opensearch/src/paths.js b/packages/osd-opensearch/src/paths.js index 93bb80e97ff1..d316f7cd41bf 100644 --- a/packages/osd-opensearch/src/paths.js +++ b/packages/osd-opensearch/src/paths.js @@ -35,6 +35,10 @@ function maybeUseBat(bin) { return os.platform().startsWith('win') ? `${bin}.bat` : bin; } +function maybeUseBatOrShell(bin) { + return os.platform().startsWith('win') ? `${bin}.bat` : `${bin}.sh`; +} + const tempDir = os.tmpdir(); exports.BASE_PATH = path.resolve(tempDir, 'osd-opensearch'); @@ -45,3 +49,6 @@ exports.OPENSEARCH_CONFIG = 'config/opensearch.yml'; exports.OPENSEARCH_KEYSTORE_BIN = maybeUseBat('./bin/opensearch-keystore'); exports.OPENSEARCH_PLUGIN = maybeUseBat('./bin/opensearch-plugin'); +exports.OPENSEARCH_SECURITY_INSTALL = maybeUseBatOrShell( + './plugins/opensearch-security/tools/install_demo_configuration' +); diff --git a/packages/osd-optimizer/package.json b/packages/osd-optimizer/package.json index e0410c441c38..3f90fde65bfb 100644 --- a/packages/osd-optimizer/package.json +++ b/packages/osd-optimizer/package.json @@ -10,8 +10,8 @@ "osd:watch": "yarn build --watch" }, "dependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", + "@babel/cli": "^7.22.9", + "@babel/core": "^7.22.9", "@osd/babel-preset": "1.0.0", "@osd/cross-platform": "1.0.0", "@osd/dev-utils": "1.0.0", diff --git a/packages/osd-pm/package.json b/packages/osd-pm/package.json index 90b7b9a29634..94b2c327274d 100644 --- a/packages/osd-pm/package.json +++ b/packages/osd-pm/package.json @@ -13,11 +13,9 @@ "prettier": "prettier --write './src/**/*.ts'" }, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.9", "@node-rs/xxhash": "^1.3.0", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", diff --git a/packages/osd-test/package.json b/packages/osd-test/package.json index c1ee4f1687cd..5512203ca3c9 100644 --- a/packages/osd-test/package.json +++ b/packages/osd-test/package.json @@ -13,7 +13,7 @@ "devOnly": true }, "devDependencies": { - "@babel/cli": "^7.16.0", + "@babel/cli": "^7.22.9", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "@osd/utils": "1.0.0", diff --git a/release-notes/opensearch-dashboards.release-notes-1.3.14.md b/release-notes/opensearch-dashboards.release-notes-1.3.14.md new file mode 100644 index 000000000000..441b7a602257 --- /dev/null +++ b/release-notes/opensearch-dashboards.release-notes-1.3.14.md @@ -0,0 +1,19 @@ +# Version 1.3.14 Release Notes + +### 🛡 Security + +- [CVE-2023-46234] Bump `eslint-import-resolver-webpack` from `0.11.1` to `0.13.8` and `browserify-sign` from `4.2.1` to `4.2.2` ([#5414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5414/)) +- [CVE-2023-45133] Add package resolution for `@babel/traverse` to `7.23.2` to fix vulnerability ([#5309](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5309)) +- [CVE-2017-16137] Bump `debug` versions via yarn updates and resolutions ([#5573](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5573)) + +### 📈 Features/Enhancements + +### 🐛 Bug Fixes + +### 🚞 Infrastructure + +### 📝 Documentation + +### 🛠 Maintenance + +- [Version] Increment version to 1.3.14 ([#5531](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5531)) diff --git a/release-notes/opensearch-dashboards.release-notes-2.11.1.md b/release-notes/opensearch-dashboards.release-notes-2.11.1.md new file mode 100644 index 000000000000..dd92226bfdc9 --- /dev/null +++ b/release-notes/opensearch-dashboards.release-notes-2.11.1.md @@ -0,0 +1,25 @@ +## Version 2.11.1 Release Notes + +### 🛡 Security + +- [CVE-2023-45133] Add package resolution for `@babel/traverse` to `7.23.2` to fix vulnerability ([#5309](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5309)) +- [CVE-2023-46234] Bump `eslint-import-resolver-webpack` from `0.11.1` to `0.13.8` and `browserify-sign` from `4.2.1` to `4.2.2` ([#5414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5414/)) + +### 📈 Features/Enhancements + +### 🐛 Bug Fixes + +- Fix navigation issue across dashboards ([#5435](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5435)) +- [Discover] Fix table panel auto-sizing ([#5441](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5441)) + +### 🚞 Infrastructure + +- [CI][Test] Add plugin functional tests on GitHub Actions ([#5383](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5383)) + +### 📝 Documentation + +- Add Release Notes and update CHANGELOG.md for 2.11.1 ([#5486](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5486)) + +### 🔩 Tests + +### 🛠 Maintenance diff --git a/src/cli/serve/serve.js b/src/cli/serve/serve.js index 34c03c2547bc..2ae3522b6b1c 100644 --- a/src/cli/serve/serve.js +++ b/src/cli/serve/serve.js @@ -126,6 +126,60 @@ function applyConfigOverrides(rawConfig, opts, extraCliOptions) { set('opensearch.hosts', opensearchHosts); set('opensearch.ssl.certificateAuthorities', CA_CERT_PATH); } + + if (opts.security) { + const customOpenSearchHosts = opts.opensearch + ? opts.opensearch.split(',') + : [].concat(get('opensearch.hosts') || []); + + const opensearchHosts = ( + (customOpenSearchHosts.length > 0 && customOpenSearchHosts) || ['https://localhost:9200'] + ).map((hostUrl) => { + const parsedUrl = new URL('', hostUrl); + return `https://localhost:${parsedUrl.port}`; + }); + + if (!get('opensearch.hosts')) { + set('opensearch.hosts', opensearchHosts); + } + + if (!get('opensearch.ssl.verificationMode')) { + set('opensearch.ssl.verificationMode', 'none'); + } + + if (get('opensearch.username') === 'opensearch_dashboards_system') { + set('opensearch.username', process.env.OPENSEARCH_USERNAME); + } + + if (get('opensearch.password') === 'changeme') { + set('opensearch.password', process.env.OPENSEARCH_PASSWORD); + } + + if (!get('opensearch.requestHeadersWhitelist')) { + set('opensearch.requestHeadersWhitelist', ['authorization', 'securitytenant']); + } + + if (!get('opensearch_security.multitenancy.enabled')) { + set('opensearch_security.multitenancy.enabled', true); + } + + if (!get('opensearch_security.multitenancy.tenants.preferred')) { + set('opensearch_security.multitenancy.tenants.preferred', ['Private', 'Global']); + } + + if ( + !get('opensearch_security.readonly_mode.roles') && + process.env.OPENSEARCH_SECURITY_READONLY_ROLE + ) { + set('opensearch_security.readonly_mode.roles', [ + process.env.OPENSEARCH_SECURITY_READONLY_ROLE, + ]); + } + + if (!get('opensearch_security.cookie.secure')) { + set('opensearch_security.cookie.secure', false); + } + } } if (opts.opensearch) set('opensearch.hosts', opts.opensearch.split(',')); @@ -196,6 +250,7 @@ export default function (program) { command .option('--dev', 'Run the server with development mode defaults') .option('--ssl', 'Run the dev server using HTTPS') + .option('--security', 'Run the dev server using security defaults') .option('--dist', 'Use production assets from osd/optimizer') .option( '--no-base-path', diff --git a/src/core/public/application/application_service.tsx b/src/core/public/application/application_service.tsx index f6efbfac422e..62c13694e245 100644 --- a/src/core/public/application/application_service.tsx +++ b/src/core/public/application/application_service.tsx @@ -32,6 +32,7 @@ import React from 'react'; import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs'; import { map, shareReplay, takeUntil, distinctUntilChanged, filter } from 'rxjs/operators'; import { createBrowserHistory, History } from 'history'; +import { RecursiveReadonly } from '@osd/utility-types'; import { MountPoint } from '../types'; import { HttpSetup, HttpStart } from '../http'; @@ -73,7 +74,7 @@ interface StartDeps { // Mount functions with two arguments are assumed to expect deprecated `context` object. const isAppMountDeprecated = (mount: (...args: any[]) => any): mount is AppMountDeprecated => mount.length === 2; -function filterAvailable(m: Map, capabilities: Capabilities) { +function filterAvailable(m: Map, capabilities: RecursiveReadonly) { return new Map( [...m].filter( ([id]) => capabilities.navLinks[id] === undefined || capabilities.navLinks[id] === true diff --git a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap index d5903379b2eb..7ec470c74e03 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap @@ -4164,6 +4164,7 @@ exports[`Header handles visibility and lock changes 1`] = ` "thrownError": null, } } + side="right" /> @@ -9636,6 +9637,7 @@ exports[`Header renders condensed header 1`] = ` "thrownError": null, } } + side="right" /> diff --git a/src/core/public/chrome/ui/header/header.tsx b/src/core/public/chrome/ui/header/header.tsx index acc7c6869145..8eb594802b8d 100644 --- a/src/core/public/chrome/ui/header/header.tsx +++ b/src/core/public/chrome/ui/header/header.tsx @@ -228,7 +228,7 @@ export function Header({ - + diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 7dd8c6561ade..0acf4524ab14 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -388,6 +388,8 @@ export class DocLinksService { ganttCharts: `${OPENSEARCH_DASHBOARDS_VERSIONED_DOCS}gantt`, // https://opensearch.org/docs/latest/dashboards/reporting/ reporting: `${OPENSEARCH_DASHBOARDS_VERSIONED_DOCS}reporting`, + // https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/ + devTools: `${OPENSEARCH_DASHBOARDS_VERSIONED_DOCS}dev-tools/index-dev/`, notebooks: { // https://opensearch.org/docs/latest/dashboards/notebooks/ base: `${OPENSEARCH_DASHBOARDS_VERSIONED_DOCS}notebooks`, diff --git a/src/core/public/plugins/plugin.test.ts b/src/core/public/plugins/plugin.test.ts index fd9446f1565c..178c2295ba2a 100644 --- a/src/core/public/plugins/plugin.test.ts +++ b/src/core/public/plugins/plugin.test.ts @@ -45,6 +45,7 @@ function createManifest( requiredPlugins: required, optionalPlugins: optional, requiredBundles: [], + requiredEnginePlugins: {}, } as DiscoveredPlugin; } diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index f26626ed1ca3..acca058fe657 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -85,7 +85,7 @@ function createManifest( version: 'some-version', configPath: ['path'], requiredPlugins: required, - requiredEnginePlugins: optional, + requiredEnginePlugins: {}, optionalPlugins: optional, requiredBundles: [], }; diff --git a/src/core/server/core_usage_data/core_usage_data_service.mock.ts b/src/core/server/core_usage_data/core_usage_data_service.mock.ts index 5e1bcbe7867b..ae6326a8c2e9 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.mock.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.mock.ts @@ -105,7 +105,7 @@ const createStartContractMock = () => { keyConfigured: false, keystoreConfigured: false, redirectHttpFromPortConfigured: false, - supportedProtocols: ['TLSv1.1', 'TLSv1.2'], + supportedProtocols: ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], truststoreConfigured: false, }, xsrf: { diff --git a/src/core/server/core_usage_data/core_usage_data_service.test.ts b/src/core/server/core_usage_data/core_usage_data_service.test.ts index ff3b0f1a1134..7e28a74b98de 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.test.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.test.ts @@ -163,6 +163,7 @@ describe('CoreUsageDataService', () => { "supportedProtocols": Array [ "TLSv1.1", "TLSv1.2", + "TLSv1.3", ], "truststoreConfigured": false, }, diff --git a/src/core/server/cross_compatibility/README.md b/src/core/server/cross_compatibility/README.md new file mode 100644 index 000000000000..88b4aaefe424 --- /dev/null +++ b/src/core/server/cross_compatibility/README.md @@ -0,0 +1,78 @@ +## Cross Compatibility Service + +The cross compatibility service provides a way for OpenSearch Dashboards plugins to check if they are compatible with the installed OpenSearch plugins. This allows plugins to gracefully degrade their functionality or disable themselves if they are not compatible with the current OpenSearch plugin version. + +### Overview + +OpenSearch Dashboards plugins depend on specific versions of OpenSearch plugins. When a plugin is installed, OpenSearch Dashboards checks to make sure that the required OpenSearch plugins are installed and compatible. If a required plugin is not installed or is not compatible, OpenSearch Dashboards will log a warning but will still allow the plugin to start. + +The cross compatibility service provides a way for plugins to check for compatibility with their OpenSearch counterparts. This allows plugins to make informed decisions about how to behave when they are not compatible. For example, a plugin could disable itself, limit its functionality, or notify the user that they are using an incompatible plugin. + +### Usage + +To use the Cross Compatibility service, plugins can call the `verifyOpenSearchPluginsState()` API. This API checks the compatibility of the plugin with the installed OpenSearch plugins. The API returns a list of `CrossCompatibilityResult` objects, which contain information about the compatibility of each plugin. + +The `CrossCompatibilityResult` object has the following properties: + +`pluginName`: The OpenSearch Plugin name. +`isCompatible`: A boolean indicating whether the plugin is compatible. +`incompatibilityReason`: The reason the OpenSearch Plugin version is not compatible with the plugin. +`installedVersions`: The version of the plugin that is installed. + +Plugins can use the information in the `CrossCompatibilityResult` object to decide how to behave. For example, a plugin could disable itself if the `isCompatible` property is false. + +The `verifyOpenSearchPluginsState()` API should be called from the `start()` lifecycle method. This allows plugins to check for compatibility before they start. + +### Example usage inside DashboardsSample Plugin + +``` +export class DashboardsSamplePlugin implements Plugin { + + public setup(core: CoreSetup) { + this.logger.debug('Dashboard sample plugin setup'); + this.capabilitiesService = core.capabilities; + return {}; + } + public start(core: CoreStart) { + this.logger.debug('Dashboard sample plugin: Started'); + exampleCompatibilityCheck(core); + return {}; + } + ...... + + // Example capability provider + export const capabilitiesProvider = () => ({ + exampleDashboardsPlugin: { + show: true, + createShortUrl: true, + }, + }); + + function exampleCompatibilityCheck(core: CoreStart) { + const pluginName = 'exampleDashboardsPlugin'; + const result = await core.versionCompatibility.verifyOpenSearchPluginsState(pluginName); + result.forEach((mustHavePlugin) => { + if (!mustHavePlugin.isCompatible) { + // use capabilities provider API to register plugin's capability to enable/disbale plugin + this.capabilitiesService.registerProvider(capabilitiesProvider); + } + else { // feature to enable when plugin has compatible version installed } + }); + ...... + } + ..... +} + +``` +The `exampleCompatibilityCheck()` function uses the `verifyOpenSearchPluginsState()` API to check for compatibility with the `DashboardsSample` plugin. If the plugin is compatible, the function enables the plugin's features. If the plugin is not compatible, the function gracefully degrades the plugin's functionality. + +### Use cases: + +The cross compatibility service can be used by plugins to: + +* Disable themselves if they are not compatible with the installed OpenSearch plugins. +* Limit their functionality if they are not fully compatible with the installed OpenSearch plugins. +* Notify users if they are using incompatible plugins. +* Provide information to users about how to upgrade their plugins. + +The cross compatibility service is a valuable tool for developers who are building plugins for OpenSearch Dashboards. It allows plugins to be more resilient to changes in the OpenSearch ecosystem. \ No newline at end of file diff --git a/src/core/server/cross_compatibility/cross_compatibility.mock.ts b/src/core/server/cross_compatibility/cross_compatibility.mock.ts new file mode 100644 index 000000000000..ffd0f6dcf8e6 --- /dev/null +++ b/src/core/server/cross_compatibility/cross_compatibility.mock.ts @@ -0,0 +1,17 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CrossCompatibilityServiceStart } from './types'; + +const createStartContractMock = () => { + const startContract: jest.Mocked = { + verifyOpenSearchPluginsState: jest.fn().mockReturnValue(Promise.resolve({})), + }; + return startContract; +}; + +export const crossCompatibilityServiceMock = { + createStartContract: createStartContractMock, +}; diff --git a/src/core/server/cross_compatibility/cross_compatibility_service.test.ts b/src/core/server/cross_compatibility/cross_compatibility_service.test.ts new file mode 100644 index 000000000000..076af55c21ca --- /dev/null +++ b/src/core/server/cross_compatibility/cross_compatibility_service.test.ts @@ -0,0 +1,81 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CrossCompatibilityService } from './cross_compatibility_service'; +import { CompatibleEnginePluginVersions } from '../plugins/types'; +import { mockCoreContext } from '../core_context.mock'; +import { opensearchServiceMock } from '../opensearch/opensearch_service.mock'; + +describe('CrossCompatibilityService', () => { + let service: CrossCompatibilityService; + let opensearch: any; + const plugins = new Map(); + + beforeEach(() => { + opensearch = opensearchServiceMock.createStart(); + opensearch.client.asInternalUser.cat.plugins.mockResolvedValue({ + body: [ + { + name: 'node1', + component: 'os-plugin', + version: '1.1.0.0', + }, + ], + } as any); + + plugins?.set('foo', { 'os-plugin': '1.0.0 - 2.0.0' }); + plugins?.set('incompatiblePlugin', { 'os-plugin': '^3.0.0' }); + plugins?.set('test', {}); + service = new CrossCompatibilityService(mockCoreContext.create()); + }); + + it('should start the cross compatibility service', async () => { + const startDeps = { opensearch, plugins }; + const startResult = await service.start(startDeps); + expect(startResult).toEqual({ + verifyOpenSearchPluginsState: expect.any(Function), + }); + }); + + it('should return an array of CrossCompatibilityResult objects if plugin dependencies are specified', async () => { + const pluginName = 'foo'; + const startDeps = { opensearch, plugins }; + const startResult = await service.start(startDeps); + const results = await startResult.verifyOpenSearchPluginsState(pluginName); + expect(results).not.toBeUndefined(); + expect(results.length).toEqual(1); + expect(results[0].pluginName).toEqual('os-plugin'); + expect(results[0].isCompatible).toEqual(true); + expect(results[0].incompatibilityReason).toEqual(''); + expect(results[0].installedVersions).toEqual(['1.1.0.0']); + expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); + }); + + it('should return an empty array if no plugin dependencies are specified', async () => { + const pluginName = 'test'; + const startDeps = { opensearch, plugins }; + const startResult = await service.start(startDeps); + const results = await startResult.verifyOpenSearchPluginsState(pluginName); + expect(results).not.toBeUndefined(); + expect(results.length).toEqual(0); + expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); + }); + + it('should return an array of CrossCompatibilityResult objects with the incompatible reason if the plugin is not installed', async () => { + const pluginName = 'incompatiblePlugin'; + const startDeps = { opensearch, plugins }; + const startResult = await service.start(startDeps); + const results = await startResult.verifyOpenSearchPluginsState(pluginName); + expect(results).not.toBeUndefined(); + expect(results.length).toEqual(1); + expect(results[0].pluginName).toEqual('os-plugin'); + expect(results[0].isCompatible).toEqual(false); + expect(results[0].incompatibilityReason).toEqual( + 'OpenSearch plugin "os-plugin" in the version range "^3.0.0" is not installed on the OpenSearch for the OpenSearch Dashboards plugin to function as expected.' + ); + expect(results[0].installedVersions).toEqual(['1.1.0.0']); + expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/core/server/cross_compatibility/cross_compatibility_service.ts b/src/core/server/cross_compatibility/cross_compatibility_service.ts new file mode 100644 index 000000000000..cb088e7feac7 --- /dev/null +++ b/src/core/server/cross_compatibility/cross_compatibility_service.ts @@ -0,0 +1,115 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CatPluginsResponse } from '@opensearch-project/opensearch/api/types'; +import semver from 'semver'; +import { CrossCompatibilityResult, CrossCompatibilityServiceStart } from './types'; +import { CoreContext } from '../core_context'; +import { Logger } from '../logging'; +import { OpenSearchServiceStart } from '../opensearch'; +import { CompatibleEnginePluginVersions, PluginName } from '../plugins/types'; + +export interface StartDeps { + opensearch: OpenSearchServiceStart; + plugins: Map; +} + +export class CrossCompatibilityService { + private readonly log: Logger; + + constructor(coreContext: CoreContext) { + this.log = coreContext.logger.get('cross-compatibility-service'); + } + + start({ opensearch, plugins }: StartDeps): CrossCompatibilityServiceStart { + this.log.warn('Starting cross compatibility service'); + return { + verifyOpenSearchPluginsState: (pluginName: string) => { + const pluginOpenSearchDeps = plugins.get(pluginName) || {}; + return this.verifyOpenSearchPluginsState(opensearch, pluginOpenSearchDeps, pluginName); + }, + }; + } + + public async getOpenSearchPlugins(opensearch: OpenSearchServiceStart) { + // Makes cat.plugin api call to fetch list of OpenSearch plugins installed on the cluster + try { + const { body } = await opensearch.client.asInternalUser.cat.plugins({ + format: 'JSON', + }); + return body; + } catch (error) { + this.log.warn( + `Cat API call to OpenSearch to get list of plugins installed on the cluster has failed: ${error}` + ); + return []; + } + } + + public checkPluginVersionCompatibility( + pluginOpenSearchDeps: CompatibleEnginePluginVersions, + opensearchInstalledPlugins: CatPluginsResponse, + dashboardsPluginName: string + ) { + const results: CrossCompatibilityResult[] = []; + for (const [pluginName, versionRange] of Object.entries(pluginOpenSearchDeps)) { + // add check to see if the Dashboards plugin version is compatible with installed OpenSearch plugin + const { isCompatible, installedPluginVersions } = this.isVersionCompatibleOSPluginInstalled( + opensearchInstalledPlugins, + pluginName, + versionRange + ); + results.push({ + pluginName, + isCompatible: !isCompatible ? false : true, + incompatibilityReason: !isCompatible + ? `OpenSearch plugin "${pluginName}" in the version range "${versionRange}" is not installed on the OpenSearch for the OpenSearch Dashboards plugin to function as expected.` + : '', + installedVersions: installedPluginVersions, + }); + + if (!isCompatible) { + this.log.warn( + `OpenSearch plugin "${pluginName}" is not installed on the cluster for the OpenSearch Dashboards plugin "${dashboardsPluginName}" to function as expected.` + ); + } + } + return results; + } + + private async verifyOpenSearchPluginsState( + opensearch: OpenSearchServiceStart, + pluginOpenSearchDeps: CompatibleEnginePluginVersions, + pluginName: string + ): Promise { + this.log.info('Checking OpenSearch Plugin version compatibility'); + // make _cat/plugins?format=json call to the OpenSearch instance + const opensearchInstalledPlugins = await this.getOpenSearchPlugins(opensearch); + const results = this.checkPluginVersionCompatibility( + pluginOpenSearchDeps, + opensearchInstalledPlugins, + pluginName + ); + return results; + } + + private isVersionCompatibleOSPluginInstalled( + opensearchInstalledPlugins: CatPluginsResponse, + depPluginName: string, + depPluginVersionRange: string + ) { + let isCompatible = false; + const installedPluginVersions = new Set(); + opensearchInstalledPlugins.forEach((obj) => { + if (obj.component === depPluginName && obj.version) { + installedPluginVersions.add(obj.version); + if (semver.satisfies(semver.coerce(obj.version)!.version, depPluginVersionRange)) { + isCompatible = true; + } + } + }); + return { isCompatible, installedPluginVersions: [...installedPluginVersions] }; + } +} diff --git a/src/core/server/cross_compatibility/index.ts b/src/core/server/cross_compatibility/index.ts new file mode 100644 index 000000000000..02db8b6d2cfc --- /dev/null +++ b/src/core/server/cross_compatibility/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +export { CrossCompatibilityService } from './cross_compatibility_service'; +export { CrossCompatibilityResult, CrossCompatibilityServiceStart } from './types'; diff --git a/src/core/server/cross_compatibility/types.ts b/src/core/server/cross_compatibility/types.ts new file mode 100644 index 000000000000..30f32aa6d5fd --- /dev/null +++ b/src/core/server/cross_compatibility/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CrossCompatibilityResult } from '../../types/cross_compatibility'; + +/** + * API to check if the OpenSearch Dashboards plugin version is compatible with the installed OpenSearch plugin. + * + * @public + */ +export interface CrossCompatibilityServiceStart { + /** + * Checks if the OpenSearch Dashboards plugin version is compatible with the installed OpenSearch plugin. + * + * @returns {Promise} + */ + verifyOpenSearchPluginsState: (pluginName: string) => Promise; +} + +export { CrossCompatibilityResult }; diff --git a/src/core/server/http/__snapshots__/http_config.test.ts.snap b/src/core/server/http/__snapshots__/http_config.test.ts.snap index 70c8abf4ed7a..120299b6a349 100644 --- a/src/core/server/http/__snapshots__/http_config.test.ts.snap +++ b/src/core/server/http/__snapshots__/http_config.test.ts.snap @@ -78,6 +78,7 @@ Object { "supportedProtocols": Array [ "TLSv1.1", "TLSv1.2", + "TLSv1.3", ], "truststore": Object {}, }, diff --git a/src/core/server/http/ssl_config.test.ts b/src/core/server/http/ssl_config.test.ts index db83e44e282b..e1331f74e6ba 100644 --- a/src/core/server/http/ssl_config.test.ts +++ b/src/core/server/http/ssl_config.test.ts @@ -277,14 +277,19 @@ describe('#sslSchema', () => { certificate: '/path/to/certificate', enabled: true, key: '/path/to/key', - supportedProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2'], + supportedProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'], }; const singleKnownProtocolConfig = sslSchema.validate(singleKnownProtocol); expect(singleKnownProtocolConfig.supportedProtocols).toEqual(['TLSv1']); const allKnownProtocolsConfig = sslSchema.validate(allKnownProtocols); - expect(allKnownProtocolsConfig.supportedProtocols).toEqual(['TLSv1', 'TLSv1.1', 'TLSv1.2']); + expect(allKnownProtocolsConfig.supportedProtocols).toEqual([ + 'TLSv1', + 'TLSv1.1', + 'TLSv1.2', + 'TLSv1.3', + ]); }); test('rejects unknown protocols`', () => { @@ -299,21 +304,23 @@ describe('#sslSchema', () => { certificate: '/path/to/certificate', enabled: true, key: '/path/to/key', - supportedProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2', 'SOMEv100500'], + supportedProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3', 'SOMEv100500'], }; expect(() => sslSchema.validate(singleUnknownProtocol)).toThrowErrorMatchingInlineSnapshot(` "[supportedProtocols.0]: types that failed validation: - [supportedProtocols.0.0]: expected value to equal [TLSv1] - [supportedProtocols.0.1]: expected value to equal [TLSv1.1] -- [supportedProtocols.0.2]: expected value to equal [TLSv1.2]" +- [supportedProtocols.0.2]: expected value to equal [TLSv1.2] +- [supportedProtocols.0.3]: expected value to equal [TLSv1.3]" `); expect(() => sslSchema.validate(allKnownWithOneUnknownProtocols)) .toThrowErrorMatchingInlineSnapshot(` -"[supportedProtocols.3]: types that failed validation: -- [supportedProtocols.3.0]: expected value to equal [TLSv1] -- [supportedProtocols.3.1]: expected value to equal [TLSv1.1] -- [supportedProtocols.3.2]: expected value to equal [TLSv1.2]" +"[supportedProtocols.4]: types that failed validation: +- [supportedProtocols.4.0]: expected value to equal [TLSv1] +- [supportedProtocols.4.1]: expected value to equal [TLSv1.1] +- [supportedProtocols.4.2]: expected value to equal [TLSv1.2] +- [supportedProtocols.4.3]: expected value to equal [TLSv1.3]" `); }); }); diff --git a/src/core/server/http/ssl_config.ts b/src/core/server/http/ssl_config.ts index 8887c14a13e4..8fc725ca937e 100644 --- a/src/core/server/http/ssl_config.ts +++ b/src/core/server/http/ssl_config.ts @@ -41,6 +41,7 @@ const protocolMap = new Map([ ['TLSv1', cryptoConstants.SSL_OP_NO_TLSv1], ['TLSv1.1', cryptoConstants.SSL_OP_NO_TLSv1_1], ['TLSv1.2', cryptoConstants.SSL_OP_NO_TLSv1_2], + ['TLSv1.3', cryptoConstants.SSL_OP_NO_TLSv1_3], ]); export const sslSchema = schema.object( @@ -67,8 +68,13 @@ export const sslSchema = schema.object( }), redirectHttpFromPort: schema.maybe(schema.number()), supportedProtocols: schema.arrayOf( - schema.oneOf([schema.literal('TLSv1'), schema.literal('TLSv1.1'), schema.literal('TLSv1.2')]), - { defaultValue: ['TLSv1.1', 'TLSv1.2'], minSize: 1 } + schema.oneOf([ + schema.literal('TLSv1'), + schema.literal('TLSv1.1'), + schema.literal('TLSv1.2'), + schema.literal('TLSv1.3'), + ]), + { defaultValue: ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], minSize: 1 } ), clientAuthentication: schema.oneOf( [schema.literal('none'), schema.literal('optional'), schema.literal('required')], diff --git a/src/core/server/index.ts b/src/core/server/index.ts index ca55cc8dc1d5..708c9111cf22 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -76,6 +76,8 @@ import { StatusServiceSetup } from './status'; import { Auditor, AuditTrailSetup, AuditTrailStart } from './audit_trail'; import { AppenderConfigType, appendersSchema, LoggingServiceSetup } from './logging'; import { CoreUsageDataStart } from './core_usage_data'; +import { SecurityServiceSetup } from './security/types'; +import { CrossCompatibilityServiceStart } from './cross_compatibility/types'; // Because of #79265 we need to explicity import, then export these types for // scripts/telemetry_check.js to work as expected @@ -437,6 +439,8 @@ export interface CoreSetup = OsdServer as any; @@ -108,6 +109,7 @@ beforeEach(() => { auditTrail: auditTrailServiceMock.createSetupContract(), logging: loggingServiceMock.createInternalSetupContract(), metrics: metricsServiceMock.createInternalSetupContract(), + security: securityServiceMock.createSetupContract(), }, plugins: { 'plugin-id': 'plugin-value' }, uiPlugins: { diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index 165a67aa1f83..4dec545fd186 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -233,6 +233,7 @@ export class LegacyService implements CoreService { throw new Error('core.start.coreUsageData.getCoreUsageData is unsupported in legacy'); }, }, + crossCompatibility: startDeps.core.crossCompatibility, }; const router = setupDeps.core.http.createRouter('', this.legacyId); @@ -301,6 +302,7 @@ export class LegacyService implements CoreService { }, auditTrail: setupDeps.core.auditTrail, getStartServices: () => Promise.resolve([coreStart, startDeps.plugins, {}]), + security: setupDeps.core.security, }; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index 3dd289669a01..2a6114013b22 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -50,6 +50,8 @@ import { environmentServiceMock } from './environment/environment_service.mock'; import { statusServiceMock } from './status/status_service.mock'; import { auditTrailServiceMock } from './audit_trail/audit_trail_service.mock'; import { coreUsageDataServiceMock } from './core_usage_data/core_usage_data_service.mock'; +import { securityServiceMock } from './security/security_service.mock'; +import { crossCompatibilityServiceMock } from './cross_compatibility/cross_compatibility.mock'; export { configServiceMock } from './config/mocks'; export { httpServerMock } from './http/http_server.mocks'; @@ -69,6 +71,7 @@ export { statusServiceMock } from './status/status_service.mock'; export { contextServiceMock } from './context/context_service.mock'; export { capabilitiesServiceMock } from './capabilities/capabilities_service.mock'; export { coreUsageDataServiceMock } from './core_usage_data/core_usage_data_service.mock'; +export { crossCompatibilityServiceMock } from './cross_compatibility/cross_compatibility.mock'; export function pluginInitializerContextConfigMock(config: T) { const globalConfig: SharedGlobalConfig = { @@ -157,6 +160,7 @@ function createCoreSetupMock({ getStartServices: jest .fn, object, any]>, []>() .mockResolvedValue([createCoreStartMock(), pluginStartDeps, pluginStartContract]), + security: securityServiceMock.createSetupContract(), }; return mock; @@ -172,6 +176,7 @@ function createCoreStartMock() { savedObjects: savedObjectsServiceMock.createStartContract(), uiSettings: uiSettingsServiceMock.createStartContract(), coreUsageData: coreUsageDataServiceMock.createStartContract(), + crossCompatibility: crossCompatibilityServiceMock.createStartContract(), }; return mock; @@ -192,6 +197,7 @@ function createInternalCoreSetupMock() { auditTrail: auditTrailServiceMock.createSetupContract(), logging: loggingServiceMock.createInternalSetupContract(), metrics: metricsServiceMock.createInternalSetupContract(), + security: securityServiceMock.createSetupContract(), }; return setupDeps; } @@ -206,6 +212,7 @@ function createInternalCoreStartMock() { uiSettings: uiSettingsServiceMock.createStartContract(), auditTrail: auditTrailServiceMock.createStartContract(), coreUsageData: coreUsageDataServiceMock.createStartContract(), + crossCompatibility: crossCompatibilityServiceMock.createStartContract(), }; return startDeps; } diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index ab028e169a71..c0eb5b29bb63 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -220,6 +220,7 @@ export function createPluginSetupContext( }, getStartServices: () => plugin.startDependencies, auditTrail: deps.auditTrail, + security: deps.security, }; } @@ -270,5 +271,6 @@ export function createPluginStartContext( }, auditTrail: deps.auditTrail, coreUsageData: deps.coreUsageData, + crossCompatibility: deps.crossCompatibility, }; } diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 36c594908845..06b12643a64a 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -491,6 +491,7 @@ describe('PluginsService', () => { requiredPlugins: [], requiredBundles: [], optionalPlugins: [], + requiredEnginePlugins: {}, }, ]; diff --git a/src/core/server/plugins/plugins_service.ts b/src/core/server/plugins/plugins_service.ts index a85c649e65ee..2f4a3dfbc07c 100644 --- a/src/core/server/plugins/plugins_service.ts +++ b/src/core/server/plugins/plugins_service.ts @@ -38,7 +38,13 @@ import { CoreContext } from '../core_context'; import { Logger } from '../logging'; import { discover, PluginDiscoveryError, PluginDiscoveryErrorType } from './discovery'; import { PluginWrapper } from './plugin'; -import { DiscoveredPlugin, PluginConfigDescriptor, PluginName, InternalPluginInfo } from './types'; +import { + DiscoveredPlugin, + PluginConfigDescriptor, + PluginName, + InternalPluginInfo, + CompatibleEnginePluginVersions, +} from './types'; import { PluginsConfig, PluginsConfigType } from './plugins_config'; import { PluginsSystem } from './plugins_system'; import { InternalCoreSetup, InternalCoreStart } from '../internal_types'; @@ -97,6 +103,7 @@ export class PluginsService implements CoreService; private readonly pluginConfigDescriptors = new Map(); private readonly uiPluginInternalInfo = new Map(); + private readonly openSearchPluginInfo = new Map(); constructor(private readonly coreContext: CoreContext) { this.log = coreContext.logger.get('plugins-service'); @@ -128,6 +135,7 @@ export class PluginsService implements CoreService { expect(log.info).toHaveBeenCalledWith(`Starting [2] plugins: [order-1,order-0]`); }); - it('validates opensearch plugin installation when dependency is fulfilled', async () => { + it('validates plugin start when opensearch dependency is fulfilled', async () => { [ createPlugin('dependency-fulfilled-plugin', { requiredOSPlugin: { @@ -569,12 +569,9 @@ describe('start', () => { await pluginsSystem.setupPlugins(setupDeps); const pluginsStart = await pluginsSystem.startPlugins(startDeps); expect(pluginsStart).toBeInstanceOf(Map); - expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); - const log = logger.get.mock.results[0].value as jest.Mocked; - expect(log.warn).toHaveBeenCalledTimes(0); }); - it('validates opensearch plugin installation and does not error out when plugin is not installed', async () => { + it('validates plugin start when opensearch plugin dependency is not installed', async () => { [ createPlugin('dependency-missing-plugin', { requiredOSPlugin: { @@ -591,52 +588,5 @@ describe('start', () => { await pluginsSystem.setupPlugins(setupDeps); const pluginsStart = await pluginsSystem.startPlugins(startDeps); expect(pluginsStart).toBeInstanceOf(Map); - expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); - const log = logger.get.mock.results[0].value as jest.Mocked; - expect(log.warn).toHaveBeenCalledTimes(1); - expect(log.warn).toHaveBeenCalledWith( - `OpenSearch plugin "missing-opensearch-dep" is not installed on the engine for the OpenSearch Dashboards plugin to function as expected.` - ); - }); - - it('validates opensearch plugin installation and log warning when plugin exist but version is incompatible', async () => { - [ - createPlugin('version-mismatch-plugin', { - requiredOSPlugin: { - 'test-plugin-version-mismatch': '^1.0.0', - }, - }), - createPlugin('no-dependency-plugin'), - ].forEach((plugin, index) => { - jest.spyOn(plugin, 'setup').mockResolvedValue(`setup-as-${index}`); - jest.spyOn(plugin, 'start').mockResolvedValue(`started-as-${index}`); - pluginsSystem.addPlugin(plugin); - }); - - await pluginsSystem.setupPlugins(setupDeps); - const pluginsStart = await pluginsSystem.startPlugins(startDeps); - expect(pluginsStart).toBeInstanceOf(Map); - expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); - const log = logger.get.mock.results[0].value as jest.Mocked; - expect(log.warn).toHaveBeenCalledTimes(1); - expect(log.warn).toHaveBeenCalledWith( - `OpenSearch plugin "test-plugin-version-mismatch" is not installed on the engine for the OpenSearch Dashboards plugin to function as expected.` - ); - }); - - it('validates opensearch plugin installation and does not warn when there is no dependency', async () => { - [createPlugin('no-dependency-plugin-1'), createPlugin('no-dependency-plugin-2')].forEach( - (plugin, index) => { - jest.spyOn(plugin, 'setup').mockResolvedValue(`setup-as-${index}`); - jest.spyOn(plugin, 'start').mockResolvedValue(`started-as-${index}`); - pluginsSystem.addPlugin(plugin); - } - ); - await pluginsSystem.setupPlugins(setupDeps); - const pluginsStart = await pluginsSystem.startPlugins(startDeps); - expect(pluginsStart).toBeInstanceOf(Map); - expect(opensearch.client.asInternalUser.cat.plugins).toHaveBeenCalledTimes(1); - const log = logger.get.mock.results[0].value as jest.Mocked; - expect(log.warn).toHaveBeenCalledTimes(0); }); }); diff --git a/src/core/server/plugins/plugins_system.ts b/src/core/server/plugins/plugins_system.ts index 07aa88e9db31..dc69dec97b45 100644 --- a/src/core/server/plugins/plugins_system.ts +++ b/src/core/server/plugins/plugins_system.ts @@ -29,8 +29,6 @@ */ import { withTimeout } from '@osd/std'; -import semver from 'semver'; -import { CatPluginsResponse } from '@opensearch-project/opensearch/api/types'; import { CoreContext } from '../core_context'; import { Logger } from '../logging'; import { PluginWrapper } from './plugin'; @@ -38,17 +36,20 @@ import { DiscoveredPlugin, PluginName } from './types'; import { createPluginSetupContext, createPluginStartContext } from './plugin_context'; import { PluginsServiceSetupDeps, PluginsServiceStartDeps } from './plugins_service'; import { PluginDependencies } from '.'; +import { CrossCompatibilityService } from '../cross_compatibility'; const Sec = 1000; /** @internal */ export class PluginsSystem { private readonly plugins = new Map(); private readonly log: Logger; + private readonly crossCompatibilityService: CrossCompatibilityService; // `satup`, the past-tense version of the noun `setup`. private readonly satupPlugins: PluginName[] = []; constructor(private readonly coreContext: CoreContext) { this.log = coreContext.logger.get('plugins-system'); + this.crossCompatibilityService = new CrossCompatibilityService(coreContext); } public addPlugin(plugin: PluginWrapper) { @@ -167,54 +168,19 @@ export class PluginsSystem { return contracts; } - private async healthCheckOpenSearchPlugins(deps: PluginsServiceStartDeps) { + public async healthCheckOpenSearchPlugins(deps: PluginsServiceStartDeps) { // make _cat/plugins?format=json call to the OpenSearch instance - const opensearchInstalledPlugins = await this.getOpenSearchPlugins(deps); + const opensearchInstalledPlugins = await this.crossCompatibilityService.getOpenSearchPlugins( + deps.opensearch + ); for (const pluginName of this.satupPlugins) { this.log.debug(`For plugin "${pluginName}"...`); const plugin = this.plugins.get(pluginName)!; - const pluginOpenSearchDeps = Object.entries(plugin.requiredEnginePlugins); - for (const [enginePluginName, versionRange] of pluginOpenSearchDeps) { - // add check to see if the installing Dashboards plugin version is compatible with installed OpenSearch plugin - if ( - !this.isVersionCompatibleOSPluginInstalled( - opensearchInstalledPlugins, - enginePluginName, - versionRange - ) - ) { - this.log.warn( - `OpenSearch plugin "${enginePluginName}" is not installed on the engine for the OpenSearch Dashboards plugin to function as expected.` - ); - } - } - } - } - - private isVersionCompatibleOSPluginInstalled( - opensearchInstalledPlugins: CatPluginsResponse, - depPlugin: string, - versionRange: string - ) { - return opensearchInstalledPlugins.find( - (obj) => - obj.component === depPlugin && - semver.satisfies(semver.coerce(obj.version)!.version, versionRange) - ); - } - - private async getOpenSearchPlugins(deps: PluginsServiceStartDeps) { - // Makes cat.plugin api call to fetch list of OpenSearch plugins installed on the cluster - try { - const { body } = await deps.opensearch.client.asInternalUser.cat.plugins({ - format: 'JSON', - }); - return body; - } catch (error) { - this.log.warn( - `Cat API call to OpenSearch to get list of plugins installed on the cluster has failed: ${error}` + this.crossCompatibilityService.checkPluginVersionCompatibility( + plugin.requiredEnginePlugins, + opensearchInstalledPlugins, + pluginName ); - return []; } } @@ -256,6 +222,7 @@ export class PluginsSystem { uiPluginNames.includes(p) ), requiredBundles: plugin.manifest.requiredBundles, + requiredEnginePlugins: plugin.manifest.requiredEnginePlugins, }, ]; }) diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index 66c8115efc4a..b7667b5bd2d2 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -231,6 +231,12 @@ export interface DiscoveredPlugin { */ readonly optionalPlugins: readonly PluginName[]; + /** + * An optional list of the OpenSearch plugins that **must be** installed on the cluster + * for this plugin to function properly. + */ + readonly requiredEnginePlugins: CompatibleEnginePluginVersions; + /** * List of plugin ids that this plugin's UI code imports modules from that are * not in `requiredPlugins`. diff --git a/src/core/server/security/readonly_service.test.ts b/src/core/server/security/readonly_service.test.ts new file mode 100644 index 000000000000..739d9e3daac3 --- /dev/null +++ b/src/core/server/security/readonly_service.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { OpenSearchDashboardsRequest } from '../index'; +import { ReadonlyService } from './readonly_service'; +import { httpServerMock } from '../http/http_server.mocks'; + +describe('ReadonlyService', () => { + let readonlyService: ReadonlyService; + let request: OpenSearchDashboardsRequest; + + beforeEach(() => { + readonlyService = new ReadonlyService(); + request = httpServerMock.createOpenSearchDashboardsRequest(); + }); + + it('isReadonly returns false by default', () => { + expect(readonlyService.isReadonly(request)).resolves.toBeFalsy(); + }); + + it('hideForReadonly merges capabilites to hide', () => { + readonlyService.isReadonly = jest.fn(() => new Promise(() => true)); + const result = readonlyService.hideForReadonly( + request, + { foo: { show: true } }, + { foo: { show: false } } + ); + + expect(readonlyService.isReadonly).toBeCalledTimes(1); + expect(result).resolves.toEqual({ foo: { show: false } }); + }); +}); diff --git a/src/core/server/security/readonly_service.ts b/src/core/server/security/readonly_service.ts new file mode 100644 index 000000000000..a41dc0fde3b1 --- /dev/null +++ b/src/core/server/security/readonly_service.ts @@ -0,0 +1,22 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { merge } from 'lodash'; +import { OpenSearchDashboardsRequest, Capabilities } from '../index'; +import { IReadOnlyService } from './types'; + +export class ReadonlyService implements IReadOnlyService { + async isReadonly(request: OpenSearchDashboardsRequest): Promise { + return false; + } + + async hideForReadonly( + request: OpenSearchDashboardsRequest, + capabilites: Partial, + hideCapabilities: Partial + ): Promise> { + return (await this.isReadonly(request)) ? merge(capabilites, hideCapabilities) : capabilites; + } +} diff --git a/src/core/server/security/security_service.mock.ts b/src/core/server/security/security_service.mock.ts new file mode 100644 index 000000000000..687509e42b5e --- /dev/null +++ b/src/core/server/security/security_service.mock.ts @@ -0,0 +1,18 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { SecurityServiceSetup } from './types'; + +const createSetupContractMock = () => { + const setupContract: jest.Mocked = { + readonlyService: jest.fn(), + registerReadonlyService: jest.fn(), + }; + return setupContract; +}; + +export const securityServiceMock = { + createSetupContract: createSetupContractMock, +}; diff --git a/src/core/server/security/security_service.test.ts b/src/core/server/security/security_service.test.ts new file mode 100644 index 000000000000..cf09b64ae36a --- /dev/null +++ b/src/core/server/security/security_service.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { OpenSearchDashboardsRequest } from '../index'; +import { mockCoreContext } from '../core_context.mock'; +import { SecurityService } from './security_service'; +import { httpServerMock } from '../http/http_server.mocks'; +import { IReadOnlyService } from './types'; + +describe('SecurityService', () => { + let securityService: SecurityService; + let request: OpenSearchDashboardsRequest; + + beforeEach(() => { + const coreContext = mockCoreContext.create(); + securityService = new SecurityService(coreContext); + request = httpServerMock.createOpenSearchDashboardsRequest(); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('#readonlyService', () => { + it("uses core's readonly service by default", () => { + const setupContext = securityService.setup(); + expect(setupContext.readonlyService().isReadonly(request)).resolves.toBeFalsy(); + }); + + it('registers custom readonly service and it uses it', () => { + const setupContext = securityService.setup(); + const readonlyServiceMock: jest.Mocked = { + isReadonly: jest.fn(), + hideForReadonly: jest.fn(), + }; + + setupContext.registerReadonlyService(readonlyServiceMock); + setupContext.readonlyService().isReadonly(request); + + expect(readonlyServiceMock.isReadonly).toBeCalledTimes(1); + }); + }); +}); diff --git a/src/core/server/security/security_service.ts b/src/core/server/security/security_service.ts new file mode 100644 index 000000000000..1916afc165dd --- /dev/null +++ b/src/core/server/security/security_service.ts @@ -0,0 +1,43 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CoreService } from '../../types'; +import { IReadOnlyService, InternalSecurityServiceSetup } from './types'; +import { CoreContext } from '../core_context'; +import { Logger } from '../logging'; +import { ReadonlyService } from './readonly_service'; + +export class SecurityService implements CoreService { + private logger: Logger; + private readonlyService: IReadOnlyService; + + constructor(coreContext: CoreContext) { + this.logger = coreContext.logger.get('security-service'); + this.readonlyService = new ReadonlyService(); + } + + public setup() { + this.logger.debug('Setting up Security service'); + + const securityService = this; + + return { + registerReadonlyService(service: IReadOnlyService) { + securityService.readonlyService = service; + }, + readonlyService() { + return securityService.readonlyService; + }, + }; + } + + public start() { + this.logger.debug('Starting plugin'); + } + + public stop() { + this.logger.debug('Stopping plugin'); + } +} diff --git a/src/core/server/security/types.ts b/src/core/server/security/types.ts new file mode 100644 index 000000000000..43a599d99625 --- /dev/null +++ b/src/core/server/security/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { Capabilities, OpenSearchDashboardsRequest } from '../index'; + +export interface SecurityServiceSetup { + registerReadonlyService(service: IReadOnlyService): void; + readonlyService(): IReadOnlyService; +} + +export type InternalSecurityServiceSetup = SecurityServiceSetup; + +export interface IReadOnlyService { + isReadonly(request: OpenSearchDashboardsRequest): Promise; + hideForReadonly( + request: OpenSearchDashboardsRequest, + capabilites: Capabilities, + hideCapabilities: Partial + ): Promise>; +} diff --git a/src/core/server/server.test.ts b/src/core/server/server.test.ts index c80795e02eb5..71789d76c337 100644 --- a/src/core/server/server.test.ts +++ b/src/core/server/server.test.ts @@ -62,6 +62,7 @@ beforeEach(() => { mockPluginsService.discover.mockResolvedValue({ pluginTree: { asOpaqueIds: new Map(), asNames: new Map() }, uiPlugins: { internal: new Map(), public: new Map(), browserConfigs: new Map() }, + requiredEnginePlugins: new Map(), }); }); @@ -111,6 +112,7 @@ test('injects legacy dependency to context#setup()', async () => { mockPluginsService.discover.mockResolvedValue({ pluginTree: { asOpaqueIds: pluginDependencies, asNames: new Map() }, uiPlugins: { internal: new Map(), public: new Map(), browserConfigs: new Map() }, + requiredEnginePlugins: new Map(), }); await server.setup(); diff --git a/src/core/server/server.ts b/src/core/server/server.ts index d4c041725ac7..b76ec61cebd0 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -41,12 +41,19 @@ import { RenderingService } from './rendering'; import { LegacyService, ensureValidConfiguration } from './legacy'; import { Logger, LoggerFactory, LoggingService, ILoggingSystem } from './logging'; import { UiSettingsService } from './ui_settings'; -import { PluginsService, config as pluginsConfig } from './plugins'; +import { + CompatibleEnginePluginVersions, + PluginName, + PluginsService, + config as pluginsConfig, +} from './plugins'; import { SavedObjectsService } from '../server/saved_objects'; import { MetricsService, opsConfig } from './metrics'; import { CapabilitiesService } from './capabilities'; import { EnvironmentService, config as pidConfig } from './environment'; import { StatusService } from './status/status_service'; +import { SecurityService } from './security/security_service'; +import { CrossCompatibilityService } from './cross_compatibility'; import { config as cspConfig } from './csp'; import { config as opensearchConfig } from './opensearch'; @@ -86,11 +93,15 @@ export class Server { private readonly coreApp: CoreApp; private readonly auditTrail: AuditTrailService; private readonly coreUsageData: CoreUsageDataService; + private readonly security: SecurityService; + private readonly crossCompatibility: CrossCompatibilityService; #pluginsInitialized?: boolean; private coreStart?: InternalCoreStart; private readonly logger: LoggerFactory; + private openSearchPluginDeps: Map = new Map(); + constructor( rawConfigProvider: RawConfigurationProvider, public readonly env: Env, @@ -118,6 +129,8 @@ export class Server { this.auditTrail = new AuditTrailService(core); this.logging = new LoggingService(core); this.coreUsageData = new CoreUsageDataService(core); + this.security = new SecurityService(core); + this.crossCompatibility = new CrossCompatibilityService(core); } public async setup() { @@ -127,9 +140,10 @@ export class Server { const environmentSetup = await this.environment.setup(); // Discover any plugins before continuing. This allows other systems to utilize the plugin dependency graph. - const { pluginTree, uiPlugins } = await this.plugins.discover({ + const { pluginTree, uiPlugins, requiredEnginePlugins } = await this.plugins.discover({ environment: environmentSetup, }); + this.openSearchPluginDeps = requiredEnginePlugins; const legacyConfigSetup = await this.legacy.setupLegacyConfig(); // Immediately terminate in case of invalid configuration @@ -196,6 +210,8 @@ export class Server { loggingSystem: this.loggingSystem, }); + const securitySetup = this.security.setup(); + this.coreUsageData.setup({ metrics: metricsSetup }); const coreSetup: InternalCoreSetup = { @@ -212,6 +228,7 @@ export class Server { auditTrail: auditTrailSetup, logging: loggingSetup, metrics: metricsSetup, + security: securitySetup, }; const pluginsSetup = await this.plugins.setup(coreSetup); @@ -254,6 +271,11 @@ export class Server { savedObjects: savedObjectsStart, }); + const crossCompatibilityServiceStart = this.crossCompatibility.start({ + opensearch: opensearchStart, + plugins: this.openSearchPluginDeps, + }); + this.coreStart = { capabilities: capabilitiesStart, opensearch: opensearchStart, @@ -263,6 +285,7 @@ export class Server { uiSettings: uiSettingsStart, auditTrail: auditTrailStart, coreUsageData: coreUsageDataStart, + crossCompatibility: crossCompatibilityServiceStart, }; const pluginsStart = await this.plugins.start(this.coreStart); @@ -277,6 +300,8 @@ export class Server { await this.http.start(); + await this.security.start(); + startTransaction?.end(); return this.coreStart; } @@ -295,6 +320,7 @@ export class Server { await this.status.stop(); await this.logging.stop(); await this.auditTrail.stop(); + await this.security.stop(); } private registerCoreContext(coreSetup: InternalCoreSetup) { diff --git a/src/core/types/cross_compatibility.ts b/src/core/types/cross_compatibility.ts new file mode 100644 index 000000000000..38cd061a5dce --- /dev/null +++ b/src/core/types/cross_compatibility.ts @@ -0,0 +1,25 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +/** @public */ +export interface CrossCompatibilityResult { + /** The OpenSearch Plugin name. */ + pluginName: string; + + /** Whether the current OpenSearch Plugin version is compatible with the dashboards plugin. */ + isCompatible: boolean; + + /** + * The reason the OpenSearch Plugin version is not compatible with the plugin. + * This will be `undefined` if the OpenSearch Plugin version is compatible. + */ + incompatibilityReason?: string; + + /** + * The array of versions of dependency OpenSearch Plugin if any present on the cluster. + * This will be empty if the OpenSearch Plugin is not present. + */ + installedVersions: string[]; +} diff --git a/src/core/types/index.ts b/src/core/types/index.ts index 4afe9c537f75..784408432aff 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -40,3 +40,4 @@ export * from './saved_objects'; export * from './serializable'; export * from './custom_branding'; export * from './workspace'; +export * from './cross_compatibility'; \ No newline at end of file diff --git a/src/dev/build/args.test.ts b/src/dev/build/args.test.ts index 2304c560a687..4a3489044eb7 100644 --- a/src/dev/build/args.test.ts +++ b/src/dev/build/args.test.ts @@ -60,6 +60,7 @@ it('build dist for current platform, without packages, by default', () => { "targetAllPlatforms": false, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -89,6 +90,7 @@ it('build dist for linux x64 platform, without packages, if --linux is passed', "targetAllPlatforms": false, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": true, "linuxArm": false, "windows": false, @@ -118,6 +120,7 @@ it('build dist for linux arm64 platform, without packages, if --linux-arm is pas "targetAllPlatforms": false, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": true, "windows": false, @@ -147,6 +150,7 @@ it('build dist for darwin x64 platform, without packages, if --darwin is passed' "targetAllPlatforms": false, "targetPlatforms": Object { "darwin": true, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -176,6 +180,7 @@ it('build dist for windows x64 platform, without packages, if --windows is passe "targetAllPlatforms": false, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": true, @@ -205,6 +210,7 @@ it('builds packages if --all-platforms is passed', () => { "targetAllPlatforms": true, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -234,6 +240,7 @@ it('limits packages if --rpm passed with --all-platforms', () => { "targetAllPlatforms": true, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -263,6 +270,7 @@ it('limits packages if --deb passed with --all-platforms', () => { "targetAllPlatforms": true, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -293,6 +301,7 @@ it('limits packages if --docker passed with --all-platforms', () => { "targetAllPlatforms": true, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, @@ -323,6 +332,7 @@ it('limits packages if --docker passed with --skip-docker-ubi and --all-platform "targetAllPlatforms": true, "targetPlatforms": Object { "darwin": false, + "darwinArm": false, "linux": false, "linuxArm": false, "windows": false, diff --git a/src/dev/build/args.ts b/src/dev/build/args.ts index 7e131174e330..c7b6c9aaf32f 100644 --- a/src/dev/build/args.ts +++ b/src/dev/build/args.ts @@ -52,6 +52,7 @@ export function readCliArgs(argv: string[]) { 'all-platforms', 'windows', 'darwin', + 'darwin-arm', 'linux', 'linux-arm', 'verbose', @@ -133,6 +134,7 @@ export function readCliArgs(argv: string[]) { targetPlatforms: { windows: Boolean(flags.windows), darwin: Boolean(flags.darwin), + darwinArm: Boolean(flags['darwin-arm']), linux: Boolean(flags.linux), linuxArm: Boolean(flags['linux-arm']), }, diff --git a/src/dev/build/cli.ts b/src/dev/build/cli.ts index b075a6047acd..2287696c87ca 100644 --- a/src/dev/build/cli.ts +++ b/src/dev/build/cli.ts @@ -61,6 +61,7 @@ if (showHelp) { --linux {dim Produce archives only for linux x64 platform} --linux-arm {dim Produce archives only for linux arm64 platform} --darwin {dim Produce archives only for darwin x64 platform} + --darwin-arm {dim Produce archives only for darwin arm64 platform} --windows {dim Produce archives only for windows x64 platform} --rpm {dim Only build the rpm package} --deb {dim Only build the deb package} diff --git a/src/dev/build/lib/config.test.ts b/src/dev/build/lib/config.test.ts index 145954c1fb40..51c7f66be893 100644 --- a/src/dev/build/lib/config.test.ts +++ b/src/dev/build/lib/config.test.ts @@ -52,6 +52,7 @@ const setup = async ({ targetAllPlatforms = true, targetPlatforms = { darwin: false, + darwinArm: false, linux: false, linuxArm: false, windows: false, @@ -60,6 +61,7 @@ const setup = async ({ targetAllPlatforms?: boolean; targetPlatforms?: { darwin: boolean; + darwinArm: boolean; linux: boolean; linuxArm: boolean; windows: boolean; @@ -89,9 +91,7 @@ describe('#getNodeRange()', () => { describe('#getRepoRelativePath()', () => { it('converts an absolute path to relative path, from the root of the repo', async () => { const config = await setup(); - expect(config.getRepoRelativePath(__dirname)).toMatchInlineSnapshot( - `"${standardize('src/dev/build/lib', false, true)}"` - ); + expect(config.getRepoRelativePath(__dirname)).toMatchInlineSnapshot(`"src/dev/build/lib"`); }); }); @@ -117,6 +117,7 @@ describe('#hasSpecifiedPlatform', () => { targetAllPlatforms: false, targetPlatforms: { darwin: true, + darwinArm: false, linux: false, linuxArm: false, windows: false, @@ -130,6 +131,7 @@ describe('#hasSpecifiedPlatform', () => { targetAllPlatforms: false, targetPlatforms: { darwin: false, + darwinArm: false, linux: false, linuxArm: true, windows: false, @@ -143,6 +145,7 @@ describe('#hasSpecifiedPlatform', () => { targetAllPlatforms: false, targetPlatforms: { darwin: false, + darwinArm: false, linux: true, linuxArm: false, windows: false, @@ -197,6 +200,7 @@ describe('#getTargetPlatforms()', () => { .sort() ).toMatchInlineSnapshot(` Array [ + "darwin-arm64", "darwin-x64", "linux-arm64", "linux-x64", @@ -210,6 +214,7 @@ describe('#getTargetPlatforms()', () => { targetAllPlatforms: false, targetPlatforms: { darwin: true, + darwinArm: false, linux: false, linuxArm: false, windows: false, @@ -233,6 +238,7 @@ describe('#getTargetPlatforms()', () => { targetAllPlatforms: false, targetPlatforms: { darwin: false, + darwinArm: false, linux: true, linuxArm: false, windows: false, @@ -256,6 +262,7 @@ describe('#getTargetPlatforms()', () => { targetAllPlatforms: false, targetPlatforms: { darwin: false, + darwinArm: false, linux: false, linuxArm: true, windows: false, @@ -279,6 +286,7 @@ describe('#getTargetPlatforms()', () => { targetAllPlatforms: false, targetPlatforms: { darwin: true, + darwinArm: false, linux: false, linuxArm: true, windows: false, @@ -315,7 +323,7 @@ describe('#getNodePlatforms()', () => { .getTargetPlatforms() .map((p) => p.getNodeArch()) .sort() - ).toEqual(['darwin-x64', 'linux-arm64', 'linux-x64', 'win32-x64']); + ).toEqual(['darwin-arm64', 'darwin-x64', 'linux-arm64', 'linux-x64', 'win32-x64']); }); it('returns this platform and linux, when targetAllPlatforms = false', async () => { diff --git a/src/dev/build/lib/config.ts b/src/dev/build/lib/config.ts index 6af5b8e6901a..c8750e9234b3 100644 --- a/src/dev/build/lib/config.ts +++ b/src/dev/build/lib/config.ts @@ -155,9 +155,10 @@ export class Config { const platforms: Platform[] = []; if (this.targetPlatforms.darwin) platforms.push(this.getPlatform('darwin', 'x64')); + if (this.targetPlatforms.darwinArm) platforms.push(this.getPlatform('darwin', 'arm64')); if (this.targetPlatforms.linux) platforms.push(this.getPlatform('linux', 'x64')); - if (this.targetPlatforms.windows) platforms.push(this.getPlatform('win32', 'x64')); if (this.targetPlatforms.linuxArm) platforms.push(this.getPlatform('linux', 'arm64')); + if (this.targetPlatforms.windows) platforms.push(this.getPlatform('win32', 'x64')); if (platforms.length > 0) return platforms; diff --git a/src/dev/build/lib/fs.ts b/src/dev/build/lib/fs.ts index 53fc241f7722..b2313220f9ce 100644 --- a/src/dev/build/lib/fs.ts +++ b/src/dev/build/lib/fs.ts @@ -29,6 +29,7 @@ */ import fs from 'fs'; +import { rm } from 'fs/promises'; import { createHash } from 'crypto'; import { pipeline, Writable } from 'stream'; import { resolve, dirname, isAbsolute, sep } from 'path'; @@ -138,8 +139,7 @@ export async function deleteEmptyFolders( ); assertAbsolute(rootFolderPath.startsWith('!') ? rootFolderPath.slice(1) : rootFolderPath); - // Delete empty is used to gather all the empty folders and - // then we use del to actually delete them + // `deleteEmpty` is used to gather all the empty folders then `rm` is used to actually delete them const emptyFoldersList = await deleteEmpty(rootFolderPath, { // @ts-expect-error DT package has incorrect types https://github.com/jonschlinkert/delete-empty/blob/6ae34547663e6845c3c98b184c606fa90ef79c0a/index.js#L160 dryRun: true, @@ -148,12 +148,11 @@ export async function deleteEmptyFolders( const foldersToDelete = emptyFoldersList.filter((folderToDelete) => { return !foldersToKeep.some((folderToKeep) => folderToDelete.includes(folderToKeep)); }); - const deletedEmptyFolders = await del(foldersToDelete, { - concurrency: 4, - }); - log.debug('Deleted %d empty folders', deletedEmptyFolders.length); - log.verbose('Deleted:', longInspect(deletedEmptyFolders)); + await Promise.all(foldersToDelete.map((folder) => rm(folder, { force: true, recursive: true }))); + + log.debug('Deleted %d empty folders', foldersToDelete.length); + log.verbose('Deleted:', longInspect(foldersToDelete)); } interface CopyOptions { diff --git a/src/dev/build/lib/platform.ts b/src/dev/build/lib/platform.ts index 673356ec6205..f83107f73734 100644 --- a/src/dev/build/lib/platform.ts +++ b/src/dev/build/lib/platform.ts @@ -33,6 +33,7 @@ export type PlatformArchitecture = 'x64' | 'arm64'; export interface TargetPlatforms { darwin: boolean; + darwinArm: boolean; linuxArm: boolean; linux: boolean; windows: boolean; @@ -78,5 +79,6 @@ export const ALL_PLATFORMS = [ new Platform('linux', 'x64', 'linux-x64'), new Platform('linux', 'arm64', 'linux-arm64'), new Platform('darwin', 'x64', 'darwin-x64'), + new Platform('darwin', 'arm64', 'darwin-arm64'), new Platform('win32', 'x64', 'windows-x64'), ]; diff --git a/src/dev/build/tasks/create_archives_sources_task.ts b/src/dev/build/tasks/create_archives_sources_task.ts index 55d9b5313f12..5ba01ad12922 100644 --- a/src/dev/build/tasks/create_archives_sources_task.ts +++ b/src/dev/build/tasks/create_archives_sources_task.ts @@ -56,17 +56,21 @@ export const CreateArchivesSources: Task = { // ToDo [NODE14]: Remove this Node.js 14 fallback download // Copy the Node.js 14 binaries into node/fallback to be used by `use_node` - await scanCopy({ - source: ( - await getNodeVersionDownloadInfo( - NODE14_FALLBACK_VERSION, - platform.getNodeArch(), - platform.isWindows(), - config.resolveFromRepo() - ) - ).extractDir, - destination: build.resolvePathForPlatform(platform, 'node', 'fallback'), - }); + if (platform.getBuildName() === 'darwin-arm64') { + log.warning(`There are no fallback Node.js versions released for darwin-arm64.`); + } else { + await scanCopy({ + source: ( + await getNodeVersionDownloadInfo( + NODE14_FALLBACK_VERSION, + platform.getNodeArch(), + platform.isWindows(), + config.resolveFromRepo() + ) + ).extractDir, + destination: build.resolvePathForPlatform(platform, 'node', 'fallback'), + }); + } log.debug('Node.js copied into', platform.getNodeArch(), 'specific build directory'); }) diff --git a/src/dev/build/tasks/nodejs/__snapshots__/download_node_builds_task.test.ts.snap b/src/dev/build/tasks/nodejs/__snapshots__/download_node_builds_task.test.ts.snap new file mode 100644 index 000000000000..c12788fea48f --- /dev/null +++ b/src/dev/build/tasks/nodejs/__snapshots__/download_node_builds_task.test.ts.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`downloads node builds for each platform 2`] = ` +Array [ + warn There are no fallback Node.js versions released for darwin-arm64., +] +`; + +exports[`rejects if any download fails 2`] = ` +Array [ + warn There are no fallback Node.js versions released for darwin-arm64., +] +`; diff --git a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts index f5905534e121..b65e384a7e27 100644 --- a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts @@ -36,6 +36,7 @@ import { import { Config, Platform } from '../../lib'; import { DownloadNodeBuilds } from './download_node_builds_task'; +import { stripAnsiSnapshotSerializer } from '../../../../core/test_helpers/strip_ansi_snapshot_serializer'; jest.mock('./node_shasums'); jest.mock('./node_download_info'); @@ -43,6 +44,7 @@ jest.mock('../../lib/download'); jest.mock('../../lib/get_build_number'); expect.addSnapshotSerializer(createAnyInstanceSerializer(ToolingLog)); +expect.addSnapshotSerializer(stripAnsiSnapshotSerializer); const { getNodeDownloadInfo, getNodeVersionDownloadInfo } = jest.requireMock( './node_download_info' @@ -67,6 +69,8 @@ async function setup({ failOnUrl }: { failOnUrl?: string } = {}) { linux: false, linuxArm: false, darwin: false, + darwinArm: false, + windows: false, }, }); @@ -78,19 +82,23 @@ async function setup({ failOnUrl }: { failOnUrl?: string } = {}) { }; }); - getNodeVersionDownloadInfo.mockImplementation((version, architecture, isWindows, repoRoot) => { - return { - url: `https://mirrors.nodejs.org/dist/v${version}/node-v${version}-${architecture}.tar.gz`, - downloadName: `node-v${version}-${architecture}.tar.gz`, - downloadPath: `/mocked/path/.node_binaries/${version}/node-v${version}-${architecture}.tar.gz`, - extractDir: `/mocked/path/.node_binaries/${version}/${architecture}`, - version, - }; - }); + getNodeVersionDownloadInfo.mockImplementation( + (version: string, architecture: string, isWindows: boolean, repoRoot: string) => { + return { + url: `https://mirrors.nodejs.org/dist/v${version}/node-v${version}-${architecture}.tar.gz`, + downloadName: `node-v${version}-${architecture}.tar.gz`, + downloadPath: `/mocked/path/.node_binaries/${version}/node-v${version}-${architecture}.tar.gz`, + extractDir: `/mocked/path/.node_binaries/${version}/${architecture}`, + version, + }; + } + ); getNodeShasums.mockReturnValue({ 'linux:downloadName': 'linux:sha256', + 'linux-arm64:downloadName': 'linux-arm64:sha256', 'darwin:downloadName': 'darwin:sha256', + 'darwin-arm64:downloadName': 'darwin-arm64:sha256', 'win32:downloadName': 'win32:sha256', }); @@ -137,6 +145,15 @@ it('downloads node builds for each platform', async () => { "url": "darwin:url", }, ], + Array [ + Object { + "destination": "darwin:downloadPath", + "log": , + "retries": 3, + "sha256": "darwin:sha256", + "url": "darwin:url", + }, + ], Array [ Object { "destination": "win32:downloadPath", @@ -184,7 +201,10 @@ it('downloads node builds for each platform', async () => { ], ] `); - expect(testWriter.messages).toMatchInlineSnapshot(`Array []`); + /* ToDo [NODE14]: Replace when Node.js 14 support is removed + * expect(testWriter.messages).toMatchInlineSnapshot(`Array []`); + */ + expect(testWriter.messages).toMatchSnapshot(); }); it('rejects if any download fails', async () => { @@ -193,5 +213,8 @@ it('rejects if any download fails', async () => { await expect(DownloadNodeBuilds.run(config, log, [])).rejects.toMatchInlineSnapshot( `[Error: Download failed for reasons]` ); - expect(testWriter.messages).toMatchInlineSnapshot(`Array []`); + /* ToDo [NODE14]: Replace when Node.js 14 support is removed + * expect(testWriter.messages).toMatchInlineSnapshot(`Array []`); + */ + expect(testWriter.messages).toMatchSnapshot(); }); diff --git a/src/dev/build/tasks/nodejs/download_node_builds_task.ts b/src/dev/build/tasks/nodejs/download_node_builds_task.ts index 393a02176e17..4463f76621de 100644 --- a/src/dev/build/tasks/nodejs/download_node_builds_task.ts +++ b/src/dev/build/tasks/nodejs/download_node_builds_task.ts @@ -60,6 +60,10 @@ export const DownloadNodeBuilds: GlobalTask = { }), // ToDo [NODE14]: Remove this Node.js 14 fallback download ...config.getTargetPlatforms().map(async (platform) => { + if (platform.getBuildName() === 'darwin-arm64') { + log.warning(`There are no fallback Node.js versions released for darwin-arm64.`); + return; + } const { url, downloadPath, downloadName } = await getNodeVersionDownloadInfo( NODE14_FALLBACK_VERSION, platform.getNodeArch(), diff --git a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts index e68539310903..497ec6e16de5 100644 --- a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts @@ -58,6 +58,7 @@ async function setup() { linux: false, linuxArm: false, darwin: false, + darwinArm: false, windows: false, }, }); @@ -123,6 +124,13 @@ it('runs expected fs operations', async () => { "strip": 1, }, ], + Array [ + /.node_binaries//node-v-darwin-arm64.tar.gz, + /.node_binaries//darwin-arm64, + Object { + "strip": 1, + }, + ], Array [ /.node_binaries/14.21.3/node-v14.21.3-linux-x64.tar.gz, /.node_binaries/14.21.3/linux-x64, diff --git a/src/dev/build/tasks/nodejs/extract_node_builds_task.ts b/src/dev/build/tasks/nodejs/extract_node_builds_task.ts index 7934718c0bce..f44f3d45834a 100644 --- a/src/dev/build/tasks/nodejs/extract_node_builds_task.ts +++ b/src/dev/build/tasks/nodejs/extract_node_builds_task.ts @@ -38,7 +38,7 @@ import { export const ExtractNodeBuilds: GlobalTask = { global: true, description: 'Extracting node.js builds for all platforms', - async run(config) { + async run(config, log) { await Promise.all([ ...config.getTargetPlatforms().map(async (platform) => { const { downloadPath, extractDir } = await getNodeDownloadInfo(config, platform); @@ -50,6 +50,10 @@ export const ExtractNodeBuilds: GlobalTask = { }), // ToDo [NODE14]: Remove this Node.js 14 fallback download ...config.getTargetPlatforms().map(async (platform) => { + if (platform.getBuildName() === 'darwin-arm64') { + log.warning(`There are no fallback Node.js versions released for darwin-arm64.`); + return; + } const { downloadPath, extractDir } = await getNodeVersionDownloadInfo( NODE14_FALLBACK_VERSION, platform.getNodeArch(), diff --git a/src/dev/build/tasks/nodejs/node_shasums.test.ts b/src/dev/build/tasks/nodejs/node_shasums.test.ts index b42262849c7d..4a8e52f9b6c6 100644 --- a/src/dev/build/tasks/nodejs/node_shasums.test.ts +++ b/src/dev/build/tasks/nodejs/node_shasums.test.ts @@ -28,50 +28,44 @@ * under the License. */ -const mockResponse = `155ae63f0bb47050e0c31b4f8c17dadc79dcfa8e8f4ec9e3974fd7592afa9a4f node-v8.9.4-aix-ppc64.tar.gz -ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24 node-v8.9.4-darwin-x64.tar.gz -cb79e2da37d2b646a06adaddcda67ff6ba0f77f9ca733b041dabf3dad79c7468 node-v8.9.4-darwin-x64.tar.xz -ef7248e81706daeeec946c19808a50b60ac250e648365d78fda6e40f1f9b23a5 node-v8.9.4-headers.tar.gz -11ed407a4bc3d8c3e73305ac54e91e64c9a9f6a2ae5476791d6fcc14ac159bfc node-v8.9.4-headers.tar.xz -2b133c7d23033fbc2419e66fc08bba35c427a97aba83ed6848b6b4678c0cac65 node-v8.9.4-linux-arm64.tar.gz -7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089 node-v8.9.4-linux-arm64.tar.xz -81f138e935323246bd5da518eb0ea8ad00008f3c8a8d606e17589a545a9c73d1 node-v8.9.4-linux-armv6l.tar.gz -501bcae62ea1769924facc9628f407d37753e7a024cf3b12a18ea9dab1b380c9 node-v8.9.4-linux-armv6l.tar.xz -a0dd9009cb8d4be89c8a31131df16ad5ea1580d10ae426c5142aa34b0ad4ea76 node-v8.9.4-linux-armv7l.tar.gz -fe19f195df3d4f362d0cf0eef43c1a6a0b6006a1be2a89ee1808091c2ef4d722 node-v8.9.4-linux-armv7l.tar.xz -c5df73b8571edf97f83b484d6139332fad3b710d51be4aeb8d846059862d4675 node-v8.9.4-linux-ppc64le.tar.gz -21178be5e4c1dbdd99610d24aa934234a368c542ebabb3d98c31d393cf4adf06 node-v8.9.4-linux-ppc64le.tar.xz -d6e53ab2f8364528d4c6800adc1e7fccec607fd07a97b83985732c749a7fc846 node-v8.9.4-linux-s390x.tar.gz -90c6c284db9482a478dd5110e2171435156d56a013aeda2f636b6240eba156bd node-v8.9.4-linux-s390x.tar.xz -21fb4690e349f82d708ae766def01d7fec1b085ce1f5ab30d9bda8ee126ca8fc node-v8.9.4-linux-x64.tar.gz -68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370 node-v8.9.4-linux-x64.tar.xz -cc2f7a300353422ede336f5e72b71f0d6eac46732a31b7640648378830dd7513 node-v8.9.4-linux-x86.tar.gz -79f241f31eab5dfe2976fb0633c598dababd207ab0b8a163004f296cd7794a65 node-v8.9.4-linux-x86.tar.xz -b93767f7e186b1ae7204fedafa4110534f577d18d4204f422b626afdd5061e28 node-v8.9.4.pkg -e4a5d945091043c937125cd0d515258785cd4ea806fe3b77000d888de23d2ba0 node-v8.9.4-sunos-x64.tar.gz -b33e8f1495b88fcc0ab1e2579f2f7cf4d39886d577430dcb920a024829d4cf28 node-v8.9.4-sunos-x64.tar.xz -551729411793e427f5760fe8e46f45612e1e8e7c63e55ad34243ebf8ea9a4a7a node-v8.9.4-sunos-x86.tar.gz -6b439bb7204362c0af7a654bce24fcf8059e1772b2f0a9e4e1f8a0b8caa85d26 node-v8.9.4-sunos-x86.tar.xz -729b44b32b2f82ecd5befac4f7518de0c4e3add34e8fe878f745740a66cbbc01 node-v8.9.4.tar.gz -6cdcde9c9c1ca9f450a0b24eafa229ca759e576daa0fae892ce74d541ecdc86f node-v8.9.4.tar.xz -15a847a28358f9ae40bae42f49b033b0180bc10661632c63a9c8487ae980a8ba node-v8.9.4-win-x64.7z -48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7 node-v8.9.4-win-x64.zip -50ad674fb4c89edf35d3fee2136da86631cb7c0504589eb71ce8a3bb176493ed node-v8.9.4-win-x86.7z -02e3c65000ac055e05c604aec4cf318212efbd4b60a945ed319072d58314ca32 node-v8.9.4-win-x86.zip -547689da69bacadfee619d208702b73698d14297bd5fef5d80656897989e91b6 node-v8.9.4-x64.msi -f9442188c2f66d167a0ac610dee6d16e226ba28ca93f9569e0276268eb8f85dc node-v8.9.4-x86.msi -b73841f25d6e75d635770fd1a32e4d74d6ab2feed0fd7708bb40b967ae06f33e win-x64/node.exe -5439dc6f0d632ecdeb7342986743a03fe0818e34f0a67e38de74fa9c94886a39 win-x64/node.lib -6ab35445dd564978019cf4f3cfe11dd342b8450015fc054df99aa6f35f21736a win-x64/node_pdb.7z -c064abba981c2373e7e1a8c53b4e4ed1d4927bd9c0f7c065b24dd13b731598bd win-x64/node_pdb.zip -c8430b20cd067d8784d5faae04f9447987a472b22b6d0a2403ea4362ecd3d0bc win-x86/node.exe -c4edece2c0aa68e816c4e067f397eb12e9d0c81bb37b3d349dbaf47cf246b0b7 win-x86/node.lib -6a2ee7a0b0074ece27d171418d82ce25a60b87750ec30c5c9fbeaaca8c206fa5 win-x86/node_pdb.7z -1b44176d888c1bc6a6b05fcc6234031b3b8a58da9de8b99661088f998ac5e269 win-x86/node_pdb.zip`; +const mockResponse = `a65bd3fe91ffeb31d12a208e811943e3ebba4706553a4845a03d857beaeec51e node-v99.99.99-aix-ppc64.tar.gz +82c7bb4869419ce7338669e6739a786dfc7e72f276ffbed663f85ffc905dcdb4 node-v99.99.99-darwin-arm64.tar.gz +b23cdf4fa0e9f77273720ab18eabdd7691edbb69e08ec3b65afd69bef23fe209 node-v99.99.99-darwin-arm64.tar.xz +cd520da6e2e89fab881c66a3e9aff02cb0d61d68104b1d6a571dd71bef920870 node-v99.99.99-darwin-x64.tar.gz +2c8aa0333111c2411564bfb85be44186aeb581392f73c4be5912cbb125d99043 node-v99.99.99-darwin-x64.tar.xz +effeb73616e5297922ed89a1b94d2664390040a83184504c1cc1305b0c0c853f node-v99.99.99-headers.tar.gz +0eb9823c2cc72792c2d4413f57b5a36232e173d7edefb1909c37e364a823f9c7 node-v99.99.99-headers.tar.xz +dc3dfaee899ed21682e47eaf15525f85aff29013c392490e9b25219cd95b1c35 node-v99.99.99-linux-arm64.tar.gz +c81dfa0bada232cb4583c44d171ea207934f7356f85f9184b32d0dde69e2e0ea node-v99.99.99-linux-arm64.tar.xz +a3968db44e5ae17243d126ff79b1756016b198f7cc94c6fad8522aac481b4ff3 node-v99.99.99-linux-armv7l.tar.gz +57ba6b71eb039fa896c329e68669b21f6717622c560c6f61a0c97d18ca866b2d node-v99.99.99-linux-armv7l.tar.xz +b4e66dcda5ba4a3697be3fded122dabb6a677deee3d7f4d3c7c13ebb5a13844c node-v99.99.99-linux-ppc64le.tar.gz +c43142fb9ef30658620ed095f8203beca92f469c1121eeb724df9a48bf0e59a5 node-v99.99.99-linux-ppc64le.tar.xz +a8b607c3c06f585c4fe9ba45be6dc76ce9459238c91b3f43533aa30344caed87 node-v99.99.99-linux-s390x.tar.gz +39b15c16347000b0be97133437bde0317dd2307d3fdfce15ddd8680b07a963ef node-v99.99.99-linux-s390x.tar.xz +fc83046a93d2189d919005a348db3b2372b598a145d84eb9781a3a4b0f032e95 node-v99.99.99-linux-x64.tar.gz +44d93d9b4627fe5ae343012d855491d62c7381b236c347f7666a7ad070f26548 node-v99.99.99-linux-x64.tar.xz +156aa5b9580288fb0b3c6134eb8fac64e50745d78d33eebe9e29eb7ff87b8e1e node-v99.99.99.pkg +6a4f5c5d76e5c50cef673099e56f19bc3266ae363f56ca0ab77dd2f3c5088c6d node-v99.99.99.tar.gz +33d81a233e235a509adda4a4f2209008d04591979de6b3f0f67c1c906093f118 node-v99.99.99.tar.xz +007848640ba414f32d968d303e75d9841ecd2cd95d6fdd81f80bc3dcbd74ae44 node-v99.99.99-win-x64.7z +4b3bd4cb5570cc217490639e93a7e1b7a7a341981366661e514ce61941824a85 node-v99.99.99-win-x64.zip +681be28e0acd057b4798f357d21eec5f49e21bc803bbbefeb1072bb4f166025a node-v99.99.99-win-x86.7z +2a7e0fb22e1a36144ee8183c80ef2705cd9754c1d894f94bb6c94a681de47924 node-v99.99.99-win-x86.zip +5bfb6f3ab89e198539408f7e0e8ec0b0bd5efe8898573ec05b381228efb45a5d node-v99.99.99-x64.msi +09534d1949c795c3e49d257fb72a9fd865ee28955673b87d569d4aec541333e7 node-v99.99.99-x86.msi +b548a55c2b5ef5de34f4636610bab27077fb9313d34f52280b9ec11dd25e9dd1 win-x64/node.exe +72b7fab9381af8f4958c8212f3d4cdfff8c7c5b1e33eaad0e7d5888293568cd5 win-x64/node.lib +3b9474e18a1bbb38b05b1876b4b37056063c2af82212d356a8a5cf91c1a3acf3 win-x64/node_pdb.7z +6b506b1fe654ca7161373916c7ba7e38f62545236698342fa97fd2faf39ebc4e win-x64/node_pdb.zip +36bf0f0a364ca8edc176776764831f9e88bef6d1e8056f6edc474a37b652a794 win-x86/node.exe +6a85c15a69238f0902b9a734d262bf36d211b273a46d5e3249857d4bb7f6d9b7 win-x86/node.lib +9256bdefae4491acfd523ca06d4f4344ddc4f1a28aac868b5efb6a72d8023e2a win-x86/node_pdb.7z +53c6b29afd58904e5143d9f3298b55695b8ecb2b6c08a9612ed30e9b0ed9589a win-x86/node_pdb.zip`; jest.mock('axios', () => ({ async get(url: string) { - expect(url).toBe('https://nodejs.org/dist/v8.9.4/SHASUMS256.txt'); + expect(url).toBe('https://nodejs.org/dist/v99.99.99/SHASUMS256.txt'); return { status: 200, data: mockResponse, @@ -84,12 +78,19 @@ import { getNodeShasums } from './node_shasums'; describe('src/dev/build/tasks/nodejs/node_shasums', () => { it('resolves to an object with shasums for node downloads for version', async () => { - const shasums = await getNodeShasums(new ToolingLog(), '8.9.4'); + const shasums = await getNodeShasums(new ToolingLog(), '99.99.99'); expect(shasums).toEqual( expect.objectContaining({ - 'node-v8.9.4.tar.gz': '729b44b32b2f82ecd5befac4f7518de0c4e3add34e8fe878f745740a66cbbc01', - 'node-v8.9.4-win-x64.zip': - '48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7', + 'node-v99.99.99-linux-x64.tar.gz': + 'fc83046a93d2189d919005a348db3b2372b598a145d84eb9781a3a4b0f032e95', + 'node-v99.99.99-linux-arm64.tar.gz': + 'dc3dfaee899ed21682e47eaf15525f85aff29013c392490e9b25219cd95b1c35', + 'node-v99.99.99-darwin-x64.tar.gz': + 'cd520da6e2e89fab881c66a3e9aff02cb0d61d68104b1d6a571dd71bef920870', + 'node-v99.99.99-darwin-arm64.tar.gz': + '82c7bb4869419ce7338669e6739a786dfc7e72f276ffbed663f85ffc905dcdb4', + 'node-v99.99.99-win-x64.zip': + '4b3bd4cb5570cc217490639e93a7e1b7a7a341981366661e514ce61941824a85', }) ); }); diff --git a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts index 1d516ce457ad..1f4e6d9cb1c3 100644 --- a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts @@ -63,6 +63,7 @@ async function setup(actualShaSums?: Record) { linux: false, linuxArm: false, darwin: false, + darwinArm: false, windows: false, }, }); @@ -120,6 +121,7 @@ it('checks shasums for each downloaded node build', async () => { Object { "type": "return", "value": Object { + "darwin:darwin-arm64:downloadName": "valid shasum", "darwin:darwin-x64:downloadName": "valid shasum", "linux:linux-arm64:downloadName": "valid shasum", "linux:linux-x64:downloadName": "valid shasum", @@ -156,6 +158,14 @@ it('checks shasums for each downloaded node build', async () => { "name": "darwin", }, ], + Array [ + , + Platform { + "architecture": "arm64", + "buildName": "darwin-arm64", + "name": "darwin", + }, + ], Array [ , Platform { @@ -190,6 +200,14 @@ it('checks shasums for each downloaded node build', async () => { "version": "", }, }, + Object { + "type": "return", + "value": Object { + "downloadName": "darwin:darwin-arm64:downloadName", + "downloadPath": "darwin:darwin-arm64:downloadPath", + "version": "", + }, + }, Object { "type": "return", "value": Object { @@ -216,6 +234,10 @@ it('checks shasums for each downloaded node build', async () => { "darwin:darwin-x64:downloadPath", "sha256", ], + Array [ + "darwin:darwin-arm64:downloadPath", + "sha256", + ], Array [ "win32:win32-x64:downloadPath", "sha256", @@ -238,6 +260,10 @@ it('checks shasums for each downloaded node build', async () => { "type": "return", "value": "valid shasum", }, + Object { + "type": "return", + "value": "valid shasum", + }, ], } `); diff --git a/src/plugins/advanced_settings/server/plugin.ts b/src/plugins/advanced_settings/server/plugin.ts index 46ea4b3f8961..094d975acf91 100644 --- a/src/plugins/advanced_settings/server/plugin.ts +++ b/src/plugins/advanced_settings/server/plugin.ts @@ -49,6 +49,14 @@ export class AdvancedSettingsServerPlugin implements Plugin { core.capabilities.registerProvider(capabilitiesProvider); + core.capabilities.registerSwitcher(async (request, capabilites) => { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + advancedSettings: { + save: false, + }, + }); + }); + return {}; } diff --git a/src/plugins/console/server/plugin.ts b/src/plugins/console/server/plugin.ts index 4c33bc1d6060..fa89863198cb 100644 --- a/src/plugins/console/server/plugin.ts +++ b/src/plugins/console/server/plugin.ts @@ -50,7 +50,7 @@ export class ConsoleServerPlugin implements Plugin { this.log = this.ctx.logger.get(); } - async setup({ http, capabilities, getStartServices, opensearch }: CoreSetup) { + async setup({ http, capabilities, opensearch, security }: CoreSetup) { capabilities.registerProvider(() => ({ dev_tools: { show: true, @@ -58,6 +58,14 @@ export class ConsoleServerPlugin implements Plugin { }, })); + capabilities.registerSwitcher(async (request, capabilites) => { + return await security.readonlyService().hideForReadonly(request, capabilites, { + dev_tools: { + save: false, + }, + }); + }); + const config = await this.ctx.config.create().pipe(first()).toPromise(); const globalConfig = await this.ctx.config.legacy.globalConfig$.pipe(first()).toPromise(); const proxyPathFilters = config.proxyFilter.map((str: string) => new RegExp(str)); diff --git a/src/plugins/dashboard/public/application/components/dashboard_listing/__snapshots__/dashboard_listing.test.tsx.snap b/src/plugins/dashboard/public/application/components/dashboard_listing/__snapshots__/dashboard_listing.test.tsx.snap index 28265faad578..c9ffe147e5f8 100644 --- a/src/plugins/dashboard/public/application/components/dashboard_listing/__snapshots__/dashboard_listing.test.tsx.snap +++ b/src/plugins/dashboard/public/application/components/dashboard_listing/__snapshots__/dashboard_listing.test.tsx.snap @@ -795,6 +795,7 @@ exports[`dashboard listing hideWriteControls 1`] = ` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -1926,6 +1927,7 @@ exports[`dashboard listing render table listing with initial filters from URL 1` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -3118,6 +3120,7 @@ exports[`dashboard listing renders call to action when no dashboards exist 1`] = "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -4310,6 +4313,7 @@ exports[`dashboard listing renders table rows 1`] = ` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -5502,6 +5506,7 @@ exports[`dashboard listing renders warning when listingLimit is exceeded 1`] = ` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", diff --git a/src/plugins/dashboard/public/application/components/dashboard_top_nav/__snapshots__/dashboard_top_nav.test.tsx.snap b/src/plugins/dashboard/public/application/components/dashboard_top_nav/__snapshots__/dashboard_top_nav.test.tsx.snap index 7cb635c2f2c0..1954051c9474 100644 --- a/src/plugins/dashboard/public/application/components/dashboard_top_nav/__snapshots__/dashboard_top_nav.test.tsx.snap +++ b/src/plugins/dashboard/public/application/components/dashboard_top_nav/__snapshots__/dashboard_top_nav.test.tsx.snap @@ -687,6 +687,7 @@ exports[`Dashboard top nav render in embed mode 1`] = ` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -1643,6 +1644,7 @@ exports[`Dashboard top nav render in embed mode, and force hide filter bar 1`] = "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -2599,6 +2601,7 @@ exports[`Dashboard top nav render in embed mode, components can be forced show b "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -3555,6 +3558,7 @@ exports[`Dashboard top nav render in full screen mode with appended URL param bu "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -4511,6 +4515,7 @@ exports[`Dashboard top nav render in full screen mode, no componenets should be "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", @@ -5467,6 +5472,7 @@ exports[`Dashboard top nav render with all components 1`] = ` "dataSource": Object { "guide": "https://opensearch.org/docs/mocked-test-branch/dashboards/discover/multi-data-sources/", }, + "devTools": "https://opensearch.org/docs/mocked-test-branch/dashboards/dev-tools/index-dev/", "dql": Object { "base": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql", "boolean_query": "https://opensearch.org/docs/mocked-test-branch/dashboards/dql/#boolean-query", diff --git a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx index dad2f196f1b8..d994e98142db 100644 --- a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx @@ -239,6 +239,7 @@ export class DashboardContainer extends Container { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + dashboard: { + createNew: false, + showWriteControls: false, + saveQuery: false, + }, + }); + }); return {}; } diff --git a/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.test.ts b/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.test.ts index f610b1e7179f..ad68e14b2c54 100644 --- a/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.test.ts +++ b/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.test.ts @@ -66,4 +66,18 @@ describe('filterMatchesIndex', () => { expect(filterMatchesIndex(filter, indexPattern)).toBe(true); }); + + it('should return false if the custom filter is a different index id', () => { + const filter = { meta: { index: 'foo', key: 'bar', type: 'custom' } } as Filter; + const indexPattern = { id: 'bar', fields: [{ name: 'foo' }] } as IIndexPattern; + + expect(filterMatchesIndex(filter, indexPattern)).toBe(false); + }); + + it('should return true if the custom filter is the same index id', () => { + const filter = { meta: { index: 'foo', key: 'bar', type: 'custom' } } as Filter; + const indexPattern = { id: 'foo', fields: [{ name: 'barf' }] } as IIndexPattern; + + expect(filterMatchesIndex(filter, indexPattern)).toBe(true); + }); }); diff --git a/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.ts b/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.ts index f8c2ab67ee95..529e68609aeb 100644 --- a/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.ts +++ b/src/plugins/data/common/opensearch_query/opensearch_query/filter_matches_index.ts @@ -31,14 +31,14 @@ import { IIndexPattern, IFieldType } from '../../index_patterns'; import { Filter } from '../filters'; -/* - * TODO: We should base this on something better than `filter.meta.key`. We should probably modify - * this to check if `filter.meta.index` matches `indexPattern.id` instead, but that's a breaking - * change. - */ export function filterMatchesIndex(filter: Filter, indexPattern?: IIndexPattern | null) { if (!filter.meta?.key || !indexPattern) { return true; } + + if (filter.meta?.type === 'custom') { + return filter.meta.index === indexPattern.id; + } + return indexPattern.fields.some((field: IFieldType) => field.name === filter.meta.key); } diff --git a/src/plugins/data/public/data_sources/datasource_selector/datasource_selectable.tsx b/src/plugins/data/public/data_sources/datasource_selector/datasource_selectable.tsx index f522da79c129..aaab4d57c830 100644 --- a/src/plugins/data/public/data_sources/datasource_selector/datasource_selectable.tsx +++ b/src/plugins/data/public/data_sources/datasource_selector/datasource_selectable.tsx @@ -129,7 +129,6 @@ export const DataSourceSelectable = ({ onChange={handleSourceChange} singleSelection={singleSelection} isClearable={false} - async /> ); }; diff --git a/src/plugins/data/server/index_patterns/index_patterns_service.ts b/src/plugins/data/server/index_patterns/index_patterns_service.ts index 4917e4240f52..29021794e883 100644 --- a/src/plugins/data/server/index_patterns/index_patterns_service.ts +++ b/src/plugins/data/server/index_patterns/index_patterns_service.ts @@ -59,6 +59,13 @@ export class IndexPatternsService implements Plugin { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + indexPatterns: { + save: false, + }, + }); + }); registerRoutes(core.http); } diff --git a/src/plugins/dev_tools/public/application.tsx b/src/plugins/dev_tools/public/application.tsx index 8c1c936de646..3e5e6991634e 100644 --- a/src/plugins/dev_tools/public/application.tsx +++ b/src/plugins/dev_tools/public/application.tsx @@ -57,6 +57,7 @@ import { useEffectOnce } from 'react-use'; import { getDataSources } from '../../data_source_management/public/components/utils'; import { DevToolApp } from './dev_tool'; import { DevToolsSetupDependencies } from './plugin'; +import { addHelpMenuToAppChrome } from './utils/util'; interface DevToolsWrapperProps { devTools: readonly DevToolApp[]; @@ -174,16 +175,16 @@ function DevToolsWrapper({
@@ -254,7 +255,7 @@ function setBreadcrumbs(chrome: ChromeStart) { } export function renderApp( - { application, chrome, savedObjects, notifications }: CoreStart, + { application, chrome, docLinks, savedObjects, notifications }: CoreStart, element: HTMLElement, history: ScopedHistory, devTools: readonly DevToolApp[], @@ -265,6 +266,7 @@ export function renderApp( return () => {}; } + addHelpMenuToAppChrome(chrome, docLinks); setBadge(application, chrome); setBreadcrumbs(chrome); setTitle(chrome); diff --git a/src/plugins/dev_tools/public/utils/util.ts b/src/plugins/dev_tools/public/utils/util.ts new file mode 100644 index 000000000000..7738e84bd15f --- /dev/null +++ b/src/plugins/dev_tools/public/utils/util.ts @@ -0,0 +1,24 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { i18n } from '@osd/i18n'; +import { CoreStart } from 'opensearch-dashboards/public'; + +export function addHelpMenuToAppChrome( + chrome: CoreStart['chrome'], + docLinks: CoreStart['docLinks'] +) { + chrome.setHelpExtension({ + appName: i18n.translate('devTools.helpMenu.appName', { + defaultMessage: 'Dev Tools', + }), + links: [ + { + linkType: 'documentation', + href: `${docLinks.links.opensearchDashboards.devTools}`, + }, + ], + }); +} diff --git a/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx b/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx index fcb786b23e86..655eb087e842 100644 --- a/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx +++ b/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx @@ -13,7 +13,6 @@ import { DataGridFlyout } from './data_grid_table_flyout'; import { DiscoverGridContextProvider } from './data_grid_table_context'; import { toolbarVisibility } from './constants'; import { DocViewFilterFn, OpenSearchSearchHit } from '../../doc_views/doc_views_types'; -import { DiscoverServices } from '../../../build_services'; import { usePagination } from '../utils/use_pagination'; import { SortOrder } from '../../../saved_searches/types'; import { buildColumns } from '../../utils/columns'; diff --git a/src/plugins/discover/public/embeddable/search_embeddable.scss b/src/plugins/discover/public/embeddable/search_embeddable.scss new file mode 100644 index 000000000000..e953968495e7 --- /dev/null +++ b/src/plugins/discover/public/embeddable/search_embeddable.scss @@ -0,0 +1,12 @@ +/** + * 1. We want the osdDocTable__container to scroll only when embedded in an embeddable panel + * 2. Force a better looking scrollbar + */ +.embPanel { + .osdDocTable__container { + @include euiScrollBar; /* 2 */ + + flex: 1 1 0; /* 1 */ + overflow: auto; /* 1 */ + } +} diff --git a/src/plugins/discover/public/embeddable/search_embeddable.tsx b/src/plugins/discover/public/embeddable/search_embeddable.tsx index 8b8db9079ba6..a37a001ad798 100644 --- a/src/plugins/discover/public/embeddable/search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/search_embeddable.tsx @@ -374,7 +374,9 @@ export class SearchEmbeddable const props = { searchProps, }; - ReactDOM.render(, node); + + const MemorizedSearchEmbeddableComponent = React.memo(SearchEmbeddableComponent); + ReactDOM.render(, node); } private async pushContainerStateParamsToProps(searchProps: SearchProps, force: boolean = false) { diff --git a/src/plugins/discover/public/embeddable/search_embeddable_component.tsx b/src/plugins/discover/public/embeddable/search_embeddable_component.tsx index c8ae54a16429..97df2e5c45b7 100644 --- a/src/plugins/discover/public/embeddable/search_embeddable_component.tsx +++ b/src/plugins/discover/public/embeddable/search_embeddable_component.tsx @@ -12,6 +12,7 @@ import { DataGridTableProps, } from '../application/components/data_grid/data_grid_table'; import { VisualizationNoResults } from '../../../visualizations/public'; +import './search_embeddable.scss'; interface SearchEmbeddableProps { searchProps: SearchProps; @@ -51,7 +52,7 @@ export function SearchEmbeddableComponent({ searchProps }: SearchEmbeddableProps data-test-subj="embeddedSavedSearchDocTable" > {discoverEmbeddableProps.totalHitCount !== 0 ? ( - + ) : ( diff --git a/src/plugins/discover/server/plugin.ts b/src/plugins/discover/server/plugin.ts index 3c4425712d22..96b8e758fdc6 100644 --- a/src/plugins/discover/server/plugin.ts +++ b/src/plugins/discover/server/plugin.ts @@ -36,6 +36,15 @@ import { searchSavedObjectType } from './saved_objects'; export class DiscoverServerPlugin implements Plugin { public setup(core: CoreSetup) { core.capabilities.registerProvider(capabilitiesProvider); + core.capabilities.registerSwitcher(async (request, capabilites) => { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + discover: { + createShortUrl: false, + save: false, + saveQuery: false, + }, + }); + }); core.uiSettings.register(uiSettings); core.savedObjects.registerType(searchSavedObjectType); diff --git a/src/plugins/home/public/assets/tutorials/logos/activemq.svg b/src/plugins/home/public/assets/tutorials/logos/activemq.svg deleted file mode 100644 index 20694ba6e62c..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/activemq.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/barracuda.svg b/src/plugins/home/public/assets/tutorials/logos/barracuda.svg deleted file mode 100644 index 555cdd6f8a32..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/barracuda.svg +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/checkpoint.svg b/src/plugins/home/public/assets/tutorials/logos/checkpoint.svg deleted file mode 100644 index e71866e78c29..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/checkpoint.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/cisco.svg b/src/plugins/home/public/assets/tutorials/logos/cisco.svg deleted file mode 100644 index 20ebebf19741..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/cisco.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/cockroachdb.svg b/src/plugins/home/public/assets/tutorials/logos/cockroachdb.svg deleted file mode 100644 index 72f0958f5282..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/cockroachdb.svg +++ /dev/null @@ -1,666 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/consul.svg b/src/plugins/home/public/assets/tutorials/logos/consul.svg deleted file mode 100644 index 28bbadd24c8a..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/consul.svg +++ /dev/null @@ -1 +0,0 @@ -Asset 1 \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/coredns.svg b/src/plugins/home/public/assets/tutorials/logos/coredns.svg deleted file mode 100644 index 863a81e0f40e..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/coredns.svg +++ /dev/null @@ -1 +0,0 @@ -CoreDNS_Colour_Icon diff --git a/src/plugins/home/public/assets/tutorials/logos/couchdb.svg b/src/plugins/home/public/assets/tutorials/logos/couchdb.svg deleted file mode 100644 index 2512c2eb2a01..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/couchdb.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/crowdstrike.svg b/src/plugins/home/public/assets/tutorials/logos/crowdstrike.svg deleted file mode 100644 index 1b2195a2244f..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/crowdstrike.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/cylance.svg b/src/plugins/home/public/assets/tutorials/logos/cylance.svg deleted file mode 100644 index ccd6004d19e7..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/cylance.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - -Cylance_BB_Logo_RGB_Vert_Black - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/envoyproxy.svg b/src/plugins/home/public/assets/tutorials/logos/envoyproxy.svg deleted file mode 100644 index 45c995b19603..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/envoyproxy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/f5.svg b/src/plugins/home/public/assets/tutorials/logos/f5.svg deleted file mode 100644 index d985bde96291..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/f5.svg +++ /dev/null @@ -1 +0,0 @@ -Asset 1 \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/fortinet.svg b/src/plugins/home/public/assets/tutorials/logos/fortinet.svg deleted file mode 100644 index d6a8448f320b..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/fortinet.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/ibmmq.svg b/src/plugins/home/public/assets/tutorials/logos/ibmmq.svg deleted file mode 100644 index e474d93359be..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/ibmmq.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/icinga.svg b/src/plugins/home/public/assets/tutorials/logos/icinga.svg deleted file mode 100644 index 88161d61ca75..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/icinga.svg +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/iis.svg b/src/plugins/home/public/assets/tutorials/logos/iis.svg deleted file mode 100644 index 99964448d33c..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/iis.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/infoblox.svg b/src/plugins/home/public/assets/tutorials/logos/infoblox.svg deleted file mode 100644 index 57b4d23b1681..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/infoblox.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/juniper.svg b/src/plugins/home/public/assets/tutorials/logos/juniper.svg deleted file mode 100644 index 8802414a5aaf..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/juniper.svg +++ /dev/null @@ -1,72 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/linux.svg b/src/plugins/home/public/assets/tutorials/logos/linux.svg deleted file mode 100644 index c0a92e0c0f40..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/linux.svg +++ /dev/null @@ -1,1532 +0,0 @@ - - - - Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Tux - 20 June 2012 - - - Garrett LeSage - - - - - - Larry Ewing, the creator of the original Tux graphic - - - - - tux - Linux - penguin - logo - - - - - Larry Ewing, Garrett LeSage - - - https://github.com/garrett/Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/microsoft.svg b/src/plugins/home/public/assets/tutorials/logos/microsoft.svg deleted file mode 100644 index 5334aa7ca686..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/microsoft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/misp.svg b/src/plugins/home/public/assets/tutorials/logos/misp.svg deleted file mode 100644 index 1cc61eda0b60..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/misp.svg +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - Threat Sharing - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/mssql.svg b/src/plugins/home/public/assets/tutorials/logos/mssql.svg deleted file mode 100644 index 738507c5809c..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/mssql.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/munin.svg b/src/plugins/home/public/assets/tutorials/logos/munin.svg deleted file mode 100644 index b35a39498c9e..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/munin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/nats.svg b/src/plugins/home/public/assets/tutorials/logos/nats.svg deleted file mode 100644 index 5a1d6e9a52f1..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/nats.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/netscout.svg b/src/plugins/home/public/assets/tutorials/logos/netscout.svg deleted file mode 100644 index cbd25cd92594..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/netscout.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/o365.svg b/src/plugins/home/public/assets/tutorials/logos/o365.svg deleted file mode 100644 index 3763f267ffc7..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/o365.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - logo-integrations-Desktop HD Copy 2 - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/okta.svg b/src/plugins/home/public/assets/tutorials/logos/okta.svg deleted file mode 100644 index d806cb7dc645..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/okta.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/openmetrics.svg b/src/plugins/home/public/assets/tutorials/logos/openmetrics.svg deleted file mode 100644 index feccb88a3f34..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/openmetrics.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/oracle.svg b/src/plugins/home/public/assets/tutorials/logos/oracle.svg deleted file mode 100644 index 78db57f91481..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/oracle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/osquery.svg b/src/plugins/home/public/assets/tutorials/logos/osquery.svg deleted file mode 100755 index c2bf733d3593..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/osquery.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/paloalto.svg b/src/plugins/home/public/assets/tutorials/logos/paloalto.svg deleted file mode 100644 index 8c8e71ae0d9f..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/paloalto.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - logo-integrations-Desktop HD - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/rabbitmq.svg b/src/plugins/home/public/assets/tutorials/logos/rabbitmq.svg deleted file mode 100644 index dabd2a5744cb..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/rabbitmq.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/radware.svg b/src/plugins/home/public/assets/tutorials/logos/radware.svg deleted file mode 100644 index 6252efef7762..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/radware.svg +++ /dev/null @@ -1,66 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/sonicwall.svg b/src/plugins/home/public/assets/tutorials/logos/sonicwall.svg deleted file mode 100644 index fb1aded68a29..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/sonicwall.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/sophos.svg b/src/plugins/home/public/assets/tutorials/logos/sophos.svg deleted file mode 100644 index 1f2cfc3a7f03..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/sophos.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/stan.svg b/src/plugins/home/public/assets/tutorials/logos/stan.svg deleted file mode 100644 index 5a1d6e9a52f1..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/stan.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/statsd.svg b/src/plugins/home/public/assets/tutorials/logos/statsd.svg deleted file mode 100644 index f4458439fceb..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/statsd.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/suricata.svg b/src/plugins/home/public/assets/tutorials/logos/suricata.svg deleted file mode 100644 index 06e627a7e4ba..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/suricata.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/system.svg b/src/plugins/home/public/assets/tutorials/logos/system.svg deleted file mode 100644 index 0aba96275e24..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/system.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/tomcat.svg b/src/plugins/home/public/assets/tutorials/logos/tomcat.svg deleted file mode 100644 index 26ad7b6d33ad..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/tomcat.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/home/public/assets/tutorials/logos/traefik.svg b/src/plugins/home/public/assets/tutorials/logos/traefik.svg deleted file mode 100644 index 8ee3448f5626..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/traefik.svg +++ /dev/null @@ -1,342 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/ubiquiti.svg b/src/plugins/home/public/assets/tutorials/logos/ubiquiti.svg deleted file mode 100644 index 99a911e32863..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/ubiquiti.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/uwsgi.svg b/src/plugins/home/public/assets/tutorials/logos/uwsgi.svg deleted file mode 100644 index 43818ab211ee..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/uwsgi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/vsphere.svg b/src/plugins/home/public/assets/tutorials/logos/vsphere.svg deleted file mode 100644 index 999fabc613c4..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/vsphere.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/zeek.svg b/src/plugins/home/public/assets/tutorials/logos/zeek.svg deleted file mode 100644 index 0e346f98c723..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/zeek.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/zookeeper.svg b/src/plugins/home/public/assets/tutorials/logos/zookeeper.svg deleted file mode 100644 index 80db65f670d1..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/zookeeper.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/plugins/home/public/assets/tutorials/logos/zscaler.svg b/src/plugins/home/public/assets/tutorials/logos/zscaler.svg deleted file mode 100644 index b8a21a2fa6ee..000000000000 --- a/src/plugins/home/public/assets/tutorials/logos/zscaler.svg +++ /dev/null @@ -1 +0,0 @@ -Zscaler-Logo-TM-Blue-RGB-May2019 \ No newline at end of file diff --git a/src/plugins/home/server/services/tutorials/tutorials_registry.ts b/src/plugins/home/server/services/tutorials/tutorials_registry.ts index 39c14060e30a..11bb460b9012 100644 --- a/src/plugins/home/server/services/tutorials/tutorials_registry.ts +++ b/src/plugins/home/server/services/tutorials/tutorials_registry.ts @@ -36,7 +36,6 @@ import { ScopedTutorialContextFactory, } from './lib/tutorials_registry_types'; import { tutorialSchema } from './lib/tutorial_schema'; -import { builtInTutorials } from '../../tutorials/register'; export class TutorialsRegistry { private tutorialProviders: TutorialProvider[] = []; // pre-register all the tutorials we know we want in here diff --git a/src/plugins/home/server/tutorials/activemq_logs/index.ts b/src/plugins/home/server/tutorials/activemq_logs/index.ts deleted file mode 100644 index 151ea6d5180c..000000000000 --- a/src/plugins/home/server/tutorials/activemq_logs/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function activemqLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'activemq'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'activemqLogs', - name: i18n.translate('home.tutorials.activemqLogs.nameTitle', { - defaultMessage: 'ActiveMQ logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.activemqLogs.shortDescription', { - defaultMessage: 'Collect ActiveMQ logs with Filebeat.', - }), - longDescription: i18n.translate('home.tutorials.activemqLogs.longDescription', { - defaultMessage: 'Collect ActiveMQ logs with Filebeat. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-activemq.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/activemq.svg', - artifacts: { - dashboards: [ - { - id: 'ffe86390-145f-11ea-8fd8-030a13064883', - linkLabel: i18n.translate('home.tutorials.activemqLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'ActiveMQ Audit Events', - }), - isOverview: false, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-activemq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/activemq_metrics/index.ts b/src/plugins/home/server/tutorials/activemq_metrics/index.ts deleted file mode 100644 index bf0551b9594b..000000000000 --- a/src/plugins/home/server/tutorials/activemq_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialsCategory, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function activemqMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'activemq'; - return { - id: 'activemqMetrics', - name: i18n.translate('home.tutorials.activemqMetrics.nameTitle', { - defaultMessage: 'ActiveMQ metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.activemqMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from ActiveMQ instances.', - }), - longDescription: i18n.translate('home.tutorials.activemqMetrics.longDescription', { - defaultMessage: - 'The `activemq` Metricbeat module fetches monitoring metrics from ActiveMQ instances \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-activemq.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/activemq.svg', - isBeta: true, - artifacts: { - application: { - label: i18n.translate('home.tutorials.activemqMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-activemq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/aerospike_metrics/index.ts b/src/plugins/home/server/tutorials/aerospike_metrics/index.ts deleted file mode 100644 index bad23346c7d6..000000000000 --- a/src/plugins/home/server/tutorials/aerospike_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialsCategory, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function aerospikeMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'aerospike'; - return { - id: 'aerospikeMetrics', - name: i18n.translate('home.tutorials.aerospikeMetrics.nameTitle', { - defaultMessage: 'Aerospike metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.aerospikeMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Aerospike server.', - }), - longDescription: i18n.translate('home.tutorials.aerospikeMetrics.longDescription', { - defaultMessage: - 'The `aerospike` Metricbeat module fetches internal metrics from Aerospike. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-aerospike.html', - }, - }), - euiIconType: 'logoAerospike', - artifacts: { - application: { - label: i18n.translate('home.tutorials.aerospikeMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-aerospike.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/apache_logs/index.ts b/src/plugins/home/server/tutorials/apache_logs/index.ts deleted file mode 100644 index b9e6f435ff61..000000000000 --- a/src/plugins/home/server/tutorials/apache_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function apacheLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'apache'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'apacheLogs', - name: i18n.translate('home.tutorials.apacheLogs.nameTitle', { - defaultMessage: 'Apache logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.apacheLogs.shortDescription', { - defaultMessage: 'Collect and parse access and error logs created by the Apache HTTP server.', - }), - longDescription: i18n.translate('home.tutorials.apacheLogs.longDescription', { - defaultMessage: - 'The apache Filebeat module parses access and error logs created by the Apache HTTP server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-apache.html', - }, - }), - euiIconType: 'logoApache', - artifacts: { - dashboards: [ - { - id: 'Filebeat-Apache-Dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.apacheLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Apache logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-apache.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/apache_metrics/index.ts b/src/plugins/home/server/tutorials/apache_metrics/index.ts deleted file mode 100644 index c384777debb9..000000000000 --- a/src/plugins/home/server/tutorials/apache_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function apacheMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'apache'; - return { - id: 'apacheMetrics', - name: i18n.translate('home.tutorials.apacheMetrics.nameTitle', { - defaultMessage: 'Apache metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.apacheMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Apache 2 HTTP server.', - }), - longDescription: i18n.translate('home.tutorials.apacheMetrics.longDescription', { - defaultMessage: - 'The `apache` Metricbeat module fetches internal metrics from the Apache 2 HTTP server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-apache.html', - }, - }), - euiIconType: 'logoApache', - artifacts: { - dashboards: [ - { - id: 'Metricbeat-Apache-HTTPD-server-status-ecs', - linkLabel: i18n.translate('home.tutorials.apacheMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Apache metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-apache.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/auditbeat/index.ts b/src/plugins/home/server/tutorials/auditbeat/index.ts deleted file mode 100644 index bc52bc14ece6..000000000000 --- a/src/plugins/home/server/tutorials/auditbeat/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/auditbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function auditbeatSpecProvider(context: TutorialContext): TutorialSchema { - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - const moduleName = 'auditbeat'; - return { - id: 'auditbeat', - name: i18n.translate('home.tutorials.auditbeat.nameTitle', { - defaultMessage: 'Auditbeat', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.auditbeat.shortDescription', { - defaultMessage: 'Collect audit data from your hosts.', - }), - longDescription: i18n.translate('home.tutorials.auditbeat.longDescription', { - defaultMessage: - 'Use Auditbeat to collect auditing data from your hosts. These include \ -processes, users, logins, sockets information, file accesses, and more. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.auditbeat}/auditbeat-overview.html', - }, - }), - euiIconType: 'securityAnalyticsApp', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.auditbeat.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.auditbeat}/exported-fields.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/auditd_logs/index.ts b/src/plugins/home/server/tutorials/auditd_logs/index.ts deleted file mode 100644 index d262aee0106f..000000000000 --- a/src/plugins/home/server/tutorials/auditd_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function auditdLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'auditd'; - const platforms = ['DEB', 'RPM'] as const; - return { - id: 'auditdLogs', - name: i18n.translate('home.tutorials.auditdLogs.nameTitle', { - defaultMessage: 'Auditd logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.auditdLogs.shortDescription', { - defaultMessage: 'Collect logs from the Linux auditd daemon.', - }), - longDescription: i18n.translate('home.tutorials.auditdLogs.longDescription', { - defaultMessage: - 'The module collects and parses logs from the audit daemon ( `auditd`). \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-auditd.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/linux.svg', - artifacts: { - dashboards: [ - { - id: 'dfbb49f0-0a0f-11e7-8a62-2d05eaaac5cb-ecs', - linkLabel: i18n.translate('home.tutorials.auditdLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Audit Events', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-auditd.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/aws_logs/index.ts b/src/plugins/home/server/tutorials/aws_logs/index.ts deleted file mode 100644 index 2d987bf98290..000000000000 --- a/src/plugins/home/server/tutorials/aws_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function awsLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'aws'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'awsLogs', - name: i18n.translate('home.tutorials.awsLogs.nameTitle', { - defaultMessage: 'AWS S3 based logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.awsLogs.shortDescription', { - defaultMessage: 'Collect AWS logs from S3 bucket with Filebeat.', - }), - longDescription: i18n.translate('home.tutorials.awsLogs.longDescription', { - defaultMessage: - 'Collect AWS logs by exporting them to an S3 bucket which is configured with SQS notification. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-aws.html', - }, - }), - euiIconType: 'logoAWS', - artifacts: { - dashboards: [ - { - id: '4746e000-bacd-11e9-9f70-1f7bda85a5eb', - linkLabel: i18n.translate('home.tutorials.awsLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'AWS S3 server access log dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-aws.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/aws_metrics/index.ts b/src/plugins/home/server/tutorials/aws_metrics/index.ts deleted file mode 100644 index f239f224eb5a..000000000000 --- a/src/plugins/home/server/tutorials/aws_metrics/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function awsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'aws'; - return { - id: 'awsMetrics', - name: i18n.translate('home.tutorials.awsMetrics.nameTitle', { - defaultMessage: 'AWS metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.awsMetrics.shortDescription', { - defaultMessage: - 'Fetch monitoring metrics for EC2 instances from the AWS APIs and Cloudwatch.', - }), - longDescription: i18n.translate('home.tutorials.awsMetrics.longDescription', { - defaultMessage: - 'The `aws` Metricbeat module fetches monitoring metrics from the AWS APIs and Cloudwatch. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-aws.html', - }, - }), - euiIconType: 'logoAWS', - isBeta: false, - artifacts: { - dashboards: [ - { - id: 'c5846400-f7fb-11e8-af03-c999c9dea608-ecs', - linkLabel: i18n.translate('home.tutorials.awsMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'AWS metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-aws.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/azure_logs/index.ts b/src/plugins/home/server/tutorials/azure_logs/index.ts deleted file mode 100644 index 08d089aa6422..000000000000 --- a/src/plugins/home/server/tutorials/azure_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function azureLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'azure'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'azureLogs', - name: i18n.translate('home.tutorials.azureLogs.nameTitle', { - defaultMessage: 'Azure logs', - }), - moduleName, - isBeta: true, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.azureLogs.shortDescription', { - defaultMessage: 'Collects Azure activity and audit related logs.', - }), - longDescription: i18n.translate('home.tutorials.azureLogs.longDescription', { - defaultMessage: - 'The `azure` Filebeat module collects Azure activity and audit related logs. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-azure.html', - }, - }), - euiIconType: 'logoAzure', - artifacts: { - dashboards: [ - { - id: '41e84340-ec20-11e9-90ec-112a988266d5', - linkLabel: i18n.translate('home.tutorials.azureLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Azure logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-azure.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/azure_metrics/index.ts b/src/plugins/home/server/tutorials/azure_metrics/index.ts deleted file mode 100644 index b93f697a331a..000000000000 --- a/src/plugins/home/server/tutorials/azure_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function azureMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'azure'; - return { - id: 'azureMetrics', - name: i18n.translate('home.tutorials.azureMetrics.nameTitle', { - defaultMessage: 'Azure metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.azureMetrics.shortDescription', { - defaultMessage: 'Fetch Azure Monitor metrics.', - }), - longDescription: i18n.translate('home.tutorials.azureMetrics.longDescription', { - defaultMessage: - 'The `azure` Metricbeat module fetches Azure Monitor metrics. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-azure.html', - }, - }), - euiIconType: 'logoAzure', - artifacts: { - dashboards: [ - { - id: 'eb3f05f0-ea9a-11e9-90ec-112a988266d5', - linkLabel: i18n.translate('home.tutorials.azureMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Azure metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-azure.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/barracuda_logs/index.ts b/src/plugins/home/server/tutorials/barracuda_logs/index.ts deleted file mode 100644 index 5abdc41023ce..000000000000 --- a/src/plugins/home/server/tutorials/barracuda_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function barracudaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'barracuda'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'barracudaLogs', - name: i18n.translate('home.tutorials.barracudaLogs.nameTitle', { - defaultMessage: 'Barracuda logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.barracudaLogs.shortDescription', { - defaultMessage: 'Collect Barracuda Web Application Firewall logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.barracudaLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Barracuda Web Application Firewall logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-barracuda.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/barracuda.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.barracudaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-barracuda.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/bluecoat_logs/index.ts b/src/plugins/home/server/tutorials/bluecoat_logs/index.ts deleted file mode 100644 index 44e2bcc8a759..000000000000 --- a/src/plugins/home/server/tutorials/bluecoat_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function bluecoatLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'bluecoat'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'bluecoatLogs', - name: i18n.translate('home.tutorials.bluecoatLogs.nameTitle', { - defaultMessage: 'Bluecoat logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.bluecoatLogs.shortDescription', { - defaultMessage: 'Collect Blue Coat Director logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.bluecoatLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Blue Coat Director logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-bluecoat.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.bluecoatLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-bluecoat.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/cef_logs/index.ts b/src/plugins/home/server/tutorials/cef_logs/index.ts deleted file mode 100644 index 4972b3a5ccb2..000000000000 --- a/src/plugins/home/server/tutorials/cef_logs/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function cefLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'cef'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'cefLogs', - name: i18n.translate('home.tutorials.cefLogs.nameTitle', { - defaultMessage: 'CEF logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.cefLogs.shortDescription', { - defaultMessage: 'Collect Common Event Format (CEF) log data over syslog.', - }), - longDescription: i18n.translate('home.tutorials.cefLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Common Event Format (CEF) data over \ - Syslog. When messages are received over the syslog protocol the syslog \ - input will parse the header and set the timestamp value. Then the \ - processor is applied to parse the CEF encoded data. The decoded data \ - is written into a `cef` object field. Lastly any OpenSearch Common Schema \ - (OCS) fields that can be populated with the CEF data are populated. \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-cef.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [ - { - id: 'dd0bc9af-2e89-4150-9b42-62517ea56b71', - linkLabel: i18n.translate('home.tutorials.cefLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'CEF Network Overview Dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-cef.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/ceph_metrics/index.ts b/src/plugins/home/server/tutorials/ceph_metrics/index.ts deleted file mode 100644 index c23e03196c2c..000000000000 --- a/src/plugins/home/server/tutorials/ceph_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function cephMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'ceph'; - return { - id: 'cephMetrics', - name: i18n.translate('home.tutorials.cephMetrics.nameTitle', { - defaultMessage: 'Ceph metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.cephMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Ceph server.', - }), - longDescription: i18n.translate('home.tutorials.cephMetrics.longDescription', { - defaultMessage: - 'The `ceph` Metricbeat module fetches internal metrics from Ceph. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-ceph.html', - }, - }), - euiIconType: 'logoCeph', - artifacts: { - application: { - label: i18n.translate('home.tutorials.cephMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-ceph.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/checkpoint_logs/index.ts b/src/plugins/home/server/tutorials/checkpoint_logs/index.ts deleted file mode 100644 index 72198e709502..000000000000 --- a/src/plugins/home/server/tutorials/checkpoint_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function checkpointLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'checkpoint'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'checkpointLogs', - name: i18n.translate('home.tutorials.checkpointLogs.nameTitle', { - defaultMessage: 'Check Point logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.checkpointLogs.shortDescription', { - defaultMessage: 'Collect Check Point firewall logs.', - }), - longDescription: i18n.translate('home.tutorials.checkpointLogs.longDescription', { - defaultMessage: - 'This is a module for Check Point firewall logs. It supports logs from the Log Exporter in the Syslog format. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-checkpoint.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/checkpoint.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.checkpointLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-checkpoint.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/cisco_logs/index.ts b/src/plugins/home/server/tutorials/cisco_logs/index.ts deleted file mode 100644 index aa0796a1ffbc..000000000000 --- a/src/plugins/home/server/tutorials/cisco_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function ciscoLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'cisco'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'ciscoLogs', - name: i18n.translate('home.tutorials.ciscoLogs.nameTitle', { - defaultMessage: 'Cisco logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.ciscoLogs.shortDescription', { - defaultMessage: 'Collect Cisco network device logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.ciscoLogs.longDescription', { - defaultMessage: - 'This is a module for Cisco network devices logs (ASA, FTD, IOS, Nexus). It includes the following filesets for receiving logs over syslog or read from a file: \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-cisco.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/cisco.svg', - artifacts: { - dashboards: [ - { - id: 'a555b160-4987-11e9-b8ce-ed898b5ef295', - linkLabel: i18n.translate('home.tutorials.ciscoLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'ASA Firewall Dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-cisco.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/cloudwatch_logs/index.ts b/src/plugins/home/server/tutorials/cloudwatch_logs/index.ts deleted file mode 100644 index 744943fbb376..000000000000 --- a/src/plugins/home/server/tutorials/cloudwatch_logs/index.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/functionbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function cloudwatchLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'aws'; - return { - id: 'cloudwatchLogs', - name: i18n.translate('home.tutorials.cloudwatchLogs.nameTitle', { - defaultMessage: 'AWS Cloudwatch logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.cloudwatchLogs.shortDescription', { - defaultMessage: 'Collect Cloudwatch logs with Functionbeat.', - }), - longDescription: i18n.translate('home.tutorials.cloudwatchLogs.longDescription', { - defaultMessage: - 'Collect Cloudwatch logs by deploying Functionbeat to run as \ - an AWS Lambda function. \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: - '{config.docs.beats.functionbeat}/functionbeat-installation-configuration.html', - }, - }), - euiIconType: 'logoAWS', - artifacts: { - dashboards: [ - // TODO - ], - exportedFields: { - documentationUrl: '{config.docs.beats.functionbeat}/exported-fields.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions([], context), - }; -} diff --git a/src/plugins/home/server/tutorials/cockroachdb_metrics/index.ts b/src/plugins/home/server/tutorials/cockroachdb_metrics/index.ts deleted file mode 100644 index 882fbf83091c..000000000000 --- a/src/plugins/home/server/tutorials/cockroachdb_metrics/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function cockroachdbMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'cockroachdb'; - return { - id: 'cockroachdbMetrics', - name: i18n.translate('home.tutorials.cockroachdbMetrics.nameTitle', { - defaultMessage: 'CockroachDB metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.cockroachdbMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the CockroachDB server.', - }), - longDescription: i18n.translate('home.tutorials.cockroachdbMetrics.longDescription', { - defaultMessage: - 'The `cockroachdb` Metricbeat module fetches monitoring metrics from CockroachDB. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-cockroachdb.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/cockroachdb.svg', - artifacts: { - dashboards: [ - { - id: 'e3ba0c30-9766-11e9-9eea-6f554992ec1f', - linkLabel: i18n.translate( - 'home.tutorials.cockroachdbMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'CockroachDB metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-cockroachdb.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/consul_metrics/index.ts b/src/plugins/home/server/tutorials/consul_metrics/index.ts deleted file mode 100644 index 5b7b57fea5b1..000000000000 --- a/src/plugins/home/server/tutorials/consul_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function consulMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'consul'; - return { - id: 'consulMetrics', - name: i18n.translate('home.tutorials.consulMetrics.nameTitle', { - defaultMessage: 'Consul metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.consulMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the Consul server.', - }), - longDescription: i18n.translate('home.tutorials.consulMetrics.longDescription', { - defaultMessage: - 'The `consul` Metricbeat module fetches monitoring metrics from Consul. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-consul.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/consul.svg', - artifacts: { - dashboards: [ - { - id: '496910f0-b952-11e9-a579-f5c0a5d81340', - linkLabel: i18n.translate('home.tutorials.consulMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Consul metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-consul.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/coredns_logs/index.ts b/src/plugins/home/server/tutorials/coredns_logs/index.ts deleted file mode 100644 index 63ec23201d88..000000000000 --- a/src/plugins/home/server/tutorials/coredns_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function corednsLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'coredns'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'corednsLogs', - name: i18n.translate('home.tutorials.corednsLogs.nameTitle', { - defaultMessage: 'CoreDNS logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.corednsLogs.shortDescription', { - defaultMessage: 'Collect CoreDNS logs.', - }), - longDescription: i18n.translate('home.tutorials.corednsLogs.longDescription', { - defaultMessage: - 'This is a filebeat module for CoreDNS. It supports both standalone CoreDNS deployment and CoreDNS deployment in Kubernetes. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-coredns.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/coredns.svg', - artifacts: { - dashboards: [ - { - id: '53aa1f70-443e-11e9-8548-ab7fbe04f038', - linkLabel: i18n.translate('home.tutorials.corednsLogs.artifacts.dashboards.linkLabel', { - defaultMessage: '[Filebeat CoreDNS] Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-coredns.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/coredns_metrics/index.ts b/src/plugins/home/server/tutorials/coredns_metrics/index.ts deleted file mode 100644 index 4fc64a172bc0..000000000000 --- a/src/plugins/home/server/tutorials/coredns_metrics/index.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function corednsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'coredns'; - return { - id: 'corednsMetrics', - name: i18n.translate('home.tutorials.corednsMetrics.nameTitle', { - defaultMessage: 'CoreDNS metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.corednsMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the CoreDNS server.', - }), - longDescription: i18n.translate('home.tutorials.corednsMetrics.longDescription', { - defaultMessage: - 'The `coredns` Metricbeat module fetches monitoring metrics from CoreDNS. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-coredns.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/coredns.svg', - artifacts: { - application: { - label: i18n.translate('home.tutorials.corednsMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-coredns.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/couchbase_metrics/index.ts b/src/plugins/home/server/tutorials/couchbase_metrics/index.ts deleted file mode 100644 index cdbd82e0d498..000000000000 --- a/src/plugins/home/server/tutorials/couchbase_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function couchbaseMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'couchbase'; - return { - id: 'couchbaseMetrics', - name: i18n.translate('home.tutorials.couchbaseMetrics.nameTitle', { - defaultMessage: 'Couchbase metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.couchbaseMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from Couchbase.', - }), - longDescription: i18n.translate('home.tutorials.couchbaseMetrics.longDescription', { - defaultMessage: - 'The `couchbase` Metricbeat module fetches internal metrics from Couchbase. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-couchbase.html', - }, - }), - euiIconType: 'logoCouchbase', - artifacts: { - application: { - label: i18n.translate('home.tutorials.couchbaseMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-couchbase.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/couchdb_metrics/index.ts b/src/plugins/home/server/tutorials/couchdb_metrics/index.ts deleted file mode 100644 index cb5aca214228..000000000000 --- a/src/plugins/home/server/tutorials/couchdb_metrics/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function couchdbMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'couchdb'; - return { - id: 'couchdbMetrics', - name: i18n.translate('home.tutorials.couchdbMetrics.nameTitle', { - defaultMessage: 'CouchDB metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.couchdbMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the CouchdB server.', - }), - longDescription: i18n.translate('home.tutorials.couchdbMetrics.longDescription', { - defaultMessage: - 'The `couchdb` Metricbeat module fetches monitoring metrics from CouchDB. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-couchdb.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/couchdb.svg', - artifacts: { - dashboards: [ - { - id: '496910f0-b952-11e9-a579-f5c0a5d81340', - linkLabel: i18n.translate( - 'home.tutorials.couchdbMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'CouchDB metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-couchdb.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/crowdstrike_logs/index.ts b/src/plugins/home/server/tutorials/crowdstrike_logs/index.ts deleted file mode 100644 index 949c2e1283dd..000000000000 --- a/src/plugins/home/server/tutorials/crowdstrike_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function crowdstrikeLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'crowdstrike'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'crowdstrikeLogs', - name: i18n.translate('home.tutorials.crowdstrikeLogs.nameTitle', { - defaultMessage: 'CrowdStrike logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.crowdstrikeLogs.shortDescription', { - defaultMessage: 'Collect CrowdStrike Falcon logs using the Falcon SIEM Connector.', - }), - longDescription: i18n.translate('home.tutorials.crowdstrikeLogs.longDescription', { - defaultMessage: - 'This is the Filebeat module for CrowdStrike Falcon using the Falcon \ - [SIEM Connector](https://www.crowdstrike.com/blog/tech-center/integrate-with-your-siem). \ - This module collects this data, converts it to OCS, and ingests it to view in the SIEM. \ - By default, the Falcon SIEM connector outputs JSON formatted Falcon Streaming API event data. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-crowdstrike.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/crowdstrike.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.crowdstrikeLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-crowdstrike.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/cylance_logs/index.ts b/src/plugins/home/server/tutorials/cylance_logs/index.ts deleted file mode 100644 index 20f271253918..000000000000 --- a/src/plugins/home/server/tutorials/cylance_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function cylanceLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'cylance'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'cylanceLogs', - name: i18n.translate('home.tutorials.cylanceLogs.nameTitle', { - defaultMessage: 'CylancePROTECT logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.cylanceLogs.shortDescription', { - defaultMessage: 'Collect CylancePROTECT logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.cylanceLogs.longDescription', { - defaultMessage: - 'This is a module for receiving CylancePROTECT logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-cylance.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/cylance.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.cylanceLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-cylance.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/docker_metrics/index.ts b/src/plugins/home/server/tutorials/docker_metrics/index.ts deleted file mode 100644 index 9a396b81e34f..000000000000 --- a/src/plugins/home/server/tutorials/docker_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function dockerMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'docker'; - return { - id: 'dockerMetrics', - name: i18n.translate('home.tutorials.dockerMetrics.nameTitle', { - defaultMessage: 'Docker metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.dockerMetrics.shortDescription', { - defaultMessage: 'Fetch metrics about your Docker containers.', - }), - longDescription: i18n.translate('home.tutorials.dockerMetrics.longDescription', { - defaultMessage: - 'The `docker` Metricbeat module fetches metrics from the Docker server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-docker.html', - }, - }), - euiIconType: 'logoDocker', - artifacts: { - dashboards: [ - { - id: 'AV4REOpp5NkDleZmzKkE-ecs', - linkLabel: i18n.translate('home.tutorials.dockerMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Docker metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-docker.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/dropwizard_metrics/index.ts b/src/plugins/home/server/tutorials/dropwizard_metrics/index.ts deleted file mode 100644 index e279176e8ff9..000000000000 --- a/src/plugins/home/server/tutorials/dropwizard_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function dropwizardMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'dropwizard'; - return { - id: 'dropwizardMetrics', - name: i18n.translate('home.tutorials.dropwizardMetrics.nameTitle', { - defaultMessage: 'Dropwizard metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.dropwizardMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from Dropwizard Java application.', - }), - longDescription: i18n.translate('home.tutorials.dropwizardMetrics.longDescription', { - defaultMessage: - 'The `dropwizard` Metricbeat module fetches internal metrics from Dropwizard Java Application. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-dropwizard.html', - }, - }), - euiIconType: 'logoDropwizard', - artifacts: { - application: { - label: i18n.translate('home.tutorials.dropwizardMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-dropwizard.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/envoyproxy_logs/index.ts b/src/plugins/home/server/tutorials/envoyproxy_logs/index.ts deleted file mode 100644 index d18cb1425116..000000000000 --- a/src/plugins/home/server/tutorials/envoyproxy_logs/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function envoyproxyLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'envoyproxy'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'envoyproxyLogs', - name: i18n.translate('home.tutorials.envoyproxyLogs.nameTitle', { - defaultMessage: 'Envoy Proxy logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.envoyproxyLogs.shortDescription', { - defaultMessage: 'Collect Envoy Proxy logs.', - }), - longDescription: i18n.translate('home.tutorials.envoyproxyLogs.longDescription', { - defaultMessage: - 'This is a Filebeat module for Envoy proxy access log ( https://www.envoyproxy.io/docs/envoy/v1.10.0/configuration/access_log). It supports both standalone deployment and Envoy proxy deployment in Kubernetes. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-envoyproxy.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/envoyproxy.svg', - artifacts: { - dashboards: [ - { - id: '0c610510-5cbd-11e9-8477-077ec9664dbd', - linkLabel: i18n.translate( - 'home.tutorials.envoyproxyLogs.artifacts.dashboards.linkLabel', - { - defaultMessage: 'Envoy Proxy Overview', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-envoyproxy.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/envoyproxy_metrics/index.ts b/src/plugins/home/server/tutorials/envoyproxy_metrics/index.ts deleted file mode 100644 index 2ab1b7533ecc..000000000000 --- a/src/plugins/home/server/tutorials/envoyproxy_metrics/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function envoyproxyMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'envoyproxy'; - return { - id: 'envoyproxyMetrics', - name: i18n.translate('home.tutorials.envoyproxyMetrics.nameTitle', { - defaultMessage: 'Envoy Proxy metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.envoyproxyMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from Envoy Proxy.', - }), - longDescription: i18n.translate('home.tutorials.envoyproxyMetrics.longDescription', { - defaultMessage: - 'The `envoyproxy` Metricbeat module fetches monitoring metrics from Envoy Proxy. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-envoyproxy.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/envoyproxy.svg', - artifacts: { - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-envoyproxy.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/etcd_metrics/index.ts b/src/plugins/home/server/tutorials/etcd_metrics/index.ts deleted file mode 100644 index 31bcb5369323..000000000000 --- a/src/plugins/home/server/tutorials/etcd_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function etcdMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'etcd'; - return { - id: 'etcdMetrics', - name: i18n.translate('home.tutorials.etcdMetrics.nameTitle', { - defaultMessage: 'Etcd metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.etcdMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Etcd server.', - }), - longDescription: i18n.translate('home.tutorials.etcdMetrics.longDescription', { - defaultMessage: - 'The `etcd` Metricbeat module fetches internal metrics from Etcd. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-etcd.html', - }, - }), - euiIconType: 'logoEtcd', - artifacts: { - application: { - label: i18n.translate('home.tutorials.etcdMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-etcd.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/f5_logs/index.ts b/src/plugins/home/server/tutorials/f5_logs/index.ts deleted file mode 100644 index b8391545eb64..000000000000 --- a/src/plugins/home/server/tutorials/f5_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function f5LogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'f5'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'f5Logs', - name: i18n.translate('home.tutorials.f5Logs.nameTitle', { - defaultMessage: 'F5 logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.f5Logs.shortDescription', { - defaultMessage: 'Collect F5 Big-IP Access Policy Manager logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.f5Logs.longDescription', { - defaultMessage: - 'This is a module for receiving Big-IP Access Policy Manager logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-f5.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/f5.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.f5Logs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-f5.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/fortinet_logs/index.ts b/src/plugins/home/server/tutorials/fortinet_logs/index.ts deleted file mode 100644 index 6622f07fa777..000000000000 --- a/src/plugins/home/server/tutorials/fortinet_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function fortinetLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'fortinet'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'fortinetLogs', - name: i18n.translate('home.tutorials.fortinetLogs.nameTitle', { - defaultMessage: 'Fortinet logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.fortinetLogs.shortDescription', { - defaultMessage: 'Collect Fortinet FortiOS logs over syslog.', - }), - longDescription: i18n.translate('home.tutorials.fortinetLogs.longDescription', { - defaultMessage: - 'This is a module for Fortinet FortiOS logs sent in the syslog format. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-fortinet.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/fortinet.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.fortinetLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-fortinet.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/golang_metrics/index.ts b/src/plugins/home/server/tutorials/golang_metrics/index.ts deleted file mode 100644 index 1f20d2f48bba..000000000000 --- a/src/plugins/home/server/tutorials/golang_metrics/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function golangMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'golang'; - return { - id: moduleName + 'Metrics', - name: i18n.translate('home.tutorials.golangMetrics.nameTitle', { - defaultMessage: 'Golang metrics', - }), - moduleName, - isBeta: true, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.golangMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from a Golang app.', - }), - longDescription: i18n.translate('home.tutorials.golangMetrics.longDescription', { - defaultMessage: - 'The `{moduleName}` Metricbeat module fetches internal metrics from a Golang app. \ -[Learn more]({learnMoreLink}).', - values: { - moduleName, - learnMoreLink: `{config.docs.beats.metricbeat}/metricbeat-module-${moduleName}.html`, - }, - }), - euiIconType: 'logoGolang', - artifacts: { - dashboards: [ - { - id: 'f2dc7320-f519-11e6-a3c9-9d1f7c42b045-ecs', - linkLabel: i18n.translate('home.tutorials.golangMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Golang metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-' + moduleName + '.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/googlecloud_logs/index.ts b/src/plugins/home/server/tutorials/googlecloud_logs/index.ts deleted file mode 100644 index 6118c215ea94..000000000000 --- a/src/plugins/home/server/tutorials/googlecloud_logs/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function googlecloudLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'googlecloud'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'googlecloudLogs', - name: i18n.translate('home.tutorials.googlecloudLogs.nameTitle', { - defaultMessage: 'Google Cloud logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.googlecloudLogs.shortDescription', { - defaultMessage: 'Collect Google Cloud audit, firewall, and VPC flow logs.', - }), - longDescription: i18n.translate('home.tutorials.googlecloudLogs.longDescription', { - defaultMessage: - 'This is a module for Google Cloud logs. It supports reading audit, VPC flow, \ - and firewall logs that have been exported from Stackdriver to a Google Pub/Sub \ - topic sink. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-googlecloud.html', - }, - }), - euiIconType: 'logoGoogleG', - artifacts: { - dashboards: [ - { - id: '6576c480-73a2-11ea-a345-f985c61fe654', - linkLabel: i18n.translate( - 'home.tutorials.googlecloudLogs.artifacts.dashboards.linkLabel', - { - defaultMessage: 'Audit Logs Dashbaord', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-googlecloud.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts b/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts deleted file mode 100644 index b19fdb456f9b..000000000000 --- a/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function googlecloudMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'googlecloud'; - return { - id: 'googlecloudMetrics', - name: i18n.translate('home.tutorials.googlecloudMetrics.nameTitle', { - defaultMessage: 'Google Cloud metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.googlecloudMetrics.shortDescription', { - defaultMessage: - 'Fetch monitoring metrics from Google Cloud Platform using Stackdriver Monitoring API.', - }), - longDescription: i18n.translate('home.tutorials.googlecloudMetrics.longDescription', { - defaultMessage: - 'The `googlecloud` Metricbeat module fetches monitoring metrics from Google Cloud Platform using Stackdriver Monitoring API. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-googlecloud.html', - }, - }), - euiIconType: 'logoGCP', - isBeta: false, - artifacts: { - dashboards: [ - { - id: 'f40ee870-5e4a-11ea-a4f6-717338406083', - linkLabel: i18n.translate( - 'home.tutorials.googlecloudMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'Google Cloud metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-googlecloud.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/gsuite_logs/index.ts b/src/plugins/home/server/tutorials/gsuite_logs/index.ts deleted file mode 100644 index b2dc118cc60a..000000000000 --- a/src/plugins/home/server/tutorials/gsuite_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function gsuiteLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'gsuite'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'gsuiteLogs', - name: i18n.translate('home.tutorials.gsuiteLogs.nameTitle', { - defaultMessage: 'GSuite logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.gsuiteLogs.shortDescription', { - defaultMessage: 'Collect GSuite activity reports.', - }), - longDescription: i18n.translate('home.tutorials.gsuiteLogs.longDescription', { - defaultMessage: - 'This is a module for ingesting data from the different GSuite audit reports APIs. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-gsuite.html', - }, - }), - euiIconType: 'logoGoogleG', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.gsuiteLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-gsuite.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/haproxy_logs/index.ts b/src/plugins/home/server/tutorials/haproxy_logs/index.ts deleted file mode 100644 index 0eb3b84291ff..000000000000 --- a/src/plugins/home/server/tutorials/haproxy_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function haproxyLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'haproxy'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'haproxyLogs', - name: i18n.translate('home.tutorials.haproxyLogs.nameTitle', { - defaultMessage: 'HAProxy logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.haproxyLogs.shortDescription', { - defaultMessage: 'Collect HAProxy logs.', - }), - longDescription: i18n.translate('home.tutorials.haproxyLogs.longDescription', { - defaultMessage: - 'The module collects and parses logs from a ( `haproxy`) process. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-haproxy.html', - }, - }), - euiIconType: 'logoHAproxy', - artifacts: { - dashboards: [ - { - id: '3560d580-aa34-11e8-9c06-877f0445e3e0-ecs', - linkLabel: i18n.translate('home.tutorials.haproxyLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'HAProxy Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-haproxy.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/haproxy_metrics/index.ts b/src/plugins/home/server/tutorials/haproxy_metrics/index.ts deleted file mode 100644 index be275726877a..000000000000 --- a/src/plugins/home/server/tutorials/haproxy_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function haproxyMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'haproxy'; - return { - id: 'haproxyMetrics', - name: i18n.translate('home.tutorials.haproxyMetrics.nameTitle', { - defaultMessage: 'HAProxy metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.haproxyMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the HAProxy server.', - }), - longDescription: i18n.translate('home.tutorials.haproxyMetrics.longDescription', { - defaultMessage: - 'The `haproxy` Metricbeat module fetches internal metrics from HAProxy. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-haproxy.html', - }, - }), - euiIconType: 'logoHAproxy', - artifacts: { - application: { - label: i18n.translate('home.tutorials.haproxyMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-haproxy.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/ibmmq_logs/index.ts b/src/plugins/home/server/tutorials/ibmmq_logs/index.ts deleted file mode 100644 index 388a5dd3463c..000000000000 --- a/src/plugins/home/server/tutorials/ibmmq_logs/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function ibmmqLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'ibmmq'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'ibmmqLogs', - name: i18n.translate('home.tutorials.ibmmqLogs.nameTitle', { - defaultMessage: 'IBM MQ logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.ibmmqLogs.shortDescription', { - defaultMessage: 'Collect IBM MQ logs with Filebeat.', - }), - longDescription: i18n.translate('home.tutorials.ibmmqLogs.longDescription', { - defaultMessage: 'Collect IBM MQ logs with Filebeat. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-ibmmq.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/ibmmq.svg', - artifacts: { - dashboards: [ - { - id: 'ba1d8830-7c7b-11e9-9645-e37efaf5baff', - linkLabel: i18n.translate('home.tutorials.ibmmqLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'IBM MQ Events', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-ibmmq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/ibmmq_metrics/index.ts b/src/plugins/home/server/tutorials/ibmmq_metrics/index.ts deleted file mode 100644 index b3c7643c68f0..000000000000 --- a/src/plugins/home/server/tutorials/ibmmq_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function ibmmqMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'ibmmq'; - return { - id: 'ibmmqMetrics', - name: i18n.translate('home.tutorials.ibmmqMetrics.nameTitle', { - defaultMessage: 'IBM MQ metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.ibmmqMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from IBM MQ instances.', - }), - longDescription: i18n.translate('home.tutorials.ibmmqMetrics.longDescription', { - defaultMessage: - 'The `ibmmq` Metricbeat module fetches monitoring metrics from IBM MQ instances \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-ibmmq.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/ibmmq.svg', - isBeta: true, - artifacts: { - application: { - label: i18n.translate('home.tutorials.ibmmqMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-ibmmq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/icinga_logs/index.ts b/src/plugins/home/server/tutorials/icinga_logs/index.ts deleted file mode 100644 index c33ea03e4c01..000000000000 --- a/src/plugins/home/server/tutorials/icinga_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function icingaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'icinga'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'icingaLogs', - name: i18n.translate('home.tutorials.icingaLogs.nameTitle', { - defaultMessage: 'Icinga logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.icingaLogs.shortDescription', { - defaultMessage: 'Collect Icinga main, debug, and startup logs.', - }), - longDescription: i18n.translate('home.tutorials.icingaLogs.longDescription', { - defaultMessage: - 'The module parses the main, debug, and startup logs of [Icinga](https://www.icinga.com/products/icinga-2/). \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-icinga.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/icinga.svg', - artifacts: { - dashboards: [ - { - id: 'f693d260-2417-11e7-a83b-d5f4cebac9ff-ecs', - linkLabel: i18n.translate('home.tutorials.icingaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Icinga Main Log', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-icinga.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/iis_logs/index.ts b/src/plugins/home/server/tutorials/iis_logs/index.ts deleted file mode 100644 index 169fc85653e8..000000000000 --- a/src/plugins/home/server/tutorials/iis_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function iisLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'iis'; - const platforms = ['WINDOWS'] as const; - return { - id: 'iisLogs', - name: i18n.translate('home.tutorials.iisLogs.nameTitle', { - defaultMessage: 'IIS logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.iisLogs.shortDescription', { - defaultMessage: 'Collect and parse access and error logs created by the IIS HTTP server.', - }), - longDescription: i18n.translate('home.tutorials.iisLogs.longDescription', { - defaultMessage: - 'The `iis` Filebeat module parses access and error logs created by the IIS HTTP server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-iis.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/iis.svg', - artifacts: { - dashboards: [ - { - id: '4278ad30-fe16-11e7-a3b0-d13028918f9f-ecs', - linkLabel: i18n.translate('home.tutorials.iisLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'IIS logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-iis.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/iis_metrics/index.ts b/src/plugins/home/server/tutorials/iis_metrics/index.ts deleted file mode 100644 index d47933fa32a9..000000000000 --- a/src/plugins/home/server/tutorials/iis_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function iisMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'iis'; - return { - id: 'iisMetrics', - name: i18n.translate('home.tutorials.iisMetrics.nameTitle', { - defaultMessage: 'IIS Metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.iisMetrics.shortDescription', { - defaultMessage: 'Collect IIS server related metrics.', - }), - longDescription: i18n.translate('home.tutorials.iisMetrics.longDescription', { - defaultMessage: - 'The `iis` Metricbeat module collects metrics from IIS server and the application pools and websites running. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-iis.html', - }, - }), - isBeta: true, - euiIconType: '/plugins/home/assets/tutorials/logos/iis.svg', - artifacts: { - dashboards: [ - { - id: 'ebc23240-8572-11ea-91bc-ab084c7ec0e7', - linkLabel: i18n.translate('home.tutorials.iisMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'IIS metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-iis.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/imperva_logs/index.ts b/src/plugins/home/server/tutorials/imperva_logs/index.ts deleted file mode 100644 index 32249c202d0d..000000000000 --- a/src/plugins/home/server/tutorials/imperva_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function impervaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'imperva'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'impervaLogs', - name: i18n.translate('home.tutorials.impervaLogs.nameTitle', { - defaultMessage: 'Imperva logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.impervaLogs.shortDescription', { - defaultMessage: 'Collect Imperva SecureSphere logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.impervaLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Imperva SecureSphere logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-imperva.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.impervaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-imperva.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/infoblox_logs/index.ts b/src/plugins/home/server/tutorials/infoblox_logs/index.ts deleted file mode 100644 index 63980113d8e8..000000000000 --- a/src/plugins/home/server/tutorials/infoblox_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function infobloxLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'infoblox'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'infobloxLogs', - name: i18n.translate('home.tutorials.infobloxLogs.nameTitle', { - defaultMessage: 'Infoblox logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.infobloxLogs.shortDescription', { - defaultMessage: 'Collect Infoblox NIOS logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.infobloxLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Infoblox NIOS logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-infoblox.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/infoblox.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.infobloxLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-infoblox.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/auditbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/auditbeat_instructions.ts deleted file mode 100644 index 875c108e9a72..000000000000 --- a/src/plugins/home/server/tutorials/instructions/auditbeat_instructions.ts +++ /dev/null @@ -1,363 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { Platform, TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createAuditbeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - OSX: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.install.osxTitle', { - defaultMessage: 'Download and install Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.install.osxTextPre', { - defaultMessage: 'First time using Auditbeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.auditbeat}/auditbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/auditbeat/auditbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'tar xzvf auditbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'cd auditbeat-{config.opensearchDashboards.version}-darwin-x64/', - ], - }, - DEB: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.install.debTitle', { - defaultMessage: 'Download and install Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.install.debTextPre', { - defaultMessage: 'First time using Auditbeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.auditbeat}/auditbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/auditbeat/auditbeat-{config.opensearchDashboards.version}-amd64.deb', - 'sudo dpkg -i auditbeat-{config.opensearchDashboards.version}-amd64.deb', - ], - textPost: i18n.translate('home.tutorials.common.auditbeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({linkUrl}).', - values: { - linkUrl: 'https://opensearch.org/docs/latest/downloads/beats/auditbeat', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.install.rpmTitle', { - defaultMessage: 'Download and install Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.install.rpmTextPre', { - defaultMessage: 'First time using Auditbeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.auditbeat}/auditbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/auditbeat/auditbeat-{config.opensearchDashboards.version}-x64.rpm', - 'sudo rpm -vi auditbeat-{config.opensearchDashboards.version}-x64.rpm', - ], - textPost: i18n.translate('home.tutorials.common.auditbeatInstructions.install.rpmTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({linkUrl}).', - values: { - linkUrl: 'https://opensearch.org/docs/latest/downloads/beats/auditbeat', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Auditbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.auditbeatInstructions.install.windowsTextPre', - { - defaultMessage: - 'First time using Auditbeat? See the [Quick Start]({guideLinkUrl}).\n\ - 1. Download the Auditbeat Windows zip file from the [Download]({auditbeatLinkUrl}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the `{directoryName}` directory to `Auditbeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, run the following commands to install Auditbeat as a Windows service.', - values: { - folderPath: '`C:\\Program Files`', - guideLinkUrl: '{config.docs.beats.auditbeat}/auditbeat-installation-configuration.html', - auditbeatLinkUrl: 'https://opensearch.org/docs/latest/downloads/beats/auditbeat', - directoryName: 'auditbeat-{config.opensearchDashboards.version}-windows', - }, - } - ), - commands: ['cd "C:\\Program Files\\Auditbeat"', '.\\install-service-auditbeat.ps1'], - textPost: i18n.translate( - 'home.tutorials.common.auditbeatInstructions.install.windowsTextPost', - { - defaultMessage: - 'Modify the settings under {propertyName} in the {auditbeatPath} file to point to your OpenSearch installation.', - values: { - propertyName: '`output.opensearch`', - auditbeatPath: '`C:\\Program Files\\Auditbeat\\auditbeat.yml`', - }, - } - ), - }, - }, - START: { - OSX: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.start.osxTitle', { - defaultMessage: 'Start Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.start.osxTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['./auditbeat setup', './auditbeat -e'], - }, - DEB: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.start.debTitle', { - defaultMessage: 'Start Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.start.debTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo auditbeat setup', 'sudo service auditbeat start'], - }, - RPM: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.start.rpmTitle', { - defaultMessage: 'Start Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.start.rpmTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo auditbeat setup', 'sudo service auditbeat start'], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.start.windowsTitle', { - defaultMessage: 'Start Auditbeat', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.start.windowsTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['.\\auditbeat.exe setup', 'Start-Service auditbeat'], - }, - }, - CONFIG: { - OSX: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.config.osxTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.config.osxTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`auditbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.auditbeatInstructions.config.osxTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of OpenSearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.config.debTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.config.debTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/auditbeat/auditbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.auditbeatInstructions.config.debTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of OpenSearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.config.rpmTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.config.rpmTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/auditbeat/auditbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.auditbeatInstructions.config.rpmTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of OpenSearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.auditbeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.auditbeatInstructions.config.windowsTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Auditbeat\\auditbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.auditbeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of OpenSearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function auditbeatStatusCheck() { - return { - title: i18n.translate('home.tutorials.common.auditbeatStatusCheck.title', { - defaultMessage: 'Status', - }), - text: i18n.translate('home.tutorials.common.auditbeatStatusCheck.text', { - defaultMessage: 'Check that data is received from Auditbeat', - }), - btnLabel: i18n.translate('home.tutorials.common.auditbeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.auditbeatStatusCheck.successText', { - defaultMessage: 'Data successfully received', - }), - error: i18n.translate('home.tutorials.common.auditbeatStatusCheck.errorText', { - defaultMessage: 'No data has been received yet', - }), - opensearchHitsCheck: { - index: 'auditbeat-*', - query: { - bool: { - filter: { - term: { - 'agent.type': 'auditbeat', - }, - }, - }, - }, - }, - }; -} - -export function onPremInstructions(platforms: readonly Platform[], context?: TutorialContext) { - const AUDITBEAT_INSTRUCTIONS = createAuditbeatInstructions(context); - - const variants = []; - for (let i = 0; i < platforms.length; i++) { - const platform = platforms[i]; - const instructions = []; - instructions.push(AUDITBEAT_INSTRUCTIONS.INSTALL[platform]); - instructions.push(AUDITBEAT_INSTRUCTIONS.CONFIG[platform]); - instructions.push(AUDITBEAT_INSTRUCTIONS.START[platform]); - variants.push({ - id: INSTRUCTION_VARIANT[platform], - instructions, - }); - } - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.auditbeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: variants, - statusCheck: auditbeatStatusCheck(), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/filebeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/filebeat_instructions.ts deleted file mode 100644 index 0d47f760dd0c..000000000000 --- a/src/plugins/home/server/tutorials/instructions/filebeat_instructions.ts +++ /dev/null @@ -1,424 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { Platform, TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createFilebeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - OSX: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.install.osxTitle', { - defaultMessage: 'Download and install Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.install.osxTextPre', { - defaultMessage: 'First time using Filebeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.filebeat}/filebeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/filebeat/filebeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'tar xzvf filebeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'cd filebeat-{config.opensearchDashboards.version}-darwin-x64/', - ], - }, - DEB: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.install.debTitle', { - defaultMessage: 'Download and install Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.install.debTextPre', { - defaultMessage: 'First time using Filebeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.filebeat}/filebeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/filebeat/filebeat-{config.opensearchDashboards.version}-amd64.deb', - 'sudo dpkg -i filebeat-{config.opensearchDashboards.version}-amd64.deb', - ], - textPost: i18n.translate('home.tutorials.common.filebeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({linkUrl}).', - values: { - linkUrl: 'https://opensearch.org/docs/latest/downloads/beats/filebeat', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.install.rpmTitle', { - defaultMessage: 'Download and install Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.install.rpmTextPre', { - defaultMessage: 'First time using Filebeat? See the [Quick Start]({linkUrl}).', - values: { - linkUrl: '{config.docs.beats.filebeat}/filebeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/filebeat/filebeat-{config.opensearchDashboards.version}-x64.rpm', - 'sudo rpm -vi filebeat-{config.opensearchDashboards.version}-x64.rpm', - ], - textPost: i18n.translate('home.tutorials.common.filebeatInstructions.install.rpmTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({linkUrl}).', - values: { - linkUrl: 'https://opensearch.org/docs/latest/downloads/beats/filebeat', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.install.windowsTextPre', { - defaultMessage: - 'First time using Filebeat? See the [Quick Start]({guideLinkUrl}).\n\ - 1. Download the Filebeat Windows zip file from the [Download]({filebeatLinkUrl}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the `{directoryName}` directory to `Filebeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, run the following commands to install Filebeat as a Windows service.', - values: { - folderPath: '`C:\\Program Files`', - guideLinkUrl: '{config.docs.beats.filebeat}/filebeat-installation-configuration.html', - filebeatLinkUrl: 'https://opensearch.org/docs/latest/downloads/beats/filebeat', - directoryName: 'filebeat-{config.opensearchDashboards.version}-windows', - }, - }), - commands: ['cd "C:\\Program Files\\Filebeat"', '.\\install-service-filebeat.ps1'], - textPost: i18n.translate( - 'home.tutorials.common.filebeatInstructions.install.windowsTextPost', - { - defaultMessage: - 'Modify the settings under {propertyName} in the {filebeatPath} file to point to your OpenSearch installation.', - values: { - propertyName: '`output.opensearch`', - filebeatPath: '`C:\\Program Files\\Filebeat\\filebeat.yml`', - }, - } - ), - }, - }, - START: { - OSX: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.start.osxTitle', { - defaultMessage: 'Start Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.start.osxTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['./filebeat setup', './filebeat -e'], - }, - DEB: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.start.debTitle', { - defaultMessage: 'Start Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.start.debTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo filebeat setup', 'sudo service filebeat start'], - }, - RPM: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.start.rpmTitle', { - defaultMessage: 'Start Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.start.rpmTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo filebeat setup', 'sudo service filebeat start'], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.start.windowsTitle', { - defaultMessage: 'Start Filebeat', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.start.windowsTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['.\\filebeat.exe setup', 'Start-Service filebeat'], - }, - }, - CONFIG: { - OSX: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.config.osxTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.config.osxTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`filebeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.filebeatInstructions.config.osxTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.config.debTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.config.debTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/filebeat/filebeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.filebeatInstructions.config.debTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.config.rpmTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.config.rpmTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/filebeat/filebeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.filebeatInstructions.config.rpmTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.filebeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.filebeatInstructions.config.windowsTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Filebeat\\filebeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.filebeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function filebeatEnableInstructions(moduleName: string) { - return { - OSX: { - title: i18n.translate('home.tutorials.common.filebeatEnableInstructions.osxTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - textPre: i18n.translate('home.tutorials.common.filebeatEnableInstructions.osxTextPre', { - defaultMessage: 'From the installation directory, run:', - }), - commands: ['./filebeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.filebeatEnableInstructions.osxTextPost', { - defaultMessage: 'Modify the settings in the `modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.filebeatEnableInstructions.debTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - commands: ['sudo filebeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.filebeatEnableInstructions.debTextPost', { - defaultMessage: - 'Modify the settings in the `/etc/filebeat/modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.filebeatEnableInstructions.rpmTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - commands: ['sudo filebeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.filebeatEnableInstructions.rpmTextPost', { - defaultMessage: - 'Modify the settings in the `/etc/filebeat/modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.filebeatEnableInstructions.windowsTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - textPre: i18n.translate('home.tutorials.common.filebeatEnableInstructions.windowsTextPre', { - defaultMessage: 'From the {path} folder, run:', - values: { path: `C:\\Program Files\\Filebeat` }, - }), - commands: ['filebeat.exe modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.filebeatEnableInstructions.windowsTextPost', { - defaultMessage: 'Modify the settings in the `modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - }; -} - -export function filebeatStatusCheck(moduleName: string) { - return { - title: i18n.translate('home.tutorials.common.filebeatStatusCheck.title', { - defaultMessage: 'Module status', - }), - text: i18n.translate('home.tutorials.common.filebeatStatusCheck.text', { - defaultMessage: 'Check that data is received from the Filebeat `{moduleName}` module', - values: { moduleName }, - }), - btnLabel: i18n.translate('home.tutorials.common.filebeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.filebeatStatusCheck.successText', { - defaultMessage: 'Data successfully received from this module', - }), - error: i18n.translate('home.tutorials.common.filebeatStatusCheck.errorText', { - defaultMessage: 'No data has been received from this module yet', - }), - opensearchHitsCheck: { - index: 'filebeat-*', - query: { - bool: { - filter: { - term: { - 'event.module': moduleName, - }, - }, - }, - }, - }, - }; -} - -export function onPremInstructions( - moduleName: string, - platforms: readonly Platform[] = [], - context?: TutorialContext -) { - const FILEBEAT_INSTRUCTIONS = createFilebeatInstructions(context); - - const variants = []; - for (let i = 0; i < platforms.length; i++) { - const platform = platforms[i]; - const instructions = []; - instructions.push(FILEBEAT_INSTRUCTIONS.INSTALL[platform]); - instructions.push(FILEBEAT_INSTRUCTIONS.CONFIG[platform]); - instructions.push(filebeatEnableInstructions(moduleName)[platform]); - instructions.push(FILEBEAT_INSTRUCTIONS.START[platform]); - variants.push({ - id: INSTRUCTION_VARIANT[platform], - instructions, - }); - } - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.filebeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: variants, - statusCheck: filebeatStatusCheck(moduleName), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/functionbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/functionbeat_instructions.ts deleted file mode 100644 index add467f39645..000000000000 --- a/src/plugins/home/server/tutorials/instructions/functionbeat_instructions.ts +++ /dev/null @@ -1,367 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { Platform, TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createFunctionbeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - OSX: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.install.osxTitle', { - defaultMessage: 'Download and install Functionbeat', - }), - textPre: i18n.translate('home.tutorials.common.functionbeatInstructions.install.osxTextPre', { - defaultMessage: 'First time using Functionbeat? See the [Quick Start]({link}).', - values: { - link: '{config.docs.beats.functionbeat}/functionbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/functionbeat/functionbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'tar xzvf functionbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'cd functionbeat-{config.opensearchDashboards.version}-darwin-x64/', - ], - }, - LINUX: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.install.linuxTitle', { - defaultMessage: 'Download and install Functionbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.install.linuxTextPre', - { - defaultMessage: 'First time using Functionbeat? See the [Quick Start]({link}).', - values: { - link: '{config.docs.beats.functionbeat}/functionbeat-installation-configuration.html', - }, - } - ), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/functionbeat/functionbeat-{config.opensearchDashboards.version}-linux-x64.tar.gz', - 'tar xzvf functionbeat-{config.opensearchDashboards.version}-linux-x64.tar.gz', - 'cd functionbeat-{config.opensearchDashboards.version}-linux-x64/', - ], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Functionbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.install.windowsTextPre', - { - defaultMessage: - 'First time using Functionbeat? See the [Quick Start]({functionbeatLink}).\n\ - 1. Download the Functionbeat Windows zip file from the [Download]({opensearchLink}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the {directoryName} directory to `Functionbeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, go to the Functionbeat directory:', - values: { - directoryName: '`functionbeat-{config.opensearchDashboards.version}-windows`', - folderPath: '`C:\\Program Files`', - functionbeatLink: - '{config.docs.beats.functionbeat}/functionbeat-installation-configuration.html', - opensearchLink: 'https://opensearch.org/docs/latest/downloads/beats/functionbeat', - }, - } - ), - commands: ['cd "C:\\Program Files\\Functionbeat"'], - }, - }, - DEPLOY: { - OSX_LINUX: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.deploy.osxTitle', { - defaultMessage: 'Deploy Functionbeat to AWS Lambda', - }), - textPre: i18n.translate('home.tutorials.common.functionbeatInstructions.deploy.osxTextPre', { - defaultMessage: - 'This installs Functionbeat as a Lambda function.\ -The `setup` command checks the opensearch configuration and loads the \ -OpenSearch Dashboards index pattern. It is normally safe to omit this command.', - }), - commands: ['./functionbeat setup', './functionbeat deploy fn-cloudwatch-logs'], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.deploy.windowsTitle', { - defaultMessage: 'Deploy Functionbeat to AWS Lambda', - }), - textPre: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.deploy.windowsTextPre', - { - defaultMessage: - 'This installs Functionbeat as a Lambda function.\ -The `setup` command checks the opensearch configuration and loads the \ -OpenSearch Dashboards index pattern. It is normally safe to omit this command.', - } - ), - commands: ['.\\functionbeat.exe setup', '.\\functionbeat.exe deploy fn-cloudwatch-logs'], - }, - }, - CONFIG: { - OSX_LINUX: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.config.osxTitle', { - defaultMessage: 'Configure the OpenSearch cluster', - }), - textPre: i18n.translate('home.tutorials.common.functionbeatInstructions.config.osxTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`functionbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.config.osxTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.functionbeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.config.windowsTextPre', - { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Functionbeat\\functionbeat.yml`', - }, - } - ), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.functionbeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function functionbeatEnableInstructions() { - const defaultTitle = i18n.translate( - 'home.tutorials.common.functionbeatEnableOnPremInstructions.defaultTitle', - { - defaultMessage: 'Configure the Cloudwatch log group', - } - ); - const defaultCommands = [ - 'functionbeat.provider.aws.functions:', - ' - name: fn-cloudwatch-logs', - ' enabled: true', - ' type: cloudwatch_logs', - ' triggers:', - ' - log_group_name: ', - 'functionbeat.provider.aws.deploy_bucket: ', - ]; - const defaultTextPost = i18n.translate( - 'home.tutorials.common.functionbeatEnableOnPremInstructions.defaultTextPost', - { - defaultMessage: - 'Where `` is the name of the log group you want to ingest, \ -and `` is a valid S3 bucket name which will be used for staging the \ -Functionbeat deploy.', - } - ); - return { - OSX_LINUX: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.functionbeatEnableOnPremInstructionsOSXLinux.textPre', - { - defaultMessage: 'Modify the settings in the `functionbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - WINDOWS: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.functionbeatEnableOnPremInstructionsWindows.textPre', - { - defaultMessage: 'Modify the settings in the {path} file.', - values: { - path: '`C:\\Program Files\\Functionbeat\\functionbeat.yml`', - }, - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - }; -} - -export function functionbeatAWSInstructions() { - const defaultTitle = i18n.translate('home.tutorials.common.functionbeatAWSInstructions.title', { - defaultMessage: 'Set AWS credentials', - }); - const defaultPre = i18n.translate('home.tutorials.common.functionbeatAWSInstructions.textPre', { - defaultMessage: 'Set your AWS account credentials in the environment:', - }); - const defaultPost = i18n.translate('home.tutorials.common.functionbeatAWSInstructions.textPost', { - defaultMessage: - 'Where `` and `` are your account credentials and \ -`us-east-1` is the desired region.', - }); - - return { - OSX_LINUX: { - title: defaultTitle, - textPre: defaultPre, - commands: [ - 'export AWS_ACCESS_KEY_ID=', - 'export AWS_SECRET_ACCESS_KEY=', - 'export AWS_DEFAULT_REGION=us-east-1', - ], - textPost: defaultPost, - }, - WINDOWS: { - title: defaultTitle, - textPre: defaultPre, - commands: [ - 'set AWS_ACCESS_KEY_ID=', - 'set AWS_SECRET_ACCESS_KEY=', - 'set AWS_DEFAULT_REGION=us-east-1', - ], - textPost: defaultPost, - }, - }; -} - -export function functionbeatStatusCheck() { - return { - title: i18n.translate('home.tutorials.common.functionbeatStatusCheck.title', { - defaultMessage: 'Functionbeat status', - }), - text: i18n.translate('home.tutorials.common.functionbeatStatusCheck.text', { - defaultMessage: 'Check that data is received from Functionbeat', - }), - btnLabel: i18n.translate('home.tutorials.common.functionbeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.functionbeatStatusCheck.successText', { - defaultMessage: 'Data successfully received from Functionbeat', - }), - error: i18n.translate('home.tutorials.common.functionbeatStatusCheck.errorText', { - defaultMessage: 'No data has been received from Functionbeat yet', - }), - opensearchHitsCheck: { - index: 'functionbeat-*', - query: { - match_all: {}, - }, - }, - }; -} - -export function onPremInstructions(platforms: Platform[], context?: TutorialContext) { - const FUNCTIONBEAT_INSTRUCTIONS = createFunctionbeatInstructions(context); - - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.functionbeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: [ - { - id: INSTRUCTION_VARIANT.OSX, - instructions: [ - FUNCTIONBEAT_INSTRUCTIONS.INSTALL.OSX, - functionbeatAWSInstructions().OSX_LINUX, - functionbeatEnableInstructions().OSX_LINUX, - FUNCTIONBEAT_INSTRUCTIONS.CONFIG.OSX_LINUX, - FUNCTIONBEAT_INSTRUCTIONS.DEPLOY.OSX_LINUX, - ], - }, - { - id: INSTRUCTION_VARIANT.LINUX, - instructions: [ - FUNCTIONBEAT_INSTRUCTIONS.INSTALL.LINUX, - functionbeatAWSInstructions().OSX_LINUX, - functionbeatEnableInstructions().OSX_LINUX, - FUNCTIONBEAT_INSTRUCTIONS.CONFIG.OSX_LINUX, - FUNCTIONBEAT_INSTRUCTIONS.DEPLOY.OSX_LINUX, - ], - }, - { - id: INSTRUCTION_VARIANT.WINDOWS, - instructions: [ - FUNCTIONBEAT_INSTRUCTIONS.INSTALL.WINDOWS, - functionbeatAWSInstructions().WINDOWS, - functionbeatEnableInstructions().WINDOWS, - FUNCTIONBEAT_INSTRUCTIONS.CONFIG.WINDOWS, - FUNCTIONBEAT_INSTRUCTIONS.DEPLOY.WINDOWS, - ], - }, - ], - statusCheck: functionbeatStatusCheck(), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/get_space_id_for_beats_tutorial.ts b/src/plugins/home/server/tutorials/instructions/get_space_id_for_beats_tutorial.ts deleted file mode 100644 index 2b1082c31c59..000000000000 --- a/src/plugins/home/server/tutorials/instructions/get_space_id_for_beats_tutorial.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -/** - * Returns valid configuration for a beat.yml file for adding the space id - * if there is an active space and that space is not the default one. - * - * @param {object} context - Context object generated from tutorial factory (see #22760) - */ -export function getSpaceIdForBeatsTutorial(context?: TutorialContext) { - if (!context || !context.spaceId || context.isInDefaultSpace) { - return ''; - } - - return ` space.id: "${context.spaceId}"`; -} diff --git a/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts deleted file mode 100644 index 4c85c0dbc960..000000000000 --- a/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts +++ /dev/null @@ -1,491 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { Platform, TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createHeartbeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - OSX: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.install.osxTitle', { - defaultMessage: 'Download and install Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.install.osxTextPre', { - defaultMessage: 'First time using Heartbeat? See the [Quick Start]({link}).', - values: { link: '{config.docs.beats.heartbeat}/heartbeat-installation-configuration.html' }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/heartbeat/heartbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'tar xzvf heartbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'cd heartbeat-{config.opensearchDashboards.version}-darwin-x64/', - ], - }, - DEB: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.install.debTitle', { - defaultMessage: 'Download and install Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.install.debTextPre', { - defaultMessage: 'First time using Heartbeat? See the [Quick Start]({link}).', - values: { link: '{config.docs.beats.heartbeat}/heartbeat-installation-configuration.html' }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/heartbeat/heartbeat-{config.opensearchDashboards.version}-amd64.deb', - 'sudo dpkg -i heartbeat-{config.opensearchDashboards.version}-amd64.deb', - ], - textPost: i18n.translate('home.tutorials.common.heartbeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', - values: { link: 'https://opensearch.org/docs/latest/downloads/beats/heartbeat' }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.install.rpmTitle', { - defaultMessage: 'Download and install Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.install.rpmTextPre', { - defaultMessage: 'First time using Heartbeat? See the [Quick Start]({link}).', - values: { link: '{config.docs.beats.heartbeat}/heartbeat-installation-configuration.html' }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/heartbeat/heartbeat-{config.opensearchDashboards.version}-x64.rpm', - 'sudo rpm -vi heartbeat-{config.opensearchDashboards.version}-x64.rpm', - ], - textPost: i18n.translate('home.tutorials.common.heartbeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', - values: { link: 'https://opensearch.org/docs/latest/downloads/beats/heartbeat' }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Heartbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.heartbeatInstructions.install.windowsTextPre', - { - defaultMessage: - 'First time using Heartbeat? See the [Quick Start]({heartbeatLink}).\n\ - 1. Download the Heartbeat Windows zip file from the [Download]({opensearchLink}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the {directoryName} directory to `Heartbeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, run the following commands to install Heartbeat as a Windows service.', - values: { - directoryName: '`heartbeat-{config.opensearchDashboards.version}-windows`', - folderPath: '`C:\\Program Files`', - heartbeatLink: - '{config.docs.beats.heartbeat}/heartbeat-installation-configuration.html', - opensearchLink: 'https://opensearch.org/docs/latest/downloads/beats/heartbeat', - }, - } - ), - commands: ['cd "C:\\Program Files\\Heartbeat"', '.\\install-service-heartbeat.ps1'], - }, - }, - START: { - OSX: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.start.osxTitle', { - defaultMessage: 'Start Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.start.osxTextPre', { - defaultMessage: 'The `setup` command loads the OpenSearch Dashboards index pattern.', - }), - commands: ['./heartbeat setup', './heartbeat -e'], - }, - DEB: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.start.debTitle', { - defaultMessage: 'Start Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.start.debTextPre', { - defaultMessage: 'The `setup` command loads the OpenSearch Dashboards index pattern.', - }), - commands: ['sudo heartbeat setup', 'sudo service heartbeat-elastic start'], - }, - RPM: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.start.rpmTitle', { - defaultMessage: 'Start Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.start.rpmTextPre', { - defaultMessage: 'The `setup` command loads the OpenSearch Dashboards index pattern.', - }), - commands: ['sudo heartbeat setup', 'sudo service heartbeat-elastic start'], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.start.windowsTitle', { - defaultMessage: 'Start Heartbeat', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.start.windowsTextPre', { - defaultMessage: 'The `setup` command loads the OpenSearch Dashboards index pattern.', - }), - commands: ['.\\heartbeat.exe setup', 'Start-Service heartbeat'], - }, - }, - CONFIG: { - OSX: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.config.osxTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.config.osxTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`heartbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.heartbeatInstructions.config.osxTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.config.debTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.config.debTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/heartbeat/heartbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.heartbeatInstructions.config.debTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.config.rpmTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.config.rpmTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/heartbeat/heartbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.heartbeatInstructions.config.rpmTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.heartbeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.heartbeatInstructions.config.windowsTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Heartbeat\\heartbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.heartbeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function heartbeatEnableInstructionsOnPrem() { - const defaultTitle = i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.defaultTitle', - { - defaultMessage: 'Edit the configuration - Add monitors', - } - ); - const defaultCommands = [ - 'heartbeat.monitors:', - '- type: http', - ' urls: [""]', - ' schedule: "@every 10s"', - ]; - const defaultTextPost = i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.defaultTextPost', - { - defaultMessage: - 'Where {hostTemplate} is your monitored URL, For more details on how to configure Monitors in \ - Heartbeat, read the [Heartbeat configuration docs.]({configureLink})', - values: { - configureLink: '{config.docs.beats.heartbeat}/configuring-howto-heartbeat.html', - hostTemplate: '``', - }, - } - ); - return { - OSX: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.osxTextPre', - { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - DEB: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.debTextPre', - { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - RPM: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.rpmTextPre', - { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - WINDOWS: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.heartbeatEnableOnPremInstructions.windowsTextPre', - { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - }; -} - -export function heartbeatEnableInstructionsCloud() { - const defaultTitle = i18n.translate( - 'home.tutorials.common.heartbeatEnableCloudInstructions.defaultTitle', - { - defaultMessage: 'Edit the configuration - Add monitors', - } - ); - const defaultCommands = [ - 'heartbeat.monitors:', - '- type: http', - ' urls: ["http://opensearch.org"]', - ' schedule: "@every 10s"', - ]; - const defaultTextPost = i18n.translate( - 'home.tutorials.common.heartbeatEnableCloudInstructions.defaultTextPost', - { - defaultMessage: - 'For more details on how to configure Monitors in Heartbeat, read the [Heartbeat configuration docs.]({configureLink})', - values: { configureLink: '{config.docs.beats.heartbeat}/configuring-howto-heartbeat.html' }, - } - ); - return { - OSX: { - title: defaultTitle, - textPre: i18n.translate('home.tutorials.common.heartbeatEnableCloudInstructions.osxTextPre', { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - }), - commands: defaultCommands, - textPost: defaultTextPost, - }, - DEB: { - title: defaultTitle, - textPre: i18n.translate('home.tutorials.common.heartbeatEnableCloudInstructions.debTextPre', { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - }), - commands: defaultCommands, - textPost: defaultTextPost, - }, - RPM: { - title: defaultTitle, - textPre: i18n.translate('home.tutorials.common.heartbeatEnableCloudInstructions.rpmTextPre', { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - }), - commands: defaultCommands, - textPost: defaultTextPost, - }, - WINDOWS: { - title: defaultTitle, - textPre: i18n.translate( - 'home.tutorials.common.heartbeatEnableCloudInstructions.windowsTextPre', - { - defaultMessage: 'Edit the `heartbeat.monitors` setting in the `heartbeat.yml` file.', - } - ), - commands: defaultCommands, - textPost: defaultTextPost, - }, - }; -} - -export function heartbeatStatusCheck() { - return { - title: i18n.translate('home.tutorials.common.heartbeatStatusCheck.title', { - defaultMessage: 'Heartbeat status', - }), - text: i18n.translate('home.tutorials.common.heartbeatStatusCheck.text', { - defaultMessage: 'Check that data is received from Heartbeat', - }), - btnLabel: i18n.translate('home.tutorials.common.heartbeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.heartbeatStatusCheck.successText', { - defaultMessage: 'Data successfully received from Heartbeat', - }), - error: i18n.translate('home.tutorials.common.heartbeatStatusCheck.errorText', { - defaultMessage: 'No data has been received from Heartbeat yet', - }), - opensearchHitsCheck: { - index: 'heartbeat-*', - query: { - match_all: {}, - }, - }, - }; -} - -export function onPremInstructions(platforms: Platform[], context?: TutorialContext) { - const HEARTBEAT_INSTRUCTIONS = createHeartbeatInstructions(context); - - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.heartbeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: [ - { - id: INSTRUCTION_VARIANT.OSX, - instructions: [ - HEARTBEAT_INSTRUCTIONS.INSTALL.OSX, - HEARTBEAT_INSTRUCTIONS.CONFIG.OSX, - heartbeatEnableInstructionsOnPrem().OSX, - HEARTBEAT_INSTRUCTIONS.START.OSX, - ], - }, - { - id: INSTRUCTION_VARIANT.DEB, - instructions: [ - HEARTBEAT_INSTRUCTIONS.INSTALL.DEB, - HEARTBEAT_INSTRUCTIONS.CONFIG.DEB, - heartbeatEnableInstructionsOnPrem().DEB, - HEARTBEAT_INSTRUCTIONS.START.DEB, - ], - }, - { - id: INSTRUCTION_VARIANT.RPM, - instructions: [ - HEARTBEAT_INSTRUCTIONS.INSTALL.RPM, - HEARTBEAT_INSTRUCTIONS.CONFIG.RPM, - heartbeatEnableInstructionsOnPrem().RPM, - HEARTBEAT_INSTRUCTIONS.START.RPM, - ], - }, - { - id: INSTRUCTION_VARIANT.WINDOWS, - instructions: [ - HEARTBEAT_INSTRUCTIONS.INSTALL.WINDOWS, - HEARTBEAT_INSTRUCTIONS.CONFIG.WINDOWS, - heartbeatEnableInstructionsOnPrem().WINDOWS, - HEARTBEAT_INSTRUCTIONS.START.WINDOWS, - ], - }, - ], - statusCheck: heartbeatStatusCheck(), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/logstash_instructions.ts b/src/plugins/home/server/tutorials/instructions/logstash_instructions.ts deleted file mode 100644 index defab1fc357b..000000000000 --- a/src/plugins/home/server/tutorials/instructions/logstash_instructions.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; - -export const createLogstashInstructions = () => ({ - INSTALL: { - OSX: [ - { - title: i18n.translate('home.tutorials.common.logstashInstructions.install.java.osxTitle', { - defaultMessage: 'Download and install the Java Runtime Environment', - }), - textPre: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.java.osxTextPre', - { - defaultMessage: 'Follow the installation instructions [here]({link}).', - values: { - link: 'https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jre.html', - }, - } - ), - }, - { - title: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.logstash.osxTitle', - { - defaultMessage: 'Download and install Logstash', - } - ), - textPre: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.logstash.osxTextPre', - { - defaultMessage: 'First time using Logstash? See the [Getting Started Guide]({link}).', - values: { - link: - '{config.docs.base_url}guide/en/logstash/current/getting-started-with-logstash.html', - }, - } - ), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/logstash/logstash-{config.opensearchDashboards.version}.tar.gz', - 'tar xzvf logstash-{config.opensearchDashboards.version}.tar.gz', - ], - }, - ], - WINDOWS: [ - { - title: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.java.windowsTitle', - { - defaultMessage: 'Download and install the Java Runtime Environment', - } - ), - textPre: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.java.windowsTextPre', - { - defaultMessage: 'Follow the installation instructions [here]({link}).', - values: { - link: - 'https://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_jre_install.html', - }, - } - ), - }, - { - title: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.logstash.windowsTitle', - { - defaultMessage: 'Download and install Logstash', - } - ), - textPre: i18n.translate( - 'home.tutorials.common.logstashInstructions.install.logstash.windowsTextPre', - { - defaultMessage: - 'First time using Logstash? See the [Getting Started Guide]({logstashLink}).\n\ - 1. [Download]({opensearchLink}) the Logstash Windows zip file.\n\ - 2. Extract the contents of the zip file.', - values: { - logstashLink: - '{config.docs.base_url}guide/en/logstash/current/getting-started-with-logstash.html', - opensearchLink: - 'https://artifacts.opensearch.org/downloads/logstash/logstash-{config.opensearchDashboards.version}.zip', - }, - } - ), - }, - ], - }, -}); diff --git a/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts deleted file mode 100644 index 9a14075eab75..000000000000 --- a/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts +++ /dev/null @@ -1,447 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createMetricbeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - OSX: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.install.osxTitle', { - defaultMessage: 'Download and install Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.install.osxTextPre', { - defaultMessage: 'First time using Metricbeat? See the [Quick Start]({link}).', - values: { - link: '{config.docs.beats.metricbeat}/metricbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/metricbeat/metricbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'tar xzvf metricbeat-{config.opensearchDashboards.version}-darwin-x64.tar.gz', - 'cd metricbeat-{config.opensearchDashboards.version}-darwin-x64/', - ], - }, - DEB: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.install.debTitle', { - defaultMessage: 'Download and install Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.install.debTextPre', { - defaultMessage: 'First time using Metricbeat? See the [Quick Start]({link}).', - values: { - link: '{config.docs.beats.metricbeat}/metricbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/metricbeat/metricbeat-{config.opensearchDashboards.version}-amd64.deb', - 'sudo dpkg -i metricbeat-{config.opensearchDashboards.version}-amd64.deb', - ], - textPost: i18n.translate('home.tutorials.common.metricbeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', - values: { link: 'https://opensearch.org/docs/latest/downloads/beats/metricbeat' }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.install.rpmTitle', { - defaultMessage: 'Download and install Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.install.rpmTextPre', { - defaultMessage: 'First time using Metricbeat? See the [Quick Start]({link}).', - values: { - link: '{config.docs.beats.metricbeat}/metricbeat-installation-configuration.html', - }, - }), - commands: [ - 'curl -L -O https://artifacts.opensearch.org/downloads/beats/metricbeat/metricbeat-{config.opensearchDashboards.version}-x64.rpm', - 'sudo rpm -vi metricbeat-{config.opensearchDashboards.version}-x64.rpm', - ], - textPost: i18n.translate('home.tutorials.common.metricbeatInstructions.install.debTextPost', { - defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', - values: { link: 'https://opensearch.org/docs/latest/downloads/beats/metricbeat' }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Metricbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.metricbeatInstructions.install.windowsTextPre', - { - defaultMessage: - 'First time using Metricbeat? See the [Quick Start]({metricbeatLink}).\n\ - 1. Download the Metricbeat Windows zip file from the [Download]({opensearchLink}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the {directoryName} directory to `Metricbeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, run the following commands to install Metricbeat as a Windows service.', - values: { - directoryName: '`metricbeat-{config.opensearchDashboards.version}-windows`', - folderPath: '`C:\\Program Files`', - metricbeatLink: - '{config.docs.beats.metricbeat}/metricbeat-installation-configuration.html', - opensearchLink: 'https://opensearch.org/docs/latest/downloads/beats/metricbeat', - }, - } - ), - commands: ['cd "C:\\Program Files\\Metricbeat"', '.\\install-service-metricbeat.ps1'], - textPost: i18n.translate( - 'home.tutorials.common.metricbeatInstructions.install.windowsTextPost', - { - defaultMessage: - 'Modify the settings under `output.opensearch` in the {path} file to point to your opensearch installation.', - values: { path: '`C:\\Program Files\\Metricbeat\\metricbeat.yml`' }, - } - ), - }, - }, - START: { - OSX: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.start.osxTitle', { - defaultMessage: 'Start Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.start.osxTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['./metricbeat setup', './metricbeat -e'], - }, - DEB: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.start.debTitle', { - defaultMessage: 'Start Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.start.debTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo metricbeat setup', 'sudo service metricbeat start'], - }, - RPM: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.start.rpmTitle', { - defaultMessage: 'Start Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.start.rpmTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['sudo metricbeat setup', 'sudo service metricbeat start'], - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.start.windowsTitle', { - defaultMessage: 'Start Metricbeat', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.start.windowsTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['.\\metricbeat.exe setup', 'Start-Service metricbeat'], - }, - }, - CONFIG: { - OSX: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.config.osxTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.config.osxTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`metricbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.metricbeatInstructions.config.osxTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.config.debTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.config.debTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/metricbeat/metricbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.metricbeatInstructions.config.debTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.config.rpmTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate('home.tutorials.common.metricbeatInstructions.config.rpmTextPre', { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`/etc/metricbeat/metricbeat.yml`', - }, - }), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate('home.tutorials.common.metricbeatInstructions.config.rpmTextPost', { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.metricbeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate( - 'home.tutorials.common.metricbeatInstructions.config.windowsTextPre', - { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Metricbeat\\metricbeat.yml`', - }, - } - ), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.metricbeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function metricbeatEnableInstructions(moduleName: string) { - return { - OSX: { - title: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.osxTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - textPre: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.osxTextPre', { - defaultMessage: 'From the installation directory, run:', - }), - commands: ['./metricbeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.osxTextPost', { - defaultMessage: 'Modify the settings in the `modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - DEB: { - title: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.debTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - commands: ['sudo metricbeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.debTextPost', { - defaultMessage: - 'Modify the settings in the `/etc/metricbeat/modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - RPM: { - title: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.rpmTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - commands: ['sudo metricbeat modules enable ' + moduleName], - textPost: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.rpmTextPost', { - defaultMessage: - 'Modify the settings in the `/etc/metricbeat/modules.d/{moduleName}.yml` file.', - values: { moduleName }, - }), - }, - WINDOWS: { - title: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.windowsTitle', { - defaultMessage: 'Enable and configure the {moduleName} module', - values: { moduleName }, - }), - textPre: i18n.translate('home.tutorials.common.metricbeatEnableInstructions.windowsTextPre', { - defaultMessage: 'From the {path} folder, run:', - values: { path: `C:\\Program Files\\Metricbeat` }, - }), - commands: ['.\\metricbeat.exe modules enable ' + moduleName], - textPost: i18n.translate( - 'home.tutorials.common.metricbeatEnableInstructions.windowsTextPost', - { - defaultMessage: 'Modify the settings in the `modules.d/{moduleName}.yml` file.', - values: { moduleName }, - } - ), - }, - }; -} - -export function metricbeatStatusCheck(moduleName: string) { - return { - title: i18n.translate('home.tutorials.common.metricbeatStatusCheck.title', { - defaultMessage: 'Module status', - }), - text: i18n.translate('home.tutorials.common.metricbeatStatusCheck.text', { - defaultMessage: 'Check that data is received from the Metricbeat `{moduleName}` module', - values: { moduleName }, - }), - btnLabel: i18n.translate('home.tutorials.common.metricbeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.metricbeatStatusCheck.successText', { - defaultMessage: 'Data successfully received from this module', - }), - error: i18n.translate('home.tutorials.common.metricbeatStatusCheck.errorText', { - defaultMessage: 'No data has been received from this module yet', - }), - opensearchHitsCheck: { - index: 'metricbeat-*', - query: { - bool: { - filter: { - term: { - 'event.module': moduleName, - }, - }, - }, - }, - }, - }; -} - -export function onPremInstructions(moduleName: string, context?: TutorialContext) { - const METRICBEAT_INSTRUCTIONS = createMetricbeatInstructions(context); - - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.metricbeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: [ - { - id: INSTRUCTION_VARIANT.OSX, - instructions: [ - METRICBEAT_INSTRUCTIONS.INSTALL.OSX, - METRICBEAT_INSTRUCTIONS.CONFIG.OSX, - metricbeatEnableInstructions(moduleName).OSX, - METRICBEAT_INSTRUCTIONS.START.OSX, - ], - }, - { - id: INSTRUCTION_VARIANT.DEB, - instructions: [ - METRICBEAT_INSTRUCTIONS.INSTALL.DEB, - METRICBEAT_INSTRUCTIONS.CONFIG.DEB, - metricbeatEnableInstructions(moduleName).DEB, - METRICBEAT_INSTRUCTIONS.START.DEB, - ], - }, - { - id: INSTRUCTION_VARIANT.RPM, - instructions: [ - METRICBEAT_INSTRUCTIONS.INSTALL.RPM, - METRICBEAT_INSTRUCTIONS.CONFIG.RPM, - metricbeatEnableInstructions(moduleName).RPM, - METRICBEAT_INSTRUCTIONS.START.RPM, - ], - }, - { - id: INSTRUCTION_VARIANT.WINDOWS, - instructions: [ - METRICBEAT_INSTRUCTIONS.INSTALL.WINDOWS, - METRICBEAT_INSTRUCTIONS.CONFIG.WINDOWS, - metricbeatEnableInstructions(moduleName).WINDOWS, - METRICBEAT_INSTRUCTIONS.START.WINDOWS, - ], - }, - ], - statusCheck: metricbeatStatusCheck(moduleName), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/instructions/param_types.ts b/src/plugins/home/server/tutorials/instructions/param_types.ts deleted file mode 100644 index f5c04d8e6490..000000000000 --- a/src/plugins/home/server/tutorials/instructions/param_types.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export const PARAM_TYPES = { - NUMBER: 'number', - STRING: 'string', -}; diff --git a/src/plugins/home/server/tutorials/instructions/winlogbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/winlogbeat_instructions.ts deleted file mode 100644 index 099750e7aa42..000000000000 --- a/src/plugins/home/server/tutorials/instructions/winlogbeat_instructions.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { INSTRUCTION_VARIANT } from '../../../common/instruction_variant'; -import { getSpaceIdForBeatsTutorial } from './get_space_id_for_beats_tutorial'; -import { TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export const createWinlogbeatInstructions = (context?: TutorialContext) => ({ - INSTALL: { - WINDOWS: { - title: i18n.translate('home.tutorials.common.winlogbeatInstructions.install.windowsTitle', { - defaultMessage: 'Download and install Winlogbeat', - }), - textPre: i18n.translate( - 'home.tutorials.common.winlogbeatInstructions.install.windowsTextPre', - { - defaultMessage: - 'First time using Winlogbeat? See the [Quick Start]({winlogbeatLink}).\n\ - 1. Download the Winlogbeat Windows zip file from the [Download]({opensearchLink}) page.\n\ - 2. Extract the contents of the zip file into {folderPath}.\n\ - 3. Rename the {directoryName} directory to `Winlogbeat`.\n\ - 4. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select \ -**Run As Administrator**). If you are running Windows XP, you might need to download and install PowerShell.\n\ - 5. From the PowerShell prompt, run the following commands to install Winlogbeat as a Windows service.', - values: { - directoryName: '`winlogbeat-{config.opensearchDashboards.version}-windows`', - folderPath: '`C:\\Program Files`', - winlogbeatLink: - '{config.docs.beats.winlogbeat}/winlogbeat-installation-configuration.html', - opensearchLink: 'https://opensearch.org/downloads/beats/winlogbeat', - }, - } - ), - commands: ['cd "C:\\Program Files\\Winlogbeat"', '.\\install-service-winlogbeat.ps1'], - textPost: i18n.translate( - 'home.tutorials.common.winlogbeatInstructions.install.windowsTextPost', - { - defaultMessage: - 'Modify the settings under `output.opensearch` in the {path} file to point to your opensearch installation.', - values: { path: '`C:\\Program Files\\Winlogbeat\\winlogbeat.yml`' }, - } - ), - }, - }, - START: { - WINDOWS: { - title: i18n.translate('home.tutorials.common.winlogbeatInstructions.start.windowsTitle', { - defaultMessage: 'Start Winlogbeat', - }), - textPre: i18n.translate('home.tutorials.common.winlogbeatInstructions.start.windowsTextPre', { - defaultMessage: - 'The `setup` command loads the OpenSearch Dashboards dashboards. If the dashboards are already set up, omit this command.', - }), - commands: ['.\\winlogbeat.exe setup', 'Start-Service winlogbeat'], - }, - }, - CONFIG: { - WINDOWS: { - title: i18n.translate('home.tutorials.common.winlogbeatInstructions.config.windowsTitle', { - defaultMessage: 'Edit the configuration', - }), - textPre: i18n.translate( - 'home.tutorials.common.winlogbeatInstructions.config.windowsTextPre', - { - defaultMessage: 'Modify {path} to set the connection information:', - values: { - path: '`C:\\Program Files\\Winlogbeat\\winlogbeat.yml`', - }, - } - ), - commands: [ - 'output.opensearch:', - ' hosts: [""]', - ' username: "opensearch"', - ' password: ""', - 'setup.opensearchDashboards:', - ' host: ""', - getSpaceIdForBeatsTutorial(context), - ], - textPost: i18n.translate( - 'home.tutorials.common.winlogbeatInstructions.config.windowsTextPost', - { - defaultMessage: - 'Where {passwordTemplate} is the password of the `opensearch` user, {opensearchUrlTemplate} is the URL of opensearch, \ -and {opensearchDashboardsUrlTemplate} is the URL of OpenSearch Dashboards.', - values: { - passwordTemplate: '``', - opensearchUrlTemplate: '``', - opensearchDashboardsUrlTemplate: '``', - }, - } - ), - }, - }, -}); - -export function winlogbeatStatusCheck() { - return { - title: i18n.translate('home.tutorials.common.winlogbeatStatusCheck.title', { - defaultMessage: 'Module status', - }), - text: i18n.translate('home.tutorials.common.winlogbeatStatusCheck.text', { - defaultMessage: 'Check that data is received from Winlogbeat', - }), - btnLabel: i18n.translate('home.tutorials.common.winlogbeatStatusCheck.buttonLabel', { - defaultMessage: 'Check data', - }), - success: i18n.translate('home.tutorials.common.winlogbeatStatusCheck.successText', { - defaultMessage: 'Data successfully received', - }), - error: i18n.translate('home.tutorials.common.winlogbeatStatusCheck.errorText', { - defaultMessage: 'No data has been received yet', - }), - opensearchHitsCheck: { - index: 'winlogbeat-*', - query: { - bool: { - filter: { - term: { - 'agent.type': 'winlogbeat', - }, - }, - }, - }, - }, - }; -} - -export function onPremInstructions(context?: TutorialContext) { - const WINLOGBEAT_INSTRUCTIONS = createWinlogbeatInstructions(context); - - return { - instructionSets: [ - { - title: i18n.translate( - 'home.tutorials.common.winlogbeat.premInstructions.gettingStarted.title', - { - defaultMessage: 'Getting Started', - } - ), - instructionVariants: [ - { - id: INSTRUCTION_VARIANT.WINDOWS, - instructions: [ - WINLOGBEAT_INSTRUCTIONS.INSTALL.WINDOWS, - WINLOGBEAT_INSTRUCTIONS.CONFIG.WINDOWS, - WINLOGBEAT_INSTRUCTIONS.START.WINDOWS, - ], - }, - ], - statusCheck: winlogbeatStatusCheck(), - }, - ], - }; -} diff --git a/src/plugins/home/server/tutorials/iptables_logs/index.ts b/src/plugins/home/server/tutorials/iptables_logs/index.ts deleted file mode 100644 index 8eadda84411f..000000000000 --- a/src/plugins/home/server/tutorials/iptables_logs/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function iptablesLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'iptables'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'iptablesLogs', - name: i18n.translate('home.tutorials.iptablesLogs.nameTitle', { - defaultMessage: 'Iptables logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.iptablesLogs.shortDescription', { - defaultMessage: 'Collect iptables and ip6tables logs.', - }), - longDescription: i18n.translate('home.tutorials.iptablesLogs.longDescription', { - defaultMessage: - 'This is a module for iptables and ip6tables logs. It parses logs received \ - over the network via syslog or from a file. Also, it understands the prefix \ - added by some Ubiquiti firewalls, which includes the rule set name, rule \ - number and the action performed on the traffic (allow/deny). \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-iptables.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/linux.svg', - artifacts: { - dashboards: [ - { - id: 'ceefb9e0-1f51-11e9-93ed-f7e068f4aebb-ecs', - linkLabel: i18n.translate('home.tutorials.iptablesLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Iptables Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-iptables.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/juniper_logs/index.ts b/src/plugins/home/server/tutorials/juniper_logs/index.ts deleted file mode 100644 index 8c0b2a0a73b9..000000000000 --- a/src/plugins/home/server/tutorials/juniper_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function juniperLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'juniper'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'juniperLogs', - name: i18n.translate('home.tutorials.juniperLogs.nameTitle', { - defaultMessage: 'Juniper Logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.juniperLogs.shortDescription', { - defaultMessage: 'Collect Juniper JUNOS logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.juniperLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Juniper JUNOS logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-juniper.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/juniper.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.juniperLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-juniper.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/kafka_logs/index.ts b/src/plugins/home/server/tutorials/kafka_logs/index.ts deleted file mode 100644 index fb5a71c7d172..000000000000 --- a/src/plugins/home/server/tutorials/kafka_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function kafkaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'kafka'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'kafkaLogs', - name: i18n.translate('home.tutorials.kafkaLogs.nameTitle', { - defaultMessage: 'Kafka logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.kafkaLogs.shortDescription', { - defaultMessage: 'Collect and parse logs created by Kafka.', - }), - longDescription: i18n.translate('home.tutorials.kafkaLogs.longDescription', { - defaultMessage: - 'The `kafka` Filebeat module parses logs created by Kafka. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-kafka.html', - }, - }), - euiIconType: 'logoKafka', - artifacts: { - dashboards: [ - { - id: '943caca0-87ee-11e7-ad9c-db80de0bf8d3-ecs', - linkLabel: i18n.translate('home.tutorials.kafkaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Kafka logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-kafka.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/kafka_metrics/index.ts b/src/plugins/home/server/tutorials/kafka_metrics/index.ts deleted file mode 100644 index f9c8cc3a9b71..000000000000 --- a/src/plugins/home/server/tutorials/kafka_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function kafkaMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'kafka'; - return { - id: 'kafkaMetrics', - name: i18n.translate('home.tutorials.kafkaMetrics.nameTitle', { - defaultMessage: 'Kafka metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.kafkaMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Kafka server.', - }), - longDescription: i18n.translate('home.tutorials.kafkaMetrics.longDescription', { - defaultMessage: - 'The `kafka` Metricbeat module fetches internal metrics from Kafka. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-kafka.html', - }, - }), - euiIconType: 'logoKafka', - artifacts: { - application: { - label: i18n.translate('home.tutorials.kafkaMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-kafka.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/kubernetes_metrics/index.ts b/src/plugins/home/server/tutorials/kubernetes_metrics/index.ts deleted file mode 100644 index afb884a40bdf..000000000000 --- a/src/plugins/home/server/tutorials/kubernetes_metrics/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function kubernetesMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'kubernetes'; - return { - id: 'kubernetesMetrics', - name: i18n.translate('home.tutorials.kubernetesMetrics.nameTitle', { - defaultMessage: 'Kubernetes metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.kubernetesMetrics.shortDescription', { - defaultMessage: 'Fetch metrics from your Kubernetes installation.', - }), - longDescription: i18n.translate('home.tutorials.kubernetesMetrics.longDescription', { - defaultMessage: - 'The `kubernetes` Metricbeat module fetches metrics from the Kubernetes APIs. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-kubernetes.html', - }, - }), - euiIconType: 'logoKubernetes', - artifacts: { - dashboards: [ - { - id: 'AV4RGUqo5NkDleZmzKuZ-ecs', - linkLabel: i18n.translate( - 'home.tutorials.kubernetesMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'Kubernetes metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-kubernetes.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/logstash_logs/index.ts b/src/plugins/home/server/tutorials/logstash_logs/index.ts deleted file mode 100644 index e6124122b4b5..000000000000 --- a/src/plugins/home/server/tutorials/logstash_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function logstashLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'logstash'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'logstashLogs', - name: i18n.translate('home.tutorials.logstashLogs.nameTitle', { - defaultMessage: 'Logstash logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.logstashLogs.shortDescription', { - defaultMessage: 'Collect Logstash main and slow logs.', - }), - longDescription: i18n.translate('home.tutorials.logstashLogs.longDescription', { - defaultMessage: - 'The modules parse Logstash regular logs and the slow log, it will support the plain text format and the JSON format. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-logstash.html', - }, - }), - euiIconType: 'logoLogstash', - artifacts: { - dashboards: [ - { - id: 'Filebeat-Logstash-Log-Dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.logstashLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Logstash Logs', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-logstash.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/logstash_metrics/index.ts b/src/plugins/home/server/tutorials/logstash_metrics/index.ts deleted file mode 100644 index 1a0f11ada0d3..000000000000 --- a/src/plugins/home/server/tutorials/logstash_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function logstashMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'logstash'; - return { - id: moduleName + 'Metrics', - name: i18n.translate('home.tutorials.logstashMetrics.nameTitle', { - defaultMessage: 'Logstash metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.logstashMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from a Logstash server.', - }), - longDescription: i18n.translate('home.tutorials.logstashMetrics.longDescription', { - defaultMessage: - 'The `{moduleName}` Metricbeat module fetches internal metrics from a Logstash server. \ -[Learn more]({learnMoreLink}).', - values: { - moduleName, - learnMoreLink: `{config.docs.beats.metricbeat}/metricbeat-module-${moduleName}.html`, - }, - }), - euiIconType: 'logoLogstash', - artifacts: { - application: { - label: i18n.translate('home.tutorials.logstashMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-' + moduleName + '.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/memcached_metrics/index.ts b/src/plugins/home/server/tutorials/memcached_metrics/index.ts deleted file mode 100644 index ad4dc9f7eb63..000000000000 --- a/src/plugins/home/server/tutorials/memcached_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function memcachedMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'memcached'; - return { - id: 'memcachedMetrics', - name: i18n.translate('home.tutorials.memcachedMetrics.nameTitle', { - defaultMessage: 'Memcached metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.memcachedMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Memcached server.', - }), - longDescription: i18n.translate('home.tutorials.memcachedMetrics.longDescription', { - defaultMessage: - 'The `memcached` Metricbeat module fetches internal metrics from Memcached. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-memcached.html', - }, - }), - euiIconType: 'logoMemcached', - artifacts: { - application: { - label: i18n.translate('home.tutorials.memcachedMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-memcached.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/microsoft_logs/index.ts b/src/plugins/home/server/tutorials/microsoft_logs/index.ts deleted file mode 100644 index 8f8c391ff445..000000000000 --- a/src/plugins/home/server/tutorials/microsoft_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function microsoftLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'microsoft'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'microsoftLogs', - name: i18n.translate('home.tutorials.microsoftLogs.nameTitle', { - defaultMessage: 'Microsoft Defender ATP logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.microsoftLogs.shortDescription', { - defaultMessage: 'Collect Microsoft Defender ATP alerts.', - }), - longDescription: i18n.translate('home.tutorials.microsoftLogs.longDescription', { - defaultMessage: - 'Collect Microsoft Defender ATP alerts for use with OpenSearch Security. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-microsoft.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/microsoft.svg', - artifacts: { - dashboards: [ - { - id: '65402c30-ca6a-11ea-9d4d-9737a63aaa55', - linkLabel: i18n.translate('home.tutorials.microsoftLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Microsoft ATP Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-microsoft.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/misp_logs/index.ts b/src/plugins/home/server/tutorials/misp_logs/index.ts deleted file mode 100644 index 55e73c17a725..000000000000 --- a/src/plugins/home/server/tutorials/misp_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mispLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'misp'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'mispLogs', - name: i18n.translate('home.tutorials.mispLogs.nameTitle', { - defaultMessage: 'MISP threat intel logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.mispLogs.shortDescription', { - defaultMessage: 'Collect MISP threat intelligence data with Filebeat.', - }), - longDescription: i18n.translate('home.tutorials.mispLogs.longDescription', { - defaultMessage: - 'This is a filebeat module for reading threat intel information from the MISP platform ( https://www.circl.lu/doc/misp/). It uses the httpjson input to access the MISP REST API interface. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-misp.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/misp.svg', - artifacts: { - dashboards: [ - { - id: 'c6cac9e0-f105-11e9-9a88-690b10c8ee99', - linkLabel: i18n.translate('home.tutorials.mispLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'MISP Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-misp.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mongodb_logs/index.ts b/src/plugins/home/server/tutorials/mongodb_logs/index.ts deleted file mode 100644 index 3d5c31e5b4b5..000000000000 --- a/src/plugins/home/server/tutorials/mongodb_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mongodbLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mongodb'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'mongodbLogs', - name: i18n.translate('home.tutorials.mongodbLogs.nameTitle', { - defaultMessage: 'MongoDB logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.mongodbLogs.shortDescription', { - defaultMessage: 'Collect MongoDB logs.', - }), - longDescription: i18n.translate('home.tutorials.mongodbLogs.longDescription', { - defaultMessage: - 'The module collects and parses logs created by [MongoDB](https://www.mongodb.com/). \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-mongodb.html', - }, - }), - euiIconType: 'logoMongodb', - artifacts: { - dashboards: [ - { - id: 'abcf35b0-0a82-11e8-bffe-ff7d4f68cf94-ecs', - linkLabel: i18n.translate('home.tutorials.mongodbLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'MongoDB Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-mongodb.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mongodb_metrics/index.ts b/src/plugins/home/server/tutorials/mongodb_metrics/index.ts deleted file mode 100644 index d37ea911cb7e..000000000000 --- a/src/plugins/home/server/tutorials/mongodb_metrics/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mongodbMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mongodb'; - return { - id: 'mongodbMetrics', - name: i18n.translate('home.tutorials.mongodbMetrics.nameTitle', { - defaultMessage: 'MongoDB metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.mongodbMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from MongoDB.', - }), - longDescription: i18n.translate('home.tutorials.mongodbMetrics.longDescription', { - defaultMessage: - 'The `mongodb` Metricbeat module fetches internal metrics from the MongoDB server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-mongodb.html', - }, - }), - euiIconType: 'logoMongodb', - artifacts: { - dashboards: [ - { - id: 'Metricbeat-MongoDB-ecs', - linkLabel: i18n.translate( - 'home.tutorials.mongodbMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'MongoDB metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-mongodb.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mssql_logs/index.ts b/src/plugins/home/server/tutorials/mssql_logs/index.ts deleted file mode 100644 index 891a8fb6764b..000000000000 --- a/src/plugins/home/server/tutorials/mssql_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mssqlLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mssql'; - const platforms = ['DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'mssqlLogs', - name: i18n.translate('home.tutorials.mssqlLogs.nameTitle', { - defaultMessage: 'MSSQL logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.mssqlLogs.shortDescription', { - defaultMessage: 'Collect MSSQL logs.', - }), - longDescription: i18n.translate('home.tutorials.mssqlLogs.longDescription', { - defaultMessage: - 'The module parses error logs created by MSSQL. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-mssql.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/microsoft.svg', - artifacts: { - dashboards: [], - application: { - label: i18n.translate('home.tutorials.mssqlLogs.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-mssql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mssql_metrics/index.ts b/src/plugins/home/server/tutorials/mssql_metrics/index.ts deleted file mode 100644 index 4709cc765ab3..000000000000 --- a/src/plugins/home/server/tutorials/mssql_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mssqlMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mssql'; - return { - id: 'mssqlMetrics', - name: i18n.translate('home.tutorials.mssqlMetrics.nameTitle', { - defaultMessage: 'Microsoft SQL Server Metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.mssqlMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from a Microsoft SQL Server instance', - }), - longDescription: i18n.translate('home.tutorials.mssqlMetrics.longDescription', { - defaultMessage: - 'The `mssql` Metricbeat module fetches monitoring, log and performance metrics from a Microsoft SQL Server instance. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-mssql.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/mssql.svg', - isBeta: false, - artifacts: { - dashboards: [ - { - id: 'a2ead240-18bb-11e9-9836-f37dedd3b411-ecs', - linkLabel: i18n.translate('home.tutorials.mssqlMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Microsoft SQL Server metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-mssql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/munin_metrics/index.ts b/src/plugins/home/server/tutorials/munin_metrics/index.ts deleted file mode 100644 index e46941abf2f3..000000000000 --- a/src/plugins/home/server/tutorials/munin_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function muninMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'munin'; - return { - id: 'muninMetrics', - name: i18n.translate('home.tutorials.muninMetrics.nameTitle', { - defaultMessage: 'Munin metrics', - }), - moduleName, - euiIconType: '/plugins/home/assets/tutorials/logos/munin.svg', - isBeta: true, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.muninMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Munin server.', - }), - longDescription: i18n.translate('home.tutorials.muninMetrics.longDescription', { - defaultMessage: - 'The `munin` Metricbeat module fetches internal metrics from Munin. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-munin.html', - }, - }), - artifacts: { - application: { - label: i18n.translate('home.tutorials.muninMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-munin.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mysql_logs/index.ts b/src/plugins/home/server/tutorials/mysql_logs/index.ts deleted file mode 100644 index b0f5ab1af118..000000000000 --- a/src/plugins/home/server/tutorials/mysql_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mysqlLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mysql'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'mysqlLogs', - name: i18n.translate('home.tutorials.mysqlLogs.nameTitle', { - defaultMessage: 'MySQL logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.mysqlLogs.shortDescription', { - defaultMessage: 'Collect and parse error and slow logs created by MySQL.', - }), - longDescription: i18n.translate('home.tutorials.mysqlLogs.longDescription', { - defaultMessage: - 'The `mysql` Filebeat module parses error and slow logs created by MySQL. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-mysql.html', - }, - }), - euiIconType: 'logoMySQL', - artifacts: { - dashboards: [ - { - id: 'Filebeat-MySQL-Dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.mysqlLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'MySQL logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-mysql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/mysql_metrics/index.ts b/src/plugins/home/server/tutorials/mysql_metrics/index.ts deleted file mode 100644 index 1a4e958cd422..000000000000 --- a/src/plugins/home/server/tutorials/mysql_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function mysqlMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'mysql'; - return { - id: 'mysqlMetrics', - name: i18n.translate('home.tutorials.mysqlMetrics.nameTitle', { - defaultMessage: 'MySQL metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.mysqlMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from MySQL.', - }), - longDescription: i18n.translate('home.tutorials.mysqlMetrics.longDescription', { - defaultMessage: - 'The `mysql` Metricbeat module fetches internal metrics from the MySQL server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-mysql.html', - }, - }), - euiIconType: 'logoMySQL', - artifacts: { - dashboards: [ - { - id: '66881e90-0006-11e7-bf7f-c9acc3d3e306-ecs', - linkLabel: i18n.translate('home.tutorials.mysqlMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'MySQL metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-mysql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/nats_logs/index.ts b/src/plugins/home/server/tutorials/nats_logs/index.ts deleted file mode 100644 index 16294ff657ba..000000000000 --- a/src/plugins/home/server/tutorials/nats_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function natsLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'nats'; - const platforms = ['DEB', 'RPM'] as const; - return { - id: 'natsLogs', - name: i18n.translate('home.tutorials.natsLogs.nameTitle', { - defaultMessage: 'NATS logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - isBeta: true, - shortDescription: i18n.translate('home.tutorials.natsLogs.shortDescription', { - defaultMessage: 'Collect and parse logs created by Nats.', - }), - longDescription: i18n.translate('home.tutorials.natsLogs.longDescription', { - defaultMessage: - 'The `nats` Filebeat module parses logs created by Nats. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-nats.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/nats.svg', - artifacts: { - dashboards: [ - { - id: 'Filebeat-nats-overview-ecs', - linkLabel: i18n.translate('home.tutorials.natsLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'NATS logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-nats.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/nats_metrics/index.ts b/src/plugins/home/server/tutorials/nats_metrics/index.ts deleted file mode 100644 index 8f3fcac03259..000000000000 --- a/src/plugins/home/server/tutorials/nats_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function natsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'nats'; - return { - id: 'natsMetrics', - name: i18n.translate('home.tutorials.natsMetrics.nameTitle', { - defaultMessage: 'NATS metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.natsMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the Nats server.', - }), - longDescription: i18n.translate('home.tutorials.natsMetrics.longDescription', { - defaultMessage: - 'The `nats` Metricbeat module fetches monitoring metrics from Nats. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-nats.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/nats.svg', - artifacts: { - dashboards: [ - { - id: 'Metricbeat-Nats-Dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.natsMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'NATS metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-nats.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/netflow_logs/index.ts b/src/plugins/home/server/tutorials/netflow_logs/index.ts deleted file mode 100644 index d49ce65aeedc..000000000000 --- a/src/plugins/home/server/tutorials/netflow_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function netflowLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'netflow'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'netflowLogs', - name: i18n.translate('home.tutorials.netflowLogs.nameTitle', { - defaultMessage: 'NetFlow / IPFIX Collector', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.netflowLogs.shortDescription', { - defaultMessage: 'Collect NetFlow and IPFIX flow records.', - }), - longDescription: i18n.translate('home.tutorials.netflowLogs.longDescription', { - defaultMessage: - 'This is a module for receiving NetFlow and IPFIX flow records over UDP. This input supports NetFlow versions 1, 5, 6, 7, 8 and 9, as well as IPFIX. For NetFlow versions older than 9, fields are mapped automatically to NetFlow v9. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-netflow.html', - }, - }), - euiIconType: 'logoBeats', - artifacts: { - dashboards: [ - { - id: '34e26884-161a-4448-9556-43b5bf2f62a2', - linkLabel: i18n.translate('home.tutorials.netflowLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Netflow Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-netflow.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/netscout_logs/index.ts b/src/plugins/home/server/tutorials/netscout_logs/index.ts deleted file mode 100644 index 8315ea87506b..000000000000 --- a/src/plugins/home/server/tutorials/netscout_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function netscoutLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'netscout'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'netscoutLogs', - name: i18n.translate('home.tutorials.netscoutLogs.nameTitle', { - defaultMessage: 'Arbor Peakflow logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.netscoutLogs.shortDescription', { - defaultMessage: 'Collect Netscout Arbor Peakflow SP logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.netscoutLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Arbor Peakflow SP logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-netscout.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/netscout.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.netscoutLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-netscout.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/nginx_logs/index.ts b/src/plugins/home/server/tutorials/nginx_logs/index.ts deleted file mode 100644 index d1c7e08a7fc8..000000000000 --- a/src/plugins/home/server/tutorials/nginx_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function nginxLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'nginx'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'nginxLogs', - name: i18n.translate('home.tutorials.nginxLogs.nameTitle', { - defaultMessage: 'Nginx logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.nginxLogs.shortDescription', { - defaultMessage: 'Collect and parse access and error logs created by the Nginx HTTP server.', - }), - longDescription: i18n.translate('home.tutorials.nginxLogs.longDescription', { - defaultMessage: - 'The `nginx` Filebeat module parses access and error logs created by the Nginx HTTP server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-nginx.html', - }, - }), - euiIconType: 'logoNginx', - artifacts: { - dashboards: [ - { - id: '55a9e6e0-a29e-11e7-928f-5dbe6f6f5519-ecs', - linkLabel: i18n.translate('home.tutorials.nginxLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Nginx logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-nginx.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/nginx_metrics/index.ts b/src/plugins/home/server/tutorials/nginx_metrics/index.ts deleted file mode 100644 index c9ce79c469ae..000000000000 --- a/src/plugins/home/server/tutorials/nginx_metrics/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function nginxMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'nginx'; - return { - id: 'nginxMetrics', - name: i18n.translate('home.tutorials.nginxMetrics.nameTitle', { - defaultMessage: 'Nginx metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.nginxMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the Nginx HTTP server.', - }), - longDescription: i18n.translate('home.tutorials.nginxMetrics.longDescription', { - defaultMessage: - 'The `nginx` Metricbeat module fetches internal metrics from the Nginx HTTP server. \ -The module scrapes the server status data from the web page generated by the \ -{statusModuleLink}, \ -which must be enabled in your Nginx installation. \ -[Learn more]({learnMoreLink}).', - values: { - statusModuleLink: - '[ngx_http_stub_status_module](http://nginx.org/en/docs/http/ngx_http_stub_status_module.html)', - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-nginx.html', - }, - }), - euiIconType: 'logoNginx', - artifacts: { - dashboards: [ - { - id: '023d2930-f1a5-11e7-a9ef-93c69af7b129-ecs', - linkLabel: i18n.translate('home.tutorials.nginxMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Nginx metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-nginx.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/o365_logs/index.ts b/src/plugins/home/server/tutorials/o365_logs/index.ts deleted file mode 100644 index a9c67b2049af..000000000000 --- a/src/plugins/home/server/tutorials/o365_logs/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function o365LogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'o365'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'o365Logs', - name: i18n.translate('home.tutorials.o365Logs.nameTitle', { - defaultMessage: 'Office 365 logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.o365Logs.shortDescription', { - defaultMessage: 'Collect Office 365 activity logs via the Office 365 API.', - }), - longDescription: i18n.translate('home.tutorials.o365Logs.longDescription', { - defaultMessage: - 'This is a module for Office 365 logs received via one of the Office 365 \ - API endpoints. It currently supports user, admin, system, and policy \ - actions and events from Office 365 and Azure AD activity logs exposed \ - by the Office 365 Management Activity API. \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-o365.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/o365.svg', - artifacts: { - dashboards: [ - { - id: '712e2c00-685d-11ea-8d6a-292ef5d68366', - linkLabel: i18n.translate('home.tutorials.o365Logs.artifacts.dashboards.linkLabel', { - defaultMessage: 'O365 Audit Dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-o365.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/okta_logs/index.ts b/src/plugins/home/server/tutorials/okta_logs/index.ts deleted file mode 100644 index 9ce6bc0802a8..000000000000 --- a/src/plugins/home/server/tutorials/okta_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function oktaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'okta'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'oktaLogs', - name: i18n.translate('home.tutorials.oktaLogs.nameTitle', { - defaultMessage: 'Okta logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.oktaLogs.shortDescription', { - defaultMessage: 'Collect the Okta system log via the Okta API.', - }), - longDescription: i18n.translate('home.tutorials.oktaLogs.longDescription', { - defaultMessage: - 'The Okta module collects events from the [Okta API](https://developer.okta.com/docs/reference/). \ - Specifically this supports reading from the [Okta System Log API](https://developer.okta.com/docs/reference/api/system-log/). \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-okta.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/okta.svg', - artifacts: { - dashboards: [ - { - id: '749203a0-67b1-11ea-a76f-bf44814e437d', - linkLabel: i18n.translate('home.tutorials.oktaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Okta Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-okta.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/openmetrics_metrics/index.ts b/src/plugins/home/server/tutorials/openmetrics_metrics/index.ts deleted file mode 100644 index d7bf0bdbd60c..000000000000 --- a/src/plugins/home/server/tutorials/openmetrics_metrics/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function openmetricsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'openmetrics'; - return { - id: 'openmetricsMetrics', - name: i18n.translate('home.tutorials.openmetricsMetrics.nameTitle', { - defaultMessage: 'OpenMetrics metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.openmetricsMetrics.shortDescription', { - defaultMessage: 'Fetch metrics from an endpoint that serves metrics in OpenMetrics format.', - }), - longDescription: i18n.translate('home.tutorials.openmetricsMetrics.longDescription', { - defaultMessage: - 'The `openmetrics` Metricbeat module fetches metrics from an endpoint that serves metrics in OpenMetrics format. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-openmetrics.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/openmetrics.svg', - artifacts: { - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-openmetrics.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/opensearch_dashboards_logs/index.ts b/src/plugins/home/server/tutorials/opensearch_dashboards_logs/index.ts deleted file mode 100644 index 7de5253c7f33..000000000000 --- a/src/plugins/home/server/tutorials/opensearch_dashboards_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function opensearchDashboardsLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'opensearchDashboards'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'opensearchDashboardsLogs', - name: i18n.translate('home.tutorials.opensearchDashboardsLogs.nameTitle', { - defaultMessage: 'OpenSearch Dashboards Logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.opensearchDashboardsLogs.shortDescription', { - defaultMessage: 'Collect OpenSearch Dashboards logs.', - }), - longDescription: i18n.translate('home.tutorials.opensearchDashboardsLogs.longDescription', { - defaultMessage: 'This is the OpenSearch Dashboards module. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-opensearch-dashboards.html', - }, - }), - euiIconType: 'inputOutput', - artifacts: { - dashboards: [], - application: { - label: i18n.translate( - 'home.tutorials.opensearchDashboardsLogs.artifacts.application.label', - { - defaultMessage: 'Discover', - } - ), - path: '/app/discover#/', - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-opensearch-dashboards.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/opensearch_dashboards_metrics/index.ts b/src/plugins/home/server/tutorials/opensearch_dashboards_metrics/index.ts deleted file mode 100644 index 7eaec9b72a99..000000000000 --- a/src/plugins/home/server/tutorials/opensearch_dashboards_metrics/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function opensearchDashboardsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'opensearchDashboards'; - return { - id: 'opensearchDashboardsMetrics', - name: i18n.translate('home.tutorials.opensearchDashboardsMetrics.nameTitle', { - defaultMessage: 'OpenSearch Dashboards metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate( - 'home.tutorials.opensearchDashboardsMetrics.shortDescription', - { - defaultMessage: 'Fetch internal metrics from OpenSearch Dashboards.', - } - ), - longDescription: i18n.translate('home.tutorials.opensearchDashboardsMetrics.longDescription', { - defaultMessage: - 'The `OpenSearch Dashboards` Metricbeat module fetches internal metrics from OpenSearch Dashboards. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: - '{config.docs.beats.metricbeat}/metricbeat-module-opensearch-dashboards.html', - }, - }), - euiIconType: 'inputOutput', - artifacts: { - application: { - label: i18n.translate( - 'home.tutorials.opensearchDashboardsMetrics.artifacts.application.label', - { - defaultMessage: 'Discover', - } - ), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: - '{config.docs.beats.metricbeat}/exported-fields-opensearch-dashboards.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/opensearch_logs/index.ts b/src/plugins/home/server/tutorials/opensearch_logs/index.ts deleted file mode 100644 index 86f8caebd0ac..000000000000 --- a/src/plugins/home/server/tutorials/opensearch_logs/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function opensearchLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'opensearch'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'opensearchLogs', - name: i18n.translate('home.tutorials.opensearchLogs.nameTitle', { - defaultMessage: 'OpenSearch logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - isBeta: true, - shortDescription: i18n.translate('home.tutorials.opensearchLogs.shortDescription', { - defaultMessage: 'Collect and parse logs created by OpenSearch.', - }), - longDescription: i18n.translate('home.tutorials.opensearchLogs.longDescription', { - defaultMessage: - 'The `OpenSearch` Filebeat module parses logs created by OpenSearch. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-opensearch.html', - }, - }), - euiIconType: '/ui/logos/opensearch_mark.svg', - artifacts: { - application: { - label: i18n.translate('home.tutorials.opensearchLogs.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-opensearch.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/opensearch_metrics/index.ts b/src/plugins/home/server/tutorials/opensearch_metrics/index.ts deleted file mode 100644 index 38694ca9d588..000000000000 --- a/src/plugins/home/server/tutorials/opensearch_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function opensearchMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'opensearch'; - return { - id: 'opensearchMetrics', - name: i18n.translate('home.tutorials.opensearchMetrics.nameTitle', { - defaultMessage: 'OpenSearch metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.opensearchMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from OpenSearch.', - }), - longDescription: i18n.translate('home.tutorials.opensearchMetrics.longDescription', { - defaultMessage: - 'The `opensearch` Metricbeat module fetches internal metrics from OpenSearch. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-opensearch.html', - }, - }), - euiIconType: '/ui/logos/opensearch_mark.svg', - artifacts: { - application: { - label: i18n.translate('home.tutorials.opensearchMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-opensearch.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/oracle_metrics/index.ts b/src/plugins/home/server/tutorials/oracle_metrics/index.ts deleted file mode 100644 index 81557d3d4d0b..000000000000 --- a/src/plugins/home/server/tutorials/oracle_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function oracleMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'oracle'; - return { - id: moduleName + 'Metrics', - name: i18n.translate('home.tutorials.oracleMetrics.nameTitle', { - defaultMessage: 'oracle metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.oracleMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from a Oracle server.', - }), - longDescription: i18n.translate('home.tutorials.oracleMetrics.longDescription', { - defaultMessage: - 'The `{moduleName}` Metricbeat module fetches internal metrics from a Oracle server. \ -[Learn more]({learnMoreLink}).', - values: { - moduleName, - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-' + moduleName + '.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/oracle.svg', - artifacts: { - application: { - label: i18n.translate('home.tutorials.oracleMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/opensearch-dashboards#/discover', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-' + moduleName + '.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/osquery_logs/index.ts b/src/plugins/home/server/tutorials/osquery_logs/index.ts deleted file mode 100644 index 1610b438013e..000000000000 --- a/src/plugins/home/server/tutorials/osquery_logs/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function osqueryLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'osquery'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'osqueryLogs', - name: i18n.translate('home.tutorials.osqueryLogs.nameTitle', { - defaultMessage: 'Osquery logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.osqueryLogs.shortDescription', { - defaultMessage: 'Collect osquery logs in JSON format.', - }), - longDescription: i18n.translate('home.tutorials.osqueryLogs.longDescription', { - defaultMessage: - 'The module collects and decodes the result logs written by \ - [osqueryd](https://osquery.readthedocs.io/en/latest/introduction/using-osqueryd/) in \ - the JSON format. To set up osqueryd follow the osquery installation instructions for \ - your operating system and configure the `filesystem` logging driver (the default). \ - Make sure UTC timestamps are enabled. \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-osquery.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/osquery.svg', - artifacts: { - dashboards: [ - { - id: '69f5ae20-eb02-11e7-8f04-51231daa5b05-ecs', - linkLabel: i18n.translate('home.tutorials.osqueryLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Osquery Compliance Pack', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-osquery.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/panw_logs/index.ts b/src/plugins/home/server/tutorials/panw_logs/index.ts deleted file mode 100644 index d633b1034327..000000000000 --- a/src/plugins/home/server/tutorials/panw_logs/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function panwLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'panw'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'panwLogs', - name: i18n.translate('home.tutorials.panwLogs.nameTitle', { - defaultMessage: 'Palo Alto Networks PAN-OS logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.panwLogs.shortDescription', { - defaultMessage: - 'Collect Palo Alto Networks PAN-OS threat and traffic logs over syslog or from a log file.', - }), - longDescription: i18n.translate('home.tutorials.panwLogs.longDescription', { - defaultMessage: - 'This is a module for Palo Alto Networks PAN-OS firewall monitoring \ - logs received over Syslog or read from a file. It currently supports \ - messages of Traffic and Threat types. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-panw.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/paloalto.svg', - artifacts: { - dashboards: [ - { - id: 'e40ba240-7572-11e9-976e-65a8f47cc4c1', - linkLabel: i18n.translate('home.tutorials.panwLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'PANW Network Flows', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-panw.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/php_fpm_metrics/index.ts b/src/plugins/home/server/tutorials/php_fpm_metrics/index.ts deleted file mode 100644 index 2089e5d8154f..000000000000 --- a/src/plugins/home/server/tutorials/php_fpm_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function phpfpmMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'php_fpm'; - return { - id: 'phpfpmMetrics', - name: i18n.translate('home.tutorials.phpFpmMetrics.nameTitle', { - defaultMessage: 'PHP-FPM metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - isBeta: false, - shortDescription: i18n.translate('home.tutorials.phpFpmMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from PHP-FPM.', - }), - longDescription: i18n.translate('home.tutorials.phpFpmMetrics.longDescription', { - defaultMessage: - 'The `php_fpm` Metricbeat module fetches internal metrics from the PHP-FPM server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-php_fpm.html', - }, - }), - euiIconType: 'logoPhp', - artifacts: { - dashboards: [ - /* { - id: 'TODO', - linkLabel: 'PHP-FPM metrics dashboard', - isOverview: true - }*/ - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-php_fpm.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/postgresql_logs/index.ts b/src/plugins/home/server/tutorials/postgresql_logs/index.ts deleted file mode 100644 index ebd4eb988700..000000000000 --- a/src/plugins/home/server/tutorials/postgresql_logs/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function postgresqlLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'postgresql'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'postgresqlLogs', - name: i18n.translate('home.tutorials.postgresqlLogs.nameTitle', { - defaultMessage: 'PostgreSQL logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.postgresqlLogs.shortDescription', { - defaultMessage: 'Collect and parse error and slow logs created by PostgreSQL.', - }), - longDescription: i18n.translate('home.tutorials.postgresqlLogs.longDescription', { - defaultMessage: - 'The `postgresql` Filebeat module parses error and slow logs created by PostgreSQL. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-postgresql.html', - }, - }), - euiIconType: 'logoPostgres', - artifacts: { - dashboards: [ - { - id: '158be870-87f4-11e7-ad9c-db80de0bf8d3-ecs', - linkLabel: i18n.translate( - 'home.tutorials.postgresqlLogs.artifacts.dashboards.linkLabel', - { - defaultMessage: 'PostgreSQL logs dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-postgresql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/postgresql_metrics/index.ts b/src/plugins/home/server/tutorials/postgresql_metrics/index.ts deleted file mode 100644 index dd4464084636..000000000000 --- a/src/plugins/home/server/tutorials/postgresql_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function postgresqlMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'postgresql'; - return { - id: 'postgresqlMetrics', - name: i18n.translate('home.tutorials.postgresqlMetrics.nameTitle', { - defaultMessage: 'PostgreSQL metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - isBeta: false, - shortDescription: i18n.translate('home.tutorials.postgresqlMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from PostgreSQL.', - }), - longDescription: i18n.translate('home.tutorials.postgresqlMetrics.longDescription', { - defaultMessage: - 'The `postgresql` Metricbeat module fetches internal metrics from the PostgreSQL server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-postgresql.html', - }, - }), - euiIconType: 'logoPostgres', - artifacts: { - dashboards: [ - /* - { - id: 'TODO', - linkLabel: 'PostgreSQL metrics dashboard', - isOverview: true - } - */ - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-postgresql.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/prometheus_metrics/index.ts b/src/plugins/home/server/tutorials/prometheus_metrics/index.ts deleted file mode 100644 index 14e0cf53f3ff..000000000000 --- a/src/plugins/home/server/tutorials/prometheus_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function prometheusMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'prometheus'; - return { - id: moduleName + 'Metrics', - name: i18n.translate('home.tutorials.prometheusMetrics.nameTitle', { - defaultMessage: 'Prometheus metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.prometheusMetrics.shortDescription', { - defaultMessage: 'Fetch metrics from a Prometheus exporter.', - }), - longDescription: i18n.translate('home.tutorials.prometheusMetrics.longDescription', { - defaultMessage: - 'The `{moduleName}` Metricbeat module fetches metrics from Prometheus endpoint. \ -[Learn more]({learnMoreLink}).', - values: { - moduleName, - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-' + moduleName + '.html', - }, - }), - euiIconType: 'logoPrometheus', - artifacts: { - application: { - label: i18n.translate('home.tutorials.prometheusMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-' + moduleName + '.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/rabbitmq_logs/index.ts b/src/plugins/home/server/tutorials/rabbitmq_logs/index.ts deleted file mode 100644 index 62c0396f1640..000000000000 --- a/src/plugins/home/server/tutorials/rabbitmq_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function rabbitmqLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'rabbitmq'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'rabbitmqLogs', - name: i18n.translate('home.tutorials.rabbitmqLogs.nameTitle', { - defaultMessage: 'RabbitMQ logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.rabbitmqLogs.shortDescription', { - defaultMessage: 'Collect RabbitMQ logs.', - }), - longDescription: i18n.translate('home.tutorials.rabbitmqLogs.longDescription', { - defaultMessage: - 'This is the module for parsing [RabbitMQ log files](https://www.rabbitmq.com/logging.html) \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-rabbitmq.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/rabbitmq.svg', - artifacts: { - dashboards: [], - application: { - label: i18n.translate('home.tutorials.rabbitmqLogs.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-rabbitmq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/rabbitmq_metrics/index.ts b/src/plugins/home/server/tutorials/rabbitmq_metrics/index.ts deleted file mode 100644 index 50cae7495f67..000000000000 --- a/src/plugins/home/server/tutorials/rabbitmq_metrics/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function rabbitmqMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'rabbitmq'; - return { - id: 'rabbitmqMetrics', - name: i18n.translate('home.tutorials.rabbitmqMetrics.nameTitle', { - defaultMessage: 'RabbitMQ metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.rabbitmqMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the RabbitMQ server.', - }), - longDescription: i18n.translate('home.tutorials.rabbitmqMetrics.longDescription', { - defaultMessage: - 'The `rabbitmq` Metricbeat module fetches internal metrics from the RabbitMQ server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-rabbitmq.html', - }, - }), - euiIconType: 'logoRabbitmq', - isBeta: false, - artifacts: { - dashboards: [ - { - id: 'AV4YobKIge1VCbKU_qVo-ecs', - linkLabel: i18n.translate( - 'home.tutorials.rabbitmqMetrics.artifacts.dashboards.linkLabel', - { - defaultMessage: 'RabbitMQ metrics dashboard', - } - ), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-rabbitmq.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/radware_logs/index.ts b/src/plugins/home/server/tutorials/radware_logs/index.ts deleted file mode 100644 index 942793817e9d..000000000000 --- a/src/plugins/home/server/tutorials/radware_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function radwareLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'radware'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'radwareLogs', - name: i18n.translate('home.tutorials.radwareLogs.nameTitle', { - defaultMessage: 'Radware DefensePro logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.radwareLogs.shortDescription', { - defaultMessage: 'Collect Radware DefensePro logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.radwareLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Radware DefensePro logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-radware.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/radware.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.radwareLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-radware.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/redis_logs/index.ts b/src/plugins/home/server/tutorials/redis_logs/index.ts deleted file mode 100644 index 1a73c8c9a5e1..000000000000 --- a/src/plugins/home/server/tutorials/redis_logs/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function redisLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'redis'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'redisLogs', - name: i18n.translate('home.tutorials.redisLogs.nameTitle', { - defaultMessage: 'Redis logs', - }), - moduleName, - category: TutorialsCategory.LOGGING, - shortDescription: i18n.translate('home.tutorials.redisLogs.shortDescription', { - defaultMessage: 'Collect and parse error and slow logs created by Redis.', - }), - longDescription: i18n.translate('home.tutorials.redisLogs.longDescription', { - defaultMessage: - 'The `redis` Filebeat module parses error and slow logs created by Redis. \ -For Redis to write error logs, make sure the `logfile` option, from the \ -Redis configuration file, is set to `redis-server.log`. \ -The slow logs are read directly from Redis via the `SLOWLOG` command. \ -For Redis to record slow logs, make sure the `slowlog-log-slower-than` \ -option is set. \ -Note that the `slowlog` fileset is experimental. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-redis.html', - }, - }), - euiIconType: 'logoRedis', - artifacts: { - dashboards: [ - { - id: '7fea2930-478e-11e7-b1f0-cb29bac6bf8b-ecs', - linkLabel: i18n.translate('home.tutorials.redisLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Redis logs dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-redis.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/redis_metrics/index.ts b/src/plugins/home/server/tutorials/redis_metrics/index.ts deleted file mode 100644 index d6d63dfc4787..000000000000 --- a/src/plugins/home/server/tutorials/redis_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function redisMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'redis'; - return { - id: 'redisMetrics', - name: i18n.translate('home.tutorials.redisMetrics.nameTitle', { - defaultMessage: 'Redis metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.redisMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from Redis.', - }), - longDescription: i18n.translate('home.tutorials.redisMetrics.longDescription', { - defaultMessage: - 'The `redis` Metricbeat module fetches internal metrics from the Redis server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-redis.html', - }, - }), - euiIconType: 'logoRedis', - artifacts: { - dashboards: [ - { - id: 'AV4YjZ5pux-M-tCAunxK-ecs', - linkLabel: i18n.translate('home.tutorials.redisMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Redis metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-redis.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/redisenterprise_metrics/index.ts b/src/plugins/home/server/tutorials/redisenterprise_metrics/index.ts deleted file mode 100644 index ef0d922d63f1..000000000000 --- a/src/plugins/home/server/tutorials/redisenterprise_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function redisenterpriseMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'redisenterprise'; - return { - id: 'redisenterpriseMetrics', - name: i18n.translate('home.tutorials.redisenterpriseMetrics.nameTitle', { - defaultMessage: 'Redis Enterprise metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.redisenterpriseMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from Redis Enterprise Server.', - }), - longDescription: i18n.translate('home.tutorials.redisenterpriseMetrics.longDescription', { - defaultMessage: - 'The `redisenterprise` Metricbeat module fetches monitoring metrics from Redis Enterprise Server \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-redisenterprise.html', - }, - }), - euiIconType: 'logoRedis', - isBeta: true, - artifacts: { - application: { - label: i18n.translate('home.tutorials.redisenterpriseMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-redisenterprise.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/register.ts b/src/plugins/home/server/tutorials/register.ts deleted file mode 100644 index 0f6b045b2c38..000000000000 --- a/src/plugins/home/server/tutorials/register.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { activemqLogsSpecProvider } from './activemq_logs'; -import { activemqMetricsSpecProvider } from './activemq_metrics'; -import { aerospikeMetricsSpecProvider } from './aerospike_metrics'; -import { apacheLogsSpecProvider } from './apache_logs'; -import { apacheMetricsSpecProvider } from './apache_metrics'; -import { auditbeatSpecProvider } from './auditbeat'; -import { auditdLogsSpecProvider } from './auditd_logs'; -import { awsLogsSpecProvider } from './aws_logs'; -import { awsMetricsSpecProvider } from './aws_metrics'; -import { azureLogsSpecProvider } from './azure_logs'; -import { azureMetricsSpecProvider } from './azure_metrics'; -import { barracudaLogsSpecProvider } from './barracuda_logs'; -import { bluecoatLogsSpecProvider } from './bluecoat_logs'; -import { cefLogsSpecProvider } from './cef_logs'; -import { cephMetricsSpecProvider } from './ceph_metrics'; -import { checkpointLogsSpecProvider } from './checkpoint_logs'; -import { ciscoLogsSpecProvider } from './cisco_logs'; -import { cloudwatchLogsSpecProvider } from './cloudwatch_logs'; -import { cockroachdbMetricsSpecProvider } from './cockroachdb_metrics'; -import { consulMetricsSpecProvider } from './consul_metrics'; -import { corednsLogsSpecProvider } from './coredns_logs'; -import { corednsMetricsSpecProvider } from './coredns_metrics'; -import { couchbaseMetricsSpecProvider } from './couchbase_metrics'; -import { couchdbMetricsSpecProvider } from './couchdb_metrics'; -import { crowdstrikeLogsSpecProvider } from './crowdstrike_logs'; -import { cylanceLogsSpecProvider } from './cylance_logs'; -import { dockerMetricsSpecProvider } from './docker_metrics'; -import { dropwizardMetricsSpecProvider } from './dropwizard_metrics'; -import { opensearchLogsSpecProvider } from './opensearch_logs'; -import { opensearchMetricsSpecProvider } from './opensearch_metrics'; -import { envoyproxyLogsSpecProvider } from './envoyproxy_logs'; -import { envoyproxyMetricsSpecProvider } from './envoyproxy_metrics'; -import { etcdMetricsSpecProvider } from './etcd_metrics'; -import { f5LogsSpecProvider } from './f5_logs'; -import { fortinetLogsSpecProvider } from './fortinet_logs'; -import { golangMetricsSpecProvider } from './golang_metrics'; -import { googlecloudLogsSpecProvider } from './googlecloud_logs'; -import { googlecloudMetricsSpecProvider } from './googlecloud_metrics'; -import { gsuiteLogsSpecProvider } from './gsuite_logs'; -import { haproxyLogsSpecProvider } from './haproxy_logs'; -import { haproxyMetricsSpecProvider } from './haproxy_metrics'; -import { ibmmqLogsSpecProvider } from './ibmmq_logs'; -import { ibmmqMetricsSpecProvider } from './ibmmq_metrics'; -import { icingaLogsSpecProvider } from './icinga_logs'; -import { iisLogsSpecProvider } from './iis_logs'; -import { iisMetricsSpecProvider } from './iis_metrics'; -import { impervaLogsSpecProvider } from './imperva_logs'; -import { infobloxLogsSpecProvider } from './infoblox_logs'; -import { iptablesLogsSpecProvider } from './iptables_logs'; -import { juniperLogsSpecProvider } from './juniper_logs'; -import { kafkaLogsSpecProvider } from './kafka_logs'; -import { kafkaMetricsSpecProvider } from './kafka_metrics'; -import { opensearchDashboardsLogsSpecProvider } from './opensearch_dashboards_logs'; -import { opensearchDashboardsMetricsSpecProvider } from './opensearch_dashboards_metrics'; -import { kubernetesMetricsSpecProvider } from './kubernetes_metrics'; -import { logstashLogsSpecProvider } from './logstash_logs'; -import { logstashMetricsSpecProvider } from './logstash_metrics'; -import { memcachedMetricsSpecProvider } from './memcached_metrics'; -import { microsoftLogsSpecProvider } from './microsoft_logs'; -import { mispLogsSpecProvider } from './misp_logs'; -import { mongodbLogsSpecProvider } from './mongodb_logs'; -import { mongodbMetricsSpecProvider } from './mongodb_metrics'; -import { mssqlLogsSpecProvider } from './mssql_logs'; -import { mssqlMetricsSpecProvider } from './mssql_metrics'; -import { muninMetricsSpecProvider } from './munin_metrics'; -import { mysqlLogsSpecProvider } from './mysql_logs'; -import { mysqlMetricsSpecProvider } from './mysql_metrics'; -import { natsLogsSpecProvider } from './nats_logs'; -import { natsMetricsSpecProvider } from './nats_metrics'; -import { netflowLogsSpecProvider } from './netflow_logs'; -import { netscoutLogsSpecProvider } from './netscout_logs'; -import { nginxLogsSpecProvider } from './nginx_logs'; -import { nginxMetricsSpecProvider } from './nginx_metrics'; -import { o365LogsSpecProvider } from './o365_logs'; -import { oktaLogsSpecProvider } from './okta_logs'; -import { openmetricsMetricsSpecProvider } from './openmetrics_metrics'; -import { oracleMetricsSpecProvider } from './oracle_metrics'; -import { osqueryLogsSpecProvider } from './osquery_logs'; -import { panwLogsSpecProvider } from './panw_logs'; -import { phpfpmMetricsSpecProvider } from './php_fpm_metrics'; -import { postgresqlLogsSpecProvider } from './postgresql_logs'; -import { postgresqlMetricsSpecProvider } from './postgresql_metrics'; -import { prometheusMetricsSpecProvider } from './prometheus_metrics'; -import { rabbitmqLogsSpecProvider } from './rabbitmq_logs'; -import { rabbitmqMetricsSpecProvider } from './rabbitmq_metrics'; -import { radwareLogsSpecProvider } from './radware_logs'; -import { redisLogsSpecProvider } from './redis_logs'; -import { redisMetricsSpecProvider } from './redis_metrics'; -import { redisenterpriseMetricsSpecProvider } from './redisenterprise_metrics'; -import { santaLogsSpecProvider } from './santa_logs'; -import { sonicwallLogsSpecProvider } from './sonicwall_logs'; -import { sophosLogsSpecProvider } from './sophos_logs'; -import { squidLogsSpecProvider } from './squid_logs'; -import { stanMetricsSpecProvider } from './stan_metrics'; -import { statsdMetricsSpecProvider } from './statsd_metrics'; -import { suricataLogsSpecProvider } from './suricata_logs'; -import { systemLogsSpecProvider } from './system_logs'; -import { systemMetricsSpecProvider } from './system_metrics'; -import { tomcatLogsSpecProvider } from './tomcat_logs'; -import { traefikLogsSpecProvider } from './traefik_logs'; -import { traefikMetricsSpecProvider } from './traefik_metrics'; -import { uptimeMonitorsSpecProvider } from './uptime_monitors'; -import { uwsgiMetricsSpecProvider } from './uwsgi_metrics'; -import { vSphereMetricsSpecProvider } from './vsphere_metrics'; -import { windowsEventLogsSpecProvider } from './windows_event_logs'; -import { windowsMetricsSpecProvider } from './windows_metrics'; -import { zeekLogsSpecProvider } from './zeek_logs'; -import { zookeeperMetricsSpecProvider } from './zookeeper_metrics'; -import { zscalerLogsSpecProvider } from './zscaler_logs'; - -export const builtInTutorials = [ - systemLogsSpecProvider, - systemMetricsSpecProvider, - apacheLogsSpecProvider, - apacheMetricsSpecProvider, - opensearchLogsSpecProvider, - iisLogsSpecProvider, - kafkaLogsSpecProvider, - logstashLogsSpecProvider, - nginxLogsSpecProvider, - nginxMetricsSpecProvider, - mysqlLogsSpecProvider, - mysqlMetricsSpecProvider, - mongodbMetricsSpecProvider, - osqueryLogsSpecProvider, - phpfpmMetricsSpecProvider, - postgresqlMetricsSpecProvider, - postgresqlLogsSpecProvider, - rabbitmqMetricsSpecProvider, - redisLogsSpecProvider, - redisMetricsSpecProvider, - suricataLogsSpecProvider, - dockerMetricsSpecProvider, - kubernetesMetricsSpecProvider, - uwsgiMetricsSpecProvider, - netflowLogsSpecProvider, - traefikLogsSpecProvider, - cephMetricsSpecProvider, - aerospikeMetricsSpecProvider, - couchbaseMetricsSpecProvider, - dropwizardMetricsSpecProvider, - opensearchMetricsSpecProvider, - etcdMetricsSpecProvider, - haproxyMetricsSpecProvider, - kafkaMetricsSpecProvider, - opensearchDashboardsMetricsSpecProvider, - memcachedMetricsSpecProvider, - muninMetricsSpecProvider, - vSphereMetricsSpecProvider, - windowsMetricsSpecProvider, - windowsEventLogsSpecProvider, - golangMetricsSpecProvider, - logstashMetricsSpecProvider, - prometheusMetricsSpecProvider, - zookeeperMetricsSpecProvider, - uptimeMonitorsSpecProvider, - cloudwatchLogsSpecProvider, - awsMetricsSpecProvider, - mssqlMetricsSpecProvider, - natsMetricsSpecProvider, - natsLogsSpecProvider, - zeekLogsSpecProvider, - corednsMetricsSpecProvider, - corednsLogsSpecProvider, - auditbeatSpecProvider, - iptablesLogsSpecProvider, - ciscoLogsSpecProvider, - envoyproxyLogsSpecProvider, - couchdbMetricsSpecProvider, - consulMetricsSpecProvider, - cockroachdbMetricsSpecProvider, - traefikMetricsSpecProvider, - awsLogsSpecProvider, - activemqLogsSpecProvider, - activemqMetricsSpecProvider, - azureMetricsSpecProvider, - ibmmqLogsSpecProvider, - ibmmqMetricsSpecProvider, - stanMetricsSpecProvider, - envoyproxyMetricsSpecProvider, - statsdMetricsSpecProvider, - redisenterpriseMetricsSpecProvider, - openmetricsMetricsSpecProvider, - oracleMetricsSpecProvider, - iisMetricsSpecProvider, - azureLogsSpecProvider, - googlecloudMetricsSpecProvider, - auditdLogsSpecProvider, - barracudaLogsSpecProvider, - bluecoatLogsSpecProvider, - cefLogsSpecProvider, - checkpointLogsSpecProvider, - crowdstrikeLogsSpecProvider, - cylanceLogsSpecProvider, - f5LogsSpecProvider, - fortinetLogsSpecProvider, - googlecloudLogsSpecProvider, - gsuiteLogsSpecProvider, - haproxyLogsSpecProvider, - icingaLogsSpecProvider, - impervaLogsSpecProvider, - infobloxLogsSpecProvider, - juniperLogsSpecProvider, - opensearchDashboardsLogsSpecProvider, - microsoftLogsSpecProvider, - mispLogsSpecProvider, - mongodbLogsSpecProvider, - mssqlLogsSpecProvider, - netscoutLogsSpecProvider, - o365LogsSpecProvider, - oktaLogsSpecProvider, - panwLogsSpecProvider, - rabbitmqLogsSpecProvider, - radwareLogsSpecProvider, - santaLogsSpecProvider, - sonicwallLogsSpecProvider, - sophosLogsSpecProvider, - squidLogsSpecProvider, - tomcatLogsSpecProvider, - zscalerLogsSpecProvider, -]; diff --git a/src/plugins/home/server/tutorials/santa_logs/index.ts b/src/plugins/home/server/tutorials/santa_logs/index.ts deleted file mode 100644 index 0008a3adb73d..000000000000 --- a/src/plugins/home/server/tutorials/santa_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function santaLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'santa'; - const platforms = ['OSX'] as const; - return { - id: 'santaLogs', - name: i18n.translate('home.tutorials.santaLogs.nameTitle', { - defaultMessage: 'Google Santa logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.santaLogs.shortDescription', { - defaultMessage: 'Collect Google Santa logs about process executions on MacOS.', - }), - longDescription: i18n.translate('home.tutorials.santaLogs.longDescription', { - defaultMessage: - 'The module collects and parses logs from [Google Santa](https://github.com/google/santa), \ - a security tool for macOS that monitors process executions and can denylist/allowlist binaries. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-santa.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [ - { - id: '161855f0-ff6a-11e8-93c5-d5ecd1b3e307-ecs', - linkLabel: i18n.translate('home.tutorials.santaLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Santa Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-santa.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/sonicwall_logs/index.ts b/src/plugins/home/server/tutorials/sonicwall_logs/index.ts deleted file mode 100644 index 0cd3bcd90cfc..000000000000 --- a/src/plugins/home/server/tutorials/sonicwall_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function sonicwallLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'sonicwall'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'sonicwallLogs', - name: i18n.translate('home.tutorials.sonicwallLogs.nameTitle', { - defaultMessage: 'Sonicwall FW logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.sonicwallLogs.shortDescription', { - defaultMessage: 'Collect Sonicwall-FW logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.sonicwallLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Sonicwall-FW logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-sonicwall.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/sonicwall.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.radwareLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-sonicwall.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/sophos_logs/index.ts b/src/plugins/home/server/tutorials/sophos_logs/index.ts deleted file mode 100644 index fc3935e13238..000000000000 --- a/src/plugins/home/server/tutorials/sophos_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function sophosLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'sophos'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'sophosLogs', - name: i18n.translate('home.tutorials.sophosLogs.nameTitle', { - defaultMessage: 'Sophos logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.sophosLogs.shortDescription', { - defaultMessage: 'Collect Sophos XG SFOS logs over syslog.', - }), - longDescription: i18n.translate('home.tutorials.sophosLogs.longDescription', { - defaultMessage: - 'This is a module for Sophos Products, currently it supports XG SFOS logs sent in the syslog format. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-sophos.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/sophos.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.sophosLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-sophos.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/squid_logs/index.ts b/src/plugins/home/server/tutorials/squid_logs/index.ts deleted file mode 100644 index b88d1e995df7..000000000000 --- a/src/plugins/home/server/tutorials/squid_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function squidLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'squid'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'squidLogs', - name: i18n.translate('home.tutorials.squidLogs.nameTitle', { - defaultMessage: 'Squid logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.squidLogs.shortDescription', { - defaultMessage: 'Collect Squid logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.squidLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Squid logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-squid.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.squidLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-squid.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/stan_metrics/index.ts b/src/plugins/home/server/tutorials/stan_metrics/index.ts deleted file mode 100644 index 49be1e327e96..000000000000 --- a/src/plugins/home/server/tutorials/stan_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function stanMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'stan'; - return { - id: 'stanMetrics', - name: i18n.translate('home.tutorials.stanMetrics.nameTitle', { - defaultMessage: 'STAN metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.stanMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from the STAN server.', - }), - longDescription: i18n.translate('home.tutorials.stanMetrics.longDescription', { - defaultMessage: - 'The `stan` Metricbeat module fetches monitoring metrics from STAN. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-stan.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/stan.svg', - artifacts: { - dashboards: [ - { - id: 'dbf2e220-37ce-11ea-a9c8-152a657da3ab', - linkLabel: i18n.translate('home.tutorials.stanMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'Stan metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-stan.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/statsd_metrics/index.ts b/src/plugins/home/server/tutorials/statsd_metrics/index.ts deleted file mode 100644 index 1fbba2156324..000000000000 --- a/src/plugins/home/server/tutorials/statsd_metrics/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory, TutorialSchema } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export function statsdMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'statsd'; - return { - id: 'statsdMetrics', - name: i18n.translate('home.tutorials.statsdMetrics.nameTitle', { - defaultMessage: 'Statsd metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.statsdMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from statsd.', - }), - longDescription: i18n.translate('home.tutorials.statsdMetrics.longDescription', { - defaultMessage: - 'The `statsd` Metricbeat module fetches monitoring metrics from statsd. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-statsd.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/statsd.svg', - artifacts: { - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-statsd.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/suricata_logs/index.ts b/src/plugins/home/server/tutorials/suricata_logs/index.ts deleted file mode 100644 index 89091930add9..000000000000 --- a/src/plugins/home/server/tutorials/suricata_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function suricataLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'suricata'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'suricataLogs', - name: i18n.translate('home.tutorials.suricataLogs.nameTitle', { - defaultMessage: 'Suricata logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.suricataLogs.shortDescription', { - defaultMessage: 'Collect Suricata IDS/IPS/NSM logs.', - }), - longDescription: i18n.translate('home.tutorials.suricataLogs.longDescription', { - defaultMessage: - 'This is a module to the Suricata IDS/IPS/NSM log. It parses logs that are \ - in the [Suricata Eve JSON format](https://suricata.readthedocs.io/en/latest/output/eve/eve-json-format.html). \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-suricata.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/suricata.svg', - artifacts: { - dashboards: [ - { - id: '78289c40-86da-11e8-b59d-21efb914e65c-ecs', - linkLabel: i18n.translate('home.tutorials.suricataLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Suricata Events Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-suricata.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/system_logs/index.ts b/src/plugins/home/server/tutorials/system_logs/index.ts deleted file mode 100644 index 0809fba7455c..000000000000 --- a/src/plugins/home/server/tutorials/system_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function systemLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'system'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'systemLogs', - name: i18n.translate('home.tutorials.systemLogs.nameTitle', { - defaultMessage: 'System logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.systemLogs.shortDescription', { - defaultMessage: 'Collect system logs of common Unix/Linux based distributions.', - }), - longDescription: i18n.translate('home.tutorials.systemLogs.longDescription', { - defaultMessage: - 'The module collects and parses logs created by the system logging service of common Unix/Linux based distributions. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-system.html', - }, - }), - euiIconType: 'logoLogging', - artifacts: { - dashboards: [ - { - id: 'Filebeat-syslog-dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.systemLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'System Syslog Dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-system.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/system_metrics/index.ts b/src/plugins/home/server/tutorials/system_metrics/index.ts deleted file mode 100644 index 903591207884..000000000000 --- a/src/plugins/home/server/tutorials/system_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function systemMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'system'; - return { - id: 'systemMetrics', - name: i18n.translate('home.tutorials.systemMetrics.nameTitle', { - defaultMessage: 'System metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.systemMetrics.shortDescription', { - defaultMessage: 'Collect CPU, memory, network, and disk statistics from the host.', - }), - longDescription: i18n.translate('home.tutorials.systemMetrics.longDescription', { - defaultMessage: - 'The `system` Metricbeat module collects CPU, memory, network, and disk statistics from the host. \ -It collects system wide statistics and statistics per process and filesystem. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-system.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/system.svg', - artifacts: { - dashboards: [ - { - id: 'Metricbeat-system-overview-ecs', - linkLabel: i18n.translate('home.tutorials.systemMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'System metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-system.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/tomcat_logs/index.ts b/src/plugins/home/server/tutorials/tomcat_logs/index.ts deleted file mode 100644 index d7e6742f7e49..000000000000 --- a/src/plugins/home/server/tutorials/tomcat_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function tomcatLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'tomcat'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'tomcatLogs', - name: i18n.translate('home.tutorials.tomcatLogs.nameTitle', { - defaultMessage: 'Tomcat logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.tomcatLogs.shortDescription', { - defaultMessage: 'Collect Apache Tomcat logs over syslog or from a file.', - }), - longDescription: i18n.translate('home.tutorials.tomcatLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Apache Tomcat logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-tomcat.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/tomcat.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.tomcatLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-tomcat.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/traefik_logs/index.ts b/src/plugins/home/server/tutorials/traefik_logs/index.ts deleted file mode 100644 index de4767ac49af..000000000000 --- a/src/plugins/home/server/tutorials/traefik_logs/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function traefikLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'traefik'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'traefikLogs', - name: i18n.translate('home.tutorials.traefikLogs.nameTitle', { - defaultMessage: 'Traefik logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.traefikLogs.shortDescription', { - defaultMessage: 'Collect Traefik access logs.', - }), - longDescription: i18n.translate('home.tutorials.traefikLogs.longDescription', { - defaultMessage: - 'The module parses access logs created by [Træfik](https://traefik.io/). \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-traefik.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/traefik.svg', - artifacts: { - dashboards: [ - { - id: 'Filebeat-Traefik-Dashboard-ecs', - linkLabel: i18n.translate('home.tutorials.traefikLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Traefik Access Logs', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-traefik.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/traefik_metrics/index.ts b/src/plugins/home/server/tutorials/traefik_metrics/index.ts deleted file mode 100644 index 07d201f860b5..000000000000 --- a/src/plugins/home/server/tutorials/traefik_metrics/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory, TutorialSchema } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { TutorialContext } from '../../services/tutorials/lib/tutorials_registry_types'; - -export function traefikMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'traefik'; - return { - id: 'traefikMetrics', - name: i18n.translate('home.tutorials.traefikMetrics.nameTitle', { - defaultMessage: 'Traefik metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.traefikMetrics.shortDescription', { - defaultMessage: 'Fetch monitoring metrics from Traefik.', - }), - longDescription: i18n.translate('home.tutorials.traefikMetrics.longDescription', { - defaultMessage: - 'The `traefik` Metricbeat module fetches monitoring metrics from Traefik. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-traefik.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/traefik.svg', - artifacts: { - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-traefik.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/uptime_monitors/index.ts b/src/plugins/home/server/tutorials/uptime_monitors/index.ts deleted file mode 100644 index f01fcfe700f2..000000000000 --- a/src/plugins/home/server/tutorials/uptime_monitors/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/heartbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function uptimeMonitorsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'uptime'; - return { - id: 'uptimeMonitors', - name: i18n.translate('home.tutorials.uptimeMonitors.nameTitle', { - defaultMessage: 'Uptime Monitors', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.uptimeMonitors.shortDescription', { - defaultMessage: 'Monitor services for their availability', - }), - longDescription: i18n.translate('home.tutorials.uptimeMonitors.longDescription', { - defaultMessage: - 'Monitor services for their availability with active probing. \ - Given a list of URLs, Heartbeat asks the simple question: Are you alive? \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.heartbeat}/heartbeat-installation-configuration.html', - }, - }), - euiIconType: 'uptimeApp', - artifacts: { - dashboards: [], - application: { - path: '/app/uptime', - label: i18n.translate('home.tutorials.uptimeMonitors.artifacts.dashboards.linkLabel', { - defaultMessage: 'Uptime App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.heartbeat}/exported-fields.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions([], context), - }; -} diff --git a/src/plugins/home/server/tutorials/uwsgi_metrics/index.ts b/src/plugins/home/server/tutorials/uwsgi_metrics/index.ts deleted file mode 100644 index ed887eb1c00e..000000000000 --- a/src/plugins/home/server/tutorials/uwsgi_metrics/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function uwsgiMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'uwsgi'; - return { - id: 'uwsgiMetrics', - name: i18n.translate('home.tutorials.uwsgiMetrics.nameTitle', { - defaultMessage: 'uWSGI metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.uwsgiMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from the uWSGI server.', - }), - longDescription: i18n.translate('home.tutorials.uwsgiMetrics.longDescription', { - defaultMessage: - 'The `uwsgi` Metricbeat module fetches internal metrics from the uWSGI server. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-uwsgi.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/uwsgi.svg', - isBeta: false, - artifacts: { - dashboards: [ - { - id: '32fca290-f0af-11e7-b9ff-9f96241065de-ecs', - linkLabel: i18n.translate('home.tutorials.uwsgiMetrics.artifacts.dashboards.linkLabel', { - defaultMessage: 'uWSGI metrics dashboard', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-uwsgi.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/vsphere_metrics/index.ts b/src/plugins/home/server/tutorials/vsphere_metrics/index.ts deleted file mode 100644 index c817a02903e5..000000000000 --- a/src/plugins/home/server/tutorials/vsphere_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function vSphereMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'vsphere'; - return { - id: 'vsphereMetrics', - name: i18n.translate('home.tutorials.vsphereMetrics.nameTitle', { - defaultMessage: 'vSphere metrics', - }), - moduleName, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.vsphereMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from vSphere.', - }), - longDescription: i18n.translate('home.tutorials.vsphereMetrics.longDescription', { - defaultMessage: - 'The `vsphere` Metricbeat module fetches internal metrics from a vSphere cluster. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-vsphere.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/vsphere.svg', - isBeta: true, - artifacts: { - application: { - label: i18n.translate('home.tutorials.vsphereMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-vsphere.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/windows_event_logs/index.ts b/src/plugins/home/server/tutorials/windows_event_logs/index.ts deleted file mode 100644 index 09ed6fbb385c..000000000000 --- a/src/plugins/home/server/tutorials/windows_event_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/winlogbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function windowsEventLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'windows'; - return { - id: 'windowsEventLogs', - name: i18n.translate('home.tutorials.windowsEventLogs.nameTitle', { - defaultMessage: 'Windows Event Log', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.windowsEventLogs.shortDescription', { - defaultMessage: 'Fetch logs from the Windows Event Log.', - }), - longDescription: i18n.translate('home.tutorials.windowsEventLogs.longDescription', { - defaultMessage: - 'Use Winlogbeat to collect the logs from the Windows Event Log. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.winlogbeat}/index.html', - }, - }), - euiIconType: 'logoWindows', - artifacts: { - application: { - label: i18n.translate('home.tutorials.windowsEventLogs.artifacts.application.label', { - defaultMessage: 'SIEM App', - }), - path: '/app/siem', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.winlogbeat}/exported-fields.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(context), - }; -} diff --git a/src/plugins/home/server/tutorials/windows_metrics/index.ts b/src/plugins/home/server/tutorials/windows_metrics/index.ts deleted file mode 100644 index a6a74894a730..000000000000 --- a/src/plugins/home/server/tutorials/windows_metrics/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function windowsMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'windows'; - return { - id: 'windowsMetrics', - name: i18n.translate('home.tutorials.windowsMetrics.nameTitle', { - defaultMessage: 'Windows metrics', - }), - moduleName, - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.windowsMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from Windows.', - }), - longDescription: i18n.translate('home.tutorials.windowsMetrics.longDescription', { - defaultMessage: - 'The `windows` Metricbeat module fetches internal metrics from Windows. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-windows.html', - }, - }), - euiIconType: 'logoWindows', - artifacts: { - application: { - label: i18n.translate('home.tutorials.windowsMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-windows.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/zeek_logs/index.ts b/src/plugins/home/server/tutorials/zeek_logs/index.ts deleted file mode 100644 index 42946dbedda6..000000000000 --- a/src/plugins/home/server/tutorials/zeek_logs/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function zeekLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'zeek'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'zeekLogs', - name: i18n.translate('home.tutorials.zeekLogs.nameTitle', { - defaultMessage: 'Zeek logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.zeekLogs.shortDescription', { - defaultMessage: 'Collect Zeek network security monitoring logs.', - }), - longDescription: i18n.translate('home.tutorials.zeekLogs.longDescription', { - defaultMessage: - 'This is a module for Zeek, which used to be called Bro. It parses logs \ - that are in the [Zeek JSON format](https://www.zeek.org/manual/release/logs/index.html). \ - [Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-zeek.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/zeek.svg', - artifacts: { - dashboards: [ - { - id: '7cbb5410-3700-11e9-aa6d-ff445a78330c', - linkLabel: i18n.translate('home.tutorials.zeekLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Zeek Overview', - }), - isOverview: true, - }, - ], - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-zeek.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/home/server/tutorials/zookeeper_metrics/index.ts b/src/plugins/home/server/tutorials/zookeeper_metrics/index.ts deleted file mode 100644 index 9ab46408e889..000000000000 --- a/src/plugins/home/server/tutorials/zookeeper_metrics/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/metricbeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function zookeeperMetricsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'zookeeper'; - return { - id: moduleName + 'Metrics', - name: i18n.translate('home.tutorials.zookeeperMetrics.nameTitle', { - defaultMessage: 'Zookeeper metrics', - }), - moduleName, - euiIconType: '/plugins/home/assets/tutorials/logos/zookeeper.svg', - isBeta: false, - category: TutorialsCategory.METRICS, - shortDescription: i18n.translate('home.tutorials.zookeeperMetrics.shortDescription', { - defaultMessage: 'Fetch internal metrics from a Zookeeper server.', - }), - longDescription: i18n.translate('home.tutorials.zookeeperMetrics.longDescription', { - defaultMessage: - 'The `{moduleName}` Metricbeat module fetches internal metrics from a Zookeeper server. \ -[Learn more]({learnMoreLink}).', - values: { - moduleName, - learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-' + moduleName + '.html', - }, - }), - artifacts: { - application: { - label: i18n.translate('home.tutorials.zookeeperMetrics.artifacts.application.label', { - defaultMessage: 'Discover', - }), - path: '/app/discover#/', - }, - dashboards: [], - exportedFields: { - documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-' + moduleName + '.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, context), - }; -} diff --git a/src/plugins/home/server/tutorials/zscaler_logs/index.ts b/src/plugins/home/server/tutorials/zscaler_logs/index.ts deleted file mode 100644 index ee081c170ce1..000000000000 --- a/src/plugins/home/server/tutorials/zscaler_logs/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Any modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@osd/i18n'; -import { TutorialsCategory } from '../../services/tutorials'; -import { onPremInstructions } from '../instructions/filebeat_instructions'; -import { - TutorialContext, - TutorialSchema, -} from '../../services/tutorials/lib/tutorials_registry_types'; - -export function zscalerLogsSpecProvider(context: TutorialContext): TutorialSchema { - const moduleName = 'zscaler'; - const platforms = ['OSX', 'DEB', 'RPM', 'WINDOWS'] as const; - return { - id: 'zscalerLogs', - name: i18n.translate('home.tutorials.zscalerLogs.nameTitle', { - defaultMessage: 'Zscaler Logs', - }), - moduleName, - category: TutorialsCategory.SECURITY_SOLUTION, - shortDescription: i18n.translate('home.tutorials.zscalerLogs.shortDescription', { - defaultMessage: 'This is a module for receiving Zscaler NSS logs over Syslog or a file.', - }), - longDescription: i18n.translate('home.tutorials.zscalerLogs.longDescription', { - defaultMessage: - 'This is a module for receiving Zscaler NSS logs over Syslog or a file. \ -[Learn more]({learnMoreLink}).', - values: { - learnMoreLink: '{config.docs.beats.filebeat}/filebeat-module-zscaler.html', - }, - }), - euiIconType: '/plugins/home/assets/tutorials/logos/zscaler.svg', - artifacts: { - dashboards: [], - application: { - path: '/app/security', - label: i18n.translate('home.tutorials.zscalerLogs.artifacts.dashboards.linkLabel', { - defaultMessage: 'Security App', - }), - }, - exportedFields: { - documentationUrl: '{config.docs.beats.filebeat}/exported-fields-zscaler.html', - }, - }, - completionTimeMinutes: 10, - onPrem: onPremInstructions(moduleName, platforms, context), - }; -} diff --git a/src/plugins/maps_legacy/server/index.ts b/src/plugins/maps_legacy/server/index.ts index f6240d8aef50..d5ea908025e9 100644 --- a/src/plugins/maps_legacy/server/index.ts +++ b/src/plugins/maps_legacy/server/index.ts @@ -52,7 +52,7 @@ export const config: PluginConfigDescriptor = { schema: configSchema, deprecations: ({ renameFromRoot }) => [ renameFromRoot('map.includeElasticMapsService', 'map.includeOpenSearchMapsService'), - renameFromRoot('map.proxyOpenSearchMapsServiceInMaps', 'map.proxyElasticMapsServiceInMaps'), + renameFromRoot('map.proxyElasticMapsServiceInMaps', 'map.proxyOpenSearchMapsServiceInMaps'), renameFromRoot( 'map.regionmap.includeElasticMapsService', 'map.regionmap.includeOpenSearchMapsService' diff --git a/src/plugins/saved_objects_management/server/plugin.ts b/src/plugins/saved_objects_management/server/plugin.ts index 4f9d183922a5..c3053884a71e 100644 --- a/src/plugins/saved_objects_management/server/plugin.ts +++ b/src/plugins/saved_objects_management/server/plugin.ts @@ -45,7 +45,7 @@ export class SavedObjectsManagementPlugin this.logger = this.context.logger.get(); } - public async setup({ http, capabilities }: CoreSetup) { + public async setup({ http, capabilities, security }: CoreSetup) { this.logger.debug('Setting up SavedObjectsManagement plugin'); registerRoutes({ http, @@ -53,6 +53,14 @@ export class SavedObjectsManagementPlugin }); capabilities.registerProvider(capabilitiesProvider); + capabilities.registerSwitcher(async (request, capabilites) => { + return await security.readonlyService().hideForReadonly(request, capabilites, { + savedObjectsManagement: { + delete: false, + edit: false, + }, + }); + }); return {}; } diff --git a/src/plugins/visualize/server/plugin.ts b/src/plugins/visualize/server/plugin.ts index aa8359d396c7..086346e31ca9 100644 --- a/src/plugins/visualize/server/plugin.ts +++ b/src/plugins/visualize/server/plugin.ts @@ -49,6 +49,17 @@ export class VisualizeServerPlugin implements Plugin { core.capabilities.registerProvider(capabilitiesProvider); + core.capabilities.registerSwitcher(async (request, capabilites) => { + return await core.security.readonlyService().hideForReadonly(request, capabilites, { + visualize: { + createShortUrl: false, + delete: false, + save: false, + saveQuery: false, + }, + }); + }); + return {}; } diff --git a/yarn.lock b/yarn.lock index df151480c3b5..523b02d4676a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,13 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" "@aws-crypto/cache-material@^3.1.0": version "3.1.0" @@ -149,442 +150,297 @@ bn.js "^5.1.1" tslib "^2.2.0" -"@babel/cli@^7.16.0": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.6.tgz#169e5935f1795f0b62ded5a2accafeedfe5c5363" - integrity sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA== +"@babel/cli@^7.22.9": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.23.0.tgz#1d7f37c44d4117c67df46749e0c86e11a58cc64b" + integrity sha512-17E1oSkGk2IwNILM4jtfAvgjt+ohmpfBky8aLerUfYZhiPNg7ca+CRCxZn8QDxwNhV/upsc2VHBCqGFIR+iBfA== dependencies: - "@jridgewell/trace-mapping" "^0.3.4" + "@jridgewell/trace-mapping" "^0.3.17" commander "^4.0.1" - convert-source-map "^1.1.0" + convert-source-map "^2.0.0" fs-readdir-recursive "^1.1.0" - glob "^7.0.0" + glob "^7.2.0" make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" + integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.3" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.3" + "@babel/types" "^7.23.3" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.7.2": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== +"@babel/generator@^7.23.3", "@babel/generator@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" + integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.23.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@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" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== - dependencies: - "@babel/types" "^7.17.0" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + 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" + +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" - integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.6", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" - integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.16.5", "@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.16.5", "@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.16.5": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.16.5", "@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== - dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.9", "@babel/parser@^7.23.3", "@babel/parser@^7.7.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" + integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== -"@babel/plugin-proposal-optional-chaining@^7.16.5", "@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.16.5": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -628,7 +484,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -642,12 +512,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -705,348 +575,485 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== +"@babel/plugin-transform-async-generator-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz#9df2627bad7f434ed13eef3e61b2b65cafd4885b" + integrity sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-block-scoping@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz#e99a3ff08f58edd28a8ed82481df76925a4ffca7" + integrity sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz#56f2371c7e5bf6ff964d84c5dc4d4db5536b5159" + integrity sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" + integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-dynamic-import@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz#82625924da9ed5fb11a428efb02e43bc9a3ab13e" + integrity sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== +"@babel/plugin-transform-export-namespace-from@^7.22.9", "@babel/plugin-transform-export-namespace-from@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz#dcd066d995f6ac6077e5a4ccb68322a01e23ac49" + integrity sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-json-strings@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz#489724ab7d3918a4329afb4172b2fd2cf3c8d245" + integrity sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.16.5", "@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" - integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== +"@babel/plugin-transform-logical-assignment-operators@^7.22.9", "@babel/plugin-transform-logical-assignment-operators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz#3a406d6083feb9487083bca6d2334a3c9b6c4808" + integrity sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A== dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-modules-commonjs@^7.22.9", "@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-display-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" - integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.9", "@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz#8a613d514b521b640344ed7c56afeff52f9413f8" + integrity sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== +"@babel/plugin-transform-numeric-separator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz#2f8da42b75ba89e5cfcd677afd0856d52c0c2e68" + integrity sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" - -"@babel/plugin-transform-react-jsx@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz#509373753b5f7202fe1940e92fd075bd7874955f" + integrity sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== - dependencies: - regenerator-transform "^0.14.2" + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-runtime@^7.16.5": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-optional-catch-binding@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz#362c0b545ee9e5b0fa9d9e6fe77acf9d4c480027" + integrity sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - semver "^6.3.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.9", "@babel/plugin-transform-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz#92fc83f54aa3adc34288933fa27e54c13113f4be" + integrity sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz#5cd34a2ce6f2d008cc8f91d8dcc29e2c41466da6" + integrity sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + 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.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typescript@^7.16.7": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" - integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-typescript" "^7.16.7" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/preset-env@^7.16.5": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.3.tgz#0aa7485862b0b5cb0559c1a5ec08b4923743ee3b" + integrity sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.3.tgz#ce806e6cb485d468c48c4f717696719678ab0138" + integrity sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" + integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" + "@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.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@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" @@ -1056,82 +1063,98 @@ "@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-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.3" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.3" + "@babel/plugin-transform-classes" "^7.23.3" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.3" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" + "@babel/plugin-transform-numeric-separator" "^7.23.3" + "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.3" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.16.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" - -"@babel/preset-typescript@^7.16.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" - integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.16.7" - -"@babel/register@^7.16.5": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" - integrity sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA== +"@babel/preset-react@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + +"@babel/preset-typescript@^7.22.9": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/register@^7.22.9": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" + integrity sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1139,52 +1162,58 @@ pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime-corejs3@^7.10.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" - integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz#a5cd9d8b408fb946b2f074b21ea40c04e516795c" + integrity sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw== + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.22.9", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" + integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.3" + "@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.22.6" + "@babel/parser" "^7.23.3" + "@babel/types" "^7.23.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.22.9", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" + integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -2190,23 +2219,42 @@ "@babel/runtime" "^7.7.2" regenerator-runtime "^0.13.3" -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.11" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== -"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.4": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@kwsites/file-exists@^1.1.1": version "1.1.1" @@ -4581,6 +4629,14 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -4591,11 +4647,6 @@ array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-find@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= - array-flat-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz#1e3a4255be619dfbffbfd1d635c1cf357cd034e7" @@ -4674,6 +4725,16 @@ array.prototype.find@^2.1.1: define-properties "^1.1.3" es-abstract "^1.19.0" +array.prototype.find@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" + integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" @@ -4692,6 +4753,19 @@ array.prototype.flatmap@^1.2.5: define-properties "^1.1.3" es-abstract "^1.19.0" +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -4931,13 +5005,6 @@ babel-plugin-add-module-exports@^1.0.4: resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b" integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg== -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -4959,29 +5026,29 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.4.3" "babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.2: version "2.0.6" @@ -5158,6 +5225,11 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -5252,7 +5324,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== @@ -5261,19 +5333,19 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" + bn.js "^5.2.1" + browserify-rsa "^4.1.0" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.3" + elliptic "^6.5.4" inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" browserify-zlib@^0.2.0: version "0.2.0" @@ -5292,7 +5364,7 @@ browserslist@*, browserslist@^4.21.10: node-releases "^2.0.13" update-browserslist-db "^1.0.11" -browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.21.5: +browserslist@^4.21.5: version "4.21.9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -5302,6 +5374,16 @@ browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.21.5: node-releases "^2.0.12" update-browserslist-db "^1.0.11" +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5508,6 +5590,15 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -5552,6 +5643,11 @@ caniuse-lite@^1.0.30001517: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== +caniuse-lite@^1.0.30001541: + version "1.0.30001559" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz#95a982440d3d314c471db68d02664fb7536c5a30" + integrity sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -5577,7 +5673,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -6162,13 +6258,18 @@ content-disposition@^0.5.4: dependencies: safe-buffer "5.2.1" -convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@1.X, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" @@ -6227,18 +6328,17 @@ copy-webpack-plugin@^6.0.2: serialize-javascript "^5.0.1" webpack-sources "^1.4.3" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== dependencies: - browserslist "^4.19.1" - semver "7.0.0" + browserslist "^4.22.1" -core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== +core-js-pure@^3.30.2: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.2.tgz#644830db2507ef84d068a70980ccd99c275f5fa6" + integrity sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.9: version "2.6.12" @@ -6821,7 +6921,7 @@ debug@4.3.1: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -6935,6 +7035,15 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -6950,6 +7059,15 @@ define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -7426,6 +7544,11 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.482.tgz#77c5ed37b93d4dda860e27538e0e2a01d6a19e02" integrity sha512-h+UqpfmEr1Qkk0zp7ej/jid7CXoq4m4QzW6wNTb0ELJ/BZCpA4wgUylBIMGCe621tnr4l5VmoHjdoSx2lbnNJA== +electron-to-chromium@^1.4.535: + version "1.4.573" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.573.tgz#aa6e5edf86448bb9398f529357abcc6a17b6341d" + integrity sha512-tzxxvKDTO3V5vzN2F+3v9jrK9gEbCdf1YYJUx/zVq1cyzyh+x1ddeYNNWh0ZS2ETNCVK3+Pns1LHIBq4w20X2Q== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -7438,7 +7561,7 @@ element-resize-detector@^1.2.1: dependencies: batch-processor "1.0.0" -elliptic@^6.5.3: +elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -7495,6 +7618,15 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@ dependencies: once "^1.4.0" +enhanced-resolve@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + enhanced-resolve@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" @@ -7504,15 +7636,6 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -7709,6 +7832,51 @@ es-abstract@^1.19.5, es-abstract@^1.20.0: string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -7728,6 +7896,22 @@ es-get-iterator@^1.1.1: is-string "^1.0.5" isarray "^2.0.5" +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -7859,21 +8043,22 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-import-resolver-webpack@0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz#fcf1fd57a775f51e18f442915f85dd6ba45d2f26" - integrity sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg== +eslint-import-resolver-webpack@0.13.8: + version "0.13.8" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.8.tgz#5f64d1d653eefa19cdfd0f0165c996b6be7012f9" + integrity sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA== dependencies: - array-find "^1.0.0" - debug "^2.6.8" - enhanced-resolve "~0.9.0" + array.prototype.find "^2.2.2" + debug "^3.2.7" + enhanced-resolve "^0.9.1" find-root "^1.1.0" - has "^1.0.1" - interpret "^1.0.0" - lodash "^4.17.4" - node-libs-browser "^1.0.0 || ^2.0.0" - resolve "^1.10.0" - semver "^5.3.0" + hasown "^2.0.0" + interpret "^1.4.0" + is-core-module "^2.13.1" + is-regex "^1.1.4" + lodash "^4.17.21" + resolve "^2.0.0-next.5" + semver "^5.7.2" eslint-module-utils@2.5.0: version "2.5.0" @@ -8912,6 +9097,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.2, function.prototype.name@^1.1.3, function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -8922,6 +9112,16 @@ function.prototype.name@^1.1.2, function.prototype.name@^1.1.3, function.prototy es-abstract "^1.19.0" functions-have-names "^1.2.2" +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -8932,6 +9132,11 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -8992,6 +9197,16 @@ get-intrinsic@^1.1.2: has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -9217,6 +9432,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -9282,6 +9504,13 @@ globule@^1.0.0: lodash "^4.17.21" minimatch "~3.0.2" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@11.8.5, got@^11.8.2: version "11.8.5" resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" @@ -9533,6 +9762,11 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -9582,7 +9816,7 @@ has-values@^2.0.1: dependencies: kind-of "^6.0.2" -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -9614,6 +9848,13 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -10148,12 +10389,21 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + "internmap@1 - 2": version "2.0.3" resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== -interpret@^1.0.0: +interpret@^1.0.0, interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== @@ -10283,6 +10533,15 @@ is-arguments@^1.0.4, is-arguments@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -10337,6 +10596,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -10344,6 +10608,13 @@ is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-mod dependencies: has "^1.0.3" +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -10661,6 +10932,13 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-typed-array@^1.1.3: version "1.1.9" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" @@ -11539,7 +11817,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: +json5@^2.1.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -12041,7 +12319,7 @@ lodash.union@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= -lodash@4.17.21, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0, lodash@~4.17.15, lodash@~4.17.19, lodash@~4.17.21: +lodash@4.17.21, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0, lodash@~4.17.15, lodash@~4.17.19, lodash@~4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -13070,7 +13348,7 @@ node-jose@2.0.0, node-jose@^2.2.0: process "^0.11.10" uuid "^9.0.0" -"node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.2.1: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -13332,6 +13610,11 @@ object-inspect@^1.12.2: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.4, object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -13688,7 +13971,7 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: +parse-asn1@^5.0.0, parse-asn1@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== @@ -14852,6 +15135,15 @@ read-pkg@^5.2.0: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdir-glob@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4" @@ -14950,10 +15242,10 @@ regedit@^3.0.3: stream-slicer "0.0.6" through2 "^0.6.3" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -14972,15 +15264,20 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.3: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" @@ -15009,6 +15306,15 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -15019,27 +15325,22 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + unicode-match-property-value-ecmascript "^2.1.0" -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -15320,6 +15621,15 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -15470,16 +15780,35 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1, rxjs@^6.5.5, rxjs@^6.6.0: dependencies: tslib "^1.9.0" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -15599,10 +15928,10 @@ selenium-webdriver@^4.0.0-alpha.7: rimraf "^2.7.1" tmp "0.0.30" -"semver@2 || 3 || 4 || 5", semver@7.0.0, semver@7.3.2, semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1, semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@~7.3.0: - version "7.5.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== +"semver@2 || 3 || 4 || 5", semver@7.3.2, semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1, semver@^5.7.2, semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@~7.3.0: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -15637,6 +15966,25 @@ set-cookie-serde@^1.0.0: resolved "https://registry.yarnpkg.com/set-cookie-serde/-/set-cookie-serde-1.0.0.tgz#bcf9c260ed2212ac4005a53eacbaaa37c07ac452" integrity sha512-Vq8e5GsupfJ7okHIvEPcfs5neCo7MZ1ZuWrO3sllYi3DOWt6bSSCpADzqXjz3k0fXehnoFIrmmhty9IN6U6BXQ== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-harmonic-interval@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" @@ -15927,7 +16275,7 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: +source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -16309,6 +16657,15 @@ string.prototype.trim@^1.2.1, string.prototype.trim@^1.2.5: define-properties "^1.1.3" es-abstract "^1.19.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -16326,22 +16683,23 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== +string.prototype.trimstart@^1.0.4, string.prototype.trimstart@^1.0.5, string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -17306,6 +17664,45 @@ typechecker@^6.2.0: resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-6.4.0.tgz#c087dc744c5a0f17524d58a17eb31a9660ab7324" integrity sha512-EbOu+9szY13mhl0EsvLXnR+pTCa3gTHQQPLdce72ujcC9fRHXlVFBNXtHeRhgzLxLlKUh4zA9C0tezLDgshf+A== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -17400,10 +17797,10 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" @@ -17617,6 +18014,14 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -18532,6 +18937,17 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which-typed-array@^1.1.2: version "1.1.7" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793"