diff --git a/.eslintignore b/.eslintignore index c516d7511b78..6ea478bc2bf7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,6 +3,7 @@ /.chromium /build /built_assets +/bwc_tmp /config/apm.dev.js /data /html_docs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7899a0afa723..9346def6aafd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @ananzh @kavilla @seanneumann @AMoo-Miki @ashwin-pc @joshuarrrr @abbyhu2000 @zengyan-amazon @kristenTian @zhongnansu @manasvinibs +* @ananzh @kavilla @seanneumann @AMoo-Miki @ashwin-pc @joshuarrrr @abbyhu2000 @zengyan-amazon @kristenTian @zhongnansu @manasvinibs @ZilongX @Flyingliuhub diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 0ba694cbf213..c8dfef417daa 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -34,8 +34,10 @@ jobs: installation_id: 22958780 - name: Backport - uses: VachaShah/backport@v2.1.0 + uses: VachaShah/backport@v2.2.0 with: github_token: ${{ steps.github_app_token.outputs.token }} head_template: backport/backport-<%= number %>-to-<%= base %> files_to_skip: "CHANGELOG.md" + labels_template: "<%= JSON.stringify([...labels, 'autocut']) %>" + failure_labels: "failed backport" diff --git a/.github/workflows/build_and_test_workflow.yml b/.github/workflows/build_and_test_workflow.yml index 8fd3a402d547..231b33e9de43 100644 --- a/.github/workflows/build_and_test_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -324,7 +324,7 @@ jobs: working-directory: ./artifacts strategy: matrix: - version: [osd-2.0.0, osd-2.1.0, osd-2.2.0, osd-2.3.0, osd-2.4.0, osd-2.5.0] + version: [osd-2.0.0, osd-2.1.0, osd-2.2.0, osd-2.3.0, osd-2.4.0, osd-2.5.0, osd-2.6.0, osd-2.7.0] steps: - name: Checkout code uses: actions/checkout@v3 diff --git a/.github/workflows/cypress_workflow.yml b/.github/workflows/cypress_workflow.yml index a487ac774a7c..5e78785f9b88 100644 --- a/.github/workflows/cypress_workflow.yml +++ b/.github/workflows/cypress_workflow.yml @@ -12,7 +12,10 @@ env: START_CMD: 'node ../scripts/opensearch_dashboards --dev --no-base-path --no-watch' OPENSEARCH_SNAPSHOT_CMD: 'node ../scripts/opensearch snapshot' SPEC: 'cypress/integration/core-opensearch-dashboards/opensearch-dashboards/**/*.js,' - CYPRESS_ENV: 'env CYPRESS_VISBUILDER_ENABLED=true CYPRESS_DATASOURCE_MANAGEMENT_ENABLED=false' + CYPRESS_BROWSER: 'chromium' + CYPRESS_VISBUILDER_ENABLED: true + CYPRESS_DATASOURCE_MANAGEMENT_ENABLED: false + OSD_SNAPSHOT_SKIP_VERIFY_CHECKSUM: true jobs: cypress-tests: @@ -76,7 +79,7 @@ jobs: working-directory: ${{ env.FTR_PATH }} start: ${{ env.OPENSEARCH_SNAPSHOT_CMD }}, ${{ env.START_CMD }} wait-on: 'http://localhost:9200, http://localhost:5601' - command: ${{ env.CYPRESS_ENV }} yarn cypress:run-without-security --browser chromium --spec ${{ env.SPEC }} + command: yarn cypress:run-without-security --browser ${{ env.CYPRESS_BROWSER }} --spec ${{ env.SPEC }} # Screenshots are only captured on failure, will change this once we do visual regression tests - uses: actions/upload-artifact@v3 diff --git a/.lycheeexclude b/.lycheeexclude index 35ae861e8f91..bb378e308868 100644 --- a/.lycheeexclude +++ b/.lycheeexclude @@ -121,3 +121,4 @@ https://yarnpkg.com/latest.msi https://forum.opensearch.org/ https://facebook.github.io/jest/ https://facebook.github.io/jest/docs/cli.html +http://helpmenow.com/problem2 diff --git a/.stylelintrc.yml b/.stylelintrc.yml index 8a70ee1dd008..ad81fc065f7d 100644 --- a/.stylelintrc.yml +++ b/.stylelintrc.yml @@ -1,5 +1,6 @@ extends: - stylelint-config-standard-scss + - '@osd/stylelint-config' rules: # while we still use node-sass, only legacy rgb() notation is allowed color-function-notation: "legacy" diff --git a/CHANGELOG.md b/CHANGELOG.md index a5667509dcc6..61f4876e7145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,299 +10,613 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### 🛡 Security -- [Legacy Maps Plugin] Prevent reverse-tabnabbing ([#2540](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2540)) -- Eliminate dependency on `got` versions older than 11.8.5 ([#2801](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2801)) -- [Multi DataSource] Add explicit no spellcheck on password fields ([#2818](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2818)) -- [CVE-2022-25912] Bumps simple-git from 3.4.0 to 3.15.0 ([#3036](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3036)) -- [CVE-2022-35256] Bumps node version from 14.20.0 to 14.20.1 ([#3166](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3166)) -- [CVE-2022-46175] Bumps json5 version from 1.0.1 and 2.2.1 to 1.0.2 and 2.2.3 ([#3201](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3201)) -- [CVE-2022-25860] Bumps simple-git from 3.15.1 to 3.16.0 ([#3345](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3345)) -- [Security] Bumps hapi/statehood to 7.0.4 ([#3411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3411)) -- [CVE-2023-25166] Bump formula to 3.0.1 ([#3416](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3416)) -- [CVE-2023-25653] Bump node-jose to 2.2.0 ([#3445](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3445)) -- [CVE-2023-26486][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)) -- [Multi DataSource] Add private IP blocking validation on server side ([#3912](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3912)) +- [CVE-2022-37599] Bump loader-utils from `2.0.3` to `2.0.4` ([#3031](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3031)). Backwards-compatible fixes included in v2.6.0 and v1.3.7 releases. +- [CVE-2022-37603] Bump loader-utils from `2.0.3` to `2.0.4` ([#3031](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3031)). Backwards-compatible fixes included in v2.6.0 and v1.3.7 releases. +- [WS-2021-0638] Bump mocha from `7.2.0` to `10.1.0` ([#2711](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2711)) - 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)) -- [CVE-2023-2251] Bump yaml to 2.2.2 ([#3947](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3947)) ### 📈 Features/Enhancements -- [MD] Support legacy client for data source ([#2204](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2204)) -- [MD] Add data source signing support ([#2510](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2510)) -- [Plugin Helpers] Facilitate version changes ([#2398](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2398)) -- [MD] Display error toast for create index pattern with data source ([#2506](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2506)) -- [Multi DataSource] UX enhancement on index pattern management stack ([#2505](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2505)) -- [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 ([#2527](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2527)) -- [Multi DataSource] Add data source column into index pattern table ([#2542](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2542)) -- [Multi DataSource] UX enhancement for Data source management creation page ([#2051](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2501)) -- [Multi DataSource] Add experimental callout for index pattern section ([#2523](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2523)) -- [Multi DataSource] Add data source config to opensearch-dashboards-docker ([#2557](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2557)) -- [Multi DataSource] Make text content dynamically translated & update unit tests ([#2570](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2570)) -- [Vis Builder] Change classname prefix wiz to vb ([#2581](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2581/files)) -- [Vis Builder] Change wizard to vis_builder in file names and paths ([#2587](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2587)) -- [Windows] Facilitate building and running OSD and plugins on Windows platforms ([#2601](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2601)) -- [Windows] Add `@osd/cross-platform` package to standardize path handling across platforms ([#2703](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2703)) -- [Multi DataSource] Address UX comments on Data source list and create page ([#2625](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2625)) -- [Vis Builder] Rename wizard to visBuilder in i18n id and formatted message id ([#2635](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2635)) -- [Vis Builder] Rename wizard to visBuilder in class name, type name and function name ([#2639](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2639)) -- [Vis Builder] Rename wizard on save modal and visualization table ([#2645](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2645)) -- [Vis Builder] Adds functional tests to CI ([#2728](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2728)) -- [Vis Builder] Enable VisBuilder by default ([#2725](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2725)) -- Change save object type, wizard id and name to visBuilder #2673 ([#2673](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2673)) -- [Multi DataSource] Update MD data source documentation link ([#2693](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2693)) -- [Save Object Aggregation View] Add extension point in saved object management to register namespaces and show filter ([#2656](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2656)) -- [Save Object Aggregation View] Fix for export all after scroll count response changed in PR#2656 ([#2696](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2696)) -- [Vis Builder] Add an experimental table visualization in vis builder ([#2705](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2705)) -- [Vis Builder] Add field summary popovers ([#2682](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2682)) -- [I18n] Register ru, ru-RU locale ([#2817](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2817)) -- Add yarn opensearch arg to setup plugin dependencies ([#2544](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/2544)) -- [Multi DataSource] Test the connection to an external data source when creating or updating ([#2973](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2973)) -- Add Dashboards-list integrations for Plugins ([#3090](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3090) ) -- [Table Visualization] Refactor table visualization using React and DataGrid component ([#2863](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2863)) -- [Vis Builder] Add redux store persistence ([#3088](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3088)) -- [Multi DataSource] Improve test connection ([#3110](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3110)) -- [Vis Builder] Add app filter and query persistence without using state container ([#3100](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3100)) -- [Optimizer] Increase timeout waiting for the exiting of an optimizer worker ([#3193](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3193)) -- [Data] Update `createAggConfig` so that newly created configs can be added to beginning of `aggConfig` array ([#3160](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3160)) -- 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)) -- 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)) -- [Multiple DataSource] Refactor test connection to support SigV4 auth type ([#3456](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3456)) -- [Darwin] Add support for Darwin for running OpenSearch snapshots with `yarn opensearch snapshot` ([#3537](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3537)) -- [Vis Builder] Add metric to metric, bucket to bucket aggregation persistence ([#3495](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3495)) -- Use mirrors to download Node.js binaries to escape sporadic 404 errors ([#3619](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3619)) -- [Multiple DataSource] Refactor dev tool console to use opensearch-js client to send requests ([#3544](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3544)) -- Add `osd-xsrf` header to all requests that incorrectly used `node-version` to satisfy XSRF protection ([#3643](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3643)) -- [Data] Add geo shape filter field ([#3605](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3605)) -- [Notifications] Adds id to toast api for deduplication ([#3752](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3752)) -- [VisBuilder] Add UI actions handler ([#3732](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3732)) -- [Dashboard] Indicate that IE is no longer supported ([#3641](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3641)) -- [UI] Add support for comma delimiters in the global filter bar ([#3686](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3686)) -- [Multiple DataSource] Allow create and distinguish index pattern with same name but from different datasources ([#3571](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3571)) -- [Multiple DataSource] Integrate multiple datasource with dev tool console ([#3754](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3754)) -- Add satisfaction survey link to help menu ([#3676] (https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3676)) -- [Vis Builder] Add persistence to visualizations inner state ([#3751](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3751)) -- [Table Visualization] Move format table, consolidate types and add unit tests ([#3397](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3397)) +- Add plugin manifest config to define OpenSearch plugin dependency and verify if it is installed on the cluster ([#3116](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3116)) +- Replace re2 with RegExp in timeline and add unit tests ([#3908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3908)) +- 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)) +- [@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)) + +### 🐛 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)) +- [Saved Objects Management] Fix relationships header overflow ([#4070](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4070)) + +### 🚞 Infrastructure + +- Re-enable CI workflows for feature branches ([#2908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2908)) +- Upgrade yarn version to be compatible with @opensearch-project/opensearch ([#3443](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3443)) +- Add an achievement badger to the PR ([#3721](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3721)) +- 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)) + +### 📝 Documentation + +- [Doc] Add COMMUNICATIONS.md with info about Slack, forum, office hours ([#3837](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3837)) +- [Saved Object Service] Adds design doc for new Saved Object Service Interface for Custom Repository [#3954](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3954) +- Add plugin development section in DEVELOPER_GUIDE.md ([#778](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3989)) + +### 🛠 Maintenance + +- Removes `minimatch` manual resolution ([#3019](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3019)) +- Upgrade `vega-lite` dependency from `4.17.0` to `^5.6.0` ([#3076](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3076)). Backwards-compatible version included in v2.5.0 release. +- Bump `js-yaml` from `3.14.0` to `4.1.0` ([#3770](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3770)) +- 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)) + +### 🪛 Refactoring + +- [Console] Remove unused ul element and its custom styling ([#3993](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3993)) +- Fix EUI/OUI type errors ([#3798](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3798)) +- Remove unused Sass in `tile_map` plugin ([#4110](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4110)) +- [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)) +- 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)) +- [Vis Colors] Replace color maps with OUI color palettes ([#4293](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4293)) +- [Vis Colors] [Maps] Replace hardcoded color to OUI color in `maps_legacy` plugin ([#4294](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4294)) +- [Vis Colors] [TSVB] Update default color in `vis_type_timeseries` to use `ouiPaletteColorBlind()[0]`([#4363](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4363)) +- [Vis Colors] [Timeline] Replace `vis_type_timeline` colors with `ouiPaletteColorBlind()` ([#4366](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4366)) + +### 🔩 Tests + +## [2.8.0 - 2023-06-06](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.8.0) + +### Deprecations + +- Remove timeline application ([#3971](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3971)) + +### 🛡 Security + +- [CVE-2023-2251] Bump `yaml` to `2.2.2` ([#3947](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3947)) + +### 📈 Features/Enhancements + - [Multiple Datasource] Support Amazon OpenSearch Serverless ([#3957](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3957)) - Add support for Node.js >=14.20.1 <19 ([#4071](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4071)) - Bundle Node.js 14 as a fallback for operating systems that cannot run Node.js 18 ([#4151](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4151)) +- Enhance grouping for context menus ([#3924](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3924)) + +### 🐛 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)) + +### 🪛 Refactoring + +### 🔩 Tests + +## [1.3.10 - 2023-05-18](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.7.0) + +### 🛡 Security + +- [CVE-2020-15366][1.x] Bump ajv from 4.11.8 to 6.12.6 ([#4035](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4035)) +- [CVE-2022-48285][1.x] Bump jszip from 3.7.1 to 3.10.1 ([#4011](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4011)) +- [CVE-2021-35065][1.x] Bump glob-parent from 6.0.0 to 6.0.2 ([#4005](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4005)) +- [CVE-2022-25851][1.x] Bump jpeg-js from 0.4.1 to 0.4.4 ([#3860](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3860)) +- [CVE-2022-25858][1.x] Bump terser from 4.8.0 to 4.8.1 ([#3786](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3786)) +- [CVE-2021-23490][1.x] Bump parse-link-header from 1.0.1 to 2.0.0 ([#3820](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3820)) +- [CVE-2021-3765][1.x] Bump validator from 8.2.0 to 13.9.0 ([#3753](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3753)) +- [CVE-2022-25758][1.x] Bump scss-tokenizer from 0.3.0 to 0.4.3 ([#3789](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3789)) +- [CVE-2021-3803][1.x] Bump nth-check from 1.0.2 to 2.0.1 ([#3745](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3745)) +- Bump highlight.js from 9.18.5 to 10.7.3 to solve security concerns ([#4062](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4062)) + +### 📈 Features/Enhancements + +- Add tooltip to help icon ([#3872](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3872)) + +### 🐛 Bug Fixes + +### 📝 Documentation + +- Update jest documentation links ([#3939](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3939)) + +### 🛠 Maintenance + +- Add threshold to code coverage changes for project ([#4050](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4050)) +- Temporarily hardcode chromedriver to 112.0.0 to enable all ftr tests ([#4039](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4039)) +- Update MAINTAINERS.md and CODEOWNERS ([#3938](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3938)) +- Add opensearch-dashboards-docker-dev to .gitignore ([#3781](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3781)) + +### 🪛 Refactoring + +### 🔩 Tests + +## [2.7.0 - 2023-05-02](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.7.0) + +### Deprecations + +### 🛡 Security + +- [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)) +- [Multi DataSource] Add private IP blocking validation on server side ([#3912](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3912)) + +### 📈 Features/Enhancements + +- Add satisfaction survey link to help menu ([#3676](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3676)) +- Add `osd-xsrf` header to all requests that incorrectly used `node-version` to satisfy XSRF protection ([#3643](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3643)) +- [Dashboard] Add Dashboards-list integrations for Plugins ([#3090](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3090) ) +- [Data] Add geo shape filter field ([#3605](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3605)) +- [Doc Links] Add downgrade logic for branch in DocLinkService ([#3483](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3483)) +- [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)) +- [Vega] Add Filter custom label for opensearchDashboardsAddFilter ([#3640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3640)) +- [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)) ### 🐛 Bug Fixes -- [Vis Builder] Fixes auto bounds for timeseries bar chart visualization ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) -- [Vis Builder] Fixes visualization shift when editing agg ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) -- [Vis Builder] Renames "Histogram" to "Bar" in vis type picker ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) -- [Vis Builder] Update vislib params and misc fixes ([2610](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2610)) -- [Vis Builder] Bug fixes for datasource picker and auto time interval ([2632](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2632)) -- [MD] Add data source param to low-level search call in Discover ([#2431](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2431)) -- [Multi DataSource] Skip data source view in index pattern step when pick default ([#2574](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2574)) -- [Multi DataSource] Address UX comments on Edit Data source page ([#2629](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2629)) -- [BUG] Fix suggestion list cutoff issue ([#2607](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2607)) -- [Multi DataSource] Address UX comments on index pattern management stack ([#2611](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2611)) -- [Multi DataSource] Apply get indices error handling in step index pattern ([#2652](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2652)) -- [Vis Builder] Last Updated Timestamp for visbuilder savedobject is getting Generated ([#2628](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2628)) -- [Vis Builder] fixes filters for table visualisation ([#3210](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3210)) -- Removed Leftover X Pack references ([#2638](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2638)) -- Removes Add Integration button ([#2723](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2723)) -- Change geckodriver version to make consistency ([#2772](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2772)) -- [Multi DataSource] Update default audit log path ([#2793](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2793)) -- [Table Visualization] Fix first column sort issue ([#2828](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2828)) -- Temporary workaround for task-kill exceptions on Windows when it is passed a pid for a process that is already dead ([#2842](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2842)) -- [Vis Builder] Fix empty workspace animation does not work in firefox ([#2853](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2853)) -- Bumped `del` version to fix MacOS race condition ([#2847](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2873)) -- [Chore] Update deprecated url methods (url.parse(), url.format()) ([#1561](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/1561)) -- [Build] Fixed "Last Access Time" not being set by `scanCopy` on Windows ([#2964](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2964)) -- [Vis Builder] Add global data persistence for vis builder #2896 ([#2896](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2896)) -- Update `leaflet-vega` and fix its usage ([#3005](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3005)) -- [Table Visualization][bug] Fix Url content display issue in table ([#2918](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2918)) -- Fixes misleading embaddable plugin error message ([#3043](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3043)) -- [MD] Update dummy url in tests to follow lychee url allowlist ([#3099](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3099)) -- Adds config override to fix obsolete theme:version config value of v8 (beta) rendering issue ([#3045](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3045)) -- [CI] Update test workflow to increase network-timeout for yarn for installing dependencies ([#3118](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3118)) -- [VisBuilder] Fixes pipeline aggs ([#3137](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3137)) -- [Region Maps] Fixes bug that prevents selected join field to be used ([#3213](Fix bug that prevents selected join field to be used)) -- [Multi DataSource]Update test connection button text([#3247](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3247)) -- [Region Maps] Add ui setting to configure custom vector map's size parameter([#3399](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3399)) -- [Search Telemetry] Fixes search telemetry's observable object that won't be GC-ed([#3390](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3390)) - Clean up and rebuild `@osd/pm` ([#3570](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3570)) - Omit adding the `osd-version` header when the Fetch request is to an external origin ([#3643](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3643)) -- [Vega] Add Filter custom label for opensearchDashboardsAddFilter ([#3640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3640)) +- [Console] Fix/update documentation links in Dev Tools console ([#3724](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3724)) +- [Console] Fix dev tool console autocomplete not loading issue ([#3775](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3775)) +- [Console] Fix dev tool console run command with query parameter error ([#3813](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3813)) +- [Table Visualization] Fix table rendering empty unused space ([#3797](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3797)) +- [Table Visualization] Fix data table not adjusting height on the initial load ([#3816](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3816)) - [Timeline] Fix y-axis label color in dark mode ([#3698](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3698)) +- [TSVB] Fix undefined serial diff aggregation documentation link ([#3503](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3503)) +- [UI] Add clarifying tooltips to header navigation icons ([#3626](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3626)) - [VisBuilder] Fix multiple warnings thrown on page load ([#3732](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3732)) - [VisBuilder] Fix Firefox legend selection issue ([#3732](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3732)) - [VisBuilder] Fix type errors ([#3732](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3732)) - [VisBuilder] Fix indexpattern selection in filter bar ([#3751](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3751)) -- [Table Visualization] Fix table rendering empty unused space ([#3797](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3797)) -- [Table Visualization] Fix data table not adjusting height on the initial load ([#3816](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3816)) -- Cleanup unused url ([#3847](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3847)) -- [BUG] Docked navigation impacts visibility of bottom bar component ([#3978](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3978)) ### 🚞 Infrastructure -- Add CHANGELOG.md and related workflows ([#2414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2414)) -- Update backport custom branch name to utilize head template ([#2766](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2766)) -- Re-enable CI workflows for feature branckes ([#2908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2908)) -- Add Windows CI workflows ([#2966](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2966)) -- Add automatic selection of the appropriate version of chrome driver to run functional tests ([#2990](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2990)) -- Add recording of functional test artifacts if they fail ([#3190](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3190)) -- Improve yarn's performance in workflows by caching yarn's cache folder ([#3194](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3194)) -- Fix detection of Chrome's version on Darwin during CI ([#3296](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3296)) -- Upgrade yarn version to be compatible with @openearch-project/opensearch ([#3443](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3443)) +- Use mirrors to download Node.js binaries to escape sporadic 404 errors ([#3619](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3619)) +- [CI] Update NOTICE file, add validation to GitHub CI ([#3051](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3051)) - [CI] Reduce redundancy by using matrix strategy on Windows and Linux workflows ([#3514](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3514)) -- Add an achievement badger to the PR ([#3721](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3721)) -- 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)) -- Adds threshold to code coverage config to prevent workflow failures ([#4040](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4040)) +- [Darwin] Add support for Darwin for running OpenSearch snapshots with `yarn opensearch snapshot` ([#3537](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3537)) ### 📝 Documentation -- Add the release runbook to RELEASING.md ([#2533](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2533)) -- [MD] Add design documents of multiple data source feature [#2538](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2538) -- [MD] Tweak multiple data source design doc [#2724](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2724) -- Corrected README and help command of osd-plugin-helpers ([#2810](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2810)) -- Add `current-usage.md` and more details to `README.md` of `charts` plugin ([#2695](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2695)) -- [Doc] Add readme for global query persistence ([#3001](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3001)) -- Updates NOTICE file, adds validation to GitHub CI ([#3051](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3051)) -- [Doc] Add current plugin persistence implementation readme ([#3081](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3081)) -- [Doc] Improve DEVELOPER_GUIDE to make first time setup quicker and easier ([#3421](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3421)) - Correct copyright date range of NOTICE file and notice generator ([#3308](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3308)) - Simplify the in-code instructions for upgrading `re2` ([#3328](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3328)) +- [Doc] Improve DEVELOPER_GUIDE to make first time setup quicker and easier ([#3421](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3421)) +- [Doc] Update DEVELOPER_GUIDE with added manual bootstrap timeout solution and max virtual memory error solution with docker ([#3764](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3764)) +- [Doc] Add second command to install yarn step in DEVELOPER_GUIDE ([#3633](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3633)) - [Doc] Add docker dev set up instruction ([#3444](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3444)) -- [Doc] UI actions explorer ([#3614](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3614)) -- [Doc] Update SECURITY.md with instructions for nested dependencies and backporting ([#3497](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3497)) -- [Doc] [Console] Fix/update documentation links in Dev Tools console ([#3724](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3724)) -- [Doc] Update DEVELOPER_GUIDE.md with added manual bootstrap timeout solution and max virtual memory error solution with docker ([#3764](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3764)) -- [Doc] Add COMMUNICATIONS.md with info about Slack, forum, office hours ([#3837](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3837)) - [Doc] Add docker files and instructions for debugging Selenium functional tests ([#3747](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3747)) -- [Saved Object Service] Adds design doc for new Saved Object Service Interface for Custom Repository [#3954](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3954) +- [Doc] Update SECURITY with instructions for nested dependencies and backporting ([#3497](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3497)) +- [TSVB] Fix typo in TSVB README ([#3518](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3518)) +- [UI Actions] Improve UI actions explorer ([#3614](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3614)) ### 🛠 Maintenance -- Adding @zhongnansu as maintainer. ([#2590](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2590)) -- [Timeline] Update default expressions from `.es(*)` to `.opensearch(*)`. ([2720](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2720)) -- Removes `minimatch` manual resolution ([#3019](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3019)) -- Remove `github-checks-reporter`, an unused dependency ([#3126](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3126)) -- Upgrade `vega-lite` dependency to ^5.6.0 ([#3076](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3076)) -- Bumps `re2` and `supertest` ([3018](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3018)) -- Bump `vega-tooltip` version from ^0.24.2 to ^0.30.0 ([#3358](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3358)) -- Allow relaxing the Node.js runtime version requirement ([3402](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3402)) -- Relax the Node.js requirement to `^14.20.1` ([3463](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3463)) -- Bump the version of Node.js installed by `nvm` to `14.21.3` ([3463](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3463)) -- Remove the unused `renovate.json5` file ([3489](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3489)) -- Allow selecting the Node.js binary using `NODE_HOME` and `OSD_NODE_HOME` ([3508](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3508)) -- Bump `styled-components` from 5.3.5 to 5.3.9 ([#3678](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3678)) -- Bump `js-yaml` from 3.14.0 to 4.1.0 ([#3770](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3770)) -- Bump `oui` from `1.0.0` to `1.1.1` ([#3884](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3884)) -- Use `exec` in the CLI shell scripts to prevent new process creation ([#3955](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3955)) -- Adding @ZilongX and @Flyingliuhub as maintainers. ([#4137](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4137)) -- Remove timeline application ([#3971](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3971)) +- Relax the Node.js requirement to `^14.20.1` ([#3463](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3463)) +- Bump the version of Node.js installed by `nvm` to `14.21.3` ([#3463](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3463)) +- 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)) +- [Timeline] Update default expressions from `.es(*)` to `.opensearch(*)`. ([#2720](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2720)) ### 🪛 Refactoring -- [MD] Refactor data source error handling ([#2661](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2661)) -- Refactor and improve Discover field summaries ([#2391](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2391)) -- [Vis Builder] Removed Hard Coded Strings and Used i18n to transalte([#2867](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2867)) -- [Console] Replace jQuery.ajax with core.http when calling OSD APIs in console ([#3080](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3080)) +- 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)) -- [Console] Remove unused ul element and its custom styling ([#3993](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3993)) -- Fix EUI/OUI type errors ([#3798](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3798)) -- Remove unused Sass in `tile_map` plugin ([#4110](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4110)) -- Migrate from legacy elasticsearch client to opensearch-js client in `osd-opensearch-archiver` package([#4142](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4142)) +- [Table Visualization] Move format table, consolidate types and add unit tests ([#3397](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3397)) ### 🔩 Tests -- [Multi DataSource] Add unit test coverage for Update Data source management stack ([#2567](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2567)) -- [BWC Tests] Add BWC tests for 2.5.0 ([#2890](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2890)) -- Add retrial of flaky tests ([#2967](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2967)) -- Fix incorrect validation of time values in JUnit Reporter ([#2965](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2965)) -- Make tests covering plugin installation on cluster snapshots work across platforms ([#2994](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2994)) -- Correct the linting logic for `no-restricted-path` to ignore trailing slashes ([#3020](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3020)) -- [Tests] Bumps `chromedriver` to v107 ([#3017](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3017)) -- [Vis Builder] Adds field unit tests ([#3211](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3211)) -- [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)) +- 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.x] +## [1.3.9 - 2023-04-04](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/1.3.9) -### 💥 Breaking Changes +### 🛡 Security + +- [CVE-2022-2499] Resolve qs from 6.5.2 and 6.7.0 to 6.11.0 in 1.x ([#3451](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3451)) +- [CVE-2020-36632] [REQUIRES PLUGIN VALIDATION] Bump flat from 4.1.1 to 5.0.2 ([#3539](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3539)). To the best of our knowledge, this is a non-breaking change, but if your plugin relies on `mocha` tests, validate that they still work correctly (and plan to migrate them to `jest` [in preparation for `mocha` deprecation](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1572). +- [CVE-2023-25653] Bump node-jose to 2.2.0 ([#3445](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3445)) +- [CVE-2021-23807] Bump jsonpointer from 4.1.0 to 5.0.1 ([#3535](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3535)) +- [CVE-2021-23424] Bump ansi-html from 0.0.7 to 0.0.8 ([#3536](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3536)) +- [CVE-2022-24999] Bump express from 4.17.1 to 4.18.2 ([#3542](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3542)) + +### 📈 Features/Enhancements + +- [I18n] Register ru, ru-RU locale ([#2817](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2817)) + +### 🐛 Bug Fixes + +- [TSVB] Fix the link to "serial differencing aggregation" documentation ([#3503](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3503)) + +### 📝 Documentation + +- [TSVB] Fix a spelling error in the README file ([#3518](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3518)) +- Simplify the in-code instructions for upgrading `re2` ([#3328](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3328)) +- [Doc] Improve DEVELOPER_GUIDE to make first time setup quicker and easier ([#3421](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3421)) + +### 🛠 Maintenance + +- Update MAINTAINERS.md formatting and maintainer list ([#3338](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3338)) +- Remove `github-checks-reporter`, an unused dependency ([#3126](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3126)) +- [Version] Increment to 1.3.9 ([#3375](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3375)) +- Remove the unused `renovate.json5` file ([3489](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3489)) + +## [2.6.0 - 2023-02-28](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.6.0) ### Deprecations +- [CVE-2020-36632] [REQUIRES PLUGIN VALIDATION] Bump flat from `4.1.1` to `5.0.2` ([#3419](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3419)). To the best of our knowledge, this is a non-breaking change, but if your plugin relies on `mocha` tests, validate that they still work correctly (and plan to migrate them to `jest` [in preparation for `mocha` deprecation](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1572). + ### 🛡 Security +- [CVE-2022-37599] Bump loader-utils from `2.0.3` to `2.0.4` ([#3318](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3318)) +- [CVE-2022-37603] Bump loader-utils from `2.0.3` to `2.0.4` ([#3318](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3318)) +- [CVE-2022-25860] Bump simple-git from `3.15.1` to `3.16.0` ([#3345](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3345)) +- [CVE-2022-25881] Resolve http-cache-semantics from `4.1.0` to `4.1.1` ([#3409](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3409)) +- [Security] Bump hapi/statehood from `7.0.3` to `7.0.4` ([#3411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3411)) +- [CVE-2023-25166] Bump formula from `3.0.0` to `3.0.1` ([#3416](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3416)) +- [CVE-2020-36632] [REQUIRES PLUGIN VALIDATION] Bump flat from `4.1.1` to `5.0.2` ([#3419](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3419)). To the best of our knowledge, this is a non-breaking change, but if your plugin relies on `mocha` tests, validate that they still work correctly (and plan to migrate them to `jest` [in preparation for `mocha` deprecation](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1572). +- [CVE-2023-25653] Bump node-jose from `2.1.1` to `2.2.0` ([#3445](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3445)) +- [CVE-2022-24999] Resolve qs from `6.5.3` to `6.11.0` ([#3450](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3450)) +- [CVE-2022-25758] Bump node-sass from `6.0.1` to `7.0.3` and sass-loader from `10.2.1` to `10.4.1` to bump scss-tokenizer from `0.2.3` to `0.4.3` ([#3455](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3455)) +- [CVE-2020-24025] Bump node-sass from `6.0.1` to `7.0.3` ([#3455](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3455)) + +### 📈 Features/Enhancements + +- 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/pull/3456)) + +### 🐛 Bug Fixes + +- [Search Telemetry] Fix search telemetry's observable object that won't be GC-ed([#3390](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3390)) +- [Region Maps] Add ui setting to configure custom vector map's size parameter([#3399](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3399)) + +### 🚞 Infrastructure + +- Fix detection of Chrome's version on Darwin during CI ([#3296](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3296)) + +### 📝 Documentation + +- [Docs] Fix documentation link for date math ([#3207](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3207)) + +### 🛠 Maintenance + +- 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/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 + +### 🔩 Tests + +- [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)) + +## [1.3.8 - 2023-02-15](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/1.3.8) + +### 🛡 Security + +- [CVE-2022-25901] Bump supertest from 2.0.5 to 2.0.12 ([#3326](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3326)) +- [CVE-2022-25860] Bump simple-git from 3.15.1 to 3.16.0 ([#3345](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3345)) +- [CVE-2022-46175] Bump json5 version from 1.0.1 and 2.2.1 to 1.0.2 and 2.2.3 ([#3201](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3201)) +- [CVE-2022-25912] Bump simple-git from 3.4.0 to 3.15.0 ([#3036](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3036)) +- Bump decode-uri-component from 0.2.0 to 0.2.2 ([#3009](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3009)) + +### 🐛 Bug Fixes + +- [BUG] Fixes misleading embeddable plugin error message ([#3043](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3043)) +- [BUG] Trim trailing slashes before checking no-restricted-path rule ([#3020](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3020)) + +### 🚞 Infrastructure + +- Lock workflow tests to Chrome and ChromeDriver 107 as the last combination that run on Node.js v10 ([#3299](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3299)) +- Update yarn timeout for GitHub workflow on Windows ([#3118](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3118)) +- Add Windows CI to the GitHub workflow ([#2966](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2966)) + +### 📝 Documentation + +- Fix documentation link for date math ([#3207](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3207)) + +### 🔩 Tests + +- [BWC] Updates to BWC tests ([#1190](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/1190)) +- Automates chromedriver version selection for tests ([#2990](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2990)) + +## [2.5.0 - 2023-01-25](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.5.0) + +### 🛡 Security + +- Introduce guidelines for reporting vulnerable dependencies ([#2674](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2674)) +- Bump decode-uri-component from 0.2.0 to 0.2.2 ([3009](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3009)) +- [CVE-2022-25912] Bump simple-git from 3.4.0 to 3.15.0 ([#3036](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3036)) +- [CVE-2022-35256] Bump node version from 14.20.0 to 14.20.1 [#3166](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3166)) +- [CVE-2022-46175] Bump json5 version from 1.0.1 and 2.2.1 to 1.0.2 and 2.2.3 ([#3201](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3201)) + +### 📈 Features/Enhancements + +- [CLI] Enhance `yarn opensearch snapshot` to facilitate installing plugins on an OpenSearch cluster ([#2734](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2734)) +- [I18n] Register ru, ru-RU locale ([#2817](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2817)) +- [Multi DataSource] Introduce validation of new or modified connections to external data sources ([#2973](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2973), [#3110](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3110)) +- [VisBuilder] Create global data persistence for VisBuilder ([#2896](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2896)) +- [VisBuilder] Introduce Redux store persistence ([#3088](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3088)) +- [VisBuilder] Enable persistence for app filter and query without using state containers ([#3100](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3100)) +- [Data] Make the newly created configurations get added to beginning of the `aggConfig` array when using `createAggConfig` ([#3160](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3160)) +- [Optimizer] Increase the amount of time an optimizer worker is provided to exit before throwing an error ([#3193](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3193)) + +### 🐛 Bug Fixes + +- Upgrade the `del` library to fix a race condition on macOS ([#2847](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2873)) +- [Table Visualization] Fix a problem with table visualizations that prevented URLs from being rendered correctly ([#2918](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2918)) +- [Embeddable] Fix a misleading error message ([#3043](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3043)) +- Fix rendering issues when the obsolete `v8 (beta)` theme was carried over by an upgrade ([#3045](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3045)) +- [Multi Datasource] Replace the mock URL in tests ([#3099](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3099)) +- [CI] Increase Yarn's timeout for installing dependencies in workflows ([#3118](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3118)) +- [VisBuilder] Fix an issue that caused a crash when certain filters were added to a table visualization ([#3210](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3210)) +- [VisBuilder] Fix errors throws when pipeline aggregations, like cumulative sum, were used in VisBuilder ([#3137](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3137)) +- [Region Maps] Fix the problem of join fields being unusable ([#3213](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3213)) +- [Multi DataSource] Update test connection button text ([#3247](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3247)) + +### 🚞 Infrastructure + +- Bump the version of the `2.x` branch to 2.5.0 ([#2884](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2884)) +- [CI] Create workflows that test and build on Windows ([#2966](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2966)) +- [CI] Automate ChromeDriver installation for running functional tests ([#2990](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2990)) +- Create the Release Notes for the 1.3.7 release ([#3066](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3066)) +- [CI] Improve workflows by retaining Yarn's cache folder ([#3194](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3194)) + +### 📝 Documentation + +- Publish the release runbook ([#2533](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2533)) +- Document the capabilities of the Charts plugin and its current usage ([#2695](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2695)) +- Document the correct version selection switch in `@osd/plugin-helpers` ([#2810](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2810)) +- Document the global query persistence ([#3001](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3001)) +- Document data persistence for plugins ([#3081](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3081)) + +### 🪛 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)) +- [Table Visualization] Refactor table visualization using React and DataGrid component ([#2863](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2863)) + +### 🛠 Maintenance + +- Remove an unused dependency on `github-checks-reporter` ([#3126](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3126)) +- Introduce `vega-lite@5`, aliased as `vega-lite-next` ([#3151](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3151)) + +### 🔩 Tests + +- Enable retrying of flaky tests ([#2967](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2967)) +- Enhance cross-platform testing of plugin installation on cluster snapshots ([#2994](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2994)) +- [Tests] Bump `chromedriver` to v107 ([#3017](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3017)) +- [CI] Disable the execution of the Build and Test workflow when the changes are limited to the docs folder ([#3197](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3197)) +- 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 - 2022-12-14](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.4.1) + +### 🐛 Bug Fixes + +- Update `leaflet-vega` and fixed its usage ([#3005](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3005)) + +### 🔩 Tests + +- Correct the linting logic for `no-restricted-path` to ignore trailing slashes ([#3020](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3020)) + +## [1.3.7 - 2022-12-14](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/1.3.7) + +### 🛡 Security + +- [CVE-2022-0144] Bump shelljs from 0.8.4 to 0.8.5 ([#2511](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2511)) +- [Legacy Maps Plugin] Prevent reverse-tabnabbing ([#2540](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2540)) +- [CVE-2022-3517] Bump minimatch from 3.0.4 to 3.0.5 and [IBM X-Force ID: 220063] unset-value from 1.0.1 to 2.0.1 ([#2640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2640)) +- [CVE-2022-0155] Bump follow-redirects to 1.15.2 ([#2653](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2653)) +- [CVE-2022-0536] Bump follow-redirects to 1.15.2 ([#2653](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2653)) +- [CVE-2021-24033] Remove storybook package ([#2660](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2660)) +- [CVE-2021-42740] Remove storybook package ([#2660](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2660)) +- [CVE-2022-23647] Bump prismjs to 1.29.0 ([#2668](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2668)) +- [CVE-2022-37599] Bump loader-utils to 2.0.4 ([#2995](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2995)) +- [CVE-2022-37603] Bump loader-utils to 2.0.4 ([#2995](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2995)) + +### 📈 Features/Enhancements + +- [Windows] Facilitate building and running OSD and plugins on Windows platforms ([#2601](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2601)) +- [Windows] Add helper functions to work around the differences of platforms ([#2681](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2681)) +- [Windows] Add `@osd/cross-platform` package to standardize path handling across platforms ([#2703](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2703)) + +### 🐛 Bug Fixes + +- [Chore] Visualize link fix [#2395](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2395) +- [BUG] Fix suggestion list cutoff issue ([#2607](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2607)) +- Remove Leftover X Pack references ([#2638](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2638)) +- Bump `del` version to fix MacOS race condition ([#2847](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2873)) +- Temporary workaround for task-kill exceptions on Windows when it is passed a pid for a process that is already dead ([#2842](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2842)) +- [Build] Fixed "Last Access Time" not being set by `scanCopy` on Windows ([#2964](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2964)) +- Update `leaflet-vega` and fix its usage ([#3005](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3005)) + +### 🚞 Infrastructure + +- Update backport custom branch name to utilize head template ([#2766](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2766)) + +### 📝 Documentation + +- Add the release runbook to RELEASING.md ([#2533](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2533)) +- Security-CVEs fixes guidelines [#2674](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2674) +- Correct README and help command of osd-plugin-helpers ([#2810](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2810)) + +### 🛠 Maintenance + +- Increment version to 1.3.7 [#2528](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2528) + +### 🔩 Tests + +- Bump `chromedriver` to 106 to fix function test fail issue [#2514](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2514) +- Fix incorrect validation of time values in JUnit Reporter ([#2965](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2965)) + +## [2.4.0 - 2022-11-15](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/2.4.0) + +### 🛡 Security + +- Bump percy-agent to use non-beta version ([#2415](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2415)) - Use a forced CSP-compliant interpreter with Vega visualizations ([#2352](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2352)) -- Bump moment-timezone from 0.5.34 to 0.5.37 ([#2361](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2361)) +- [CVE-2022-33987] Bump makelogs to remove dependency on got ([#2801](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2801)) - [CVE-2022-33987] Upgrade geckodriver to 3.0.2 ([#2166](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2166)) -- Bumps percy-agent to use non-beta version ([#2415](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2415)) -- Resolve sub-dependent d3-color version and potential security issue ([#2454](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2454)) -- [CVE-2022-3517] Bumps minimatch from 3.0.4 to 3.0.5 and [IBM X-Force ID: 220063] unset-value from 1.0.1 to 2.0.1 ([#2640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2640)) -- [CVE-2022-37601] Bump loader-utils to 2.0.3 ([#2689](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2689)) -- [CVE-2022-37599] Bump loader-utils to 2.0.4 ([#3031](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3031)) -- [CVE-2022-37603] Bump loader-utils to 2.0.4 ([#3031](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3031)) -- [WS-2021-0638][security] bump mocha to 10.1.0 ([#2711](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2711)) -- [CVE-2022-25881] Resolve http-cache-semantics to 4.1.1 ([#3409](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3409)) +- [CVE-2022-3517] Bump minimatch to 3.0.5 and [IBM X-Force ID: 220063] unset-value to 2.0.1 ([#2640](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2640)) +- [CVE-2022-37601] Bump loader-utils to 2.0.3 ([#2706](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2706)) +- [GMS-2022-4708] Resolve sub-dependent d3-color version and potential security issue ([#2454](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2454)) +- [Legacy Maps] Prevent reverse-tabnabbing ([#2540](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2540)) +- [WS-2022-0284] [WS-2022-0280] Bump moment-timezone from 0.5.34 to 0.5.37 ([#2361](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2361)) +- [Multi DataSource] Prevent spell-checking the password fields ([#2818](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2818)) ### 📈 Features/Enhancements -- Add updated_at column to objects' tables ([#1218](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/1218)) -- [Viz Builder] State validation before dispatching and loading ([#2351](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2351)) -- [Viz Builder] Create a new wizard directly on a dashboard ([#2384](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2384)) -- [Viz Builder] Edit wizard directly on dashboard ([#2508](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2508)) -- [Multi DataSource] UX enhacement on index pattern management stack ([#2505](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2505)) +- 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)) +- Improve Discover field summaries ([#2391](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2391)) +- Remove Add Integration button ([#2723](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2723)) +- [Multi DataSource] Add data source column into index pattern table ([#2542](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2542)) +- [Multi DataSource] Add data source config to opensearch-dashboards-docker ([#2557](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2557)) +- [Multi DataSource] Add data source signing support ([#2510](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2510)) +- [Multi DataSource] Add experimental callout for index pattern section ([#2523](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2523)) +- [Multi DataSource] Address UX comments on Data source list and create page ([#2625](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2625)) +- [Multi DataSource] Apply get indices error handling in step index pattern ([#2652](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2652)) +- [Multi DataSource] Display error toast for create index pattern with data source ([#2506](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2506)) +- [Multi DataSource] Make text content dynamically translated & update unit tests ([#2570](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2570)) +- [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))([#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)) -- [Monaco editor] Add json worker support ([#3424](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3424)) -- Enhance grouping for context menus ([#3169](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3169)) -- Replace re2 with RegExp in timeline and add unit tests ([#3908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3908)) +- [Plugin Helpers] Facilitate version changes ([#2398](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2398)) +- [VisBuilder] Add an experimental table visualization in vis builder ([#2705](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2705)) +- [VisBuilder] Add field summary popovers ([#2682](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2682)) +- [VisBuilder] Add index pattern info when loading embeddable ([#2363](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2363)) +- [VisBuilder] Add state validation before dispatching and loading ([#2351](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2351)) +- [VisBuilder] Change VisBuilder flag for docker config ([#2804](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2804)) +- [VisBuilder] Change classname prefix wiz to vb ([#2581](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2581/files)) +- [VisBuilder] Change save object type, wizard id and name to visBuilder ([#2673](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2673)) +- [VisBuilder] Change wizard to vis_builder in file names and paths ([#2587](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2587)) +- [VisBuilder] Create a new wizard directly on a dashboard ([#2384](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2384)) +- [VisBuilder] Edit wizard directly on dashboard ([#2508](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2508)) +- [VisBuilder] Enable VisBuilder by default ([#2725](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2725)) +- [VisBuilder] Rename wizard on save modal and visualization table ([#2645](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2645)) +- [VisBuilder] Rename wizard to visBuilder in class name, type name and function name ([#2639](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2639)) +- [VisBuilder] Rename wizard to visBuilder in i18n id and formatted message id ([#2635](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2635)) +- [Windows] Add cross-platform helpers ([#2681](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2681)) +- [Windows] Consume `@osd/cross-platform` package to standardize path handling across platforms ([#2703](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2703)) +- [Windows] Facilitate building and running OSD and plugins on Windows platforms ([#2601](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2601)) ### 🐛 Bug Fixes -- [Viz Builder] Fixes time series for new chart types ([#2309](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2309)) -- [Viz Builder] Add index pattern info when loading embeddable ([#2363](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2363)) -- Fixes management app breadcrumb error ([#2344](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2344)) -- [BUG] Fix suggestion list cutoff issue ([#2607](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2607)) -- [TSVB] Fixes undefined serial diff aggregation documentation link ([#3503](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3503)) -- [Console] Fix dev tool console autocomplete not loading issue ([#3775](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3775)) -- [Console] Fix dev tool console run command with query parameter error ([#3813](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3813)) -- Add clarifying tooltips to header navigation ([#3573](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3573)) -- [Dashboards Listing] Fix listing limit to utilize `savedObjects:listingLimit` instead of `savedObjects:perPage` ([#4021](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4021)) +- Fix management app breadcrumb error ([#2344](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2344)) +- Fix suggestion list cutoff issue ([#2607](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2607)) +- Remove Leftover X Pack references ([#2638](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2638)) +- [Multi DataSource] Add data source param to low-level search call in Discover ([#2431](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2431)) +- [Multi DataSource] Address UX comments on Edit Data source page ([#2629](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2629)) +- [Multi DataSource] Address UX comments on index pattern management stack ([#2611](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2611)) +- [Multi DataSource] Enhance data source error handling ([#2661](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2661)) +- [Multi DataSource] Skip data source view in index pattern step when default is chosen ([#2574](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2574)) +- [Multi DataSource] Update default audit log path ([#2793](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2793)) +- [Save Object Aggregation View] Fix for export all after scroll count response changed ([#2696](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2696)) +- [VisBuilder] Add additional aggregation parameters to Vislib charts (Bar, Line and Area) ([#2610](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2610)) +- [VisBuilder] Add missing test subject property of `DisabledVisualization` ([#2610](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2610)) +- [VisBuilder] Fix Date Histogram auto bounds showing per 0 millisecond ([#2632](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2632)) +- [VisBuilder] Fix Histogram updating bounds when date range updates ([#2632](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2632)) +- [VisBuilder] Fix auto bounds for time-series bar chart visualization ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) +- [VisBuilder] Fix broken UX after switching index pattern while editing an aggregation ([#2632](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2632)) +- [VisBuilder] Fix rendering issues with time series for new chart types ([#2309](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2309)) +- [VisBuilder] Fix the missing `Last Updated` timestamp in visualization list ([#2628](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2628)) +- [VisBuilder] Fix visualization shift when editing an aggregation ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) +- [VisBuilder] Rename "Histogram" to "Bar" in visualization type picker ([2401](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2401)) +- [Table Visualization] Fix an issue preventing sorting the first column ([#2828](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2828)) +- Temporary workaround for task-kill exceptions on Windows when it is passed a pid for a process that is already dead ([#2842](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2842)) ### 🚞 Infrastructure -- Add path ignore for markdown files for CI ([#2312](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2312)) -- Updating WS scans to ignore BWC artifacts in `cypress` ([#2408](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2408)) +- Add CHANGELOG.md and related workflows ([#2414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2414)) +- Update WhiteSource scans to ignore Backward Compatibility artifacts in `cypress` ([#2408](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2408)) +- [CI] Add Backward Compatibility tests for 2.4.0 ([#2393](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2393)) +- [CI] Add path ignore for markdown files ([#2312](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2312)) +- [CI] Prevent backport workflow from running on unmerged PRs ([#2746](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2746)) - [CI] Run functional test repo as workflow ([#2503](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2503)) -- Add downgrade logic for branch in DocLinkService([#3483](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3483)) +- [CI] Update backport custom branch name ([#2766](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2766)) +- [CI] Update backport workflow to ignore changelog conflicts ([#2729](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2729)) ### 📝 Documentation -- README.md for saving index pattern relationship ([#2276](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2276)) -- Remove extra typo from README. ([#2403](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2403)) -- Add sample config for multi data source feature in yml template. ([#2428](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2428)) -- README.md for dataSource and dataSourceManagement Plugin ([#2448](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2448)) -- Updates functionl testing information in Testing.md ([#2492](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2492)) -- Fixes typo in TSVB README ([#3518](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3518)) +- Add CHANGELOG.md and Release Notes for 2.4.0 ([#2809](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2809)) +- Add README.md for `dataSource` and `dataSourceManagement` plugins ([#2448](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2448)) +- Add README.md for saving index pattern relationship ([#2276](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2276)) +- Remove a repeated "to" from the README.md file ([#2403](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2403)) +- Update functional testing information in TESTING.md ([#2492](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2492)) +- [Multi DataSource] Add design documents of multiple data source feature [#2538](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2538) +- [Multi DataSource] Add sample configuration for multi data source to the yml template ([#2428](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2428)) +- [Multi DataSource] Tweak multiple data source design doc ([#2724](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2724)) +- [Multi DataSource] Update MD data source documentation link ([#2693](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2693)) + +### 🔩 Tests + +- Update caniuse to fix failed integration tests ([#2322](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2322)) +- [Multi DataSource] Add unit test coverage for Update Data source management stack ([#2567](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2567)) +- [VisBuilder] Enable VisBuilder cypress tests ([#2728](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2728)) ### 🛠 Maintenance +- Add @zengyan-amazon as a maintainer ([#2419](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2419)) - Increment from 2.3 to 2.4. ([#2295](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2295)) -- Adding @zengyan-amazon as maintainer ([#2419](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2419)) -- Updating @tmarkley to Emeritus status. ([#2423](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2423)) -- Adding sample config for multi data source in yml config template. ([#2428](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2428)) -- Adding @kristenTian as maintainer. ([#2450](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2450)) +- Add CHANGELOG.md for 2.4.0 ([#2809](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2809)) -### 🪛 Refactoring +## [1.3.6 - 2022-10-06](https://github.com/opensearch-project/OpenSearch-Dashboards/releases/tag/1.3.6) -- [Tech Debt] Clean up docs_link_service organization so that strings are in the right categories. ([#3685](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3685)) +### 🛡 Security + +- [CVE-2021-3807] Resolves ansi-regex to v5.0.1 ([#2425](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2425)) +- [CVE-2022-23713] Handle invalid query, index and date in vega charts filter handlers ([#1932](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/1932)) +- Use a forced CSP-compliant interpreter with Vega visualizations ([#2352](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2352)) +- Bump moment-timezone from 0.5.34 to 0.5.37 ([#2361](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2361)) + +### 📈 Features/Enhancements + +- Custom healthcheck with filters ([#2232](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2232), [#2277](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2277)). To configure see example in [config/opensearch_dashboards.yml](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/6e2ec97459ae179c86201c611ce744c2c24ce150/config/opensearch_dashboards.yml#L44-L46) + +### 🚞 Infrastructure + +- Add CHANGELOG.md and related workflows ([#2414](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2414)) +- Extends plugin-helpers to be used for automating version changes ([#2398](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2398),[#2486](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2486)) + +### 🛠 Maintenance + +- Version Increment to 1.3.6 ([#2420](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2420)) ### 🔩 Tests - Update caniuse to fix failed integration tests ([#2322](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2322)) -- Update caniuse to 1.0.30001460 to fix failed integration tests ([#3538](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3538)) - -[unreleased]: https://github.com/opensearch-project/OpenSearch-Dashboards/compare/2.3.0...HEAD -[2.x]: https://github.com/opensearch-project/OpenSearch-Dashboards/compare/2.3.0...2.x diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md index 3df2106e9678..ac26f4bcd8b2 100644 --- a/DEVELOPER_GUIDE.md +++ b/DEVELOPER_GUIDE.md @@ -13,6 +13,7 @@ This guide applies to all development within the OpenSearch Dashboards project a - [Next Steps](#next-steps) - [Alternative development installations](#alternative-development-installations) - [Optional - Run OpenSearch with plugins](#optional---run-opensearch-with-plugins) + - [Plugin development](#plugin-development) - [Alternative - Run OpenSearch from tarball](#alternative---run-opensearch-from-tarball) - [Configure OpenSearch Dashboards for security](#configure-opensearch-dashboards-for-security) - [Building artifacts](#building-artifacts) @@ -231,6 +232,9 @@ $ yarn opensearch snapshot --P https://repo1.maven.org/maven2/org/opensearch/plu Note - if you add the [`security` plugin](https://github.com/opensearch-project/security), you'll also need to [configure OpenSearch Dashboards for security](#configure-opensearch-dashboards-for-security). +### Plugin development +The osd-plugin-generator tool makes it easier to create a plugin for OpenSearch Dashboards. It sets up the basic structure of the project and provides scripts to build it. Refer to [osd-plugin-generator](https://github.com/opensearch-project/OpenSearch-Dashboards/tree/main/packages/osd-plugin-generator) for more details. + #### Other snapshot configuration options Additional options can be passed after `yarn opensearch snapshot` to further configure the cluster snapshot. diff --git a/README.md b/README.md index 5c6c764f87f6..70bc8200f61c 100644 --- a/README.md +++ b/README.md @@ -53,4 +53,4 @@ Copyright OpenSearch Contributors. See [NOTICE](NOTICE.txt) for details. [codecov-badge]: https://codecov.io/gh/opensearch-project/OpenSearch-Dashboards/branch/main/graphs/badge.svg [codecov-link]: https://app.codecov.io/gh/opensearch-project/OpenSearch-Dashboards [link-checker-badge]: https://github.com/opensearch-project/OpenSearch-Dashboards/actions/workflows/links_checker.yml/badge.svg -[link-checker-link]: https://github.com/opensearch-project/OpenSearch-Dashboards/actions/workflows/links_checker.yml +[link-checker-link]: https://github.com/opensearch-project/OpenSearch-Dashboards/actions/workflows/links_checker.yml \ No newline at end of file diff --git a/bwctest.sh b/bwctest.sh index 1b44d15b64cf..f85764f9f68b 100755 --- a/bwctest.sh +++ b/bwctest.sh @@ -13,7 +13,7 @@ set -e -DEFAULT_VERSIONS="osd-2.0.0,osd-2.1.0,osd-2.2.0,osd-2.3.0,osd-2.4.0,osd-2.5.0" +DEFAULT_VERSIONS="osd-2.0.0,osd-2.1.0,osd-2.2.0,osd-2.3.0,osd-2.4.0,osd-2.5.0,osd-2.6.0,osd-2.7.0" function usage() { echo "" diff --git a/cypress/integration/with-security/helpers/generate_data.js b/cypress/integration/with-security/helpers/generate_data.js index 4833a81a1398..dcd711fc7c18 100755 --- a/cypress/integration/with-security/helpers/generate_data.js +++ b/cypress/integration/with-security/helpers/generate_data.js @@ -84,6 +84,7 @@ describe('Generating BWC test data with security', () => { }); // update default expression to use `.es(*)` instead of `.opensearch(*)` for bwc cy.get('[class="view-line"]').type('.es(*)'); + cy.get('[data-test-subj="visualizeEditorRenderButton"]').click(); cy.get('[data-test-subj="visualizeSaveButton"]').click(); cy.get('[data-test-subj="savedObjectTitle"]').type('test-timeline'); cy.get('[data-test-subj="confirmSaveSavedObjectButton"]').click(); diff --git a/cypress/integration/without-security/helpers/generate_data.js b/cypress/integration/without-security/helpers/generate_data.js index 4f2962769c16..47e9c2f5f5ed 100755 --- a/cypress/integration/without-security/helpers/generate_data.js +++ b/cypress/integration/without-security/helpers/generate_data.js @@ -67,6 +67,7 @@ describe('Generating BWC test data without security', () => { }); // update default expression to use `.es(*)` instead of `.opensearch(*)` for bwc cy.get('[class="view-line"]').type('.es(*)'); + cy.get('[data-test-subj="visualizeEditorRenderButton"]').click(); cy.get('[data-test-subj="visualizeSaveButton"]').click(); cy.get('[data-test-subj="savedObjectTitle"]').type('test-timeline'); cy.get('[data-test-subj="confirmSaveSavedObjectButton"]').click(); diff --git a/cypress/test-data/without-security/osd-2.6.0.tar.gz b/cypress/test-data/without-security/osd-2.6.0.tar.gz new file mode 100644 index 000000000000..82f8ba26f05c Binary files /dev/null and b/cypress/test-data/without-security/osd-2.6.0.tar.gz differ diff --git a/cypress/test-data/without-security/osd-2.7.0.tar.gz b/cypress/test-data/without-security/osd-2.7.0.tar.gz new file mode 100644 index 000000000000..d8866f6035b8 Binary files /dev/null and b/cypress/test-data/without-security/osd-2.7.0.tar.gz differ diff --git a/examples/ui_actions_explorer/public/context_menu_examples/context_menu_examples.tsx b/examples/ui_actions_explorer/public/context_menu_examples/context_menu_examples.tsx index b01d04c1608b..1f6ba03e966b 100644 --- a/examples/ui_actions_explorer/public/context_menu_examples/context_menu_examples.tsx +++ b/examples/ui_actions_explorer/public/context_menu_examples/context_menu_examples.tsx @@ -36,6 +36,7 @@ import { PanelViewWithSharingLong } from './panel_view_with_sharing_long'; import { PanelEdit } from './panel_edit'; import { PanelEditWithDrilldowns } from './panel_edit_with_drilldowns'; import { PanelEditWithDrilldownsAndContextActions } from './panel_edit_with_drilldowns_and_context_actions'; +import { PanelGroupOptionsAndContextActions } from './panel_group_options_and_context_actions'; export const ContextMenuExamples: React.FC = () => { return ( @@ -59,7 +60,6 @@ export const ContextMenuExamples: React.FC = () => { - @@ -71,6 +71,11 @@ export const ContextMenuExamples: React.FC = () => { + + + + + ); }; diff --git a/examples/ui_actions_explorer/public/context_menu_examples/panel_group_options_and_context_actions.tsx b/examples/ui_actions_explorer/public/context_menu_examples/panel_group_options_and_context_actions.tsx new file mode 100644 index 000000000000..20dc73406c55 --- /dev/null +++ b/examples/ui_actions_explorer/public/context_menu_examples/panel_group_options_and_context_actions.tsx @@ -0,0 +1,83 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import * as React from 'react'; +import { EuiButton, EuiContextMenu, EuiPopover } from '@elastic/eui'; +import useAsync from 'react-use/lib/useAsync'; +import { buildContextMenuForActions, Action } from '../../../../src/plugins/ui_actions/public'; +import { sampleAction } from './util'; + +export const PanelGroupOptionsAndContextActions: React.FC = () => { + const [open, setOpen] = React.useState(false); + + const context = {}; + const trigger: any = 'TEST_TRIGGER'; + const drilldownGrouping: Action['grouping'] = [ + { + id: 'drilldowns', + getDisplayName: () => 'Uncategorized group', + getIconType: () => 'popout', + order: 20, + }, + ]; + const exampleGroup: Action['grouping'] = [ + { + id: 'example', + getDisplayName: () => 'Example group', + getIconType: () => 'cloudStormy', + order: 20, + category: 'visAug', + }, + ]; + const alertingGroup: Action['grouping'] = [ + { + id: 'alerting', + getDisplayName: () => 'Alerting', + getIconType: () => 'cloudStormy', + order: 20, + category: 'visAug', + }, + ]; + const anomaliesGroup: Action['grouping'] = [ + { + id: 'anomalies', + getDisplayName: () => 'Anomalies', + getIconType: () => 'cloudStormy', + order: 30, + category: 'visAug', + }, + ]; + const actions = [ + sampleAction('test-1', 100, 'Edit visualization', 'pencil'), + sampleAction('test-2', 99, 'Clone panel', 'partial'), + + sampleAction('test-9', 10, 'Create drilldown', 'plusInCircle', drilldownGrouping), + sampleAction('test-10', 9, 'Manage drilldowns', 'list', drilldownGrouping), + + sampleAction('test-11', 10, 'Example action', 'dashboardApp', exampleGroup), + sampleAction('test-11', 10, 'Alertin action 1', 'dashboardApp', alertingGroup), + sampleAction('test-12', 9, 'Alertin action 2', 'dashboardApp', alertingGroup), + sampleAction('test-13', 8, 'Anomalies 1', 'cloudStormy', anomaliesGroup), + sampleAction('test-14', 7, 'Anomalies 2', 'link', anomaliesGroup), + ]; + + const panels = useAsync(() => + buildContextMenuForActions({ + actions: actions.map((action) => ({ action, context, trigger })), + }) + ); + + return ( + setOpen((x) => !x)}>Grouping with categories} + isOpen={open} + panelPaddingSize="none" + anchorPosition="downLeft" + closePopover={() => setOpen(false)} + > + + + ); +}; diff --git a/package.json b/package.json index 30e6756ca108..dbe2e7302ff8 100644 --- a/package.json +++ b/package.json @@ -248,6 +248,8 @@ "@osd/optimizer": "1.0.0", "@osd/plugin-generator": "1.0.0", "@osd/pm": "1.0.0", + "@osd/stylelint-config": "1.0.0", + "@osd/stylelint-plugin-stylelint": "1.0.0", "@osd/telemetry-tools": "1.0.0", "@osd/test": "1.0.0", "@osd/test-subj-selector": "0.2.1", diff --git a/packages/osd-pm/dist/index.js b/packages/osd-pm/dist/index.js index e43a9bfe407e..3e536751f711 100644 --- a/packages/osd-pm/dist/index.js +++ b/packages/osd-pm/dist/index.js @@ -134,15 +134,15 @@ Object.defineProperty(exports, "run", { var _cli = __webpack_require__(1); -var _production = __webpack_require__(515); +var _production = __webpack_require__(516); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); -var _project = __webpack_require__(164); +var _project = __webpack_require__(165); -var _workspaces = __webpack_require__(281); +var _workspaces = __webpack_require__(282); -var _config = __webpack_require__(282); +var _config = __webpack_require__(283); /***/ }), /* 1 */ @@ -166,9 +166,9 @@ var _tooling_log = __webpack_require__(5); var _commands = __webpack_require__(128); -var _run = __webpack_require__(510); +var _run = __webpack_require__(511); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -783,245 +783,245 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldGet", function() { return __classPrivateFieldGet; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldSet", function() { return __classPrivateFieldSet; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} /***/ }), @@ -1701,224 +1701,224 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldGet", function() { return __classPrivateFieldGet; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldSet", function() { return __classPrivateFieldSet; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __createBinding(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -} - -function __exportStar(m, exports) { - for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -}; - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -function __classPrivateFieldGet(receiver, privateMap) { - if (!privateMap.has(receiver)) { - throw new TypeError("attempted to get private field on non-instance"); - } - return privateMap.get(receiver); -} - -function __classPrivateFieldSet(receiver, privateMap, value) { - if (!privateMap.has(receiver)) { - throw new TypeError("attempted to set private field on non-instance"); - } - privateMap.set(receiver, value); - return value; -} +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __createBinding(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +} + +function __exportStar(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p]; +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); +} + +function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; +} /***/ }), @@ -8322,158 +8322,158 @@ convert.rgb.gray = function (rgb) { /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; + + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; /***/ }), @@ -9062,11 +9062,11 @@ exports.commands = void 0; var _bootstrap = __webpack_require__(129); -var _clean = __webpack_require__(296); +var _clean = __webpack_require__(297); -var _run = __webpack_require__(409); +var _run = __webpack_require__(410); -var _watch = __webpack_require__(410); +var _watch = __webpack_require__(411); /* * SPDX-License-Identifier: Apache-2.0 @@ -9119,19 +9119,19 @@ exports.BootstrapCommand = void 0; var _link_project_executables = __webpack_require__(130); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _parallelize = __webpack_require__(145); +var _parallelize = __webpack_require__(146); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); -var _project_checksums = __webpack_require__(283); +var _project_checksums = __webpack_require__(284); -var _bootstrap_cache_file = __webpack_require__(287); +var _bootstrap_cache_file = __webpack_require__(294); -var _yarn_lock = __webpack_require__(285); +var _yarn_lock = __webpack_require__(286); -var _validate_dependencies = __webpack_require__(288); +var _validate_dependencies = __webpack_require__(295); /* * SPDX-License-Identifier: Apache-2.0 @@ -9262,7 +9262,7 @@ var _path = __webpack_require__(4); var _fs = __webpack_require__(131); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); /* * SPDX-License-Identifier: Apache-2.0 @@ -9344,18 +9344,42 @@ async function linkProjectExecutables(projectsByName, projectGraph) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.copyDirectory = exports.chmod = void 0; +Object.defineProperty(exports, "chmod", { + enumerable: true, + get: function () { + return _promises.chmod; + } +}); +exports.copyDirectory = void 0; exports.createSymlink = createSymlink; exports.isDirectory = isDirectory; exports.isFile = isFile; exports.isSymlink = isSymlink; -exports.writeFile = exports.unlink = exports.readFile = exports.mkdirp = void 0; +exports.mkdirp = void 0; +Object.defineProperty(exports, "readFile", { + enumerable: true, + get: function () { + return _promises.readFile; + } +}); +Object.defineProperty(exports, "unlink", { + enumerable: true, + get: function () { + return _promises.unlink; + } +}); +Object.defineProperty(exports, "writeFile", { + enumerable: true, + get: function () { + return _promises.writeFile; + } +}); var _cmdShim = _interopRequireDefault(__webpack_require__(132)); -var _fs = _interopRequireDefault(__webpack_require__(134)); +var _promises = __webpack_require__(143); -var _ncp = __webpack_require__(143); +var _ncp = __webpack_require__(144); var _path = __webpack_require__(4); @@ -9392,30 +9416,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * specific language governing permissions and limitations * under the License. */ -const lstat = (0, _util.promisify)(_fs.default.lstat); -const readFile = (0, _util.promisify)(_fs.default.readFile); -exports.readFile = readFile; -const writeFile = (0, _util.promisify)(_fs.default.writeFile); -exports.writeFile = writeFile; -const symlink = (0, _util.promisify)(_fs.default.symlink); -const chmod = (0, _util.promisify)(_fs.default.chmod); -exports.chmod = chmod; const cmdShim = (0, _util.promisify)(_cmdShim.default); -const mkdir = (0, _util.promisify)(_fs.default.mkdir); -const mkdirp = async path => await mkdir(path, { +const mkdirp = async path => await (0, _promises.mkdir)(path, { recursive: true }); exports.mkdirp = mkdirp; -const unlink = (0, _util.promisify)(_fs.default.unlink); -exports.unlink = unlink; const copyDirectory = (0, _util.promisify)(_ncp.ncp); exports.copyDirectory = copyDirectory; async function statTest(path, block) { try { - return block(await lstat(path)); + return block(await (0, _promises.lstat)(path)); } catch (e) { if (e.code === 'ENOENT') { return false; @@ -9480,14 +9493,14 @@ async function createSymlink(src, dest, type) { async function forceCreate(src, dest, type) { try { // If something exists at `dest` we need to remove it first. - await unlink(dest); + await (0, _promises.unlink)(dest); } catch (error) { if (error.code !== 'ENOENT') { throw error; } } - await symlink(src, dest, type); + await (0, _promises.symlink)(src, dest, type); } /***/ }), @@ -10848,62 +10861,68 @@ mkdirP.sync = function sync (p, opts, made) { /* 142 */ /***/ (function(module, exports) { -exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair -exports.convertToSetCommand = convertToSetCommand -exports.convertToSetCommands = convertToSetCommands - -function convertToSetCommand(key, value) { - var line = "" - key = key || "" - key = key.trim() - value = value || "" - value = value.trim() - if(key && value && value.length > 0) { - line = "@SET " + key + "=" + replaceDollarWithPercentPair(value) + "\r\n" - } - return line -} - -function extractVariableValuePairs(declarations) { - var pairs = {} - declarations.map(function(declaration) { - var split = declaration.split("=") - pairs[split[0]]=split[1] - }) - return pairs -} - -function convertToSetCommands(variableString) { - var variableValuePairs = extractVariableValuePairs(variableString.split(" ")) - var variableDeclarationsAsBatch = "" - Object.keys(variableValuePairs).forEach(function (key) { - variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key]) - }) - return variableDeclarationsAsBatch -} - -function replaceDollarWithPercentPair(value) { - var dollarExpressions = /\$\{?([^\$@#\?\- \t{}:]+)\}?/g - var result = "" - var startIndex = 0 - value = value || "" - do { - var match = dollarExpressions.exec(value) - if(match) { - var betweenMatches = value.substring(startIndex, match.index) || "" - result += betweenMatches + "%" + match[1] + "%" - startIndex = dollarExpressions.lastIndex - } - } while (dollarExpressions.lastIndex > 0) - result += value.substr(startIndex) - return result -} +exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair +exports.convertToSetCommand = convertToSetCommand +exports.convertToSetCommands = convertToSetCommands + +function convertToSetCommand(key, value) { + var line = "" + key = key || "" + key = key.trim() + value = value || "" + value = value.trim() + if(key && value && value.length > 0) { + line = "@SET " + key + "=" + replaceDollarWithPercentPair(value) + "\r\n" + } + return line +} + +function extractVariableValuePairs(declarations) { + var pairs = {} + declarations.map(function(declaration) { + var split = declaration.split("=") + pairs[split[0]]=split[1] + }) + return pairs +} + +function convertToSetCommands(variableString) { + var variableValuePairs = extractVariableValuePairs(variableString.split(" ")) + var variableDeclarationsAsBatch = "" + Object.keys(variableValuePairs).forEach(function (key) { + variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key]) + }) + return variableDeclarationsAsBatch +} + +function replaceDollarWithPercentPair(value) { + var dollarExpressions = /\$\{?([^\$@#\?\- \t{}:]+)\}?/g + var result = "" + var startIndex = 0 + value = value || "" + do { + var match = dollarExpressions.exec(value) + if(match) { + var betweenMatches = value.substring(startIndex, match.index) || "" + result += betweenMatches + "%" + match[1] + "%" + startIndex = dollarExpressions.lastIndex + } + } while (dollarExpressions.lastIndex > 0) + result += value.substr(startIndex) + return result +} + + +/***/ }), +/* 143 */ +/***/ (function(module, exports) { +module.exports = require("fs/promises"); /***/ }), -/* 143 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { var fs = __webpack_require__(134), @@ -11170,7 +11189,7 @@ function ncp (source, dest, options, callback) { /***/ }), -/* 144 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11220,7 +11239,7 @@ const log = new Log(); exports.log = log; /***/ }), -/* 145 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11303,7 +11322,7 @@ async function parallelize(items, fn, concurrency = 4) { } /***/ }), -/* 146 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11317,17 +11336,17 @@ exports.getProjects = getProjects; exports.includeTransitiveProjects = includeTransitiveProjects; exports.topologicallyBatchProjects = topologicallyBatchProjects; -var _glob = _interopRequireDefault(__webpack_require__(147)); +var _glob = _interopRequireDefault(__webpack_require__(148)); var _path = _interopRequireDefault(__webpack_require__(4)); var _util = __webpack_require__(112); -var _errors = __webpack_require__(163); +var _errors = __webpack_require__(164); -var _project = __webpack_require__(164); +var _project = __webpack_require__(165); -var _workspaces = __webpack_require__(281); +var _workspaces = __webpack_require__(282); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -11538,7 +11557,7 @@ function includeTransitiveProjects(subsetOfProjects, allProjects, { } /***/ }), -/* 147 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { // Approach: @@ -11583,24 +11602,24 @@ function includeTransitiveProjects(subsetOfProjects, allProjects, { module.exports = glob -var rp = __webpack_require__(148) -var minimatch = __webpack_require__(150) +var rp = __webpack_require__(149) +var minimatch = __webpack_require__(151) var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__(154) -var EE = __webpack_require__(156).EventEmitter +var inherits = __webpack_require__(155) +var EE = __webpack_require__(157).EventEmitter var path = __webpack_require__(4) var assert = __webpack_require__(140) -var isAbsolute = __webpack_require__(157) -var globSync = __webpack_require__(158) -var common = __webpack_require__(159) +var isAbsolute = __webpack_require__(158) +var globSync = __webpack_require__(159) +var common = __webpack_require__(160) var setopts = common.setopts var ownProp = common.ownProp -var inflight = __webpack_require__(160) +var inflight = __webpack_require__(161) var util = __webpack_require__(112) var childrenIgnored = common.childrenIgnored var isIgnored = common.isIgnored -var once = __webpack_require__(162) +var once = __webpack_require__(163) function glob (pattern, options, cb) { if (typeof options === 'function') cb = options, options = {} @@ -12331,7 +12350,7 @@ Glob.prototype._stat2 = function (f, abs, er, stat, cb) { /***/ }), -/* 148 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { module.exports = realpath @@ -12347,7 +12366,7 @@ var origRealpathSync = fs.realpathSync var version = process.version var ok = /^v[0-5]\./.test(version) -var old = __webpack_require__(149) +var old = __webpack_require__(150) function newError (er) { return er && er.syscall === 'realpath' && ( @@ -12403,7 +12422,7 @@ function unmonkeypatch () { /***/ }), -/* 149 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -12712,7 +12731,7 @@ exports.realpath = function realpath(p, cache, cb) { /***/ }), -/* 150 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { module.exports = minimatch @@ -12724,7 +12743,7 @@ var path = (function () { try { return __webpack_require__(4) } catch (e) {}}()) minimatch.sep = path.sep var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__(151) +var expand = __webpack_require__(152) var plTypes = { '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, @@ -13665,11 +13684,11 @@ function regExpEscape (s) { /***/ }), -/* 151 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { -var concatMap = __webpack_require__(152); -var balanced = __webpack_require__(153); +var concatMap = __webpack_require__(153); +var balanced = __webpack_require__(154); module.exports = expandTop; @@ -13872,7 +13891,7 @@ function expand(str, isTop) { /***/ }), -/* 152 */ +/* 153 */ /***/ (function(module, exports) { module.exports = function (xs, fn) { @@ -13891,7 +13910,7 @@ var isArray = Array.isArray || function (xs) { /***/ }), -/* 153 */ +/* 154 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13960,7 +13979,7 @@ function range(a, b, str) { /***/ }), -/* 154 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { try { @@ -13970,12 +13989,12 @@ try { module.exports = util.inherits; } catch (e) { /* istanbul ignore next */ - module.exports = __webpack_require__(155); + module.exports = __webpack_require__(156); } /***/ }), -/* 155 */ +/* 156 */ /***/ (function(module, exports) { if (typeof Object.create === 'function') { @@ -14008,13 +14027,13 @@ if (typeof Object.create === 'function') { /***/ }), -/* 156 */ +/* 157 */ /***/ (function(module, exports) { module.exports = require("events"); /***/ }), -/* 157 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14041,21 +14060,21 @@ module.exports.win32 = win32; /***/ }), -/* 158 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { module.exports = globSync globSync.GlobSync = GlobSync -var rp = __webpack_require__(148) -var minimatch = __webpack_require__(150) +var rp = __webpack_require__(149) +var minimatch = __webpack_require__(151) var Minimatch = minimatch.Minimatch -var Glob = __webpack_require__(147).Glob +var Glob = __webpack_require__(148).Glob var util = __webpack_require__(112) var path = __webpack_require__(4) var assert = __webpack_require__(140) -var isAbsolute = __webpack_require__(157) -var common = __webpack_require__(159) +var isAbsolute = __webpack_require__(158) +var common = __webpack_require__(160) var setopts = common.setopts var ownProp = common.ownProp var childrenIgnored = common.childrenIgnored @@ -14530,7 +14549,7 @@ GlobSync.prototype._makeAbs = function (f) { /***/ }), -/* 159 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { exports.setopts = setopts @@ -14547,8 +14566,8 @@ function ownProp (obj, field) { var fs = __webpack_require__(134) var path = __webpack_require__(4) -var minimatch = __webpack_require__(150) -var isAbsolute = __webpack_require__(157) +var minimatch = __webpack_require__(151) +var isAbsolute = __webpack_require__(158) var Minimatch = minimatch.Minimatch function alphasort (a, b) { @@ -14772,12 +14791,12 @@ function childrenIgnored (self, path) { /***/ }), -/* 160 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(161) +var wrappy = __webpack_require__(162) var reqs = Object.create(null) -var once = __webpack_require__(162) +var once = __webpack_require__(163) module.exports = wrappy(inflight) @@ -14832,7 +14851,7 @@ function slice (args) { /***/ }), -/* 161 */ +/* 162 */ /***/ (function(module, exports) { // Returns a wrapper function that returns a wrapped callback @@ -14871,10 +14890,10 @@ function wrappy (fn, cb) { /***/ }), -/* 162 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { -var wrappy = __webpack_require__(161) +var wrappy = __webpack_require__(162) module.exports = wrappy(once) module.exports.strict = wrappy(onceStrict) @@ -14919,7 +14938,7 @@ function onceStrict (fn) { /***/ }), -/* 163 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14970,7 +14989,7 @@ class CliError extends Error { exports.CliError = CliError; /***/ }), -/* 164 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14987,13 +15006,13 @@ var _path = _interopRequireDefault(__webpack_require__(4)); var _util = __webpack_require__(112); -var _errors = __webpack_require__(163); +var _errors = __webpack_require__(164); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _package_json = __webpack_require__(165); +var _package_json = __webpack_require__(166); -var _scripts = __webpack_require__(235); +var _scripts = __webpack_require__(236); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -15221,7 +15240,7 @@ function normalizePath(path) { } /***/ }), -/* 165 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15234,9 +15253,9 @@ exports.isLinkDependency = void 0; exports.readPackageJson = readPackageJson; exports.writePackageJson = writePackageJson; -var _readPkg = _interopRequireDefault(__webpack_require__(166)); +var _readPkg = _interopRequireDefault(__webpack_require__(167)); -var _writePkg = _interopRequireDefault(__webpack_require__(223)); +var _writePkg = _interopRequireDefault(__webpack_require__(224)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -15285,7 +15304,7 @@ const isLinkDependency = depVersion => depVersion.startsWith('link:'); exports.isLinkDependency = isLinkDependency; /***/ }), -/* 166 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15293,7 +15312,7 @@ exports.isLinkDependency = isLinkDependency; const {promisify} = __webpack_require__(112); const fs = __webpack_require__(134); const path = __webpack_require__(4); -const parseJson = __webpack_require__(167); +const parseJson = __webpack_require__(168); const readFileAsync = promisify(fs.readFile); @@ -15308,7 +15327,7 @@ module.exports = async options => { const json = parseJson(await readFileAsync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(188)(json); + __webpack_require__(189)(json); } return json; @@ -15325,7 +15344,7 @@ module.exports.sync = options => { const json = parseJson(fs.readFileSync(filePath, 'utf8')); if (options.normalize) { - __webpack_require__(188)(json); + __webpack_require__(189)(json); } return json; @@ -15333,15 +15352,15 @@ module.exports.sync = options => { /***/ }), -/* 167 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const errorEx = __webpack_require__(168); -const fallback = __webpack_require__(170); -const {default: LinesAndColumns} = __webpack_require__(171); -const {codeFrameColumns} = __webpack_require__(172); +const errorEx = __webpack_require__(169); +const fallback = __webpack_require__(171); +const {default: LinesAndColumns} = __webpack_require__(172); +const {codeFrameColumns} = __webpack_require__(173); const JSONError = errorEx('JSONError', { fileName: errorEx.append('in %s'), @@ -15394,14 +15413,14 @@ module.exports = parseJson; /***/ }), -/* 168 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(112); -var isArrayish = __webpack_require__(169); +var isArrayish = __webpack_require__(170); var errorEx = function errorEx(name, properties) { if (!name || name.constructor !== String) { @@ -15542,7 +15561,7 @@ module.exports = errorEx; /***/ }), -/* 169 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15559,7 +15578,7 @@ module.exports = function isArrayish(obj) { /***/ }), -/* 170 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15687,7 +15706,7 @@ parseJson.noExceptions = (txt, reviver) => { /***/ }), -/* 171 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15756,7 +15775,7 @@ exports["default"] = LinesAndColumns; /***/ }), -/* 172 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15768,7 +15787,7 @@ Object.defineProperty(exports, "__esModule", { exports.codeFrameColumns = codeFrameColumns; exports.default = _default; -var _highlight = __webpack_require__(173); +var _highlight = __webpack_require__(174); let deprecationWarningShown = false; @@ -15925,7 +15944,7 @@ function _default(rawLines, lineNumber, colNumber, opts = {}) { } /***/ }), -/* 173 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15938,11 +15957,11 @@ exports.default = highlight; exports.getChalk = getChalk; exports.shouldHighlight = shouldHighlight; -var _jsTokens = __webpack_require__(174); +var _jsTokens = __webpack_require__(175); -var _helperValidatorIdentifier = __webpack_require__(175); +var _helperValidatorIdentifier = __webpack_require__(176); -var _chalk = __webpack_require__(178); +var _chalk = __webpack_require__(179); const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); @@ -16047,7 +16066,7 @@ function highlight(code, options = {}) { } /***/ }), -/* 174 */ +/* 175 */ /***/ (function(module, exports) { // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell @@ -16076,7 +16095,7 @@ exports.matchToToken = function(match) { /***/ }), -/* 175 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16134,12 +16153,12 @@ Object.defineProperty(exports, "isStrictReservedWord", { } }); -var _identifier = __webpack_require__(176); +var _identifier = __webpack_require__(177); -var _keyword = __webpack_require__(177); +var _keyword = __webpack_require__(178); /***/ }), -/* 176 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16229,7 +16248,7 @@ function isIdentifierName(name) { } /***/ }), -/* 177 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16273,16 +16292,16 @@ function isKeyword(word) { } /***/ }), -/* 178 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(179); -const ansiStyles = __webpack_require__(180); -const stdoutColor = __webpack_require__(185).stdout; +const escapeStringRegexp = __webpack_require__(180); +const ansiStyles = __webpack_require__(181); +const stdoutColor = __webpack_require__(186).stdout; -const template = __webpack_require__(187); +const template = __webpack_require__(188); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -16508,7 +16527,7 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 179 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16526,12 +16545,12 @@ module.exports = function (str) { /***/ }), -/* 180 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(181); +const colorConvert = __webpack_require__(182); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -16699,11 +16718,11 @@ Object.defineProperty(module, 'exports', { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) /***/ }), -/* 181 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(182); -var route = __webpack_require__(184); +var conversions = __webpack_require__(183); +var route = __webpack_require__(185); var convert = {}; @@ -16783,11 +16802,11 @@ module.exports = convert; /***/ }), -/* 182 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { /* MIT license */ -var cssKeywords = __webpack_require__(183); +var cssKeywords = __webpack_require__(184); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). @@ -17657,169 +17676,169 @@ convert.rgb.gray = function (rgb) { /***/ }), -/* 183 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; + + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; /***/ }), -/* 184 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { -var conversions = __webpack_require__(182); +var conversions = __webpack_require__(183); /* this function routes a model to all other models. @@ -17919,13 +17938,13 @@ module.exports = function (fromModel) { /***/ }), -/* 185 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const os = __webpack_require__(121); -const hasFlag = __webpack_require__(186); +const hasFlag = __webpack_require__(187); const env = process.env; @@ -18057,7 +18076,7 @@ module.exports = { /***/ }), -/* 186 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18072,7 +18091,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 187 */ +/* 188 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18207,15 +18226,15 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 188 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { module.exports = normalize -var fixer = __webpack_require__(189) +var fixer = __webpack_require__(190) normalize.fixer = fixer -var makeWarning = __webpack_require__(221) +var makeWarning = __webpack_require__(222) var fieldsToFix = ['name','version','description','repository','modules','scripts' ,'files','bin','man','bugs','keywords','readme','homepage','license'] @@ -18252,17 +18271,17 @@ function ucFirst (string) { /***/ }), -/* 189 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { -var semver = __webpack_require__(190) -var validateLicense = __webpack_require__(191); -var hostedGitInfo = __webpack_require__(199) -var isBuiltinModule = __webpack_require__(203).isCore +var semver = __webpack_require__(191) +var validateLicense = __webpack_require__(192); +var hostedGitInfo = __webpack_require__(200) +var isBuiltinModule = __webpack_require__(204).isCore var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = __webpack_require__(219) -var url = __webpack_require__(200) -var typos = __webpack_require__(220) +var extractDescription = __webpack_require__(220) +var url = __webpack_require__(201) +var typos = __webpack_require__(221) var fixer = module.exports = { // default warning function @@ -18676,7 +18695,7 @@ function bugsTypos(bugs, warn) { /***/ }), -/* 190 */ +/* 191 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -20165,11 +20184,11 @@ function coerce (version) { /***/ }), -/* 191 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(192); -var correct = __webpack_require__(198); +var parse = __webpack_require__(193); +var correct = __webpack_require__(199); var genericWarning = ( 'license should be ' + @@ -20257,14 +20276,14 @@ module.exports = function(argument) { /***/ }), -/* 192 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var scan = __webpack_require__(193) -var parse = __webpack_require__(197) +var scan = __webpack_require__(194) +var parse = __webpack_require__(198) module.exports = function (source) { return parse(scan(source)) @@ -20272,16 +20291,16 @@ module.exports = function (source) { /***/ }), -/* 193 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var licenses = [] - .concat(__webpack_require__(194)) .concat(__webpack_require__(195)) -var exceptions = __webpack_require__(196) + .concat(__webpack_require__(196)) +var exceptions = __webpack_require__(197) module.exports = function (source) { var index = 0 @@ -20410,25 +20429,25 @@ module.exports = function (source) { /***/ }), -/* 194 */ +/* 195 */ /***/ (function(module) { module.exports = JSON.parse("[\"0BSD\",\"AAL\",\"ADSL\",\"AFL-1.1\",\"AFL-1.2\",\"AFL-2.0\",\"AFL-2.1\",\"AFL-3.0\",\"AGPL-1.0-only\",\"AGPL-1.0-or-later\",\"AGPL-3.0-only\",\"AGPL-3.0-or-later\",\"AMDPLPA\",\"AML\",\"AMPAS\",\"ANTLR-PD\",\"ANTLR-PD-fallback\",\"APAFML\",\"APL-1.0\",\"APSL-1.0\",\"APSL-1.1\",\"APSL-1.2\",\"APSL-2.0\",\"Abstyles\",\"Adobe-2006\",\"Adobe-Glyph\",\"Afmparse\",\"Aladdin\",\"Apache-1.0\",\"Apache-1.1\",\"Apache-2.0\",\"Artistic-1.0\",\"Artistic-1.0-Perl\",\"Artistic-1.0-cl8\",\"Artistic-2.0\",\"BSD-1-Clause\",\"BSD-2-Clause\",\"BSD-2-Clause-Patent\",\"BSD-2-Clause-Views\",\"BSD-3-Clause\",\"BSD-3-Clause-Attribution\",\"BSD-3-Clause-Clear\",\"BSD-3-Clause-LBNL\",\"BSD-3-Clause-Modification\",\"BSD-3-Clause-No-Military-License\",\"BSD-3-Clause-No-Nuclear-License\",\"BSD-3-Clause-No-Nuclear-License-2014\",\"BSD-3-Clause-No-Nuclear-Warranty\",\"BSD-3-Clause-Open-MPI\",\"BSD-4-Clause\",\"BSD-4-Clause-Shortened\",\"BSD-4-Clause-UC\",\"BSD-Protection\",\"BSD-Source-Code\",\"BSL-1.0\",\"BUSL-1.1\",\"Bahyph\",\"Barr\",\"Beerware\",\"BitTorrent-1.0\",\"BitTorrent-1.1\",\"BlueOak-1.0.0\",\"Borceux\",\"C-UDA-1.0\",\"CAL-1.0\",\"CAL-1.0-Combined-Work-Exception\",\"CATOSL-1.1\",\"CC-BY-1.0\",\"CC-BY-2.0\",\"CC-BY-2.5\",\"CC-BY-2.5-AU\",\"CC-BY-3.0\",\"CC-BY-3.0-AT\",\"CC-BY-3.0-DE\",\"CC-BY-3.0-NL\",\"CC-BY-3.0-US\",\"CC-BY-4.0\",\"CC-BY-NC-1.0\",\"CC-BY-NC-2.0\",\"CC-BY-NC-2.5\",\"CC-BY-NC-3.0\",\"CC-BY-NC-3.0-DE\",\"CC-BY-NC-4.0\",\"CC-BY-NC-ND-1.0\",\"CC-BY-NC-ND-2.0\",\"CC-BY-NC-ND-2.5\",\"CC-BY-NC-ND-3.0\",\"CC-BY-NC-ND-3.0-DE\",\"CC-BY-NC-ND-3.0-IGO\",\"CC-BY-NC-ND-4.0\",\"CC-BY-NC-SA-1.0\",\"CC-BY-NC-SA-2.0\",\"CC-BY-NC-SA-2.0-FR\",\"CC-BY-NC-SA-2.0-UK\",\"CC-BY-NC-SA-2.5\",\"CC-BY-NC-SA-3.0\",\"CC-BY-NC-SA-3.0-DE\",\"CC-BY-NC-SA-3.0-IGO\",\"CC-BY-NC-SA-4.0\",\"CC-BY-ND-1.0\",\"CC-BY-ND-2.0\",\"CC-BY-ND-2.5\",\"CC-BY-ND-3.0\",\"CC-BY-ND-3.0-DE\",\"CC-BY-ND-4.0\",\"CC-BY-SA-1.0\",\"CC-BY-SA-2.0\",\"CC-BY-SA-2.0-UK\",\"CC-BY-SA-2.1-JP\",\"CC-BY-SA-2.5\",\"CC-BY-SA-3.0\",\"CC-BY-SA-3.0-AT\",\"CC-BY-SA-3.0-DE\",\"CC-BY-SA-4.0\",\"CC-PDDC\",\"CC0-1.0\",\"CDDL-1.0\",\"CDDL-1.1\",\"CDL-1.0\",\"CDLA-Permissive-1.0\",\"CDLA-Permissive-2.0\",\"CDLA-Sharing-1.0\",\"CECILL-1.0\",\"CECILL-1.1\",\"CECILL-2.0\",\"CECILL-2.1\",\"CECILL-B\",\"CECILL-C\",\"CERN-OHL-1.1\",\"CERN-OHL-1.2\",\"CERN-OHL-P-2.0\",\"CERN-OHL-S-2.0\",\"CERN-OHL-W-2.0\",\"CNRI-Jython\",\"CNRI-Python\",\"CNRI-Python-GPL-Compatible\",\"COIL-1.0\",\"CPAL-1.0\",\"CPL-1.0\",\"CPOL-1.02\",\"CUA-OPL-1.0\",\"Caldera\",\"ClArtistic\",\"Community-Spec-1.0\",\"Condor-1.1\",\"Crossword\",\"CrystalStacker\",\"Cube\",\"D-FSL-1.0\",\"DOC\",\"DRL-1.0\",\"DSDP\",\"Dotseqn\",\"ECL-1.0\",\"ECL-2.0\",\"EFL-1.0\",\"EFL-2.0\",\"EPICS\",\"EPL-1.0\",\"EPL-2.0\",\"EUDatagrid\",\"EUPL-1.0\",\"EUPL-1.1\",\"EUPL-1.2\",\"Entessa\",\"ErlPL-1.1\",\"Eurosym\",\"FDK-AAC\",\"FSFAP\",\"FSFUL\",\"FSFULLR\",\"FTL\",\"Fair\",\"Frameworx-1.0\",\"FreeBSD-DOC\",\"FreeImage\",\"GD\",\"GFDL-1.1-invariants-only\",\"GFDL-1.1-invariants-or-later\",\"GFDL-1.1-no-invariants-only\",\"GFDL-1.1-no-invariants-or-later\",\"GFDL-1.1-only\",\"GFDL-1.1-or-later\",\"GFDL-1.2-invariants-only\",\"GFDL-1.2-invariants-or-later\",\"GFDL-1.2-no-invariants-only\",\"GFDL-1.2-no-invariants-or-later\",\"GFDL-1.2-only\",\"GFDL-1.2-or-later\",\"GFDL-1.3-invariants-only\",\"GFDL-1.3-invariants-or-later\",\"GFDL-1.3-no-invariants-only\",\"GFDL-1.3-no-invariants-or-later\",\"GFDL-1.3-only\",\"GFDL-1.3-or-later\",\"GL2PS\",\"GLWTPL\",\"GPL-1.0-only\",\"GPL-1.0-or-later\",\"GPL-2.0-only\",\"GPL-2.0-or-later\",\"GPL-3.0-only\",\"GPL-3.0-or-later\",\"Giftware\",\"Glide\",\"Glulxe\",\"HPND\",\"HPND-sell-variant\",\"HTMLTIDY\",\"HaskellReport\",\"Hippocratic-2.1\",\"IBM-pibs\",\"ICU\",\"IJG\",\"IPA\",\"IPL-1.0\",\"ISC\",\"ImageMagick\",\"Imlib2\",\"Info-ZIP\",\"Intel\",\"Intel-ACPI\",\"Interbase-1.0\",\"JPNIC\",\"JSON\",\"JasPer-2.0\",\"LAL-1.2\",\"LAL-1.3\",\"LGPL-2.0-only\",\"LGPL-2.0-or-later\",\"LGPL-2.1-only\",\"LGPL-2.1-or-later\",\"LGPL-3.0-only\",\"LGPL-3.0-or-later\",\"LGPLLR\",\"LPL-1.0\",\"LPL-1.02\",\"LPPL-1.0\",\"LPPL-1.1\",\"LPPL-1.2\",\"LPPL-1.3a\",\"LPPL-1.3c\",\"Latex2e\",\"Leptonica\",\"LiLiQ-P-1.1\",\"LiLiQ-R-1.1\",\"LiLiQ-Rplus-1.1\",\"Libpng\",\"Linux-OpenIB\",\"Linux-man-pages-copyleft\",\"MIT\",\"MIT-0\",\"MIT-CMU\",\"MIT-Modern-Variant\",\"MIT-advertising\",\"MIT-enna\",\"MIT-feh\",\"MIT-open-group\",\"MITNFA\",\"MPL-1.0\",\"MPL-1.1\",\"MPL-2.0\",\"MPL-2.0-no-copyleft-exception\",\"MS-PL\",\"MS-RL\",\"MTLL\",\"MakeIndex\",\"MirOS\",\"Motosoto\",\"MulanPSL-1.0\",\"MulanPSL-2.0\",\"Multics\",\"Mup\",\"NAIST-2003\",\"NASA-1.3\",\"NBPL-1.0\",\"NCGL-UK-2.0\",\"NCSA\",\"NGPL\",\"NIST-PD\",\"NIST-PD-fallback\",\"NLOD-1.0\",\"NLOD-2.0\",\"NLPL\",\"NOSL\",\"NPL-1.0\",\"NPL-1.1\",\"NPOSL-3.0\",\"NRL\",\"NTP\",\"NTP-0\",\"Naumen\",\"Net-SNMP\",\"NetCDF\",\"Newsletr\",\"Nokia\",\"Noweb\",\"O-UDA-1.0\",\"OCCT-PL\",\"OCLC-2.0\",\"ODC-By-1.0\",\"ODbL-1.0\",\"OFL-1.0\",\"OFL-1.0-RFN\",\"OFL-1.0-no-RFN\",\"OFL-1.1\",\"OFL-1.1-RFN\",\"OFL-1.1-no-RFN\",\"OGC-1.0\",\"OGDL-Taiwan-1.0\",\"OGL-Canada-2.0\",\"OGL-UK-1.0\",\"OGL-UK-2.0\",\"OGL-UK-3.0\",\"OGTSL\",\"OLDAP-1.1\",\"OLDAP-1.2\",\"OLDAP-1.3\",\"OLDAP-1.4\",\"OLDAP-2.0\",\"OLDAP-2.0.1\",\"OLDAP-2.1\",\"OLDAP-2.2\",\"OLDAP-2.2.1\",\"OLDAP-2.2.2\",\"OLDAP-2.3\",\"OLDAP-2.4\",\"OLDAP-2.5\",\"OLDAP-2.6\",\"OLDAP-2.7\",\"OLDAP-2.8\",\"OML\",\"OPL-1.0\",\"OPUBL-1.0\",\"OSET-PL-2.1\",\"OSL-1.0\",\"OSL-1.1\",\"OSL-2.0\",\"OSL-2.1\",\"OSL-3.0\",\"OpenSSL\",\"PDDL-1.0\",\"PHP-3.0\",\"PHP-3.01\",\"PSF-2.0\",\"Parity-6.0.0\",\"Parity-7.0.0\",\"Plexus\",\"PolyForm-Noncommercial-1.0.0\",\"PolyForm-Small-Business-1.0.0\",\"PostgreSQL\",\"Python-2.0\",\"QPL-1.0\",\"Qhull\",\"RHeCos-1.1\",\"RPL-1.1\",\"RPL-1.5\",\"RPSL-1.0\",\"RSA-MD\",\"RSCPL\",\"Rdisc\",\"Ruby\",\"SAX-PD\",\"SCEA\",\"SGI-B-1.0\",\"SGI-B-1.1\",\"SGI-B-2.0\",\"SHL-0.5\",\"SHL-0.51\",\"SISSL\",\"SISSL-1.2\",\"SMLNJ\",\"SMPPL\",\"SNIA\",\"SPL-1.0\",\"SSH-OpenSSH\",\"SSH-short\",\"SSPL-1.0\",\"SWL\",\"Saxpath\",\"Sendmail\",\"Sendmail-8.23\",\"SimPL-2.0\",\"Sleepycat\",\"Spencer-86\",\"Spencer-94\",\"Spencer-99\",\"SugarCRM-1.1.3\",\"TAPR-OHL-1.0\",\"TCL\",\"TCP-wrappers\",\"TMate\",\"TORQUE-1.1\",\"TOSL\",\"TU-Berlin-1.0\",\"TU-Berlin-2.0\",\"UCL-1.0\",\"UPL-1.0\",\"Unicode-DFS-2015\",\"Unicode-DFS-2016\",\"Unicode-TOU\",\"Unlicense\",\"VOSTROM\",\"VSL-1.0\",\"Vim\",\"W3C\",\"W3C-19980720\",\"W3C-20150513\",\"WTFPL\",\"Watcom-1.0\",\"Wsuipa\",\"X11\",\"XFree86-1.1\",\"XSkat\",\"Xerox\",\"Xnet\",\"YPL-1.0\",\"YPL-1.1\",\"ZPL-1.1\",\"ZPL-2.0\",\"ZPL-2.1\",\"Zed\",\"Zend-2.0\",\"Zimbra-1.3\",\"Zimbra-1.4\",\"Zlib\",\"blessing\",\"bzip2-1.0.5\",\"bzip2-1.0.6\",\"copyleft-next-0.3.0\",\"copyleft-next-0.3.1\",\"curl\",\"diffmark\",\"dvipdfm\",\"eGenix\",\"etalab-2.0\",\"gSOAP-1.3b\",\"gnuplot\",\"iMatix\",\"libpng-2.0\",\"libselinux-1.0\",\"libtiff\",\"mpich2\",\"psfrag\",\"psutils\",\"xinetd\",\"xpp\",\"zlib-acknowledgement\"]"); /***/ }), -/* 195 */ +/* 196 */ /***/ (function(module) { module.exports = JSON.parse("[\"AGPL-1.0\",\"AGPL-3.0\",\"BSD-2-Clause-FreeBSD\",\"BSD-2-Clause-NetBSD\",\"GFDL-1.1\",\"GFDL-1.2\",\"GFDL-1.3\",\"GPL-1.0\",\"GPL-2.0\",\"GPL-2.0-with-GCC-exception\",\"GPL-2.0-with-autoconf-exception\",\"GPL-2.0-with-bison-exception\",\"GPL-2.0-with-classpath-exception\",\"GPL-2.0-with-font-exception\",\"GPL-3.0\",\"GPL-3.0-with-GCC-exception\",\"GPL-3.0-with-autoconf-exception\",\"LGPL-2.0\",\"LGPL-2.1\",\"LGPL-3.0\",\"Nunit\",\"StandardML-NJ\",\"eCos-2.0\",\"wxWindows\"]"); /***/ }), -/* 196 */ +/* 197 */ /***/ (function(module) { module.exports = JSON.parse("[\"389-exception\",\"Autoconf-exception-2.0\",\"Autoconf-exception-3.0\",\"Bison-exception-2.2\",\"Bootloader-exception\",\"Classpath-exception-2.0\",\"CLISP-exception-2.0\",\"DigiRule-FOSS-exception\",\"eCos-exception-2.0\",\"Fawkes-Runtime-exception\",\"FLTK-exception\",\"Font-exception-2.0\",\"freertos-exception-2.0\",\"GCC-exception-2.0\",\"GCC-exception-3.1\",\"gnu-javamail-exception\",\"GPL-3.0-linking-exception\",\"GPL-3.0-linking-source-exception\",\"GPL-CC-1.0\",\"i2p-gpl-java-exception\",\"Libtool-exception\",\"Linux-syscall-note\",\"LLVM-exception\",\"LZMA-exception\",\"mif-exception\",\"Nokia-Qt-exception-1.1\",\"OCaml-LGPL-linking-exception\",\"OCCT-exception-1.0\",\"OpenJDK-assembly-exception-1.0\",\"openvpn-openssl-exception\",\"PS-or-PDF-font-exception-20170817\",\"Qt-GPL-exception-1.0\",\"Qt-LGPL-exception-1.1\",\"Qwt-exception-1.0\",\"Swift-exception\",\"u-boot-exception-2.0\",\"Universal-FOSS-exception-1.0\",\"WxWindows-exception-3.1\"]"); /***/ }), -/* 197 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20573,7 +20592,7 @@ module.exports = function (tokens) { /***/ }), -/* 198 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -20591,8 +20610,8 @@ 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. */ -var parse = __webpack_require__(192) -var spdxLicenseIds = __webpack_require__(194) +var parse = __webpack_require__(193) +var spdxLicenseIds = __webpack_require__(195) function valid (string) { try { @@ -20943,14 +20962,14 @@ function upgradeGPLs (value) { /***/ }), -/* 199 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var url = __webpack_require__(200) -var gitHosts = __webpack_require__(201) -var GitHost = module.exports = __webpack_require__(202) +var url = __webpack_require__(201) +var gitHosts = __webpack_require__(202) +var GitHost = module.exports = __webpack_require__(203) var protocolToRepresentationMap = { 'git+ssh:': 'sshurl', @@ -21098,13 +21117,13 @@ function parseGitUrl (giturl) { /***/ }), -/* 200 */ +/* 201 */ /***/ (function(module, exports) { module.exports = require("url"); /***/ }), -/* 201 */ +/* 202 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21190,12 +21209,12 @@ function formatHashFragment (fragment) { /***/ }), -/* 202 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var gitHosts = __webpack_require__(201) +var gitHosts = __webpack_require__(202) /* eslint-disable node/no-deprecated-api */ // copy-pasta util._extend from node's source, to avoid pulling @@ -21353,28 +21372,28 @@ GitHost.prototype.toString = function (opts) { /***/ }), -/* 203 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { -var async = __webpack_require__(204); -async.core = __webpack_require__(215); -async.isCore = __webpack_require__(217); -async.sync = __webpack_require__(218); +var async = __webpack_require__(205); +async.core = __webpack_require__(216); +async.isCore = __webpack_require__(218); +async.sync = __webpack_require__(219); module.exports = async; /***/ }), -/* 204 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { var fs = __webpack_require__(134); -var getHomedir = __webpack_require__(205); +var getHomedir = __webpack_require__(206); var path = __webpack_require__(4); -var caller = __webpack_require__(206); -var nodeModulesPaths = __webpack_require__(207); -var normalizeOptions = __webpack_require__(209); -var isCore = __webpack_require__(210); +var caller = __webpack_require__(207); +var nodeModulesPaths = __webpack_require__(208); +var normalizeOptions = __webpack_require__(210); +var isCore = __webpack_require__(211); var realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; @@ -21700,7 +21719,7 @@ module.exports = function resolve(x, options, callback) { /***/ }), -/* 205 */ +/* 206 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21731,7 +21750,7 @@ module.exports = os.homedir || function homedir() { /***/ }), -/* 206 */ +/* 207 */ /***/ (function(module, exports) { module.exports = function () { @@ -21745,11 +21764,11 @@ module.exports = function () { /***/ }), -/* 207 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(4); -var parse = path.parse || __webpack_require__(208); // eslint-disable-line global-require +var parse = path.parse || __webpack_require__(209); // eslint-disable-line global-require var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { var prefix = '/'; @@ -21793,7 +21812,7 @@ module.exports = function nodeModulesPaths(start, opts, request) { /***/ }), -/* 208 */ +/* 209 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21875,7 +21894,7 @@ module.exports.win32 = win32.parse; /***/ }), -/* 209 */ +/* 210 */ /***/ (function(module, exports) { module.exports = function (x, opts) { @@ -21891,13 +21910,13 @@ module.exports = function (x, opts) { /***/ }), -/* 210 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var has = __webpack_require__(211); +var has = __webpack_require__(212); function specifierIncluded(current, specifier) { var nodeParts = current.split('.'); @@ -21959,7 +21978,7 @@ function versionIncluded(nodeVersion, specifierValue) { return matchesRange(current, specifierValue); } -var data = __webpack_require__(214); +var data = __webpack_require__(215); module.exports = function isCore(x, nodeVersion) { return has(data, x) && versionIncluded(nodeVersion, data[x]); @@ -21967,31 +21986,31 @@ module.exports = function isCore(x, nodeVersion) { /***/ }), -/* 211 */ +/* 212 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var bind = __webpack_require__(212); +var bind = __webpack_require__(213); module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); /***/ }), -/* 212 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var implementation = __webpack_require__(213); +var implementation = __webpack_require__(214); module.exports = Function.prototype.bind || implementation; /***/ }), -/* 213 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22050,13 +22069,13 @@ module.exports = function bind(that) { /***/ }), -/* 214 */ +/* 215 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector/promises\":[\">= 19\"],\"node:inspector/promises\":[\">= 19\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"node:test\":[\">= 16.17 && < 17\",\">= 18\"],\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); /***/ }), -/* 215 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; @@ -22102,7 +22121,7 @@ function versionIncluded(specifierValue) { return matchesRange(specifierValue); } -var data = __webpack_require__(216); +var data = __webpack_require__(217); var core = {}; for (var mod in data) { // eslint-disable-line no-restricted-syntax @@ -22114,16 +22133,16 @@ module.exports = core; /***/ }), -/* 216 */ +/* 217 */ /***/ (function(module) { module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"node:test\":\">= 18\",\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); /***/ }), -/* 217 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { -var isCoreModule = __webpack_require__(210); +var isCoreModule = __webpack_require__(211); module.exports = function isCore(x) { return isCoreModule(x); @@ -22131,16 +22150,16 @@ module.exports = function isCore(x) { /***/ }), -/* 218 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { -var isCore = __webpack_require__(210); +var isCore = __webpack_require__(211); var fs = __webpack_require__(134); var path = __webpack_require__(4); -var getHomedir = __webpack_require__(205); -var caller = __webpack_require__(206); -var nodeModulesPaths = __webpack_require__(207); -var normalizeOptions = __webpack_require__(209); +var getHomedir = __webpack_require__(206); +var caller = __webpack_require__(207); +var nodeModulesPaths = __webpack_require__(208); +var normalizeOptions = __webpack_require__(210); var realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; @@ -22345,7 +22364,7 @@ module.exports = function resolveSync(x, options) { /***/ }), -/* 219 */ +/* 220 */ /***/ (function(module, exports) { module.exports = extractDescription @@ -22365,17 +22384,17 @@ function extractDescription (d) { /***/ }), -/* 220 */ +/* 221 */ /***/ (function(module) { module.exports = JSON.parse("{\"topLevel\":{\"dependancies\":\"dependencies\",\"dependecies\":\"dependencies\",\"depdenencies\":\"dependencies\",\"devEependencies\":\"devDependencies\",\"depends\":\"dependencies\",\"dev-dependencies\":\"devDependencies\",\"devDependences\":\"devDependencies\",\"devDepenencies\":\"devDependencies\",\"devdependencies\":\"devDependencies\",\"repostitory\":\"repository\",\"repo\":\"repository\",\"prefereGlobal\":\"preferGlobal\",\"hompage\":\"homepage\",\"hampage\":\"homepage\",\"autohr\":\"author\",\"autor\":\"author\",\"contributers\":\"contributors\",\"publicationConfig\":\"publishConfig\",\"script\":\"scripts\"},\"bugs\":{\"web\":\"url\",\"name\":\"url\"},\"script\":{\"server\":\"start\",\"tests\":\"test\"}}"); /***/ }), -/* 221 */ +/* 222 */ /***/ (function(module, exports, __webpack_require__) { var util = __webpack_require__(112) -var messages = __webpack_require__(222) +var messages = __webpack_require__(223) module.exports = function() { var args = Array.prototype.slice.call(arguments, 0) @@ -22400,20 +22419,20 @@ function makeTypoWarning (providedName, probableName, field) { /***/ }), -/* 222 */ +/* 223 */ /***/ (function(module) { module.exports = JSON.parse("{\"repositories\":\"'repositories' (plural) Not supported. Please pick one as the 'repository' field\",\"missingRepository\":\"No repository field.\",\"brokenGitUrl\":\"Probably broken git url: %s\",\"nonObjectScripts\":\"scripts must be an object\",\"nonStringScript\":\"script values must be string commands\",\"nonArrayFiles\":\"Invalid 'files' member\",\"invalidFilename\":\"Invalid filename in 'files' list: %s\",\"nonArrayBundleDependencies\":\"Invalid 'bundleDependencies' list. Must be array of package names\",\"nonStringBundleDependency\":\"Invalid bundleDependencies member: %s\",\"nonDependencyBundleDependency\":\"Non-dependency in bundleDependencies: %s\",\"nonObjectDependencies\":\"%s field must be an object\",\"nonStringDependency\":\"Invalid dependency: %s %s\",\"deprecatedArrayDependencies\":\"specifying %s as array is deprecated\",\"deprecatedModules\":\"modules field is deprecated\",\"nonArrayKeywords\":\"keywords should be an array of strings\",\"nonStringKeyword\":\"keywords should be an array of strings\",\"conflictingName\":\"%s is also the name of a node core module.\",\"nonStringDescription\":\"'description' field should be a string\",\"missingDescription\":\"No description\",\"missingReadme\":\"No README data\",\"missingLicense\":\"No license field.\",\"nonEmailUrlBugsString\":\"Bug string field must be url, email, or {email,url}\",\"nonUrlBugsUrlField\":\"bugs.url field must be a string url. Deleted.\",\"nonEmailBugsEmailField\":\"bugs.email field must be a string email. Deleted.\",\"emptyNormalizedBugs\":\"Normalized value of bugs field is an empty object. Deleted.\",\"nonUrlHomepage\":\"homepage field must be a string url. Deleted.\",\"invalidLicense\":\"license should be a valid SPDX license expression\",\"typo\":\"%s should probably be %s.\"}"); /***/ }), -/* 223 */ +/* 224 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const writeJsonFile = __webpack_require__(224); -const sortKeys = __webpack_require__(230); +const writeJsonFile = __webpack_require__(225); +const sortKeys = __webpack_require__(231); const dependencyKeys = new Set([ 'dependencies', @@ -22478,18 +22497,18 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 224 */ +/* 225 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); const fs = __webpack_require__(133); -const writeFileAtomic = __webpack_require__(225); -const sortKeys = __webpack_require__(230); -const makeDir = __webpack_require__(232); -const pify = __webpack_require__(233); -const detectIndent = __webpack_require__(234); +const writeFileAtomic = __webpack_require__(226); +const sortKeys = __webpack_require__(231); +const makeDir = __webpack_require__(233); +const pify = __webpack_require__(234); +const detectIndent = __webpack_require__(235); const init = (fn, filePath, data, options) => { if (!filePath) { @@ -22561,7 +22580,7 @@ module.exports.sync = (filePath, data, options) => { /***/ }), -/* 225 */ +/* 226 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22572,8 +22591,8 @@ module.exports._getTmpname = getTmpname // for testing module.exports._cleanupOnExit = cleanupOnExit var fs = __webpack_require__(133) -var MurmurHash3 = __webpack_require__(226) -var onExit = __webpack_require__(227) +var MurmurHash3 = __webpack_require__(227) +var onExit = __webpack_require__(228) var path = __webpack_require__(4) var activeFiles = {} @@ -22581,7 +22600,7 @@ var activeFiles = {} /* istanbul ignore next */ var threadId = (function getId () { try { - var workerThreads = __webpack_require__(229) + var workerThreads = __webpack_require__(230) /// if we are in main thread, this is set to `0` return workerThreads.threadId @@ -22806,7 +22825,7 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 226 */ +/* 227 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -22948,7 +22967,7 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 227 */ +/* 228 */ /***/ (function(module, exports, __webpack_require__) { // Note: since nyc uses this module to output coverage, any lines @@ -22977,10 +22996,10 @@ if (!processOk(process)) { } } else { var assert = __webpack_require__(140) - var signals = __webpack_require__(228) + var signals = __webpack_require__(229) var isWin = /^win/i.test(process.platform) - var EE = __webpack_require__(156) + var EE = __webpack_require__(157) /* istanbul ignore if */ if (typeof EE !== 'function') { EE = EE.EventEmitter @@ -23156,7 +23175,7 @@ if (!processOk(process)) { /***/ }), -/* 228 */ +/* 229 */ /***/ (function(module, exports) { // This is not the set of all possible signals. @@ -23215,18 +23234,18 @@ if (process.platform === 'linux') { /***/ }), -/* 229 */ +/* 230 */ /***/ (function(module, exports) { module.exports = require(undefined); /***/ }), -/* 230 */ +/* 231 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isPlainObj = __webpack_require__(231); +const isPlainObj = __webpack_require__(232); module.exports = (obj, opts) => { if (!isPlainObj(obj)) { @@ -23283,7 +23302,7 @@ module.exports = (obj, opts) => { /***/ }), -/* 231 */ +/* 232 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23297,15 +23316,15 @@ module.exports = function (x) { /***/ }), -/* 232 */ +/* 233 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); const path = __webpack_require__(4); -const pify = __webpack_require__(233); -const semver = __webpack_require__(190); +const pify = __webpack_require__(234); +const semver = __webpack_require__(191); const defaults = { mode: 0o777 & (~process.umask()), @@ -23443,7 +23462,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 233 */ +/* 234 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23518,7 +23537,7 @@ module.exports = (input, options) => { /***/ }), -/* 234 */ +/* 235 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23647,7 +23666,7 @@ module.exports = str => { /***/ }), -/* 235 */ +/* 236 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23661,7 +23680,7 @@ exports.runScriptInPackage = runScriptInPackage; exports.runScriptInPackageStreaming = runScriptInPackageStreaming; exports.yarnWorkspacesInfo = yarnWorkspacesInfo; -var _child_process = __webpack_require__(236); +var _child_process = __webpack_require__(237); /* * SPDX-License-Identifier: Apache-2.0 @@ -23752,7 +23771,7 @@ async function yarnWorkspacesInfo(directory) { } /***/ }), -/* 236 */ +/* 237 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23768,11 +23787,11 @@ var _stream = __webpack_require__(138); var _chalk = _interopRequireDefault(__webpack_require__(113)); -var _execa = _interopRequireDefault(__webpack_require__(237)); +var _execa = _interopRequireDefault(__webpack_require__(238)); -var _strongLogTransformer = _interopRequireDefault(__webpack_require__(273)); +var _strongLogTransformer = _interopRequireDefault(__webpack_require__(274)); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -23861,23 +23880,23 @@ function spawnStreaming(command, args, opts, { } /***/ }), -/* 237 */ +/* 238 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const childProcess = __webpack_require__(238); -const crossSpawn = __webpack_require__(239); -const stripFinalNewline = __webpack_require__(252); -const npmRunPath = __webpack_require__(253); -const onetime = __webpack_require__(254); -const makeError = __webpack_require__(256); -const normalizeStdio = __webpack_require__(261); -const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(262); -const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(263); -const {mergePromise, getSpawnedPromise} = __webpack_require__(271); -const {joinCommand, parseCommand} = __webpack_require__(272); +const childProcess = __webpack_require__(239); +const crossSpawn = __webpack_require__(240); +const stripFinalNewline = __webpack_require__(253); +const npmRunPath = __webpack_require__(254); +const onetime = __webpack_require__(255); +const makeError = __webpack_require__(257); +const normalizeStdio = __webpack_require__(262); +const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__(263); +const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(264); +const {mergePromise, getSpawnedPromise} = __webpack_require__(272); +const {joinCommand, parseCommand} = __webpack_require__(273); const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; @@ -24128,21 +24147,21 @@ module.exports.node = (scriptPath, args, options = {}) => { /***/ }), -/* 238 */ +/* 239 */ /***/ (function(module, exports) { module.exports = require("child_process"); /***/ }), -/* 239 */ +/* 240 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const cp = __webpack_require__(238); -const parse = __webpack_require__(240); -const enoent = __webpack_require__(251); +const cp = __webpack_require__(239); +const parse = __webpack_require__(241); +const enoent = __webpack_require__(252); function spawn(command, args, options) { // Parse the arguments @@ -24180,16 +24199,16 @@ module.exports._enoent = enoent; /***/ }), -/* 240 */ +/* 241 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const resolveCommand = __webpack_require__(241); -const escape = __webpack_require__(247); -const readShebang = __webpack_require__(248); +const resolveCommand = __webpack_require__(242); +const escape = __webpack_require__(248); +const readShebang = __webpack_require__(249); const isWin = process.platform === 'win32'; const isExecutableRegExp = /\.(?:com|exe)$/i; @@ -24278,15 +24297,15 @@ module.exports = parse; /***/ }), -/* 241 */ +/* 242 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const which = __webpack_require__(242); -const getPathKey = __webpack_require__(246); +const which = __webpack_require__(243); +const getPathKey = __webpack_require__(247); function resolveCommandAttempt(parsed, withoutPathExt) { const env = parsed.options.env || process.env; @@ -24337,7 +24356,7 @@ module.exports = resolveCommand; /***/ }), -/* 242 */ +/* 243 */ /***/ (function(module, exports, __webpack_require__) { const isWindows = process.platform === 'win32' || @@ -24346,7 +24365,7 @@ const isWindows = process.platform === 'win32' || const path = __webpack_require__(4) const COLON = isWindows ? ';' : ':' -const isexe = __webpack_require__(243) +const isexe = __webpack_require__(244) const getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) @@ -24468,15 +24487,15 @@ which.sync = whichSync /***/ }), -/* 243 */ +/* 244 */ /***/ (function(module, exports, __webpack_require__) { var fs = __webpack_require__(134) var core if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(244) -} else { core = __webpack_require__(245) +} else { + core = __webpack_require__(246) } module.exports = isexe @@ -24531,7 +24550,7 @@ function sync (path, options) { /***/ }), -/* 244 */ +/* 245 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe @@ -24579,7 +24598,7 @@ function sync (path, options) { /***/ }), -/* 245 */ +/* 246 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe @@ -24626,7 +24645,7 @@ function checkMode (stat, options) { /***/ }), -/* 246 */ +/* 247 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24649,7 +24668,7 @@ module.exports.default = pathKey; /***/ }), -/* 247 */ +/* 248 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24701,14 +24720,14 @@ module.exports.argument = escapeArgument; /***/ }), -/* 248 */ +/* 249 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); -const shebangCommand = __webpack_require__(249); +const shebangCommand = __webpack_require__(250); function readShebang(command) { // Read the first 150 bytes from the file @@ -24731,12 +24750,12 @@ module.exports = readShebang; /***/ }), -/* 249 */ +/* 250 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const shebangRegex = __webpack_require__(250); +const shebangRegex = __webpack_require__(251); module.exports = (string = '') => { const match = string.match(shebangRegex); @@ -24757,7 +24776,7 @@ module.exports = (string = '') => { /***/ }), -/* 250 */ +/* 251 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24766,7 +24785,7 @@ module.exports = /^#!(.*)/; /***/ }), -/* 251 */ +/* 252 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24832,7 +24851,7 @@ module.exports = { /***/ }), -/* 252 */ +/* 253 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24855,13 +24874,13 @@ module.exports = input => { /***/ }), -/* 253 */ +/* 254 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathKey = __webpack_require__(246); +const pathKey = __webpack_require__(247); const npmRunPath = options => { options = { @@ -24909,12 +24928,12 @@ module.exports.env = options => { /***/ }), -/* 254 */ +/* 255 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const mimicFn = __webpack_require__(255); +const mimicFn = __webpack_require__(256); const calledFunctions = new WeakMap(); @@ -24960,7 +24979,7 @@ module.exports.callCount = function_ => { /***/ }), -/* 255 */ +/* 256 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24980,12 +24999,12 @@ module.exports.default = mimicFn; /***/ }), -/* 256 */ +/* 257 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {signalsByName} = __webpack_require__(257); +const {signalsByName} = __webpack_require__(258); const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { if (timedOut) { @@ -25073,14 +25092,14 @@ module.exports = makeError; /***/ }), -/* 257 */ +/* 258 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(121); -var _signals=__webpack_require__(258); -var _realtime=__webpack_require__(260); +var _signals=__webpack_require__(259); +var _realtime=__webpack_require__(261); @@ -25150,14 +25169,14 @@ const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumb //# sourceMappingURL=main.js.map /***/ }), -/* 258 */ +/* 259 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__(121); -var _core=__webpack_require__(259); -var _realtime=__webpack_require__(260); +var _core=__webpack_require__(260); +var _realtime=__webpack_require__(261); @@ -25191,7 +25210,7 @@ return{name,number,description,supported,action,forced,standard}; //# sourceMappingURL=signals.js.map /***/ }), -/* 259 */ +/* 260 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25470,7 +25489,7 @@ standard:"other"}];exports.SIGNALS=SIGNALS; //# sourceMappingURL=core.js.map /***/ }), -/* 260 */ +/* 261 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25495,7 +25514,7 @@ const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; //# sourceMappingURL=realtime.js.map /***/ }), -/* 261 */ +/* 262 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25554,13 +25573,13 @@ module.exports.node = opts => { /***/ }), -/* 262 */ +/* 263 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const os = __webpack_require__(121); -const onExit = __webpack_require__(227); +const onExit = __webpack_require__(228); const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; @@ -25673,14 +25692,14 @@ module.exports = { /***/ }), -/* 263 */ +/* 264 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isStream = __webpack_require__(264); -const getStream = __webpack_require__(265); -const mergeStream = __webpack_require__(270); +const isStream = __webpack_require__(265); +const getStream = __webpack_require__(266); +const mergeStream = __webpack_require__(271); // `input` option const handleInput = (spawned, input) => { @@ -25777,7 +25796,7 @@ module.exports = { /***/ }), -/* 264 */ +/* 265 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25812,14 +25831,14 @@ module.exports = isStream; /***/ }), -/* 265 */ +/* 266 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {constants: BufferConstants} = __webpack_require__(266); -const pump = __webpack_require__(267); -const bufferStream = __webpack_require__(269); +const {constants: BufferConstants} = __webpack_require__(267); +const pump = __webpack_require__(268); +const bufferStream = __webpack_require__(270); class MaxBufferError extends Error { constructor() { @@ -25879,17 +25898,17 @@ module.exports.MaxBufferError = MaxBufferError; /***/ }), -/* 266 */ +/* 267 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 267 */ +/* 268 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(162) -var eos = __webpack_require__(268) +var once = __webpack_require__(163) +var eos = __webpack_require__(269) var fs = __webpack_require__(134) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} @@ -25973,10 +25992,10 @@ module.exports = pump /***/ }), -/* 268 */ +/* 269 */ /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__(162); +var once = __webpack_require__(163); var noop = function() {}; @@ -26073,7 +26092,7 @@ module.exports = eos; /***/ }), -/* 269 */ +/* 270 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26132,7 +26151,7 @@ module.exports = options => { /***/ }), -/* 270 */ +/* 271 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26180,7 +26199,7 @@ module.exports = function (/*streams...*/) { /***/ }), -/* 271 */ +/* 272 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26233,7 +26252,7 @@ module.exports = { /***/ }), -/* 272 */ +/* 273 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26272,7 +26291,7 @@ module.exports = { /***/ }), -/* 273 */ +/* 274 */ /***/ (function(module, exports, __webpack_require__) { // Copyright IBM Corp. 2014,2018. All Rights Reserved. @@ -26280,12 +26299,12 @@ module.exports = { // This file is licensed under the Apache License 2.0. // License text available at https://opensource.org/licenses/Apache-2.0 -module.exports = __webpack_require__(274); -module.exports.cli = __webpack_require__(278); +module.exports = __webpack_require__(275); +module.exports.cli = __webpack_require__(279); /***/ }), -/* 274 */ +/* 275 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26300,9 +26319,9 @@ var stream = __webpack_require__(138); var util = __webpack_require__(112); var fs = __webpack_require__(134); -var through = __webpack_require__(275); -var duplexer = __webpack_require__(276); -var StringDecoder = __webpack_require__(277).StringDecoder; +var through = __webpack_require__(276); +var duplexer = __webpack_require__(277); +var StringDecoder = __webpack_require__(278).StringDecoder; module.exports = Logger; @@ -26491,7 +26510,7 @@ function lineMerger(host) { /***/ }), -/* 275 */ +/* 276 */ /***/ (function(module, exports, __webpack_require__) { var Stream = __webpack_require__(138) @@ -26605,7 +26624,7 @@ function through (write, end, opts) { /***/ }), -/* 276 */ +/* 277 */ /***/ (function(module, exports, __webpack_require__) { var Stream = __webpack_require__(138) @@ -26698,13 +26717,13 @@ function duplex(writer, reader) { /***/ }), -/* 277 */ +/* 278 */ /***/ (function(module, exports) { module.exports = require("string_decoder"); /***/ }), -/* 278 */ +/* 279 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26715,11 +26734,11 @@ module.exports = require("string_decoder"); -var minimist = __webpack_require__(279); +var minimist = __webpack_require__(280); var path = __webpack_require__(4); -var Logger = __webpack_require__(274); -var pkg = __webpack_require__(280); +var Logger = __webpack_require__(275); +var pkg = __webpack_require__(281); module.exports = cli; @@ -26773,7 +26792,7 @@ function usage($0, p) { /***/ }), -/* 279 */ +/* 280 */ /***/ (function(module, exports) { module.exports = function (args, opts) { @@ -27028,13 +27047,13 @@ function isConstructorOrProto (obj, key) { /***/ }), -/* 280 */ +/* 281 */ /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); /***/ }), -/* 281 */ +/* 282 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27046,19 +27065,19 @@ Object.defineProperty(exports, "__esModule", { exports.copyWorkspacePackages = copyWorkspacePackages; exports.workspacePackagePaths = workspacePackagePaths; -var _glob = _interopRequireDefault(__webpack_require__(147)); +var _glob = _interopRequireDefault(__webpack_require__(148)); var _path = _interopRequireDefault(__webpack_require__(4)); var _util = __webpack_require__(112); -var _config = __webpack_require__(282); +var _config = __webpack_require__(283); var _fs = __webpack_require__(131); -var _package_json = __webpack_require__(165); +var _package_json = __webpack_require__(166); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -27160,7 +27179,7 @@ function packagesFromGlobPattern({ } /***/ }), -/* 282 */ +/* 283 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27238,7 +27257,7 @@ function getProjectPaths({ } /***/ }), -/* 283 */ +/* 284 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27249,15 +27268,13 @@ Object.defineProperty(exports, "__esModule", { }); exports.getAllChecksums = getAllChecksums; -var _fs = _interopRequireDefault(__webpack_require__(134)); - -var _crypto = _interopRequireDefault(__webpack_require__(284)); +var _promises = __webpack_require__(143); -var _util = __webpack_require__(112); +var _crypto = _interopRequireDefault(__webpack_require__(285)); -var _execa = _interopRequireDefault(__webpack_require__(237)); +var _execa = _interopRequireDefault(__webpack_require__(238)); -var _yarn_lock = __webpack_require__(285); +var _yarn_lock = __webpack_require__(286); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -27290,8 +27307,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * specific language governing permissions and limitations * under the License. */ -const statAsync = (0, _util.promisify)(_fs.default.stat); - const projectBySpecificitySorter = (a, b) => b.path.length - a.path.length; /** Get the changed files for a set of projects */ @@ -27408,7 +27423,7 @@ async function getChecksum(project, changes, yarnLock, osd, log) { return `${path}:deleted`; } - const stats = await statAsync(osd.getAbsolute(path)); + const stats = await (0, _promises.stat)(osd.getAbsolute(path)); log.verbose(`[${project.name}] modified time ${stats.mtimeMs} for ${path}`); return `${path}:${stats.mtimeMs}`; })); @@ -27466,13 +27481,13 @@ async function getAllChecksums(osd, log, yarnLock) { } /***/ }), -/* 284 */ +/* 285 */ /***/ (function(module, exports) { module.exports = require("crypto"); /***/ }), -/* 285 */ +/* 286 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -27484,7 +27499,11 @@ Object.defineProperty(exports, "__esModule", { exports.readYarnLock = readYarnLock; exports.resolveDepsForProject = resolveDepsForProject; -var _lockfile = __webpack_require__(286); +var _lockfile = __webpack_require__(287); + +var _crossPlatform = __webpack_require__(288); + +var _path = __webpack_require__(4); var _fs = __webpack_require__(131); @@ -27524,7 +27543,7 @@ async function readYarnLock(osd) { const yarnLock = (0, _lockfile.parse)(contents); if (yarnLock.type === 'success') { - return yarnLock.object; + return fixFileLinks(yarnLock.object); } throw new Error('unable to read yarn.lock file, please run `yarn osd bootstrap`'); @@ -27536,6 +27555,32 @@ async function readYarnLock(osd) { return {}; } +/** + * Converts relative `file:` paths to absolute paths + * Yarn parsing method converts all file URIs to relative paths and this + * breaks the single-version requirement as dependencies to the same path + * would differ in their URIs across OSD and packages. + */ + + +function fixFileLinks(yarnLock) { + const fileLinkDelimiter = '@file:'; + const linkedKeys = Object.keys(yarnLock).filter(key => key.includes(fileLinkDelimiter)); + if (linkedKeys.length === 0) return yarnLock; + const updatedYarnLock = { ...yarnLock + }; + + for (const key of linkedKeys) { + const [keyName, keyPath, ...rest] = key.split(fileLinkDelimiter); + + if (!(0, _path.isAbsolute)(keyPath)) { + const updatedKeyName = [keyName, (0, _crossPlatform.standardize)((0, _path.resolve)(keyPath)), ...rest].join(fileLinkDelimiter); + updatedYarnLock[updatedKeyName] = updatedYarnLock[key]; + } + } + + return updatedYarnLock; +} /** * Get a list of the absolute dependencies of this project, as resolved * in the yarn.lock file, does not include other projects in the workspace @@ -27608,7 +27653,7 @@ function resolveDepsForProject({ } /***/ }), -/* 286 */ +/* 287 */ /***/ (function(module, exports, __webpack_require__) { module.exports = @@ -29167,7 +29212,7 @@ module.exports = invariant; /* 9 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(284); +module.exports = __webpack_require__(285); /***/ }), /* 10 */, @@ -30117,7 +30162,7 @@ exports.f = __webpack_require__(33) ? Object.defineProperty : function definePro /* 54 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(156); +module.exports = __webpack_require__(157); /***/ }), /* 55 */ @@ -31491,7 +31536,7 @@ function onceStrict (fn) { /* 63 */ /***/ (function(module, exports) { -module.exports = __webpack_require__(266); +module.exports = __webpack_require__(267); /***/ }), /* 64 */, @@ -37886,117 +37931,226 @@ module.exports = process && support(supportLevel); /******/ ]); /***/ }), -/* 287 */ +/* 288 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.BootstrapCacheFile = void 0; -var _fs = _interopRequireDefault(__webpack_require__(134)); +const tslib_1 = __webpack_require__(7); -var _path = _interopRequireDefault(__webpack_require__(4)); +tslib_1.__exportStar(__webpack_require__(289), exports); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +tslib_1.__exportStar(__webpack_require__(290), exports); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +tslib_1.__exportStar(__webpack_require__(291), exports); -class BootstrapCacheFile { - constructor(osd, project, checksums) { - _defineProperty(this, "path", void 0); +/***/ }), +/* 289 */ +/***/ (function(module, exports, __webpack_require__) { - _defineProperty(this, "expectedValue", void 0); +"use strict"; - this.path = _path.default.resolve(project.targetLocation, '.bootstrap-cache'); +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ - if (!checksums) { - return; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.realshortpathSync = exports.realShortPathSync = exports.realpathSync = exports.realPathSync = exports.resolveToShortNameSync = exports.resolveToShortPathSync = exports.resolveToFullNameSync = exports.resolveToFullPathSync = exports.shortNameSupportedSync = exports.shortNamesSupportedSync = exports.standardize = exports.NAMESPACE_PREFIX = void 0; - const projectAndDepCacheKeys = Array.from(osd.getProjectAndDeps(project.name).values()) // sort deps by name so that the key is stable - .sort((a, b) => a.name.localeCompare(b.name)) // get the cacheKey for each project, return undefined if the cache key couldn't be determined - .map(p => { - const cacheKey = checksums.get(p.name); +const child_process_1 = __webpack_require__(239); - if (cacheKey) { - return `${p.name}:${cacheKey}`; - } - }); // if any of the relevant cache keys are undefined then the projectCacheKey must be too +const path_1 = __webpack_require__(4); - this.expectedValue = projectAndDepCacheKeys.some(k => !k) ? undefined : [`# this is only human readable for debugging, please don't try to parse this`, ...projectAndDepCacheKeys].join('\n'); - } +const fs_1 = __webpack_require__(134); - isValid() { - if (!this.expectedValue) { - return false; - } +exports.NAMESPACE_PREFIX = process.platform === 'win32' ? '\\\\?\\' : ''; +/** + * Get a standardized reference to a path + * @param {string} path - the path to standardize + * @param {boolean} [usePosix=true] - produce a posix reference + * @param {boolean} [escapedBackslashes=true] - on Windows, double-backslash the reference + * @param {boolean} [returnUNC=false] - produce an extended reference + */ - try { - return _fs.default.readFileSync(this.path, 'utf8') === this.expectedValue; - } catch (error) { - if (error.code === 'ENOENT') { - return false; - } +exports.standardize = (path, usePosix = true, escapedBackslashes = true, returnUNC = false) => { + var _process; - throw error; - } - } + // Force os-dependant separators + const normal = path_1.normalize(path); // Filter out in-browser executions as well as non-windows ones - delete() { - try { - _fs.default.unlinkSync(this.path); - } catch (error) { - if (error.code !== 'ENOENT') { - throw error; - } - } + if (((_process = process) === null || _process === void 0 ? void 0 : _process.platform) !== 'win32') return normal; + if (usePosix) return normal.replace(/\\/g, '/');else if (escapedBackslashes) return normal.replace(/\\/g, '\\\\');else if (returnUNC) return '\\\\?\\' + normal; + return normal; +}; +/** + * Windows-only function that uses PowerShell to calculate the full path + * @param {string} path + * @private + */ + + +const getFullPathSync = path => { + if (process.platform !== 'win32') return path; + + try { + var _child_process_1$exec, _child_process_1$exec2; + + const fullName = (_child_process_1$exec = child_process_1.execSync(`powershell "(Get-Item -LiteralPath '${path}').FullName"`, { + encoding: 'utf8' + })) === null || _child_process_1$exec === void 0 ? void 0 : (_child_process_1$exec2 = _child_process_1$exec.trim) === null || _child_process_1$exec2 === void 0 ? void 0 : _child_process_1$exec2.call(_child_process_1$exec); // Make sure we got something back + + if ((fullName === null || fullName === void 0 ? void 0 : fullName.length) > 2) return fullName; + } catch (ex) {// Do nothing } - write() { - if (!this.expectedValue) { - return; - } + return path; +}; +/** + * Windows-only function that uses PowerShell and Com Object to calculate the 8.3 path + * @param {string} path + * @private + */ - _fs.default.mkdirSync(_path.default.dirname(this.path), { - recursive: true - }); - _fs.default.writeFileSync(this.path, this.expectedValue); +const getShortPathSync = path => { + if (process.platform !== 'win32') return path; + + try { + var _child_process_1$exec3, _child_process_1$exec4; + + const shortPath = (_child_process_1$exec3 = child_process_1.execSync(`powershell "$FSO = New-Object -ComObject Scripting.FileSystemObject; $O = (Get-Item -LiteralPath '${path}'); if ($O.PSIsContainer) { $FSO.GetFolder($O.FullName).ShortPath } else { $FSO.GetFile($O.FullName).ShortPath }"`, { + encoding: 'utf8' + })) === null || _child_process_1$exec3 === void 0 ? void 0 : (_child_process_1$exec4 = _child_process_1$exec3.trim) === null || _child_process_1$exec4 === void 0 ? void 0 : _child_process_1$exec4.call(_child_process_1$exec3); // Make sure we got something back + + if ((shortPath === null || shortPath === void 0 ? void 0 : shortPath.length) > 2) return shortPath; + } catch (ex) {// Do nothing } -} + return path; +}; +/** + * Checks if Windows 8.3 short names are supported on the volume of the given path + * @param {string} [path='.'] - the path to examine + */ -exports.BootstrapCacheFile = BootstrapCacheFile; + +exports.shortNamesSupportedSync = (path = '.') => { + if (process.platform !== 'win32') return false; + const testFileName = '.___osd-cross-platform-test.file'; + const file = path_1.resolve(path, testFileName); // Create a test file if it doesn't exist + + if (!fs_1.existsSync(file)) fs_1.closeSync(fs_1.openSync(file, 'w')); // If the returned value's basename is not the same as the requested file name, it must be a short name + + const foundShortName = path_1.basename(getShortPathSync(file)) !== testFileName; // Cleanup + + fs_1.unlinkSync(file); + return foundShortName; +}; +/** + * @borrows shortNamesSupportedSync + */ + + +exports.shortNameSupportedSync = exports.shortNamesSupportedSync; +/** + * Get the full pathname + * @param {string} path - the path to resolve + */ + +exports.resolveToFullPathSync = path => getFullPathSync(path_1.resolve(path)); +/** + * @borrows resolveToFullPathSync + */ + + +exports.resolveToFullNameSync = exports.resolveToFullPathSync; +/** + * Get the short pathname + * @param {string} path - the path to resolve + */ + +exports.resolveToShortPathSync = path => getShortPathSync(path_1.resolve(path)); +/** + * @borrows resolveToShortPathSync + */ + + +exports.resolveToShortNameSync = exports.resolveToShortPathSync; +/** + * Get the canonical pathname + * @param {string} path - the path to resolve + */ + +exports.realPathSync = path => getFullPathSync(fs_1.realpathSync(path, 'utf8')); +/** + * @borrows realPathSync + */ + + +exports.realpathSync = exports.realPathSync; +/** + * Get the canonical pathname + * @param {string} path - the path to resolve + */ + +exports.realShortPathSync = path => getShortPathSync(fs_1.realpathSync(path, 'utf8')); +/** + * @borrows realShortPathSync + */ + + +exports.realshortpathSync = exports.realShortPathSync; /***/ }), -/* 288 */ +/* 290 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.validateDependencies = validateDependencies; - -var _lockfile = __webpack_require__(286); +exports.PROCESS_POSIX_WORKING_DIR = exports.PROCESS_WORKING_DIR = void 0; -var _dedent = _interopRequireDefault(__webpack_require__(2)); +const path_1 = __webpack_require__(289); +/** + * The full pathname of the working directory of the process + * @constant + * @type {string} + */ -var _chalk = _interopRequireDefault(__webpack_require__(113)); -var _fs = __webpack_require__(131); +exports.PROCESS_WORKING_DIR = path_1.resolveToFullPathSync(process.cwd()); +/** + * The full pathname of the working directory of the process, in POSIX format + * @constant + * @type {string} + */ -var _log = __webpack_require__(144); +exports.PROCESS_POSIX_WORKING_DIR = path_1.standardize(exports.PROCESS_WORKING_DIR); -var _projects_tree = __webpack_require__(289); +/***/ }), +/* 291 */ +/***/ (function(module, exports, __webpack_require__) { -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +"use strict"; /* * SPDX-License-Identifier: Apache-2.0 @@ -38009,6 +38163,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * GitHub history for details. */ +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.relativeToRepoRoot = exports.getRepoRoot = exports.getMatchingRoot = exports.UPSTREAM_BRANCH = exports.REPO_ROOT_8_3 = exports.REPO_ROOT = void 0; + +const tslib_1 = __webpack_require__(7); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -38027,48 +38187,319 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * specific language governing permissions and limitations * under the License. */ -// @ts-expect-error published types are useless -async function validateDependencies(osd, yarnLock) { - // look through all of the packages in the yarn.lock file to see if - // we have accidentally installed multiple lodash v4 versions - const lodash4Versions = new Set(); - const lodash4Reqs = new Set(); - - for (const [req, dep] of Object.entries(yarnLock)) { - if (req.startsWith('lodash@') && dep.version.startsWith('4.')) { - lodash4Reqs.add(req); - lodash4Versions.add(dep.version); - } - } // if we find more than one lodash v4 version installed then delete - // lodash v4 requests from the yarn.lock file and prompt the user to - // retry bootstrap so that a single v4 version will be installed - - - if (lodash4Versions.size > 1) { - for (const req of lodash4Reqs) { - delete yarnLock[req]; - } - await (0, _fs.writeFile)(osd.getAbsolute('yarn.lock'), (0, _lockfile.stringify)(yarnLock), 'utf8'); - _log.log.error((0, _dedent.default)` +const path_1 = __webpack_require__(4); - Multiple version of lodash v4 were detected, so they have been removed - from the yarn.lock file. Please rerun yarn osd bootstrap to coalese the - lodash versions installed. +const load_json_file_1 = tslib_1.__importDefault(__webpack_require__(292)); - If you still see this error when you re-bootstrap then you might need - to force a new dependency to use the latest version of lodash via the - "resolutions" field in package.json. +const path_2 = __webpack_require__(289); - If you have questions about this please reach out to the operations team. +const readOpenSearchDashboardsPkgJson = dir => { + try { + const path = path_1.resolve(dir, 'package.json'); + const json = load_json_file_1.default.sync(path); - `); + if ((json === null || json === void 0 ? void 0 : json.name) === 'opensearch-dashboards') { + return json; + } + } catch (error) { + if (error && error.code === 'ENOENT') { + return; + } - process.exit(1); - } // look through all the dependencies of production packages and production - // dependencies of those packages to determine if we're shipping any versions - // of lodash v3 in the distributable + throw error; + } +}; + +const findOpenSearchDashboardsPackageJson = () => { + // search for the opensearch-dashboards directory, since this file is moved around it might + // not be where we think but should always be a relatively close parent + // of this directory + const startDir = path_2.realPathSync(__dirname); + const { + root: rootDir + } = path_1.parse(startDir); + let cursor = startDir; + + while (true) { + const opensearchDashboardsPkgJson = readOpenSearchDashboardsPkgJson(cursor); + + if (opensearchDashboardsPkgJson) { + return { + opensearchDashboardsDir: cursor, + opensearchDashboardsPkgJson: opensearchDashboardsPkgJson + }; + } + + const parent = path_1.dirname(cursor); + + if (parent === rootDir) { + throw new Error(`unable to find opensearch-dashboards directory from ${startDir}`); + } + + cursor = parent; + } +}; + +const { + opensearchDashboardsDir, + opensearchDashboardsPkgJson +} = findOpenSearchDashboardsPackageJson(); +exports.REPO_ROOT = path_2.resolveToFullPathSync(opensearchDashboardsDir); +exports.REPO_ROOT_8_3 = path_2.resolveToShortPathSync(opensearchDashboardsDir); +exports.UPSTREAM_BRANCH = opensearchDashboardsPkgJson.branch; + +exports.getMatchingRoot = (path, rootPaths) => { + const rootPathsArray = Array.isArray(rootPaths) ? rootPaths : [rootPaths]; // We can only find the appropriate root if an absolute path was given + + if (path && path_1.isAbsolute(path)) { + // Return the matching root if one is found or return `undefined` + return rootPathsArray.find(root => path.startsWith(root)); + } + + return undefined; +}; + +exports.getRepoRoot = path => exports.getMatchingRoot(path, [exports.REPO_ROOT, exports.REPO_ROOT_8_3]); + +exports.relativeToRepoRoot = path => { + const repoRoot = exports.getRepoRoot(path); + return repoRoot ? path_1.relative(repoRoot, path) : null; +}; + +/***/ }), +/* 292 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +const path = __webpack_require__(4); +const {promisify} = __webpack_require__(112); +const fs = __webpack_require__(133); +const stripBom = __webpack_require__(293); +const parseJson = __webpack_require__(168); + +const parse = (data, filePath, options = {}) => { + data = stripBom(data); + + if (typeof options.beforeParse === 'function') { + data = options.beforeParse(data); + } + + return parseJson(data, options.reviver, path.relative(process.cwd(), filePath)); +}; + +module.exports = async (filePath, options) => parse(await promisify(fs.readFile)(filePath, 'utf8'), filePath, options); +module.exports.sync = (filePath, options) => parse(fs.readFileSync(filePath, 'utf8'), filePath, options); + + +/***/ }), +/* 293 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = string => { + if (typeof string !== 'string') { + throw new TypeError(`Expected a string, got ${typeof string}`); + } + + // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string + // conversion translates it to FEFF (UTF-16 BOM) + if (string.charCodeAt(0) === 0xFEFF) { + return string.slice(1); + } + + return string; +}; + + +/***/ }), +/* 294 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BootstrapCacheFile = void 0; + +var _fs = _interopRequireDefault(__webpack_require__(134)); + +var _path = _interopRequireDefault(__webpack_require__(4)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class BootstrapCacheFile { + constructor(osd, project, checksums) { + _defineProperty(this, "path", void 0); + + _defineProperty(this, "expectedValue", void 0); + + this.path = _path.default.resolve(project.targetLocation, '.bootstrap-cache'); + + if (!checksums) { + return; + } + + const projectAndDepCacheKeys = Array.from(osd.getProjectAndDeps(project.name).values()) // sort deps by name so that the key is stable + .sort((a, b) => a.name.localeCompare(b.name)) // get the cacheKey for each project, return undefined if the cache key couldn't be determined + .map(p => { + const cacheKey = checksums.get(p.name); + + if (cacheKey) { + return `${p.name}:${cacheKey}`; + } + }); // if any of the relevant cache keys are undefined then the projectCacheKey must be too + + this.expectedValue = projectAndDepCacheKeys.some(k => !k) ? undefined : [`# this is only human readable for debugging, please don't try to parse this`, ...projectAndDepCacheKeys].join('\n'); + } + + isValid() { + if (!this.expectedValue) { + return false; + } + + try { + return _fs.default.readFileSync(this.path, 'utf8') === this.expectedValue; + } catch (error) { + if (error.code === 'ENOENT') { + return false; + } + + throw error; + } + } + + delete() { + try { + _fs.default.unlinkSync(this.path); + } catch (error) { + if (error.code !== 'ENOENT') { + throw error; + } + } + } + + write() { + if (!this.expectedValue) { + return; + } + + _fs.default.mkdirSync(_path.default.dirname(this.path), { + recursive: true + }); + + _fs.default.writeFileSync(this.path, this.expectedValue); + } + +} + +exports.BootstrapCacheFile = BootstrapCacheFile; + +/***/ }), +/* 295 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.validateDependencies = validateDependencies; + +var _lockfile = __webpack_require__(287); + +var _dedent = _interopRequireDefault(__webpack_require__(2)); + +var _chalk = _interopRequireDefault(__webpack_require__(113)); + +var _fs = __webpack_require__(131); + +var _log = __webpack_require__(145); + +var _projects_tree = __webpack_require__(296); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* + * 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. + */ +// @ts-expect-error published types are useless +async function validateDependencies(osd, yarnLock) { + // look through all of the packages in the yarn.lock file to see if + // we have accidentally installed multiple lodash v4 versions + const lodash4Versions = new Set(); + const lodash4Reqs = new Set(); + + for (const [req, dep] of Object.entries(yarnLock)) { + if (req.startsWith('lodash@') && dep.version.startsWith('4.')) { + lodash4Reqs.add(req); + lodash4Versions.add(dep.version); + } + } // if we find more than one lodash v4 version installed then delete + // lodash v4 requests from the yarn.lock file and prompt the user to + // retry bootstrap so that a single v4 version will be installed + + + if (lodash4Versions.size > 1) { + for (const req of lodash4Reqs) { + delete yarnLock[req]; + } + + await (0, _fs.writeFile)(osd.getAbsolute('yarn.lock'), (0, _lockfile.stringify)(yarnLock), 'utf8'); + + _log.log.error((0, _dedent.default)` + + Multiple version of lodash v4 were detected, so they have been removed + from the yarn.lock file. Please rerun yarn osd bootstrap to coalese the + lodash versions installed. + + If you still see this error when you re-bootstrap then you might need + to force a new dependency to use the latest version of lodash via the + "resolutions" field in package.json. + + If you have questions about this please reach out to the operations team. + + `); + + process.exit(1); + } // look through all the dependencies of production packages and production + // dependencies of those packages to determine if we're shipping any versions + // of lodash v3 in the distributable const prodDependencies = osd.resolveAllProductionDependencies(yarnLock, _log.log); @@ -38190,7 +38621,7 @@ function getDevOnlyProductionDepsTree(osd, projectName) { } /***/ }), -/* 289 */ +/* 296 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38206,7 +38637,7 @@ var _chalk = _interopRequireDefault(__webpack_require__(113)); var _path = _interopRequireDefault(__webpack_require__(4)); -var _crossPlatform = __webpack_require__(290); +var _crossPlatform = __webpack_require__(288); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -38366,393 +38797,7 @@ function addProjectToTree(tree, pathParts, project) { } /***/ }), -/* 290 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -const tslib_1 = __webpack_require__(7); - -tslib_1.__exportStar(__webpack_require__(291), exports); - -tslib_1.__exportStar(__webpack_require__(292), exports); - -tslib_1.__exportStar(__webpack_require__(293), exports); - -/***/ }), -/* 291 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.realshortpathSync = exports.realShortPathSync = exports.realpathSync = exports.realPathSync = exports.resolveToShortNameSync = exports.resolveToShortPathSync = exports.resolveToFullNameSync = exports.resolveToFullPathSync = exports.shortNameSupportedSync = exports.shortNamesSupportedSync = exports.standardize = exports.NAMESPACE_PREFIX = void 0; - -const child_process_1 = __webpack_require__(238); - -const path_1 = __webpack_require__(4); - -const fs_1 = __webpack_require__(134); - -exports.NAMESPACE_PREFIX = process.platform === 'win32' ? '\\\\?\\' : ''; -/** - * Get a standardized reference to a path - * @param {string} path - the path to standardize - * @param {boolean} [usePosix=true] - produce a posix reference - * @param {boolean} [escapedBackslashes=true] - on Windows, double-backslash the reference - * @param {boolean} [returnUNC=false] - produce an extended reference - */ - -exports.standardize = (path, usePosix = true, escapedBackslashes = true, returnUNC = false) => { - var _process; - - // Force os-dependant separators - const normal = path_1.normalize(path); // Filter out in-browser executions as well as non-windows ones - - if (((_process = process) === null || _process === void 0 ? void 0 : _process.platform) !== 'win32') return normal; - if (usePosix) return normal.replace(/\\/g, '/');else if (escapedBackslashes) return normal.replace(/\\/g, '\\\\');else if (returnUNC) return '\\\\?\\' + normal; - return normal; -}; -/** - * Windows-only function that uses PowerShell to calculate the full path - * @param {string} path - * @private - */ - - -const getFullPathSync = path => { - if (process.platform !== 'win32') return path; - - try { - var _child_process_1$exec, _child_process_1$exec2; - - const fullName = (_child_process_1$exec = child_process_1.execSync(`powershell "(Get-Item -LiteralPath '${path}').FullName"`, { - encoding: 'utf8' - })) === null || _child_process_1$exec === void 0 ? void 0 : (_child_process_1$exec2 = _child_process_1$exec.trim) === null || _child_process_1$exec2 === void 0 ? void 0 : _child_process_1$exec2.call(_child_process_1$exec); // Make sure we got something back - - if ((fullName === null || fullName === void 0 ? void 0 : fullName.length) > 2) return fullName; - } catch (ex) {// Do nothing - } - - return path; -}; -/** - * Windows-only function that uses PowerShell and Com Object to calculate the 8.3 path - * @param {string} path - * @private - */ - - -const getShortPathSync = path => { - if (process.platform !== 'win32') return path; - - try { - var _child_process_1$exec3, _child_process_1$exec4; - - const shortPath = (_child_process_1$exec3 = child_process_1.execSync(`powershell "$FSO = New-Object -ComObject Scripting.FileSystemObject; $O = (Get-Item -LiteralPath '${path}'); if ($O.PSIsContainer) { $FSO.GetFolder($O.FullName).ShortPath } else { $FSO.GetFile($O.FullName).ShortPath }"`, { - encoding: 'utf8' - })) === null || _child_process_1$exec3 === void 0 ? void 0 : (_child_process_1$exec4 = _child_process_1$exec3.trim) === null || _child_process_1$exec4 === void 0 ? void 0 : _child_process_1$exec4.call(_child_process_1$exec3); // Make sure we got something back - - if ((shortPath === null || shortPath === void 0 ? void 0 : shortPath.length) > 2) return shortPath; - } catch (ex) {// Do nothing - } - - return path; -}; -/** - * Checks if Windows 8.3 short names are supported on the volume of the given path - * @param {string} [path='.'] - the path to examine - */ - - -exports.shortNamesSupportedSync = (path = '.') => { - if (process.platform !== 'win32') return false; - const testFileName = '.___osd-cross-platform-test.file'; - const file = path_1.resolve(path, testFileName); // Create a test file if it doesn't exist - - if (!fs_1.existsSync(file)) fs_1.closeSync(fs_1.openSync(file, 'w')); // If the returned value's basename is not the same as the requested file name, it must be a short name - - const foundShortName = path_1.basename(getShortPathSync(file)) !== testFileName; // Cleanup - - fs_1.unlinkSync(file); - return foundShortName; -}; -/** - * @borrows shortNamesSupportedSync - */ - - -exports.shortNameSupportedSync = exports.shortNamesSupportedSync; -/** - * Get the full pathname - * @param {string} path - the path to resolve - */ - -exports.resolveToFullPathSync = path => getFullPathSync(path_1.resolve(path)); -/** - * @borrows resolveToFullPathSync - */ - - -exports.resolveToFullNameSync = exports.resolveToFullPathSync; -/** - * Get the short pathname - * @param {string} path - the path to resolve - */ - -exports.resolveToShortPathSync = path => getShortPathSync(path_1.resolve(path)); -/** - * @borrows resolveToShortPathSync - */ - - -exports.resolveToShortNameSync = exports.resolveToShortPathSync; -/** - * Get the canonical pathname - * @param {string} path - the path to resolve - */ - -exports.realPathSync = path => getFullPathSync(fs_1.realpathSync(path, 'utf8')); -/** - * @borrows realPathSync - */ - - -exports.realpathSync = exports.realPathSync; -/** - * Get the canonical pathname - * @param {string} path - the path to resolve - */ - -exports.realShortPathSync = path => getShortPathSync(fs_1.realpathSync(path, 'utf8')); -/** - * @borrows realShortPathSync - */ - - -exports.realshortpathSync = exports.realShortPathSync; - -/***/ }), -/* 292 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PROCESS_POSIX_WORKING_DIR = exports.PROCESS_WORKING_DIR = void 0; - -const path_1 = __webpack_require__(291); -/** - * The full pathname of the working directory of the process - * @constant - * @type {string} - */ - - -exports.PROCESS_WORKING_DIR = path_1.resolveToFullPathSync(process.cwd()); -/** - * The full pathname of the working directory of the process, in POSIX format - * @constant - * @type {string} - */ - -exports.PROCESS_POSIX_WORKING_DIR = path_1.standardize(exports.PROCESS_WORKING_DIR); - -/***/ }), -/* 293 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/* - * 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. - */ - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.relativeToRepoRoot = exports.getRepoRoot = exports.getMatchingRoot = exports.UPSTREAM_BRANCH = exports.REPO_ROOT_8_3 = exports.REPO_ROOT = void 0; - -const tslib_1 = __webpack_require__(7); -/* - * 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. - */ - - -const path_1 = __webpack_require__(4); - -const load_json_file_1 = tslib_1.__importDefault(__webpack_require__(294)); - -const path_2 = __webpack_require__(291); - -const readOpenSearchDashboardsPkgJson = dir => { - try { - const path = path_1.resolve(dir, 'package.json'); - const json = load_json_file_1.default.sync(path); - - if ((json === null || json === void 0 ? void 0 : json.name) === 'opensearch-dashboards') { - return json; - } - } catch (error) { - if (error && error.code === 'ENOENT') { - return; - } - - throw error; - } -}; - -const findOpenSearchDashboardsPackageJson = () => { - // search for the opensearch-dashboards directory, since this file is moved around it might - // not be where we think but should always be a relatively close parent - // of this directory - const startDir = path_2.realPathSync(__dirname); - const { - root: rootDir - } = path_1.parse(startDir); - let cursor = startDir; - - while (true) { - const opensearchDashboardsPkgJson = readOpenSearchDashboardsPkgJson(cursor); - - if (opensearchDashboardsPkgJson) { - return { - opensearchDashboardsDir: cursor, - opensearchDashboardsPkgJson: opensearchDashboardsPkgJson - }; - } - - const parent = path_1.dirname(cursor); - - if (parent === rootDir) { - throw new Error(`unable to find opensearch-dashboards directory from ${startDir}`); - } - - cursor = parent; - } -}; - -const { - opensearchDashboardsDir, - opensearchDashboardsPkgJson -} = findOpenSearchDashboardsPackageJson(); -exports.REPO_ROOT = path_2.resolveToFullPathSync(opensearchDashboardsDir); -exports.REPO_ROOT_8_3 = path_2.resolveToShortPathSync(opensearchDashboardsDir); -exports.UPSTREAM_BRANCH = opensearchDashboardsPkgJson.branch; - -exports.getMatchingRoot = (path, rootPaths) => { - const rootPathsArray = Array.isArray(rootPaths) ? rootPaths : [rootPaths]; // We can only find the appropriate root if an absolute path was given - - if (path && path_1.isAbsolute(path)) { - // Return the matching root if one is found or return `undefined` - return rootPathsArray.find(root => path.startsWith(root)); - } - - return undefined; -}; - -exports.getRepoRoot = path => exports.getMatchingRoot(path, [exports.REPO_ROOT, exports.REPO_ROOT_8_3]); - -exports.relativeToRepoRoot = path => { - const repoRoot = exports.getRepoRoot(path); - return repoRoot ? path_1.relative(repoRoot, path) : null; -}; - -/***/ }), -/* 294 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__(4); -const {promisify} = __webpack_require__(112); -const fs = __webpack_require__(133); -const stripBom = __webpack_require__(295); -const parseJson = __webpack_require__(167); - -const parse = (data, filePath, options = {}) => { - data = stripBom(data); - - if (typeof options.beforeParse === 'function') { - data = options.beforeParse(data); - } - - return parseJson(data, options.reviver, path.relative(process.cwd(), filePath)); -}; - -module.exports = async (filePath, options) => parse(await promisify(fs.readFile)(filePath, 'utf8'), filePath, options); -module.exports.sync = (filePath, options) => parse(fs.readFileSync(filePath, 'utf8'), filePath, options); - - -/***/ }), -/* 295 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = string => { - if (typeof string !== 'string') { - throw new TypeError(`Expected a string, got ${typeof string}`); - } - - // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string - // conversion translates it to FEFF (UTF-16 BOM) - if (string.charCodeAt(0) === 0xFEFF) { - return string.slice(1); - } - - return string; -}; - - -/***/ }), -/* 296 */ +/* 297 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38763,15 +38808,15 @@ Object.defineProperty(exports, "__esModule", { }); exports.CleanCommand = void 0; -var _del = _interopRequireDefault(__webpack_require__(297)); +var _del = _interopRequireDefault(__webpack_require__(298)); -var _ora = _interopRequireDefault(__webpack_require__(386)); +var _ora = _interopRequireDefault(__webpack_require__(387)); var _path = __webpack_require__(4); var _fs = __webpack_require__(131); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -38876,21 +38921,21 @@ const CleanCommand = { exports.CleanCommand = CleanCommand; /***/ }), -/* 297 */ +/* 298 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const {promisify} = __webpack_require__(112); const path = __webpack_require__(4); -const globby = __webpack_require__(298); -const isGlob = __webpack_require__(310); -const slash = __webpack_require__(377); +const globby = __webpack_require__(299); +const isGlob = __webpack_require__(311); +const slash = __webpack_require__(378); const gracefulFs = __webpack_require__(133); -const isPathCwd = __webpack_require__(379); -const isPathInside = __webpack_require__(380); -const rimraf = __webpack_require__(381); -const pMap = __webpack_require__(382); +const isPathCwd = __webpack_require__(380); +const isPathInside = __webpack_require__(381); +const rimraf = __webpack_require__(382); +const pMap = __webpack_require__(383); const rimrafP = promisify(rimraf); @@ -39022,18 +39067,18 @@ module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options /***/ }), -/* 298 */ +/* 299 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); -const arrayUnion = __webpack_require__(299); -const merge2 = __webpack_require__(300); -const fastGlob = __webpack_require__(301); -const dirGlob = __webpack_require__(373); -const gitignore = __webpack_require__(375); -const {FilterStream, UniqueStream} = __webpack_require__(378); +const arrayUnion = __webpack_require__(300); +const merge2 = __webpack_require__(301); +const fastGlob = __webpack_require__(302); +const dirGlob = __webpack_require__(374); +const gitignore = __webpack_require__(376); +const {FilterStream, UniqueStream} = __webpack_require__(379); const DEFAULT_FILTER = () => false; @@ -39210,7 +39255,7 @@ module.exports.gitignore = gitignore; /***/ }), -/* 299 */ +/* 300 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39222,7 +39267,7 @@ module.exports = (...arguments_) => { /***/ }), -/* 300 */ +/* 301 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39373,18 +39418,18 @@ function pauseStreams (streams, options) { /***/ }), -/* 301 */ +/* 302 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const taskManager = __webpack_require__(302); -const patternManager = __webpack_require__(331); -const async_1 = __webpack_require__(332); -const stream_1 = __webpack_require__(369); -const sync_1 = __webpack_require__(370); -const settings_1 = __webpack_require__(372); -const utils = __webpack_require__(303); +const taskManager = __webpack_require__(303); +const patternManager = __webpack_require__(332); +const async_1 = __webpack_require__(333); +const stream_1 = __webpack_require__(370); +const sync_1 = __webpack_require__(371); +const settings_1 = __webpack_require__(373); +const utils = __webpack_require__(304); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -39448,14 +39493,14 @@ module.exports = FastGlob; /***/ }), -/* 302 */ +/* 303 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__(303); +const utils = __webpack_require__(304); function generate(patterns, settings) { const positivePatterns = getPositivePatterns(patterns); const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); @@ -39535,31 +39580,31 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 303 */ +/* 304 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__(304); +const array = __webpack_require__(305); exports.array = array; -const errno = __webpack_require__(305); +const errno = __webpack_require__(306); exports.errno = errno; -const fs = __webpack_require__(306); +const fs = __webpack_require__(307); exports.fs = fs; -const path = __webpack_require__(307); +const path = __webpack_require__(308); exports.path = path; -const pattern = __webpack_require__(308); +const pattern = __webpack_require__(309); exports.pattern = pattern; -const stream = __webpack_require__(329); +const stream = __webpack_require__(330); exports.stream = stream; -const string = __webpack_require__(330); +const string = __webpack_require__(331); exports.string = string; /***/ }), -/* 304 */ +/* 305 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39588,7 +39633,7 @@ exports.splitWhen = splitWhen; /***/ }), -/* 305 */ +/* 306 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39602,7 +39647,7 @@ exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/* 306 */ +/* 307 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39628,7 +39673,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 307 */ +/* 308 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39668,7 +39713,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/* 308 */ +/* 309 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39676,8 +39721,8 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __webpack_require__(4); -const globParent = __webpack_require__(309); -const micromatch = __webpack_require__(312); +const globParent = __webpack_require__(310); +const micromatch = __webpack_require__(313); const GLOBSTAR = '**'; const ESCAPE_SYMBOL = '\\'; const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; @@ -39844,13 +39889,13 @@ exports.matchAny = matchAny; /***/ }), -/* 309 */ +/* 310 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isGlob = __webpack_require__(310); +var isGlob = __webpack_require__(311); var pathPosixDirname = __webpack_require__(4).posix.dirname; var isWin32 = __webpack_require__(121).platform() === 'win32'; @@ -39926,7 +39971,7 @@ function isGlobby(str) { /***/ }), -/* 310 */ +/* 311 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -39936,7 +39981,7 @@ function isGlobby(str) { * Released under the MIT License. */ -var isExtglob = __webpack_require__(311); +var isExtglob = __webpack_require__(312); var chars = { '{': '}', '(': ')', '[': ']'}; var strictCheck = function(str) { if (str[0] === '!') { @@ -40082,7 +40127,7 @@ module.exports = function isGlob(str, options) { /***/ }), -/* 311 */ +/* 312 */ /***/ (function(module, exports) { /*! @@ -40108,16 +40153,16 @@ module.exports = function isExtglob(str) { /***/ }), -/* 312 */ +/* 313 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const util = __webpack_require__(112); -const braces = __webpack_require__(313); -const picomatch = __webpack_require__(323); -const utils = __webpack_require__(326); +const braces = __webpack_require__(314); +const picomatch = __webpack_require__(324); +const utils = __webpack_require__(327); const isEmptyString = val => val === '' || val === './'; /** @@ -40582,16 +40627,16 @@ module.exports = micromatch; /***/ }), -/* 313 */ +/* 314 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(314); -const compile = __webpack_require__(316); -const expand = __webpack_require__(320); -const parse = __webpack_require__(321); +const stringify = __webpack_require__(315); +const compile = __webpack_require__(317); +const expand = __webpack_require__(321); +const parse = __webpack_require__(322); /** * Expand the given pattern or create a regex-compatible string. @@ -40759,13 +40804,13 @@ module.exports = braces; /***/ }), -/* 314 */ +/* 315 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(315); +const utils = __webpack_require__(316); module.exports = (ast, options = {}) => { let stringify = (node, parent = {}) => { @@ -40798,7 +40843,7 @@ module.exports = (ast, options = {}) => { /***/ }), -/* 315 */ +/* 316 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40917,14 +40962,14 @@ exports.flatten = (...args) => { /***/ }), -/* 316 */ +/* 317 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(317); -const utils = __webpack_require__(315); +const fill = __webpack_require__(318); +const utils = __webpack_require__(316); const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { @@ -40981,7 +41026,7 @@ module.exports = compile; /***/ }), -/* 317 */ +/* 318 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40995,7 +41040,7 @@ module.exports = compile; const util = __webpack_require__(112); -const toRegexRange = __webpack_require__(318); +const toRegexRange = __webpack_require__(319); const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); @@ -41237,7 +41282,7 @@ module.exports = fill; /***/ }), -/* 318 */ +/* 319 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41250,7 +41295,7 @@ module.exports = fill; -const isNumber = __webpack_require__(319); +const isNumber = __webpack_require__(320); const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { @@ -41532,7 +41577,7 @@ module.exports = toRegexRange; /***/ }), -/* 319 */ +/* 320 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41557,15 +41602,15 @@ module.exports = function(num) { /***/ }), -/* 320 */ +/* 321 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fill = __webpack_require__(317); -const stringify = __webpack_require__(314); -const utils = __webpack_require__(315); +const fill = __webpack_require__(318); +const stringify = __webpack_require__(315); +const utils = __webpack_require__(316); const append = (queue = '', stash = '', enclose = false) => { let result = []; @@ -41677,13 +41722,13 @@ module.exports = expand; /***/ }), -/* 321 */ +/* 322 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringify = __webpack_require__(314); +const stringify = __webpack_require__(315); /** * Constants @@ -41705,7 +41750,7 @@ const { CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE -} = __webpack_require__(322); +} = __webpack_require__(323); /** * parse @@ -42017,7 +42062,7 @@ module.exports = parse; /***/ }), -/* 322 */ +/* 323 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42081,27 +42126,27 @@ module.exports = { /***/ }), -/* 323 */ +/* 324 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(324); +module.exports = __webpack_require__(325); /***/ }), -/* 324 */ +/* 325 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const scan = __webpack_require__(325); -const parse = __webpack_require__(328); -const utils = __webpack_require__(326); -const constants = __webpack_require__(327); +const scan = __webpack_require__(326); +const parse = __webpack_require__(329); +const utils = __webpack_require__(327); +const constants = __webpack_require__(328); const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** @@ -42440,13 +42485,13 @@ module.exports = picomatch; /***/ }), -/* 325 */ +/* 326 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const utils = __webpack_require__(326); +const utils = __webpack_require__(327); const { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ @@ -42463,7 +42508,7 @@ const { CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __webpack_require__(327); +} = __webpack_require__(328); const isPathSeparator = code => { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; @@ -42838,7 +42883,7 @@ module.exports = scan; /***/ }), -/* 326 */ +/* 327 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42851,7 +42896,7 @@ const { REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL -} = __webpack_require__(327); +} = __webpack_require__(328); exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); @@ -42909,7 +42954,7 @@ exports.wrapOutput = (input, state = {}, options = {}) => { /***/ }), -/* 327 */ +/* 328 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43095,14 +43140,14 @@ module.exports = { /***/ }), -/* 328 */ +/* 329 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const constants = __webpack_require__(327); -const utils = __webpack_require__(326); +const constants = __webpack_require__(328); +const utils = __webpack_require__(327); /** * Constants @@ -44193,14 +44238,14 @@ module.exports = parse; /***/ }), -/* 329 */ +/* 330 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = void 0; -const merge2 = __webpack_require__(300); +const merge2 = __webpack_require__(301); function merge(streams) { const mergedStream = merge2(streams); streams.forEach((stream) => { @@ -44217,7 +44262,7 @@ function propagateCloseEventToSources(streams) { /***/ }), -/* 330 */ +/* 331 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44235,7 +44280,7 @@ exports.isEmpty = isEmpty; /***/ }), -/* 331 */ +/* 332 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44263,14 +44308,14 @@ exports.removeDuplicateSlashes = removeDuplicateSlashes; /***/ }), -/* 332 */ +/* 333 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__(333); -const provider_1 = __webpack_require__(362); +const stream_1 = __webpack_require__(334); +const provider_1 = __webpack_require__(363); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); @@ -44298,16 +44343,16 @@ exports.default = ProviderAsync; /***/ }), -/* 333 */ +/* 334 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(138); -const fsStat = __webpack_require__(334); -const fsWalk = __webpack_require__(339); -const reader_1 = __webpack_require__(361); +const fsStat = __webpack_require__(335); +const fsWalk = __webpack_require__(340); +const reader_1 = __webpack_require__(362); class ReaderStream extends reader_1.default { constructor() { super(...arguments); @@ -44360,16 +44405,16 @@ exports.default = ReaderStream; /***/ }), -/* 334 */ +/* 335 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.statSync = exports.stat = exports.Settings = void 0; -const async = __webpack_require__(335); -const sync = __webpack_require__(336); -const settings_1 = __webpack_require__(337); +const async = __webpack_require__(336); +const sync = __webpack_require__(337); +const settings_1 = __webpack_require__(338); exports.Settings = settings_1.default; function stat(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -44393,7 +44438,7 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 335 */ +/* 336 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44436,7 +44481,7 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 336 */ +/* 337 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44466,13 +44511,13 @@ exports.read = read; /***/ }), -/* 337 */ +/* 338 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__(338); +const fs = __webpack_require__(339); class Settings { constructor(_options = {}) { this._options = _options; @@ -44489,7 +44534,7 @@ exports.default = Settings; /***/ }), -/* 338 */ +/* 339 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44513,17 +44558,17 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 339 */ +/* 340 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0; -const async_1 = __webpack_require__(340); -const stream_1 = __webpack_require__(357); -const sync_1 = __webpack_require__(358); -const settings_1 = __webpack_require__(360); +const async_1 = __webpack_require__(341); +const stream_1 = __webpack_require__(358); +const sync_1 = __webpack_require__(359); +const settings_1 = __webpack_require__(361); exports.Settings = settings_1.default; function walk(directory, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -44554,13 +44599,13 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 340 */ +/* 341 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__(341); +const async_1 = __webpack_require__(342); class AsyncProvider { constructor(_root, _settings) { this._root = _root; @@ -44591,17 +44636,17 @@ function callSuccessCallback(callback, entries) { /***/ }), -/* 341 */ +/* 342 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const events_1 = __webpack_require__(156); -const fsScandir = __webpack_require__(342); -const fastq = __webpack_require__(353); -const common = __webpack_require__(355); -const reader_1 = __webpack_require__(356); +const events_1 = __webpack_require__(157); +const fsScandir = __webpack_require__(343); +const fastq = __webpack_require__(354); +const common = __webpack_require__(356); +const reader_1 = __webpack_require__(357); class AsyncReader extends reader_1.default { constructor(_root, _settings) { super(_root, _settings); @@ -44695,16 +44740,16 @@ exports.default = AsyncReader; /***/ }), -/* 342 */ +/* 343 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Settings = exports.scandirSync = exports.scandir = void 0; -const async = __webpack_require__(343); -const sync = __webpack_require__(350); -const settings_1 = __webpack_require__(351); +const async = __webpack_require__(344); +const sync = __webpack_require__(351); +const settings_1 = __webpack_require__(352); exports.Settings = settings_1.default; function scandir(path, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === 'function') { @@ -44728,18 +44773,18 @@ function getSettings(settingsOrOptions = {}) { /***/ }), -/* 343 */ +/* 344 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; -const fsStat = __webpack_require__(334); -const rpl = __webpack_require__(344); -const constants_1 = __webpack_require__(346); -const utils = __webpack_require__(347); -const common = __webpack_require__(349); +const fsStat = __webpack_require__(335); +const rpl = __webpack_require__(345); +const constants_1 = __webpack_require__(347); +const utils = __webpack_require__(348); +const common = __webpack_require__(350); function read(directory, settings, callback) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { readdirWithFileTypes(directory, settings, callback); @@ -44839,13 +44884,13 @@ function callSuccessCallback(callback, result) { /***/ }), -/* 344 */ +/* 345 */ /***/ (function(module, exports, __webpack_require__) { /*! run-parallel. MIT License. Feross Aboukhadijeh */ module.exports = runParallel -const queueMicrotask = __webpack_require__(345) +const queueMicrotask = __webpack_require__(346) function runParallel (tasks, cb) { let results, pending, keys @@ -44896,7 +44941,7 @@ function runParallel (tasks, cb) { /***/ }), -/* 345 */ +/* 346 */ /***/ (function(module, exports) { /*! queue-microtask. MIT License. Feross Aboukhadijeh */ @@ -44911,7 +44956,7 @@ module.exports = typeof queueMicrotask === 'function' /***/ }), -/* 346 */ +/* 347 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44935,19 +44980,19 @@ exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_B /***/ }), -/* 347 */ +/* 348 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fs = void 0; -const fs = __webpack_require__(348); +const fs = __webpack_require__(349); exports.fs = fs; /***/ }), -/* 348 */ +/* 349 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44973,7 +45018,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/* 349 */ +/* 350 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44993,17 +45038,17 @@ exports.joinPathSegments = joinPathSegments; /***/ }), -/* 350 */ +/* 351 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; -const fsStat = __webpack_require__(334); -const constants_1 = __webpack_require__(346); -const utils = __webpack_require__(347); -const common = __webpack_require__(349); +const fsStat = __webpack_require__(335); +const constants_1 = __webpack_require__(347); +const utils = __webpack_require__(348); +const common = __webpack_require__(350); function read(directory, settings) { if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { return readdirWithFileTypes(directory, settings); @@ -45054,15 +45099,15 @@ exports.readdir = readdir; /***/ }), -/* 351 */ +/* 352 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(334); -const fs = __webpack_require__(352); +const fsStat = __webpack_require__(335); +const fs = __webpack_require__(353); class Settings { constructor(_options = {}) { this._options = _options; @@ -45085,7 +45130,7 @@ exports.default = Settings; /***/ }), -/* 352 */ +/* 353 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45111,7 +45156,7 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /***/ }), -/* 353 */ +/* 354 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45119,7 +45164,7 @@ exports.createFileSystemAdapter = createFileSystemAdapter; /* eslint-disable no-var */ -var reusify = __webpack_require__(354) +var reusify = __webpack_require__(355) function fastqueue (context, worker, concurrency) { if (typeof context === 'function') { @@ -45401,7 +45446,7 @@ module.exports.promise = queueAsPromised /***/ }), -/* 354 */ +/* 355 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45441,7 +45486,7 @@ module.exports = reusify /***/ }), -/* 355 */ +/* 356 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45479,13 +45524,13 @@ exports.joinPathSegments = joinPathSegments; /***/ }), -/* 356 */ +/* 357 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const common = __webpack_require__(355); +const common = __webpack_require__(356); class Reader { constructor(_root, _settings) { this._root = _root; @@ -45497,14 +45542,14 @@ exports.default = Reader; /***/ }), -/* 357 */ +/* 358 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(138); -const async_1 = __webpack_require__(341); +const async_1 = __webpack_require__(342); class StreamProvider { constructor(_root, _settings) { this._root = _root; @@ -45538,13 +45583,13 @@ exports.default = StreamProvider; /***/ }), -/* 358 */ +/* 359 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(359); +const sync_1 = __webpack_require__(360); class SyncProvider { constructor(_root, _settings) { this._root = _root; @@ -45559,15 +45604,15 @@ exports.default = SyncProvider; /***/ }), -/* 359 */ +/* 360 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsScandir = __webpack_require__(342); -const common = __webpack_require__(355); -const reader_1 = __webpack_require__(356); +const fsScandir = __webpack_require__(343); +const common = __webpack_require__(356); +const reader_1 = __webpack_require__(357); class SyncReader extends reader_1.default { constructor() { super(...arguments); @@ -45625,14 +45670,14 @@ exports.default = SyncReader; /***/ }), -/* 360 */ +/* 361 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsScandir = __webpack_require__(342); +const fsScandir = __webpack_require__(343); class Settings { constructor(_options = {}) { this._options = _options; @@ -45658,15 +45703,15 @@ exports.default = Settings; /***/ }), -/* 361 */ +/* 362 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const fsStat = __webpack_require__(334); -const utils = __webpack_require__(303); +const fsStat = __webpack_require__(335); +const utils = __webpack_require__(304); class Reader { constructor(_settings) { this._settings = _settings; @@ -45698,17 +45743,17 @@ exports.default = Reader; /***/ }), -/* 362 */ +/* 363 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path = __webpack_require__(4); -const deep_1 = __webpack_require__(363); -const entry_1 = __webpack_require__(366); -const error_1 = __webpack_require__(367); -const entry_2 = __webpack_require__(368); +const deep_1 = __webpack_require__(364); +const entry_1 = __webpack_require__(367); +const error_1 = __webpack_require__(368); +const entry_2 = __webpack_require__(369); class Provider { constructor(_settings) { this._settings = _settings; @@ -45753,14 +45798,14 @@ exports.default = Provider; /***/ }), -/* 363 */ +/* 364 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(303); -const partial_1 = __webpack_require__(364); +const utils = __webpack_require__(304); +const partial_1 = __webpack_require__(365); class DeepFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -45822,13 +45867,13 @@ exports.default = DeepFilter; /***/ }), -/* 364 */ +/* 365 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__(365); +const matcher_1 = __webpack_require__(366); class PartialMatcher extends matcher_1.default { match(filepath) { const parts = filepath.split('/'); @@ -45867,13 +45912,13 @@ exports.default = PartialMatcher; /***/ }), -/* 365 */ +/* 366 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(303); +const utils = __webpack_require__(304); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -45924,13 +45969,13 @@ exports.default = Matcher; /***/ }), -/* 366 */ +/* 367 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(303); +const utils = __webpack_require__(304); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -45991,13 +46036,13 @@ exports.default = EntryFilter; /***/ }), -/* 367 */ +/* 368 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(303); +const utils = __webpack_require__(304); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -46013,13 +46058,13 @@ exports.default = ErrorFilter; /***/ }), -/* 368 */ +/* 369 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__(303); +const utils = __webpack_require__(304); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -46046,15 +46091,15 @@ exports.default = EntryTransformer; /***/ }), -/* 369 */ +/* 370 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = __webpack_require__(138); -const stream_2 = __webpack_require__(333); -const provider_1 = __webpack_require__(362); +const stream_2 = __webpack_require__(334); +const provider_1 = __webpack_require__(363); class ProviderStream extends provider_1.default { constructor() { super(...arguments); @@ -46084,14 +46129,14 @@ exports.default = ProviderStream; /***/ }), -/* 370 */ +/* 371 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__(371); -const provider_1 = __webpack_require__(362); +const sync_1 = __webpack_require__(372); +const provider_1 = __webpack_require__(363); class ProviderSync extends provider_1.default { constructor() { super(...arguments); @@ -46114,15 +46159,15 @@ exports.default = ProviderSync; /***/ }), -/* 371 */ +/* 372 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__(334); -const fsWalk = __webpack_require__(339); -const reader_1 = __webpack_require__(361); +const fsStat = __webpack_require__(335); +const fsWalk = __webpack_require__(340); +const reader_1 = __webpack_require__(362); class ReaderSync extends reader_1.default { constructor() { super(...arguments); @@ -46164,7 +46209,7 @@ exports.default = ReaderSync; /***/ }), -/* 372 */ +/* 373 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46228,13 +46273,13 @@ exports.default = Settings; /***/ }), -/* 373 */ +/* 374 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(374); +const pathType = __webpack_require__(375); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -46310,7 +46355,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 374 */ +/* 375 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46360,7 +46405,7 @@ exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 375 */ +/* 376 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46368,9 +46413,9 @@ exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); const {promisify} = __webpack_require__(112); const fs = __webpack_require__(134); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(301); -const gitIgnore = __webpack_require__(376); -const slash = __webpack_require__(377); +const fastGlob = __webpack_require__(302); +const gitIgnore = __webpack_require__(377); +const slash = __webpack_require__(378); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -46487,7 +46532,7 @@ module.exports.sync = options => { /***/ }), -/* 376 */ +/* 377 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -47096,7 +47141,7 @@ if ( /***/ }), -/* 377 */ +/* 378 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47114,7 +47159,7 @@ module.exports = path => { /***/ }), -/* 378 */ +/* 379 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47167,7 +47212,7 @@ module.exports = { /***/ }), -/* 379 */ +/* 380 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47189,7 +47234,7 @@ module.exports = path_ => { /***/ }), -/* 380 */ +/* 381 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47208,7 +47253,7 @@ module.exports = (childPath, parentPath) => { /***/ }), -/* 381 */ +/* 382 */ /***/ (function(module, exports, __webpack_require__) { const assert = __webpack_require__(140) @@ -47216,7 +47261,7 @@ const path = __webpack_require__(4) const fs = __webpack_require__(134) let glob = undefined try { - glob = __webpack_require__(147) + glob = __webpack_require__(148) } catch (_err) { // treat glob as optional. } @@ -47574,12 +47619,12 @@ rimraf.sync = rimrafSync /***/ }), -/* 382 */ +/* 383 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(383); +const AggregateError = __webpack_require__(384); module.exports = async ( iterable, @@ -47662,13 +47707,13 @@ module.exports = async ( /***/ }), -/* 383 */ +/* 384 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const indentString = __webpack_require__(384); -const cleanStack = __webpack_require__(385); +const indentString = __webpack_require__(385); +const cleanStack = __webpack_require__(386); const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); @@ -47716,7 +47761,7 @@ module.exports = AggregateError; /***/ }), -/* 384 */ +/* 385 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47758,7 +47803,7 @@ module.exports = (string, count = 1, options) => { /***/ }), -/* 385 */ +/* 386 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47805,20 +47850,20 @@ module.exports = (stack, options) => { /***/ }), -/* 386 */ +/* 387 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readline = __webpack_require__(387); -const chalk = __webpack_require__(388); -const cliCursor = __webpack_require__(391); -const cliSpinners = __webpack_require__(393); -const logSymbols = __webpack_require__(395); -const stripAnsi = __webpack_require__(401); -const wcwidth = __webpack_require__(403); -const isInteractive = __webpack_require__(407); -const MuteStream = __webpack_require__(408); +const readline = __webpack_require__(388); +const chalk = __webpack_require__(389); +const cliCursor = __webpack_require__(392); +const cliSpinners = __webpack_require__(394); +const logSymbols = __webpack_require__(396); +const stripAnsi = __webpack_require__(402); +const wcwidth = __webpack_require__(404); +const isInteractive = __webpack_require__(408); +const MuteStream = __webpack_require__(409); const TEXT = Symbol('text'); const PREFIX_TEXT = Symbol('prefixText'); @@ -48171,13 +48216,13 @@ module.exports.promise = (action, options) => { /***/ }), -/* 387 */ +/* 388 */ /***/ (function(module, exports) { module.exports = require("readline"); /***/ }), -/* 388 */ +/* 389 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48187,7 +48232,7 @@ const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(120); const { stringReplaceAll, stringEncaseCRLFWithFirstIndex -} = __webpack_require__(389); +} = __webpack_require__(390); // `supportsColor.level` → `ansiStyles.color[name]` mapping const levelMapping = [ @@ -48388,7 +48433,7 @@ const chalkTag = (chalk, ...strings) => { } if (template === undefined) { - template = __webpack_require__(390); + template = __webpack_require__(391); } return template(chalk, parts.join('')); @@ -48417,7 +48462,7 @@ module.exports = chalk; /***/ }), -/* 389 */ +/* 390 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48463,7 +48508,7 @@ module.exports = { /***/ }), -/* 390 */ +/* 391 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48604,12 +48649,12 @@ module.exports = (chalk, temporary) => { /***/ }), -/* 391 */ +/* 392 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const restoreCursor = __webpack_require__(392); +const restoreCursor = __webpack_require__(393); let isHidden = false; @@ -48646,13 +48691,13 @@ exports.toggle = (force, writableStream) => { /***/ }), -/* 392 */ +/* 393 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const onetime = __webpack_require__(254); -const signalExit = __webpack_require__(227); +const onetime = __webpack_require__(255); +const signalExit = __webpack_require__(228); module.exports = onetime(() => { signalExit(() => { @@ -48662,13 +48707,13 @@ module.exports = onetime(() => { /***/ }), -/* 393 */ +/* 394 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const spinners = Object.assign({}, __webpack_require__(394)); // eslint-disable-line import/extensions +const spinners = Object.assign({}, __webpack_require__(395)); // eslint-disable-line import/extensions const spinnersList = Object.keys(spinners); @@ -48684,18 +48729,18 @@ module.exports = spinners; /***/ }), -/* 394 */ +/* 395 */ /***/ (function(module) { module.exports = JSON.parse("{\"dots\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠹\",\"⠸\",\"⠼\",\"⠴\",\"⠦\",\"⠧\",\"⠇\",\"⠏\"]},\"dots2\":{\"interval\":80,\"frames\":[\"⣾\",\"⣽\",\"⣻\",\"⢿\",\"⡿\",\"⣟\",\"⣯\",\"⣷\"]},\"dots3\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠞\",\"⠖\",\"⠦\",\"⠴\",\"⠲\",\"⠳\",\"⠓\"]},\"dots4\":{\"interval\":80,\"frames\":[\"⠄\",\"⠆\",\"⠇\",\"⠋\",\"⠙\",\"⠸\",\"⠰\",\"⠠\",\"⠰\",\"⠸\",\"⠙\",\"⠋\",\"⠇\",\"⠆\"]},\"dots5\":{\"interval\":80,\"frames\":[\"⠋\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\"]},\"dots6\":{\"interval\":80,\"frames\":[\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠴\",\"⠲\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠚\",\"⠙\",\"⠉\",\"⠁\"]},\"dots7\":{\"interval\":80,\"frames\":[\"⠈\",\"⠉\",\"⠋\",\"⠓\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠖\",\"⠦\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\"]},\"dots8\":{\"interval\":80,\"frames\":[\"⠁\",\"⠁\",\"⠉\",\"⠙\",\"⠚\",\"⠒\",\"⠂\",\"⠂\",\"⠒\",\"⠲\",\"⠴\",\"⠤\",\"⠄\",\"⠄\",\"⠤\",\"⠠\",\"⠠\",\"⠤\",\"⠦\",\"⠖\",\"⠒\",\"⠐\",\"⠐\",\"⠒\",\"⠓\",\"⠋\",\"⠉\",\"⠈\",\"⠈\"]},\"dots9\":{\"interval\":80,\"frames\":[\"⢹\",\"⢺\",\"⢼\",\"⣸\",\"⣇\",\"⡧\",\"⡗\",\"⡏\"]},\"dots10\":{\"interval\":80,\"frames\":[\"⢄\",\"⢂\",\"⢁\",\"⡁\",\"⡈\",\"⡐\",\"⡠\"]},\"dots11\":{\"interval\":100,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⡀\",\"⢀\",\"⠠\",\"⠐\",\"⠈\"]},\"dots12\":{\"interval\":80,\"frames\":[\"⢀⠀\",\"⡀⠀\",\"⠄⠀\",\"⢂⠀\",\"⡂⠀\",\"⠅⠀\",\"⢃⠀\",\"⡃⠀\",\"⠍⠀\",\"⢋⠀\",\"⡋⠀\",\"⠍⠁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⢈⠩\",\"⡀⢙\",\"⠄⡙\",\"⢂⠩\",\"⡂⢘\",\"⠅⡘\",\"⢃⠨\",\"⡃⢐\",\"⠍⡐\",\"⢋⠠\",\"⡋⢀\",\"⠍⡁\",\"⢋⠁\",\"⡋⠁\",\"⠍⠉\",\"⠋⠉\",\"⠋⠉\",\"⠉⠙\",\"⠉⠙\",\"⠉⠩\",\"⠈⢙\",\"⠈⡙\",\"⠈⠩\",\"⠀⢙\",\"⠀⡙\",\"⠀⠩\",\"⠀⢘\",\"⠀⡘\",\"⠀⠨\",\"⠀⢐\",\"⠀⡐\",\"⠀⠠\",\"⠀⢀\",\"⠀⡀\"]},\"dots8Bit\":{\"interval\":80,\"frames\":[\"⠀\",\"⠁\",\"⠂\",\"⠃\",\"⠄\",\"⠅\",\"⠆\",\"⠇\",\"⡀\",\"⡁\",\"⡂\",\"⡃\",\"⡄\",\"⡅\",\"⡆\",\"⡇\",\"⠈\",\"⠉\",\"⠊\",\"⠋\",\"⠌\",\"⠍\",\"⠎\",\"⠏\",\"⡈\",\"⡉\",\"⡊\",\"⡋\",\"⡌\",\"⡍\",\"⡎\",\"⡏\",\"⠐\",\"⠑\",\"⠒\",\"⠓\",\"⠔\",\"⠕\",\"⠖\",\"⠗\",\"⡐\",\"⡑\",\"⡒\",\"⡓\",\"⡔\",\"⡕\",\"⡖\",\"⡗\",\"⠘\",\"⠙\",\"⠚\",\"⠛\",\"⠜\",\"⠝\",\"⠞\",\"⠟\",\"⡘\",\"⡙\",\"⡚\",\"⡛\",\"⡜\",\"⡝\",\"⡞\",\"⡟\",\"⠠\",\"⠡\",\"⠢\",\"⠣\",\"⠤\",\"⠥\",\"⠦\",\"⠧\",\"⡠\",\"⡡\",\"⡢\",\"⡣\",\"⡤\",\"⡥\",\"⡦\",\"⡧\",\"⠨\",\"⠩\",\"⠪\",\"⠫\",\"⠬\",\"⠭\",\"⠮\",\"⠯\",\"⡨\",\"⡩\",\"⡪\",\"⡫\",\"⡬\",\"⡭\",\"⡮\",\"⡯\",\"⠰\",\"⠱\",\"⠲\",\"⠳\",\"⠴\",\"⠵\",\"⠶\",\"⠷\",\"⡰\",\"⡱\",\"⡲\",\"⡳\",\"⡴\",\"⡵\",\"⡶\",\"⡷\",\"⠸\",\"⠹\",\"⠺\",\"⠻\",\"⠼\",\"⠽\",\"⠾\",\"⠿\",\"⡸\",\"⡹\",\"⡺\",\"⡻\",\"⡼\",\"⡽\",\"⡾\",\"⡿\",\"⢀\",\"⢁\",\"⢂\",\"⢃\",\"⢄\",\"⢅\",\"⢆\",\"⢇\",\"⣀\",\"⣁\",\"⣂\",\"⣃\",\"⣄\",\"⣅\",\"⣆\",\"⣇\",\"⢈\",\"⢉\",\"⢊\",\"⢋\",\"⢌\",\"⢍\",\"⢎\",\"⢏\",\"⣈\",\"⣉\",\"⣊\",\"⣋\",\"⣌\",\"⣍\",\"⣎\",\"⣏\",\"⢐\",\"⢑\",\"⢒\",\"⢓\",\"⢔\",\"⢕\",\"⢖\",\"⢗\",\"⣐\",\"⣑\",\"⣒\",\"⣓\",\"⣔\",\"⣕\",\"⣖\",\"⣗\",\"⢘\",\"⢙\",\"⢚\",\"⢛\",\"⢜\",\"⢝\",\"⢞\",\"⢟\",\"⣘\",\"⣙\",\"⣚\",\"⣛\",\"⣜\",\"⣝\",\"⣞\",\"⣟\",\"⢠\",\"⢡\",\"⢢\",\"⢣\",\"⢤\",\"⢥\",\"⢦\",\"⢧\",\"⣠\",\"⣡\",\"⣢\",\"⣣\",\"⣤\",\"⣥\",\"⣦\",\"⣧\",\"⢨\",\"⢩\",\"⢪\",\"⢫\",\"⢬\",\"⢭\",\"⢮\",\"⢯\",\"⣨\",\"⣩\",\"⣪\",\"⣫\",\"⣬\",\"⣭\",\"⣮\",\"⣯\",\"⢰\",\"⢱\",\"⢲\",\"⢳\",\"⢴\",\"⢵\",\"⢶\",\"⢷\",\"⣰\",\"⣱\",\"⣲\",\"⣳\",\"⣴\",\"⣵\",\"⣶\",\"⣷\",\"⢸\",\"⢹\",\"⢺\",\"⢻\",\"⢼\",\"⢽\",\"⢾\",\"⢿\",\"⣸\",\"⣹\",\"⣺\",\"⣻\",\"⣼\",\"⣽\",\"⣾\",\"⣿\"]},\"line\":{\"interval\":130,\"frames\":[\"-\",\"\\\\\",\"|\",\"/\"]},\"line2\":{\"interval\":100,\"frames\":[\"⠂\",\"-\",\"–\",\"—\",\"–\",\"-\"]},\"pipe\":{\"interval\":100,\"frames\":[\"┤\",\"┘\",\"┴\",\"└\",\"├\",\"┌\",\"┬\",\"┐\"]},\"simpleDots\":{\"interval\":400,\"frames\":[\". \",\".. \",\"...\",\" \"]},\"simpleDotsScrolling\":{\"interval\":200,\"frames\":[\". \",\".. \",\"...\",\" ..\",\" .\",\" \"]},\"star\":{\"interval\":70,\"frames\":[\"✶\",\"✸\",\"✹\",\"✺\",\"✹\",\"✷\"]},\"star2\":{\"interval\":80,\"frames\":[\"+\",\"x\",\"*\"]},\"flip\":{\"interval\":70,\"frames\":[\"_\",\"_\",\"_\",\"-\",\"`\",\"`\",\"'\",\"´\",\"-\",\"_\",\"_\",\"_\"]},\"hamburger\":{\"interval\":100,\"frames\":[\"☱\",\"☲\",\"☴\"]},\"growVertical\":{\"interval\":120,\"frames\":[\"▁\",\"▃\",\"▄\",\"▅\",\"▆\",\"▇\",\"▆\",\"▅\",\"▄\",\"▃\"]},\"growHorizontal\":{\"interval\":120,\"frames\":[\"▏\",\"▎\",\"▍\",\"▌\",\"▋\",\"▊\",\"▉\",\"▊\",\"▋\",\"▌\",\"▍\",\"▎\"]},\"balloon\":{\"interval\":140,\"frames\":[\" \",\".\",\"o\",\"O\",\"@\",\"*\",\" \"]},\"balloon2\":{\"interval\":120,\"frames\":[\".\",\"o\",\"O\",\"°\",\"O\",\"o\",\".\"]},\"noise\":{\"interval\":100,\"frames\":[\"▓\",\"▒\",\"░\"]},\"bounce\":{\"interval\":120,\"frames\":[\"⠁\",\"⠂\",\"⠄\",\"⠂\"]},\"boxBounce\":{\"interval\":120,\"frames\":[\"▖\",\"▘\",\"▝\",\"▗\"]},\"boxBounce2\":{\"interval\":100,\"frames\":[\"▌\",\"▀\",\"▐\",\"▄\"]},\"triangle\":{\"interval\":50,\"frames\":[\"◢\",\"◣\",\"◤\",\"◥\"]},\"arc\":{\"interval\":100,\"frames\":[\"◜\",\"◠\",\"◝\",\"◞\",\"◡\",\"◟\"]},\"circle\":{\"interval\":120,\"frames\":[\"◡\",\"⊙\",\"◠\"]},\"squareCorners\":{\"interval\":180,\"frames\":[\"◰\",\"◳\",\"◲\",\"◱\"]},\"circleQuarters\":{\"interval\":120,\"frames\":[\"◴\",\"◷\",\"◶\",\"◵\"]},\"circleHalves\":{\"interval\":50,\"frames\":[\"◐\",\"◓\",\"◑\",\"◒\"]},\"squish\":{\"interval\":100,\"frames\":[\"╫\",\"╪\"]},\"toggle\":{\"interval\":250,\"frames\":[\"⊶\",\"⊷\"]},\"toggle2\":{\"interval\":80,\"frames\":[\"▫\",\"▪\"]},\"toggle3\":{\"interval\":120,\"frames\":[\"□\",\"■\"]},\"toggle4\":{\"interval\":100,\"frames\":[\"■\",\"□\",\"▪\",\"▫\"]},\"toggle5\":{\"interval\":100,\"frames\":[\"▮\",\"▯\"]},\"toggle6\":{\"interval\":300,\"frames\":[\"ဝ\",\"၀\"]},\"toggle7\":{\"interval\":80,\"frames\":[\"⦾\",\"⦿\"]},\"toggle8\":{\"interval\":100,\"frames\":[\"◍\",\"◌\"]},\"toggle9\":{\"interval\":100,\"frames\":[\"◉\",\"◎\"]},\"toggle10\":{\"interval\":100,\"frames\":[\"㊂\",\"㊀\",\"㊁\"]},\"toggle11\":{\"interval\":50,\"frames\":[\"⧇\",\"⧆\"]},\"toggle12\":{\"interval\":120,\"frames\":[\"☗\",\"☖\"]},\"toggle13\":{\"interval\":80,\"frames\":[\"=\",\"*\",\"-\"]},\"arrow\":{\"interval\":100,\"frames\":[\"←\",\"↖\",\"↑\",\"↗\",\"→\",\"↘\",\"↓\",\"↙\"]},\"arrow2\":{\"interval\":80,\"frames\":[\"⬆️ \",\"↗️ \",\"➡️ \",\"↘️ \",\"⬇️ \",\"↙️ \",\"⬅️ \",\"↖️ \"]},\"arrow3\":{\"interval\":120,\"frames\":[\"▹▹▹▹▹\",\"▸▹▹▹▹\",\"▹▸▹▹▹\",\"▹▹▸▹▹\",\"▹▹▹▸▹\",\"▹▹▹▹▸\"]},\"bouncingBar\":{\"interval\":80,\"frames\":[\"[ ]\",\"[= ]\",\"[== ]\",\"[=== ]\",\"[ ===]\",\"[ ==]\",\"[ =]\",\"[ ]\",\"[ =]\",\"[ ==]\",\"[ ===]\",\"[====]\",\"[=== ]\",\"[== ]\",\"[= ]\"]},\"bouncingBall\":{\"interval\":80,\"frames\":[\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ●)\",\"( ● )\",\"( ● )\",\"( ● )\",\"( ● )\",\"(● )\"]},\"smiley\":{\"interval\":200,\"frames\":[\"😄 \",\"😝 \"]},\"monkey\":{\"interval\":300,\"frames\":[\"🙈 \",\"🙈 \",\"🙉 \",\"🙊 \"]},\"hearts\":{\"interval\":100,\"frames\":[\"💛 \",\"💙 \",\"💜 \",\"💚 \",\"❤️ \"]},\"clock\":{\"interval\":100,\"frames\":[\"🕛 \",\"🕐 \",\"🕑 \",\"🕒 \",\"🕓 \",\"🕔 \",\"🕕 \",\"🕖 \",\"🕗 \",\"🕘 \",\"🕙 \",\"🕚 \"]},\"earth\":{\"interval\":180,\"frames\":[\"🌍 \",\"🌎 \",\"🌏 \"]},\"material\":{\"interval\":17,\"frames\":[\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"██████████▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"█████████████▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁██████████████▁▁▁▁\",\"▁▁▁██████████████▁▁▁\",\"▁▁▁▁█████████████▁▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁██████████████▁▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁██████████████▁\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁██████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁█████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁████████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁███████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁██████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\"███████████▁▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"████████████▁▁▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"██████████████▁▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁██████████████▁▁▁▁▁\",\"▁▁▁█████████████▁▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁████████████▁▁▁\",\"▁▁▁▁▁▁███████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"]},\"moon\":{\"interval\":80,\"frames\":[\"🌑 \",\"🌒 \",\"🌓 \",\"🌔 \",\"🌕 \",\"🌖 \",\"🌗 \",\"🌘 \"]},\"runner\":{\"interval\":140,\"frames\":[\"🚶 \",\"🏃 \"]},\"pong\":{\"interval\":80,\"frames\":[\"▐⠂ ▌\",\"▐⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂▌\",\"▐ ⠠▌\",\"▐ ⡀▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐ ⠠ ▌\",\"▐ ⠂ ▌\",\"▐ ⠈ ▌\",\"▐ ⠂ ▌\",\"▐ ⠠ ▌\",\"▐ ⡀ ▌\",\"▐⠠ ▌\"]},\"shark\":{\"interval\":120,\"frames\":[\"▐|\\\\____________▌\",\"▐_|\\\\___________▌\",\"▐__|\\\\__________▌\",\"▐___|\\\\_________▌\",\"▐____|\\\\________▌\",\"▐_____|\\\\_______▌\",\"▐______|\\\\______▌\",\"▐_______|\\\\_____▌\",\"▐________|\\\\____▌\",\"▐_________|\\\\___▌\",\"▐__________|\\\\__▌\",\"▐___________|\\\\_▌\",\"▐____________|\\\\▌\",\"▐____________/|▌\",\"▐___________/|_▌\",\"▐__________/|__▌\",\"▐_________/|___▌\",\"▐________/|____▌\",\"▐_______/|_____▌\",\"▐______/|______▌\",\"▐_____/|_______▌\",\"▐____/|________▌\",\"▐___/|_________▌\",\"▐__/|__________▌\",\"▐_/|___________▌\",\"▐/|____________▌\"]},\"dqpb\":{\"interval\":100,\"frames\":[\"d\",\"q\",\"p\",\"b\"]},\"weather\":{\"interval\":100,\"frames\":[\"☀️ \",\"☀️ \",\"☀️ \",\"🌤 \",\"⛅️ \",\"🌥 \",\"☁️ \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"🌧 \",\"🌨 \",\"⛈ \",\"🌨 \",\"🌧 \",\"🌨 \",\"☁️ \",\"🌥 \",\"⛅️ \",\"🌤 \",\"☀️ \",\"☀️ \"]},\"christmas\":{\"interval\":400,\"frames\":[\"🌲\",\"🎄\"]},\"grenade\":{\"interval\":80,\"frames\":[\"، \",\"′ \",\" ´ \",\" ‾ \",\" ⸌\",\" ⸊\",\" |\",\" ⁎\",\" ⁕\",\" ෴ \",\" ⁓\",\" \",\" \",\" \"]},\"point\":{\"interval\":125,\"frames\":[\"∙∙∙\",\"●∙∙\",\"∙●∙\",\"∙∙●\",\"∙∙∙\"]},\"layer\":{\"interval\":150,\"frames\":[\"-\",\"=\",\"≡\"]},\"betaWave\":{\"interval\":80,\"frames\":[\"ρββββββ\",\"βρβββββ\",\"ββρββββ\",\"βββρβββ\",\"ββββρββ\",\"βββββρβ\",\"ββββββρ\"]},\"fingerDance\":{\"interval\":160,\"frames\":[\"🤘 \",\"🤟 \",\"🖖 \",\"✋ \",\"🤚 \",\"👆 \"]},\"fistBump\":{\"interval\":80,\"frames\":[\"🤜    🤛 \",\"🤜    🤛 \",\"🤜    🤛 \",\" 🤜  🤛  \",\"  🤜🤛   \",\" 🤜✨🤛   \",\"🤜 ✨ 🤛  \"]},\"soccerHeader\":{\"interval\":80,\"frames\":[\" 🧑⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \",\"🧑 ⚽️ 🧑 \"]},\"mindblown\":{\"interval\":160,\"frames\":[\"😐 \",\"😐 \",\"😮 \",\"😮 \",\"😦 \",\"😦 \",\"😧 \",\"😧 \",\"🤯 \",\"💥 \",\"✨ \",\"  \",\"  \",\"  \"]},\"speaker\":{\"interval\":160,\"frames\":[\"🔈 \",\"🔉 \",\"🔊 \",\"🔉 \"]},\"orangePulse\":{\"interval\":100,\"frames\":[\"🔸 \",\"🔶 \",\"🟠 \",\"🟠 \",\"🔶 \"]},\"bluePulse\":{\"interval\":100,\"frames\":[\"🔹 \",\"🔷 \",\"🔵 \",\"🔵 \",\"🔷 \"]},\"orangeBluePulse\":{\"interval\":100,\"frames\":[\"🔸 \",\"🔶 \",\"🟠 \",\"🟠 \",\"🔶 \",\"🔹 \",\"🔷 \",\"🔵 \",\"🔵 \",\"🔷 \"]},\"timeTravel\":{\"interval\":100,\"frames\":[\"🕛 \",\"🕚 \",\"🕙 \",\"🕘 \",\"🕗 \",\"🕖 \",\"🕕 \",\"🕔 \",\"🕓 \",\"🕒 \",\"🕑 \",\"🕐 \"]},\"aesthetic\":{\"interval\":80,\"frames\":[\"▰▱▱▱▱▱▱\",\"▰▰▱▱▱▱▱\",\"▰▰▰▱▱▱▱\",\"▰▰▰▰▱▱▱\",\"▰▰▰▰▰▱▱\",\"▰▰▰▰▰▰▱\",\"▰▰▰▰▰▰▰\",\"▰▱▱▱▱▱▱\"]}}"); /***/ }), -/* 395 */ +/* 396 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const chalk = __webpack_require__(396); +const chalk = __webpack_require__(397); const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; @@ -48717,16 +48762,16 @@ module.exports = isSupported ? main : fallbacks; /***/ }), -/* 396 */ +/* 397 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(179); -const ansiStyles = __webpack_require__(397); -const stdoutColor = __webpack_require__(398).stdout; +const escapeStringRegexp = __webpack_require__(180); +const ansiStyles = __webpack_require__(398); +const stdoutColor = __webpack_require__(399).stdout; -const template = __webpack_require__(400); +const template = __webpack_require__(401); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -48952,12 +48997,12 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 397 */ +/* 398 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__(181); +const colorConvert = __webpack_require__(182); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); @@ -49125,13 +49170,13 @@ Object.defineProperty(module, 'exports', { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(115)(module))) /***/ }), -/* 398 */ +/* 399 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const os = __webpack_require__(121); -const hasFlag = __webpack_require__(399); +const hasFlag = __webpack_require__(400); const env = process.env; @@ -49263,7 +49308,7 @@ module.exports = { /***/ }), -/* 399 */ +/* 400 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49278,7 +49323,7 @@ module.exports = (flag, argv) => { /***/ }), -/* 400 */ +/* 401 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49413,18 +49458,18 @@ module.exports = (chalk, tmp) => { /***/ }), -/* 401 */ +/* 402 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiRegex = __webpack_require__(402); +const ansiRegex = __webpack_require__(403); module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string; /***/ }), -/* 402 */ +/* 403 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49441,14 +49486,14 @@ module.exports = ({onlyFirst = false} = {}) => { /***/ }), -/* 403 */ +/* 404 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(404) -var combining = __webpack_require__(406) +var defaults = __webpack_require__(405) +var combining = __webpack_require__(407) var DEFAULTS = { nul: 0, @@ -49547,10 +49592,10 @@ function bisearch(ucs) { /***/ }), -/* 404 */ +/* 405 */ /***/ (function(module, exports, __webpack_require__) { -var clone = __webpack_require__(405); +var clone = __webpack_require__(406); module.exports = function(options, defaults) { options = options || {}; @@ -49565,7 +49610,7 @@ module.exports = function(options, defaults) { }; /***/ }), -/* 405 */ +/* 406 */ /***/ (function(module, exports, __webpack_require__) { var clone = (function() { @@ -49737,7 +49782,7 @@ if ( true && module.exports) { /***/ }), -/* 406 */ +/* 407 */ /***/ (function(module, exports) { module.exports = [ @@ -49793,7 +49838,7 @@ module.exports = [ /***/ }), -/* 407 */ +/* 408 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49809,7 +49854,7 @@ module.exports = ({stream = process.stdout} = {}) => { /***/ }), -/* 408 */ +/* 409 */ /***/ (function(module, exports, __webpack_require__) { var Stream = __webpack_require__(138) @@ -49960,7 +50005,7 @@ MuteStream.prototype.close = proxy('close') /***/ }), -/* 409 */ +/* 410 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49971,13 +50016,13 @@ Object.defineProperty(exports, "__esModule", { }); exports.RunCommand = void 0; -var _errors = __webpack_require__(163); +var _errors = __webpack_require__(164); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _parallelize = __webpack_require__(145); +var _parallelize = __webpack_require__(146); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); /* * SPDX-License-Identifier: Apache-2.0 @@ -50040,7 +50085,7 @@ const RunCommand = { exports.RunCommand = RunCommand; /***/ }), -/* 410 */ +/* 411 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50051,15 +50096,15 @@ Object.defineProperty(exports, "__esModule", { }); exports.WatchCommand = void 0; -var _errors = __webpack_require__(163); +var _errors = __webpack_require__(164); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _parallelize = __webpack_require__(145); +var _parallelize = __webpack_require__(146); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); -var _watch = __webpack_require__(411); +var _watch = __webpack_require__(412); /* * SPDX-License-Identifier: Apache-2.0 @@ -50155,7 +50200,7 @@ const WatchCommand = { exports.WatchCommand = WatchCommand; /***/ }), -/* 411 */ +/* 412 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50168,7 +50213,7 @@ exports.waitUntilWatchIsReady = waitUntilWatchIsReady; var Rx = _interopRequireWildcard(__webpack_require__(8)); -var _operators = __webpack_require__(412); +var _operators = __webpack_require__(413); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } @@ -50249,141 +50294,141 @@ function waitUntilWatchIsReady(stream, opts = {}) { } /***/ }), -/* 412 */ +/* 413 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(413); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(414); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(414); +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(415); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(415); +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(416); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(416); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(417); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(417); +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(418); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(418); +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(419); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(419); +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(420); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(420); +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(421); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(421); +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(422); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(422); +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(423); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(423); +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(424); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); /* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(80); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(424); +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(425); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(425); +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(426); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(426); +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(427); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(427); +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(428); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(428); +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(429); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(429); +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(430); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(430); +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(431); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(432); +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(433); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(433); +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(434); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(434); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(435); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(435); +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(436); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(436); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(437); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(437); +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(438); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(440); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(441); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(441); +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(442); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(442); +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(443); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(443); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(444); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(444); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(445); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); /* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(105); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(445); +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(446); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(446); +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(447); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(447); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(448); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(448); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(449); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); /* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(31); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(449); +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(450); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(450); +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(451); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(451); +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(452); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); /* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(66); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(453); +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(454); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(454); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(455); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(455); +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(456); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(458); +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(459); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); /* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(81); @@ -50394,175 +50439,175 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["flatMap"]; }); -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(459); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(460); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(460); +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(461); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(461); +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(462); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(462); +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(463); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); /* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(41); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(463); +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(464); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(464); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(465); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(465); +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(466); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(466); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(467); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(467); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(468); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(468); +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(469); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(469); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(470); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(470); +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(471); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(471); +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(472); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(456); +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(457); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(472); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(473); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(473); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(474); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(474); +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(475); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(475); +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(476); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); /* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(30); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(476); +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(477); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(477); +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(478); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(457); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(458); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(478); +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(479); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(479); +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(480); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(480); +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(481); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(481); +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(482); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(482); +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(483); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(483); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(484); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(484); +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(485); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(485); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(486); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(486); +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(487); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(487); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(488); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(489); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(490); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(490); +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(491); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(491); +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(492); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(439); +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(440); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(452); +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(453); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(492); +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(493); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(493); +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(494); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(494); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(495); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(495); +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(496); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(496); +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(497); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(438); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(439); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(497); +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(498); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(498); +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(499); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(499); +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(500); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(500); +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(501); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(501); +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(502); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(502); +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(503); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(503); +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(504); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(504); +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(505); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(505); +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(506); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(506); +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(507); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(507); +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(508); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(508); +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(509); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(509); +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(510); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -50673,7 +50718,7 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 413 */ +/* 414 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50752,14 +50797,14 @@ var AuditSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 414 */ +/* 415 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(413); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(414); /* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(108); /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ @@ -50775,7 +50820,7 @@ function auditTime(duration, scheduler) { /***/ }), -/* 415 */ +/* 416 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50822,7 +50867,7 @@ var BufferSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 416 */ +/* 417 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -50923,7 +50968,7 @@ var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 417 */ +/* 418 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51084,7 +51129,7 @@ function dispatchBufferClose(arg) { /***/ }), -/* 418 */ +/* 419 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51203,7 +51248,7 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 419 */ +/* 420 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51296,7 +51341,7 @@ var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 420 */ +/* 421 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51356,7 +51401,7 @@ var CatchSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 421 */ +/* 422 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51372,7 +51417,7 @@ function combineAll(project) { /***/ }), -/* 422 */ +/* 423 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51404,7 +51449,7 @@ function combineLatest() { /***/ }), -/* 423 */ +/* 424 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51424,7 +51469,7 @@ function concat() { /***/ }), -/* 424 */ +/* 425 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51440,13 +51485,13 @@ function concatMap(project, resultSelector) { /***/ }), -/* 425 */ +/* 426 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(424); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(425); /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ function concatMapTo(innerObservable, resultSelector) { @@ -51456,7 +51501,7 @@ function concatMapTo(innerObservable, resultSelector) { /***/ }), -/* 426 */ +/* 427 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51521,7 +51566,7 @@ var CountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 427 */ +/* 428 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51606,7 +51651,7 @@ var DebounceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 428 */ +/* 429 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51682,7 +51727,7 @@ function dispatchNext(subscriber) { /***/ }), -/* 429 */ +/* 430 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51732,7 +51777,7 @@ var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 430 */ +/* 431 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51740,7 +51785,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(431); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(432); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11); /* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -51839,7 +51884,7 @@ var DelayMessage = /*@__PURE__*/ (function () { /***/ }), -/* 431 */ +/* 432 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51853,7 +51898,7 @@ function isDate(value) { /***/ }), -/* 432 */ +/* 433 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -51999,7 +52044,7 @@ var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 433 */ +/* 434 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52037,7 +52082,7 @@ var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 434 */ +/* 435 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52113,7 +52158,7 @@ var DistinctSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 435 */ +/* 436 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52184,13 +52229,13 @@ var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 436 */ +/* 437 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(435); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(436); /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ function distinctUntilKeyChanged(key, compare) { @@ -52200,7 +52245,7 @@ function distinctUntilKeyChanged(key, compare) { /***/ }), -/* 437 */ +/* 438 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52208,9 +52253,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); /* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(438); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(429); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(439); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(439); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(430); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(440); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -52232,7 +52277,7 @@ function elementAt(index, defaultValue) { /***/ }), -/* 438 */ +/* 439 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52298,7 +52343,7 @@ function defaultErrorFactory() { /***/ }), -/* 439 */ +/* 440 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52360,7 +52405,7 @@ var TakeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 440 */ +/* 441 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52382,7 +52427,7 @@ function endWith() { /***/ }), -/* 441 */ +/* 442 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52444,7 +52489,7 @@ var EverySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 442 */ +/* 443 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52498,7 +52543,7 @@ var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 443 */ +/* 444 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52592,7 +52637,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 444 */ +/* 445 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52704,7 +52749,7 @@ var ExpandSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 445 */ +/* 446 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52742,7 +52787,7 @@ var FinallySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 446 */ +/* 447 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52814,13 +52859,13 @@ var FindValueSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 447 */ +/* 448 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); -/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(446); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(447); /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ function findIndex(predicate, thisArg) { @@ -52830,7 +52875,7 @@ function findIndex(predicate, thisArg) { /***/ }), -/* 448 */ +/* 449 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52838,9 +52883,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); /* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(439); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(429); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(438); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(440); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(430); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(439); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -52857,7 +52902,7 @@ function first(predicate, defaultValue) { /***/ }), -/* 449 */ +/* 450 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52894,7 +52939,7 @@ var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 450 */ +/* 451 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52938,7 +52983,7 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 451 */ +/* 452 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -52946,9 +52991,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); /* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); /* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(452); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(438); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(429); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(453); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(439); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(430); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -52965,7 +53010,7 @@ function last(predicate, defaultValue) { /***/ }), -/* 452 */ +/* 453 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53042,7 +53087,7 @@ var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 453 */ +/* 454 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53081,7 +53126,7 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 454 */ +/* 455 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53131,13 +53176,13 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 455 */ +/* 456 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(456); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(457); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -53150,15 +53195,15 @@ function max(comparer) { /***/ }), -/* 456 */ +/* 457 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(457); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(452); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(429); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(458); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(453); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(430); /* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ @@ -53179,7 +53224,7 @@ function reduce(accumulator, seed) { /***/ }), -/* 457 */ +/* 458 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53261,7 +53306,7 @@ var ScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 458 */ +/* 459 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53281,7 +53326,7 @@ function merge() { /***/ }), -/* 459 */ +/* 460 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53306,7 +53351,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /***/ }), -/* 460 */ +/* 461 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53415,13 +53460,13 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 461 */ +/* 462 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(456); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(457); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -53434,7 +53479,7 @@ function min(comparer) { /***/ }), -/* 462 */ +/* 463 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53483,7 +53528,7 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 463 */ +/* 464 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53573,7 +53618,7 @@ var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 464 */ +/* 465 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53621,7 +53666,7 @@ var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 465 */ +/* 466 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53644,7 +53689,7 @@ function partition(predicate, thisArg) { /***/ }), -/* 466 */ +/* 467 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53684,14 +53729,14 @@ function plucker(props, length) { /***/ }), -/* 467 */ +/* 468 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(463); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -53704,14 +53749,14 @@ function publish(selector) { /***/ }), -/* 468 */ +/* 469 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); /* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(463); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -53722,14 +53767,14 @@ function publishBehavior(value) { /***/ }), -/* 469 */ +/* 470 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); /* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(463); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -53740,14 +53785,14 @@ function publishLast() { /***/ }), -/* 470 */ +/* 471 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); /* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(462); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(463); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -53763,7 +53808,7 @@ function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { /***/ }), -/* 471 */ +/* 472 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53790,7 +53835,7 @@ function race() { /***/ }), -/* 472 */ +/* 473 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53855,7 +53900,7 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 473 */ +/* 474 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -53949,7 +53994,7 @@ var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 474 */ +/* 475 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54002,7 +54047,7 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 475 */ +/* 476 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54088,7 +54133,7 @@ var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 476 */ +/* 477 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54143,7 +54188,7 @@ var SampleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 477 */ +/* 478 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54203,7 +54248,7 @@ function dispatchNotification(state) { /***/ }), -/* 478 */ +/* 479 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54326,13 +54371,13 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 479 */ +/* 480 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(462); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(463); /* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -54349,7 +54394,7 @@ function share() { /***/ }), -/* 480 */ +/* 481 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54424,7 +54469,7 @@ function shareReplayOperator(_a) { /***/ }), -/* 481 */ +/* 482 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54504,7 +54549,7 @@ var SingleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 482 */ +/* 483 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54546,7 +54591,7 @@ var SkipSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 483 */ +/* 484 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54608,7 +54653,7 @@ var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 484 */ +/* 485 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54665,7 +54710,7 @@ var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 485 */ +/* 486 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54721,7 +54766,7 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 486 */ +/* 487 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54750,13 +54795,13 @@ function startWith() { /***/ }), -/* 487 */ +/* 488 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); -/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(488); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(489); /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ function subscribeOn(scheduler, delay) { @@ -54781,7 +54826,7 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { /***/ }), -/* 488 */ +/* 489 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54845,13 +54890,13 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { /***/ }), -/* 489 */ +/* 490 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(490); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(491); /* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -54863,7 +54908,7 @@ function switchAll() { /***/ }), -/* 490 */ +/* 491 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -54951,13 +54996,13 @@ var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 491 */ +/* 492 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(490); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(491); /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ function switchMapTo(innerObservable, resultSelector) { @@ -54967,7 +55012,7 @@ function switchMapTo(innerObservable, resultSelector) { /***/ }), -/* 492 */ +/* 493 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55015,7 +55060,7 @@ var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 493 */ +/* 494 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55083,7 +55128,7 @@ var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 494 */ +/* 495 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55171,7 +55216,7 @@ var TapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 495 */ +/* 496 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55273,7 +55318,7 @@ var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 496 */ +/* 497 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55282,7 +55327,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(495); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(496); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ @@ -55371,7 +55416,7 @@ function dispatchNext(arg) { /***/ }), -/* 497 */ +/* 498 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55379,7 +55424,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(457); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(458); /* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91); /* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66); /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ @@ -55415,7 +55460,7 @@ var TimeInterval = /*@__PURE__*/ (function () { /***/ }), -/* 498 */ +/* 499 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55423,7 +55468,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); /* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(499); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(500); /* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49); /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ @@ -55440,7 +55485,7 @@ function timeout(due, scheduler) { /***/ }), -/* 499 */ +/* 500 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55448,7 +55493,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(431); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(432); /* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */ @@ -55519,7 +55564,7 @@ var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 500 */ +/* 501 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55549,13 +55594,13 @@ var Timestamp = /*@__PURE__*/ (function () { /***/ }), -/* 501 */ +/* 502 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(456); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(457); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -55572,7 +55617,7 @@ function toArray() { /***/ }), -/* 502 */ +/* 503 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55650,7 +55695,7 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 503 */ +/* 504 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55740,7 +55785,7 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 504 */ +/* 505 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55910,7 +55955,7 @@ function dispatchWindowClose(state) { /***/ }), -/* 505 */ +/* 506 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56053,7 +56098,7 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 506 */ +/* 507 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56150,7 +56195,7 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 507 */ +/* 508 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56245,7 +56290,7 @@ var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 508 */ +/* 509 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56267,7 +56312,7 @@ function zip() { /***/ }), -/* 509 */ +/* 510 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -56283,7 +56328,7 @@ function zipAll(project) { /***/ }), -/* 510 */ +/* 511 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56294,15 +56339,15 @@ Object.defineProperty(exports, "__esModule", { }); exports.runCommand = runCommand; -var _errors = __webpack_require__(163); +var _errors = __webpack_require__(164); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); -var _projects_tree = __webpack_require__(289); +var _projects_tree = __webpack_require__(296); -var _opensearch_dashboards = __webpack_require__(511); +var _opensearch_dashboards = __webpack_require__(512); /* * SPDX-License-Identifier: Apache-2.0 @@ -56394,7 +56439,7 @@ function toArray(value) { } /***/ }), -/* 511 */ +/* 512 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56407,15 +56452,15 @@ exports.OpenSearchDashboards = void 0; var _path = _interopRequireDefault(__webpack_require__(4)); -var _multimatch = _interopRequireDefault(__webpack_require__(512)); +var _multimatch = _interopRequireDefault(__webpack_require__(513)); -var _isPathInside = _interopRequireDefault(__webpack_require__(380)); +var _isPathInside = _interopRequireDefault(__webpack_require__(381)); -var _yarn_lock = __webpack_require__(285); +var _yarn_lock = __webpack_require__(286); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); -var _config = __webpack_require__(282); +var _config = __webpack_require__(283); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -56545,15 +56590,15 @@ class OpenSearchDashboards { exports.OpenSearchDashboards = OpenSearchDashboards; /***/ }), -/* 512 */ +/* 513 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const minimatch = __webpack_require__(150); -const arrayUnion = __webpack_require__(299); -const arrayDiffer = __webpack_require__(513); -const arrify = __webpack_require__(514); +const minimatch = __webpack_require__(151); +const arrayUnion = __webpack_require__(300); +const arrayDiffer = __webpack_require__(514); +const arrify = __webpack_require__(515); module.exports = (list, patterns, options = {}) => { list = arrify(list); @@ -56577,7 +56622,7 @@ module.exports = (list, patterns, options = {}) => { /***/ }), -/* 513 */ +/* 514 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56592,7 +56637,7 @@ module.exports = arrayDiffer; /***/ }), -/* 514 */ +/* 515 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56622,7 +56667,7 @@ module.exports = arrify; /***/ }), -/* 515 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56638,10 +56683,10 @@ Object.defineProperty(exports, "buildProductionProjects", { } }); -var _build_production_projects = __webpack_require__(516); +var _build_production_projects = __webpack_require__(517); /***/ }), -/* 516 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56652,21 +56697,21 @@ Object.defineProperty(exports, "__esModule", { }); exports.buildProductionProjects = buildProductionProjects; -var _cpy = _interopRequireDefault(__webpack_require__(517)); +var _cpy = _interopRequireDefault(__webpack_require__(518)); -var _del = _interopRequireDefault(__webpack_require__(297)); +var _del = _interopRequireDefault(__webpack_require__(298)); var _path = __webpack_require__(4); -var _config = __webpack_require__(282); +var _config = __webpack_require__(283); var _fs = __webpack_require__(131); -var _log = __webpack_require__(144); +var _log = __webpack_require__(145); -var _package_json = __webpack_require__(165); +var _package_json = __webpack_require__(166); -var _projects = __webpack_require__(146); +var _projects = __webpack_require__(147); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -56796,22 +56841,22 @@ async function copyToBuild(project, opensearchDashboardsRoot, buildRoot) { } /***/ }), -/* 517 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(156); +const EventEmitter = __webpack_require__(157); const path = __webpack_require__(4); const os = __webpack_require__(121); -const pMap = __webpack_require__(518); -const arrify = __webpack_require__(514); -const globby = __webpack_require__(519); -const hasGlob = __webpack_require__(702); -const cpFile = __webpack_require__(704); -const junk = __webpack_require__(714); -const pFilter = __webpack_require__(715); -const CpyError = __webpack_require__(717); +const pMap = __webpack_require__(519); +const arrify = __webpack_require__(515); +const globby = __webpack_require__(520); +const hasGlob = __webpack_require__(700); +const cpFile = __webpack_require__(702); +const junk = __webpack_require__(712); +const pFilter = __webpack_require__(713); +const CpyError = __webpack_require__(715); const defaultOptions = { ignoreJunk: true @@ -56962,12 +57007,12 @@ module.exports = (source, destination, { /***/ }), -/* 518 */ +/* 519 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const AggregateError = __webpack_require__(383); +const AggregateError = __webpack_require__(384); module.exports = async ( iterable, @@ -57050,17 +57095,17 @@ module.exports = async ( /***/ }), -/* 519 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); -const arrayUnion = __webpack_require__(520); -const glob = __webpack_require__(147); -const fastGlob = __webpack_require__(522); -const dirGlob = __webpack_require__(696); -const gitignore = __webpack_require__(699); +const arrayUnion = __webpack_require__(521); +const glob = __webpack_require__(148); +const fastGlob = __webpack_require__(523); +const dirGlob = __webpack_require__(694); +const gitignore = __webpack_require__(697); const DEFAULT_FILTER = () => false; @@ -57205,12 +57250,12 @@ module.exports.gitignore = gitignore; /***/ }), -/* 520 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var arrayUniq = __webpack_require__(521); +var arrayUniq = __webpack_require__(522); module.exports = function () { return arrayUniq([].concat.apply([], arguments)); @@ -57218,7 +57263,7 @@ module.exports = function () { /***/ }), -/* 521 */ +/* 522 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57287,10 +57332,10 @@ if ('Set' in global) { /***/ }), -/* 522 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { -const pkg = __webpack_require__(523); +const pkg = __webpack_require__(524); module.exports = pkg.async; module.exports.default = pkg.async; @@ -57303,375 +57348,375 @@ module.exports.generateTasks = pkg.generateTasks; /***/ }), -/* 523 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var optionsManager = __webpack_require__(524); -var taskManager = __webpack_require__(525); -var reader_async_1 = __webpack_require__(667); -var reader_stream_1 = __webpack_require__(691); -var reader_sync_1 = __webpack_require__(692); -var arrayUtils = __webpack_require__(694); -var streamUtils = __webpack_require__(695); -/** - * Synchronous API. - */ -function sync(source, opts) { - assertPatternsInput(source); - var works = getWorks(source, reader_sync_1.default, opts); - return arrayUtils.flatten(works); -} -exports.sync = sync; -/** - * Asynchronous API. - */ -function async(source, opts) { - try { - assertPatternsInput(source); - } - catch (error) { - return Promise.reject(error); - } - var works = getWorks(source, reader_async_1.default, opts); - return Promise.all(works).then(arrayUtils.flatten); -} -exports.async = async; -/** - * Stream API. - */ -function stream(source, opts) { - assertPatternsInput(source); - var works = getWorks(source, reader_stream_1.default, opts); - return streamUtils.merge(works); -} -exports.stream = stream; -/** - * Return a set of tasks based on provided patterns. - */ -function generateTasks(source, opts) { - assertPatternsInput(source); - var patterns = [].concat(source); - var options = optionsManager.prepare(opts); - return taskManager.generate(patterns, options); -} -exports.generateTasks = generateTasks; -/** - * Returns a set of works based on provided tasks and class of the reader. - */ -function getWorks(source, _Reader, opts) { - var patterns = [].concat(source); - var options = optionsManager.prepare(opts); - var tasks = taskManager.generate(patterns, options); - var reader = new _Reader(options); - return tasks.map(reader.read, reader); -} -function assertPatternsInput(source) { - if ([].concat(source).every(isString)) { - return; - } - throw new TypeError('Patterns must be a string or an array of strings'); -} -function isString(source) { - /* tslint:disable-next-line strict-type-predicates */ - return typeof source === 'string'; -} + +Object.defineProperty(exports, "__esModule", { value: true }); +var optionsManager = __webpack_require__(525); +var taskManager = __webpack_require__(526); +var reader_async_1 = __webpack_require__(665); +var reader_stream_1 = __webpack_require__(689); +var reader_sync_1 = __webpack_require__(690); +var arrayUtils = __webpack_require__(692); +var streamUtils = __webpack_require__(693); +/** + * Synchronous API. + */ +function sync(source, opts) { + assertPatternsInput(source); + var works = getWorks(source, reader_sync_1.default, opts); + return arrayUtils.flatten(works); +} +exports.sync = sync; +/** + * Asynchronous API. + */ +function async(source, opts) { + try { + assertPatternsInput(source); + } + catch (error) { + return Promise.reject(error); + } + var works = getWorks(source, reader_async_1.default, opts); + return Promise.all(works).then(arrayUtils.flatten); +} +exports.async = async; +/** + * Stream API. + */ +function stream(source, opts) { + assertPatternsInput(source); + var works = getWorks(source, reader_stream_1.default, opts); + return streamUtils.merge(works); +} +exports.stream = stream; +/** + * Return a set of tasks based on provided patterns. + */ +function generateTasks(source, opts) { + assertPatternsInput(source); + var patterns = [].concat(source); + var options = optionsManager.prepare(opts); + return taskManager.generate(patterns, options); +} +exports.generateTasks = generateTasks; +/** + * Returns a set of works based on provided tasks and class of the reader. + */ +function getWorks(source, _Reader, opts) { + var patterns = [].concat(source); + var options = optionsManager.prepare(opts); + var tasks = taskManager.generate(patterns, options); + var reader = new _Reader(options); + return tasks.map(reader.read, reader); +} +function assertPatternsInput(source) { + if ([].concat(source).every(isString)) { + return; + } + throw new TypeError('Patterns must be a string or an array of strings'); +} +function isString(source) { + /* tslint:disable-next-line strict-type-predicates */ + return typeof source === 'string'; +} /***/ }), -/* 524 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -function prepare(options) { - var opts = __assign({ cwd: process.cwd(), deep: true, ignore: [], dot: false, stats: false, onlyFiles: true, onlyDirectories: false, followSymlinkedDirectories: true, unique: true, markDirectories: false, absolute: false, nobrace: false, brace: true, noglobstar: false, globstar: true, noext: false, extension: true, nocase: false, case: true, matchBase: false, transform: null }, options); - if (opts.onlyDirectories) { - opts.onlyFiles = false; - } - opts.brace = !opts.nobrace; - opts.globstar = !opts.noglobstar; - opts.extension = !opts.noext; - opts.case = !opts.nocase; - if (options) { - opts.brace = ('brace' in options ? options.brace : opts.brace); - opts.globstar = ('globstar' in options ? options.globstar : opts.globstar); - opts.extension = ('extension' in options ? options.extension : opts.extension); - opts.case = ('case' in options ? options.case : opts.case); - } - return opts; -} -exports.prepare = prepare; + +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +function prepare(options) { + var opts = __assign({ cwd: process.cwd(), deep: true, ignore: [], dot: false, stats: false, onlyFiles: true, onlyDirectories: false, followSymlinkedDirectories: true, unique: true, markDirectories: false, absolute: false, nobrace: false, brace: true, noglobstar: false, globstar: true, noext: false, extension: true, nocase: false, case: true, matchBase: false, transform: null }, options); + if (opts.onlyDirectories) { + opts.onlyFiles = false; + } + opts.brace = !opts.nobrace; + opts.globstar = !opts.noglobstar; + opts.extension = !opts.noext; + opts.case = !opts.nocase; + if (options) { + opts.brace = ('brace' in options ? options.brace : opts.brace); + opts.globstar = ('globstar' in options ? options.globstar : opts.globstar); + opts.extension = ('extension' in options ? options.extension : opts.extension); + opts.case = ('case' in options ? options.case : opts.case); + } + return opts; +} +exports.prepare = prepare; /***/ }), -/* 525 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__(526); -/** - * Generate tasks based on parent directory of each pattern. - */ -function generate(patterns, options) { - var unixPatterns = patterns.map(patternUtils.unixifyPattern); - var unixIgnore = options.ignore.map(patternUtils.unixifyPattern); - var positivePatterns = getPositivePatterns(unixPatterns); - var negativePatterns = getNegativePatternsAsPositive(unixPatterns, unixIgnore); - /** - * When the `case` option is disabled, all patterns must be marked as dynamic, because we cannot check filepath - * directly (without read directory). - */ - var staticPatterns = !options.case ? [] : positivePatterns.filter(patternUtils.isStaticPattern); - var dynamicPatterns = !options.case ? positivePatterns : positivePatterns.filter(patternUtils.isDynamicPattern); - var staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); - var dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); - return staticTasks.concat(dynamicTasks); -} -exports.generate = generate; -/** - * Convert patterns to tasks based on parent directory of each pattern. - */ -function convertPatternsToTasks(positive, negative, dynamic) { - var positivePatternsGroup = groupPatternsByBaseDirectory(positive); - // When we have a global group – there is no reason to divide the patterns into independent tasks. - // In this case, the global task covers the rest. - if ('.' in positivePatternsGroup) { - var task = convertPatternGroupToTask('.', positive, negative, dynamic); - return [task]; - } - return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic); -} -exports.convertPatternsToTasks = convertPatternsToTasks; -/** - * Return only positive patterns. - */ -function getPositivePatterns(patterns) { - return patternUtils.getPositivePatterns(patterns); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Return only negative patterns. - */ -function getNegativePatternsAsPositive(patterns, ignore) { - var negative = patternUtils.getNegativePatterns(patterns).concat(ignore); - var positive = negative.map(patternUtils.convertToPositivePattern); - return positive; -} -exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; -/** - * Group patterns by base directory of each pattern. - */ -function groupPatternsByBaseDirectory(patterns) { - return patterns.reduce(function (collection, pattern) { - var base = patternUtils.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } - else { - collection[base] = [pattern]; - } - return collection; - }, {}); -} -exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; -/** - * Convert group of patterns to tasks. - */ -function convertPatternGroupsToTasks(positive, negative, dynamic) { - return Object.keys(positive).map(function (base) { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); -} -exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; -/** - * Create a task for positive and negative patterns. - */ -function convertPatternGroupToTask(base, positive, negative, dynamic) { - return { - base: base, - dynamic: dynamic, - positive: positive, - negative: negative, - patterns: [].concat(positive, negative.map(patternUtils.convertToNegativePattern)) - }; -} -exports.convertPatternGroupToTask = convertPatternGroupToTask; + +Object.defineProperty(exports, "__esModule", { value: true }); +var patternUtils = __webpack_require__(527); +/** + * Generate tasks based on parent directory of each pattern. + */ +function generate(patterns, options) { + var unixPatterns = patterns.map(patternUtils.unixifyPattern); + var unixIgnore = options.ignore.map(patternUtils.unixifyPattern); + var positivePatterns = getPositivePatterns(unixPatterns); + var negativePatterns = getNegativePatternsAsPositive(unixPatterns, unixIgnore); + /** + * When the `case` option is disabled, all patterns must be marked as dynamic, because we cannot check filepath + * directly (without read directory). + */ + var staticPatterns = !options.case ? [] : positivePatterns.filter(patternUtils.isStaticPattern); + var dynamicPatterns = !options.case ? positivePatterns : positivePatterns.filter(patternUtils.isDynamicPattern); + var staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); + var dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); + return staticTasks.concat(dynamicTasks); +} +exports.generate = generate; +/** + * Convert patterns to tasks based on parent directory of each pattern. + */ +function convertPatternsToTasks(positive, negative, dynamic) { + var positivePatternsGroup = groupPatternsByBaseDirectory(positive); + // When we have a global group – there is no reason to divide the patterns into independent tasks. + // In this case, the global task covers the rest. + if ('.' in positivePatternsGroup) { + var task = convertPatternGroupToTask('.', positive, negative, dynamic); + return [task]; + } + return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic); +} +exports.convertPatternsToTasks = convertPatternsToTasks; +/** + * Return only positive patterns. + */ +function getPositivePatterns(patterns) { + return patternUtils.getPositivePatterns(patterns); +} +exports.getPositivePatterns = getPositivePatterns; +/** + * Return only negative patterns. + */ +function getNegativePatternsAsPositive(patterns, ignore) { + var negative = patternUtils.getNegativePatterns(patterns).concat(ignore); + var positive = negative.map(patternUtils.convertToPositivePattern); + return positive; +} +exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; +/** + * Group patterns by base directory of each pattern. + */ +function groupPatternsByBaseDirectory(patterns) { + return patterns.reduce(function (collection, pattern) { + var base = patternUtils.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } + else { + collection[base] = [pattern]; + } + return collection; + }, {}); +} +exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; +/** + * Convert group of patterns to tasks. + */ +function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map(function (base) { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); +} +exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; +/** + * Create a task for positive and negative patterns. + */ +function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + base: base, + dynamic: dynamic, + positive: positive, + negative: negative, + patterns: [].concat(positive, negative.map(patternUtils.convertToNegativePattern)) + }; +} +exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/* 526 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__(4); -var globParent = __webpack_require__(309); -var isGlob = __webpack_require__(310); -var micromatch = __webpack_require__(527); -var GLOBSTAR = '**'; -/** - * Return true for static pattern. - */ -function isStaticPattern(pattern) { - return !isDynamicPattern(pattern); -} -exports.isStaticPattern = isStaticPattern; -/** - * Return true for pattern that looks like glob. - */ -function isDynamicPattern(pattern) { - return isGlob(pattern, { strict: false }); -} -exports.isDynamicPattern = isDynamicPattern; -/** - * Convert a windows «path» to a unix-style «path». - */ -function unixifyPattern(pattern) { - return pattern.replace(/\\/g, '/'); -} -exports.unixifyPattern = unixifyPattern; -/** - * Returns negative pattern as positive pattern. - */ -function convertToPositivePattern(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; -} -exports.convertToPositivePattern = convertToPositivePattern; -/** - * Returns positive pattern as negative pattern. - */ -function convertToNegativePattern(pattern) { - return '!' + pattern; -} -exports.convertToNegativePattern = convertToNegativePattern; -/** - * Return true if provided pattern is negative pattern. - */ -function isNegativePattern(pattern) { - return pattern.startsWith('!') && pattern[1] !== '('; -} -exports.isNegativePattern = isNegativePattern; -/** - * Return true if provided pattern is positive pattern. - */ -function isPositivePattern(pattern) { - return !isNegativePattern(pattern); -} -exports.isPositivePattern = isPositivePattern; -/** - * Extracts negative patterns from array of patterns. - */ -function getNegativePatterns(patterns) { - return patterns.filter(isNegativePattern); -} -exports.getNegativePatterns = getNegativePatterns; -/** - * Extracts positive patterns from array of patterns. - */ -function getPositivePatterns(patterns) { - return patterns.filter(isPositivePattern); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Extract base directory from provided pattern. - */ -function getBaseDirectory(pattern) { - return globParent(pattern); -} -exports.getBaseDirectory = getBaseDirectory; -/** - * Return true if provided pattern has globstar. - */ -function hasGlobStar(pattern) { - return pattern.indexOf(GLOBSTAR) !== -1; -} -exports.hasGlobStar = hasGlobStar; -/** - * Return true if provided pattern ends with slash and globstar. - */ -function endsWithSlashGlobStar(pattern) { - return pattern.endsWith('/' + GLOBSTAR); -} -exports.endsWithSlashGlobStar = endsWithSlashGlobStar; -/** - * Returns «true» when pattern ends with a slash and globstar or the last partial of the pattern is static pattern. - */ -function isAffectDepthOfReadingPattern(pattern) { - var basename = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); -} -exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; -/** - * Return naive depth of provided pattern without depth of the base directory. - */ -function getNaiveDepth(pattern) { - var base = getBaseDirectory(pattern); - var patternDepth = pattern.split('/').length; - var patternBaseDepth = base.split('/').length; - /** - * This is a hack for pattern that has no base directory. - * - * This is related to the `*\something\*` pattern. - */ - if (base === '.') { - return patternDepth - patternBaseDepth; - } - return patternDepth - patternBaseDepth - 1; -} -exports.getNaiveDepth = getNaiveDepth; -/** - * Return max naive depth of provided patterns without depth of the base directory. - */ -function getMaxNaivePatternsDepth(patterns) { - return patterns.reduce(function (max, pattern) { - var depth = getNaiveDepth(pattern); - return depth > max ? depth : max; - }, 0); -} -exports.getMaxNaivePatternsDepth = getMaxNaivePatternsDepth; -/** - * Make RegExp for provided pattern. - */ -function makeRe(pattern, options) { - return micromatch.makeRe(pattern, options); -} -exports.makeRe = makeRe; -/** - * Convert patterns to regexps. - */ -function convertPatternsToRe(patterns, options) { - return patterns.map(function (pattern) { return makeRe(pattern, options); }); -} -exports.convertPatternsToRe = convertPatternsToRe; -/** - * Returns true if the entry match any of the given RegExp's. - */ -function matchAny(entry, patternsRe) { - return patternsRe.some(function (patternRe) { return patternRe.test(entry); }); -} -exports.matchAny = matchAny; + +Object.defineProperty(exports, "__esModule", { value: true }); +var path = __webpack_require__(4); +var globParent = __webpack_require__(310); +var isGlob = __webpack_require__(311); +var micromatch = __webpack_require__(528); +var GLOBSTAR = '**'; +/** + * Return true for static pattern. + */ +function isStaticPattern(pattern) { + return !isDynamicPattern(pattern); +} +exports.isStaticPattern = isStaticPattern; +/** + * Return true for pattern that looks like glob. + */ +function isDynamicPattern(pattern) { + return isGlob(pattern, { strict: false }); +} +exports.isDynamicPattern = isDynamicPattern; +/** + * Convert a windows «path» to a unix-style «path». + */ +function unixifyPattern(pattern) { + return pattern.replace(/\\/g, '/'); +} +exports.unixifyPattern = unixifyPattern; +/** + * Returns negative pattern as positive pattern. + */ +function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; +} +exports.convertToPositivePattern = convertToPositivePattern; +/** + * Returns positive pattern as negative pattern. + */ +function convertToNegativePattern(pattern) { + return '!' + pattern; +} +exports.convertToNegativePattern = convertToNegativePattern; +/** + * Return true if provided pattern is negative pattern. + */ +function isNegativePattern(pattern) { + return pattern.startsWith('!') && pattern[1] !== '('; +} +exports.isNegativePattern = isNegativePattern; +/** + * Return true if provided pattern is positive pattern. + */ +function isPositivePattern(pattern) { + return !isNegativePattern(pattern); +} +exports.isPositivePattern = isPositivePattern; +/** + * Extracts negative patterns from array of patterns. + */ +function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); +} +exports.getNegativePatterns = getNegativePatterns; +/** + * Extracts positive patterns from array of patterns. + */ +function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); +} +exports.getPositivePatterns = getPositivePatterns; +/** + * Extract base directory from provided pattern. + */ +function getBaseDirectory(pattern) { + return globParent(pattern); +} +exports.getBaseDirectory = getBaseDirectory; +/** + * Return true if provided pattern has globstar. + */ +function hasGlobStar(pattern) { + return pattern.indexOf(GLOBSTAR) !== -1; +} +exports.hasGlobStar = hasGlobStar; +/** + * Return true if provided pattern ends with slash and globstar. + */ +function endsWithSlashGlobStar(pattern) { + return pattern.endsWith('/' + GLOBSTAR); +} +exports.endsWithSlashGlobStar = endsWithSlashGlobStar; +/** + * Returns «true» when pattern ends with a slash and globstar or the last partial of the pattern is static pattern. + */ +function isAffectDepthOfReadingPattern(pattern) { + var basename = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); +} +exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; +/** + * Return naive depth of provided pattern without depth of the base directory. + */ +function getNaiveDepth(pattern) { + var base = getBaseDirectory(pattern); + var patternDepth = pattern.split('/').length; + var patternBaseDepth = base.split('/').length; + /** + * This is a hack for pattern that has no base directory. + * + * This is related to the `*\something\*` pattern. + */ + if (base === '.') { + return patternDepth - patternBaseDepth; + } + return patternDepth - patternBaseDepth - 1; +} +exports.getNaiveDepth = getNaiveDepth; +/** + * Return max naive depth of provided patterns without depth of the base directory. + */ +function getMaxNaivePatternsDepth(patterns) { + return patterns.reduce(function (max, pattern) { + var depth = getNaiveDepth(pattern); + return depth > max ? depth : max; + }, 0); +} +exports.getMaxNaivePatternsDepth = getMaxNaivePatternsDepth; +/** + * Make RegExp for provided pattern. + */ +function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); +} +exports.makeRe = makeRe; +/** + * Convert patterns to regexps. + */ +function convertPatternsToRe(patterns, options) { + return patterns.map(function (pattern) { return makeRe(pattern, options); }); +} +exports.convertPatternsToRe = convertPatternsToRe; +/** + * Returns true if the entry match any of the given RegExp's. + */ +function matchAny(entry, patternsRe) { + return patternsRe.some(function (patternRe) { return patternRe.test(entry); }); +} +exports.matchAny = matchAny; /***/ }), -/* 527 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57682,18 +57727,18 @@ exports.matchAny = matchAny; */ var util = __webpack_require__(112); -var braces = __webpack_require__(528); -var toRegex = __webpack_require__(529); -var extend = __webpack_require__(632); +var braces = __webpack_require__(529); +var toRegex = __webpack_require__(530); +var extend = __webpack_require__(543); /** * Local dependencies */ -var compilers = __webpack_require__(634); -var parsers = __webpack_require__(663); -var cache = __webpack_require__(664); -var utils = __webpack_require__(665); +var compilers = __webpack_require__(632); +var parsers = __webpack_require__(661); +var cache = __webpack_require__(662); +var utils = __webpack_require__(663); var MAX_LENGTH = 1024 * 64; /** @@ -58555,7 +58600,7 @@ module.exports = micromatch; /***/ }), -/* 528 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58565,18 +58610,18 @@ module.exports = micromatch; * Module dependencies */ -var toRegex = __webpack_require__(529); -var unique = __webpack_require__(549); -var extend = __webpack_require__(550); +var toRegex = __webpack_require__(530); +var unique = __webpack_require__(548); +var extend = __webpack_require__(549); /** * Local dependencies */ -var compilers = __webpack_require__(552); -var parsers = __webpack_require__(563); -var Braces = __webpack_require__(567); -var utils = __webpack_require__(553); +var compilers = __webpack_require__(551); +var parsers = __webpack_require__(561); +var Braces = __webpack_require__(565); +var utils = __webpack_require__(552); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -58880,16 +58925,16 @@ module.exports = braces; /***/ }), -/* 529 */ +/* 530 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var safe = __webpack_require__(530); -var define = __webpack_require__(536); -var extend = __webpack_require__(542); -var not = __webpack_require__(546); +var safe = __webpack_require__(531); +var define = __webpack_require__(537); +var extend = __webpack_require__(543); +var not = __webpack_require__(547); var MAX_LENGTH = 1024 * 64; /** @@ -59042,10 +59087,10 @@ module.exports.makeRe = makeRe; /***/ }), -/* 530 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(531); +var parse = __webpack_require__(532); var types = parse.types; module.exports = function (re, opts) { @@ -59091,13 +59136,13 @@ function isRegExp (x) { /***/ }), -/* 531 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { -var util = __webpack_require__(532); -var types = __webpack_require__(533); -var sets = __webpack_require__(534); -var positions = __webpack_require__(535); +var util = __webpack_require__(533); +var types = __webpack_require__(534); +var sets = __webpack_require__(535); +var positions = __webpack_require__(536); module.exports = function(regexpStr) { @@ -59379,11 +59424,11 @@ module.exports.types = types; /***/ }), -/* 532 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(533); -var sets = __webpack_require__(534); +var types = __webpack_require__(534); +var sets = __webpack_require__(535); // All of these are private and only used by randexp. @@ -59496,7 +59541,7 @@ exports.error = function(regexp, msg) { /***/ }), -/* 533 */ +/* 534 */ /***/ (function(module, exports) { module.exports = { @@ -59512,10 +59557,10 @@ module.exports = { /***/ }), -/* 534 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(533); +var types = __webpack_require__(534); var INTS = function() { return [{ type: types.RANGE , from: 48, to: 57 }]; @@ -59600,10 +59645,10 @@ exports.anyChar = function() { /***/ }), -/* 535 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { -var types = __webpack_require__(533); +var types = __webpack_require__(534); exports.wordBoundary = function() { return { type: types.POSITION, value: 'b' }; @@ -59623,7 +59668,7 @@ exports.end = function() { /***/ }), -/* 536 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59636,8 +59681,8 @@ exports.end = function() { -var isobject = __webpack_require__(537); -var isDescriptor = __webpack_require__(538); +var isobject = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -59668,7 +59713,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 537 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59687,7 +59732,7 @@ module.exports = function isObject(val) { /***/ }), -/* 538 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59700,9 +59745,9 @@ module.exports = function isObject(val) { -var typeOf = __webpack_require__(539); -var isAccessor = __webpack_require__(540); -var isData = __webpack_require__(541); +var typeOf = __webpack_require__(540); +var isAccessor = __webpack_require__(541); +var isData = __webpack_require__(542); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -59716,7 +59761,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 539 */ +/* 540 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -59851,7 +59896,7 @@ function isBuffer(val) { /***/ }), -/* 540 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59864,7 +59909,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); // accessor descriptor properties var accessor = { @@ -59927,7 +59972,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 541 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59940,7 +59985,7 @@ module.exports = isAccessorDescriptor; -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -59983,14 +60028,14 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 542 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(543); -var assignSymbols = __webpack_require__(545); +var isExtendable = __webpack_require__(544); +var assignSymbols = __webpack_require__(546); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -60050,7 +60095,7 @@ function isEnum(obj, key) { /***/ }), -/* 543 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60063,7 +60108,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(545); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -60071,7 +60116,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 544 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60084,7 +60129,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(537); +var isObject = __webpack_require__(538); function isObjectObject(o) { return isObject(o) === true @@ -60115,7 +60160,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 545 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60162,14 +60207,14 @@ module.exports = function(receiver, objects) { /***/ }), -/* 546 */ +/* 547 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(547); -var safe = __webpack_require__(530); +var extend = __webpack_require__(543); +var safe = __webpack_require__(531); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -60240,98 +60285,10 @@ toRegex.create = function(pattern, options) { module.exports = toRegex; -/***/ }), -/* 547 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isExtendable = __webpack_require__(548); -var assignSymbols = __webpack_require__(545); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} - - /***/ }), /* 548 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__(544); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; - - -/***/ }), -/* 549 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; /*! * array-unique @@ -60379,13 +60336,13 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 550 */ +/* 549 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(551); +var isObject = __webpack_require__(550); module.exports = function extend(o/*, objects*/) { if (!isObject(o)) { o = {}; } @@ -60419,7 +60376,7 @@ function hasOwn(obj, key) { /***/ }), -/* 551 */ +/* 550 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60439,13 +60396,13 @@ module.exports = function isExtendable(val) { /***/ }), -/* 552 */ +/* 551 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(553); +var utils = __webpack_require__(552); module.exports = function(braces, options) { braces.compiler @@ -60728,25 +60685,25 @@ function hasQueue(node) { /***/ }), -/* 553 */ +/* 552 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(554); +var splitString = __webpack_require__(553); var utils = module.exports; /** * Module dependencies */ -utils.extend = __webpack_require__(550); -utils.flatten = __webpack_require__(557); -utils.isObject = __webpack_require__(537); -utils.fillRange = __webpack_require__(558); -utils.repeat = __webpack_require__(562); -utils.unique = __webpack_require__(549); +utils.extend = __webpack_require__(549); +utils.flatten = __webpack_require__(554); +utils.isObject = __webpack_require__(538); +utils.fillRange = __webpack_require__(555); +utils.repeat = __webpack_require__(560); +utils.unique = __webpack_require__(548); utils.define = function(obj, key, val) { Object.defineProperty(obj, key, { @@ -61078,7 +61035,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 554 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61091,7 +61048,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(555); +var extend = __webpack_require__(543); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -61256,95 +61213,7 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 555 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isExtendable = __webpack_require__(556); -var assignSymbols = __webpack_require__(545); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} - - -/***/ }), -/* 556 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__(544); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; - - -/***/ }), -/* 557 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61373,7 +61242,7 @@ function flat(arr, res) { /***/ }), -/* 558 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61387,10 +61256,10 @@ function flat(arr, res) { var util = __webpack_require__(112); -var isNumber = __webpack_require__(559); -var extend = __webpack_require__(550); -var repeat = __webpack_require__(560); -var toRegex = __webpack_require__(561); +var isNumber = __webpack_require__(556); +var extend = __webpack_require__(557); +var repeat = __webpack_require__(558); +var toRegex = __webpack_require__(559); /** * Return a range of numbers or letters. @@ -61588,7 +61457,7 @@ module.exports = fillRange; /***/ }), -/* 559 */ +/* 556 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61601,7 +61470,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); module.exports = function isNumber(num) { var type = typeOf(num); @@ -61617,7 +61486,47 @@ module.exports = function isNumber(num) { /***/ }), -/* 560 */ +/* 557 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isObject = __webpack_require__(550); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + +/***/ }), +/* 558 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61694,7 +61603,7 @@ function repeat(str, num) { /***/ }), -/* 561 */ +/* 559 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -61707,8 +61616,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(560); -var isNumber = __webpack_require__(559); +var repeat = __webpack_require__(558); +var isNumber = __webpack_require__(556); var cache = {}; function toRegexRange(min, max, options) { @@ -61995,7 +61904,7 @@ module.exports = toRegexRange; /***/ }), -/* 562 */ +/* 560 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62024,14 +61933,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 563 */ +/* 561 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(564); -var utils = __webpack_require__(553); +var Node = __webpack_require__(562); +var utils = __webpack_require__(552); /** * Braces parsers @@ -62391,15 +62300,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 564 */ +/* 562 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(537); -var define = __webpack_require__(565); -var utils = __webpack_require__(566); +var isObject = __webpack_require__(538); +var define = __webpack_require__(563); +var utils = __webpack_require__(564); var ownNames; /** @@ -62890,7 +62799,7 @@ exports = module.exports = Node; /***/ }), -/* 565 */ +/* 563 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -62903,7 +62812,7 @@ exports = module.exports = Node; -var isDescriptor = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -62928,13 +62837,13 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 566 */ +/* 564 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); var utils = module.exports; /** @@ -63954,17 +63863,17 @@ function assert(val, message) { /***/ }), -/* 567 */ +/* 565 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(550); -var Snapdragon = __webpack_require__(568); -var compilers = __webpack_require__(552); -var parsers = __webpack_require__(563); -var utils = __webpack_require__(553); +var extend = __webpack_require__(549); +var Snapdragon = __webpack_require__(566); +var compilers = __webpack_require__(551); +var parsers = __webpack_require__(561); +var utils = __webpack_require__(552); /** * Customize Snapdragon parser and renderer @@ -64065,17 +63974,17 @@ module.exports = Braces; /***/ }), -/* 568 */ +/* 566 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(569); -var define = __webpack_require__(594); -var Compiler = __webpack_require__(601); +var Base = __webpack_require__(567); +var define = __webpack_require__(593); +var Compiler = __webpack_require__(600); var Parser = __webpack_require__(629); -var utils = __webpack_require__(609); +var utils = __webpack_require__(608); var regexCache = {}; var cache = {}; @@ -64246,20 +64155,20 @@ module.exports.Parser = Parser; /***/ }), -/* 569 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(112); -var define = __webpack_require__(570); -var CacheBase = __webpack_require__(571); -var Emitter = __webpack_require__(572); -var isObject = __webpack_require__(537); -var merge = __webpack_require__(589); -var pascal = __webpack_require__(592); -var cu = __webpack_require__(593); +var define = __webpack_require__(568); +var CacheBase = __webpack_require__(569); +var Emitter = __webpack_require__(570); +var isObject = __webpack_require__(538); +var merge = __webpack_require__(588); +var pascal = __webpack_require__(591); +var cu = __webpack_require__(592); /** * Optionally define a custom `cache` namespace to use. @@ -64688,7 +64597,7 @@ module.exports.namespace = namespace; /***/ }), -/* 570 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -64701,7 +64610,7 @@ module.exports.namespace = namespace; -var isDescriptor = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -64726,21 +64635,21 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 571 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(537); -var Emitter = __webpack_require__(572); -var visit = __webpack_require__(573); -var toPath = __webpack_require__(576); -var union = __webpack_require__(577); -var del = __webpack_require__(581); -var get = __webpack_require__(579); -var has = __webpack_require__(587); -var set = __webpack_require__(580); +var isObject = __webpack_require__(538); +var Emitter = __webpack_require__(570); +var visit = __webpack_require__(571); +var toPath = __webpack_require__(574); +var union = __webpack_require__(575); +var del = __webpack_require__(580); +var get = __webpack_require__(577); +var has = __webpack_require__(586); +var set = __webpack_require__(578); /** * Create a `Cache` constructor that when instantiated will @@ -64994,188 +64903,188 @@ module.exports.namespace = namespace; /***/ }), -/* 572 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { - -/** - * Expose `Emitter`. - */ - -if (true) { - module.exports = Emitter; -} - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - - // Remove event specific arrays for event types that no - // one is subscribed for to avoid memory leak. - if (callbacks.length === 0) { - delete this._callbacks['$' + event]; - } - - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - - var args = new Array(arguments.length - 1) - , callbacks = this._callbacks['$' + event]; - - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; + +/** + * Expose `Emitter`. + */ + +if (true) { + module.exports = Emitter; +} + +/** + * Initialize a new `Emitter`. + * + * @api public + */ + +function Emitter(obj) { + if (obj) return mixin(obj); +}; + +/** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; +} + +/** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.on = +Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; +}; + +/** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; +}; + +/** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.off = +Emitter.prototype.removeListener = +Emitter.prototype.removeAllListeners = +Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + + // Remove event specific arrays for event types that no + // one is subscribed for to avoid memory leak. + if (callbacks.length === 0) { + delete this._callbacks['$' + event]; + } + + return this; +}; + +/** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + +Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + + var args = new Array(arguments.length - 1) + , callbacks = this._callbacks['$' + event]; + + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; +}; + +/** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + +Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; +}; + +/** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + +Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; +}; /***/ }), -/* 573 */ +/* 571 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65188,8 +65097,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(574); -var mapVisit = __webpack_require__(575); +var visit = __webpack_require__(572); +var mapVisit = __webpack_require__(573); module.exports = function(collection, method, val) { var result; @@ -65212,7 +65121,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 574 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65225,7 +65134,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(537); +var isObject = __webpack_require__(538); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -65252,14 +65161,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 575 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(112); -var visit = __webpack_require__(574); +var visit = __webpack_require__(572); /** * Map `visit` over an array of objects. @@ -65296,7 +65205,7 @@ function isObject(val) { /***/ }), -/* 576 */ +/* 574 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65309,7 +65218,7 @@ function isObject(val) { -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -65336,16 +65245,16 @@ function filter(arr) { /***/ }), -/* 577 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(551); -var union = __webpack_require__(578); -var get = __webpack_require__(579); -var set = __webpack_require__(580); +var isObject = __webpack_require__(550); +var union = __webpack_require__(576); +var get = __webpack_require__(577); +var set = __webpack_require__(578); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -65373,7 +65282,7 @@ function arrayify(val) { /***/ }), -/* 578 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65409,7 +65318,7 @@ module.exports = function union(init) { /***/ }), -/* 579 */ +/* 577 */ /***/ (function(module, exports) { /*! @@ -65465,69 +65374,205 @@ function toString(val) { /***/ }), -/* 580 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! * set-value * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. + * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert). * Released under the MIT License. */ -var split = __webpack_require__(554); -var extend = __webpack_require__(550); -var isPlainObject = __webpack_require__(544); -var isObject = __webpack_require__(551); +const { deleteProperty } = Reflect; +const isPrimitive = __webpack_require__(579); +const isPlainObject = __webpack_require__(545); -module.exports = function(obj, prop, val) { - if (!isObject(obj)) { - return obj; +const isObject = value => { + return (typeof value === 'object' && value !== null) || typeof value === 'function'; +}; + +const isUnsafeKey = key => { + return key === '__proto__' || key === 'constructor' || key === 'prototype'; +}; + +const validateKey = key => { + if (!isPrimitive(key)) { + throw new TypeError('Object keys must be strings or symbols'); } - if (Array.isArray(prop)) { - prop = [].concat.apply([], prop).join('.'); + if (isUnsafeKey(key)) { + throw new Error(`Cannot set unsafe key: "${key}"`); } +}; - if (typeof prop !== 'string') { - return obj; +const toStringKey = input => { + return Array.isArray(input) ? input.flat().map(String).join(',') : input; +}; + +const createMemoKey = (input, options) => { + if (typeof input !== 'string' || !options) return input; + let key = input + ';'; + if (options.arrays !== undefined) key += `arrays=${options.arrays};`; + if (options.separator !== undefined) key += `separator=${options.separator};`; + if (options.split !== undefined) key += `split=${options.split};`; + if (options.merge !== undefined) key += `merge=${options.merge};`; + if (options.preservePaths !== undefined) key += `preservePaths=${options.preservePaths};`; + return key; +}; + +const memoize = (input, options, fn) => { + const key = toStringKey(options ? createMemoKey(input, options) : input); + validateKey(key); + + const value = setValue.cache.get(key) || fn(); + setValue.cache.set(key, value); + return value; +}; + +const splitString = (input, options = {}) => { + const sep = options.separator || '.'; + const preserve = sep === '/' ? false : options.preservePaths; + + if (typeof input === 'string' && preserve !== false && /\//.test(input)) { + return [input]; } - var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey); - var len = keys.length; - var idx = -1; - var current = obj; + const parts = []; + let part = ''; - while (++idx < len) { - var key = keys[idx]; - if (idx !== len - 1) { - if (!isObject(current[key])) { - current[key] = {}; - } - current = current[key]; + const push = part => { + let number; + if (part.trim() !== '' && Number.isInteger((number = Number(part)))) { + parts.push(number); + } else { + parts.push(part); + } + }; + + for (let i = 0; i < input.length; i++) { + const value = input[i]; + + if (value === '\\') { + part += input[++i]; continue; } - if (isPlainObject(current[key]) && isPlainObject(val)) { - current[key] = extend({}, current[key], val); + if (value === sep) { + push(part); + part = ''; + continue; + } + + part += value; + } + + if (part) { + push(part); + } + + return parts; +}; + +const split = (input, options) => { + if (options && typeof options.split === 'function') return options.split(input); + if (typeof input === 'symbol') return [input]; + if (Array.isArray(input)) return input; + return memoize(input, options, () => splitString(input, options)); +}; + +const assignProp = (obj, prop, value, options) => { + validateKey(prop); + + // Delete property when "value" is undefined + if (value === undefined) { + deleteProperty(obj, prop); + + } else if (options && options.merge) { + const merge = options.merge === 'function' ? options.merge : Object.assign; + + // Only merge plain objects + if (merge && isPlainObject(obj[prop]) && isPlainObject(value)) { + obj[prop] = merge(obj[prop], value); } else { - current[key] = val; + obj[prop] = value; } + + } else { + obj[prop] = value; } return obj; }; -function isValidKey(key) { - return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; -} +const setValue = (target, path, value, options) => { + if (!path || !isObject(target)) return target; + + const keys = split(path, options); + let obj = target; + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const next = keys[i + 1]; + + validateKey(key); + + if (next === undefined) { + assignProp(obj, key, value, options); + break; + } + + if (typeof next === 'number' && !Array.isArray(obj[key])) { + obj = obj[key] = []; + continue; + } + + if (!isObject(obj[key])) { + obj[key] = {}; + } + + obj = obj[key]; + } + + return target; +}; + +setValue.split = split; +setValue.cache = new Map(); +setValue.clear = () => { + setValue.cache = new Map(); +}; + +module.exports = setValue; /***/ }), -/* 581 */ +/* 579 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/*! + * is-primitive + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + + + +module.exports = function isPrimitive(val) { + if (typeof val === 'object') { + return val === null; + } + return typeof val !== 'function'; +}; + + +/***/ }), +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65540,8 +65585,8 @@ function isValidKey(key) { -var isObject = __webpack_require__(582); -var has = __webpack_require__(583); +var isObject = __webpack_require__(581); +var has = __webpack_require__(582); const isUnsafeKey = key => { return key === '__proto__' || key === 'constructor' || key === 'prototype'; @@ -65583,7 +65628,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 582 */ +/* 581 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -65602,7 +65647,7 @@ function isObject(val) { /***/ }), -/* 583 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65615,8 +65660,8 @@ function isObject(val) { -const get = __webpack_require__(584); -const has = __webpack_require__(586); +const get = __webpack_require__(583); +const has = __webpack_require__(585); module.exports = function(obj, path, options) { if (isObject(obj) && (typeof path === 'string' || Array.isArray(path))) { @@ -65631,7 +65676,7 @@ function isObject(val) { /***/ }), -/* 584 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -65641,7 +65686,7 @@ function isObject(val) { * Released under the MIT License. */ -const isObject = __webpack_require__(585); +const isObject = __webpack_require__(584); module.exports = function(target, path, options) { if (!isObject(options)) { @@ -65747,7 +65792,7 @@ function isValidObject(val) { /***/ }), -/* 585 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65766,7 +65811,7 @@ module.exports = function isObject(val) { /***/ }), -/* 586 */ +/* 585 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65779,7 +65824,7 @@ module.exports = function isObject(val) { -const typeOf = __webpack_require__(539); +const typeOf = __webpack_require__(540); module.exports = function has(val) { switch (typeOf(val)) { @@ -65822,7 +65867,7 @@ module.exports = function has(val) { /***/ }), -/* 587 */ +/* 586 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65835,9 +65880,9 @@ module.exports = function has(val) { -var isObject = __webpack_require__(537); -var hasValues = __webpack_require__(588); -var get = __webpack_require__(579); +var isObject = __webpack_require__(538); +var hasValues = __webpack_require__(587); +var get = __webpack_require__(577); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -65845,7 +65890,7 @@ module.exports = function(val, prop) { /***/ }), -/* 588 */ +/* 587 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65858,8 +65903,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(539); -var isNumber = __webpack_require__(559); +var typeOf = __webpack_require__(540); +var isNumber = __webpack_require__(556); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -65912,14 +65957,14 @@ module.exports = function hasValue(val) { /***/ }), -/* 589 */ +/* 588 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(590); -var forIn = __webpack_require__(591); +var isExtendable = __webpack_require__(589); +var forIn = __webpack_require__(590); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -65983,7 +66028,7 @@ module.exports = mixinDeep; /***/ }), -/* 590 */ +/* 589 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -65996,7 +66041,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(544); +var isPlainObject = __webpack_require__(545); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -66004,7 +66049,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 591 */ +/* 590 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66027,7 +66072,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 592 */ +/* 591 */ /***/ (function(module, exports) { /*! @@ -66054,17 +66099,17 @@ module.exports = pascalcase; /***/ }), -/* 593 */ +/* 592 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(112); -var union = __webpack_require__(578); -var define = __webpack_require__(594); -var staticExtend = __webpack_require__(598); -var isObj = __webpack_require__(537); +var union = __webpack_require__(576); +var define = __webpack_require__(593); +var staticExtend = __webpack_require__(597); +var isObj = __webpack_require__(538); /** * Expose class utils @@ -66431,7 +66476,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 594 */ +/* 593 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66444,7 +66489,7 @@ cu.bubble = function(Parent, events) { -var isDescriptor = __webpack_require__(595); +var isDescriptor = __webpack_require__(594); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -66469,7 +66514,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 595 */ +/* 594 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66482,9 +66527,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(539); -var isAccessor = __webpack_require__(596); -var isData = __webpack_require__(597); +var typeOf = __webpack_require__(540); +var isAccessor = __webpack_require__(595); +var isData = __webpack_require__(596); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -66498,7 +66543,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 596 */ +/* 595 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66511,7 +66556,7 @@ module.exports = function isDescriptor(obj, key) { -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); // accessor descriptor properties var accessor = { @@ -66574,7 +66619,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 597 */ +/* 596 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66587,7 +66632,7 @@ module.exports = isAccessorDescriptor; -var typeOf = __webpack_require__(539); +var typeOf = __webpack_require__(540); // data descriptor properties var data = { @@ -66636,7 +66681,7 @@ module.exports = isDataDescriptor; /***/ }), -/* 598 */ +/* 597 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -66649,8 +66694,8 @@ module.exports = isDataDescriptor; -var copy = __webpack_require__(599); -var define = __webpack_require__(594); +var copy = __webpack_require__(598); +var define = __webpack_require__(593); var util = __webpack_require__(112); /** @@ -66733,15 +66778,15 @@ module.exports = extend; /***/ }), -/* 599 */ +/* 598 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(539); -var copyDescriptor = __webpack_require__(600); -var define = __webpack_require__(594); +var typeOf = __webpack_require__(540); +var copyDescriptor = __webpack_require__(599); +var define = __webpack_require__(593); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -66914,7 +66959,7 @@ module.exports.has = has; /***/ }), -/* 600 */ +/* 599 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67002,16 +67047,16 @@ function isObject(val) { /***/ }), -/* 601 */ +/* 600 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(602); -var define = __webpack_require__(594); -var debug = __webpack_require__(603)('snapdragon:compiler'); -var utils = __webpack_require__(609); +var use = __webpack_require__(601); +var define = __webpack_require__(593); +var debug = __webpack_require__(602)('snapdragon:compiler'); +var utils = __webpack_require__(608); /** * Create a new `Compiler` with the given `options`. @@ -67186,7 +67231,7 @@ module.exports = Compiler; /***/ }), -/* 602 */ +/* 601 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -67348,7 +67393,7 @@ function define(obj, key, val) { /***/ }), -/* 603 */ +/* 602 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -67357,14 +67402,14 @@ function define(obj, key, val) { */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(604); + module.exports = __webpack_require__(603); } else { - module.exports = __webpack_require__(607); + module.exports = __webpack_require__(606); } /***/ }), -/* 604 */ +/* 603 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -67373,7 +67418,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(605); +exports = module.exports = __webpack_require__(604); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -67555,7 +67600,7 @@ function localstorage() { /***/ }), -/* 605 */ +/* 604 */ /***/ (function(module, exports, __webpack_require__) { @@ -67571,7 +67616,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(606); +exports.humanize = __webpack_require__(605); /** * The currently active debug mode names, and names to skip. @@ -67763,7 +67808,7 @@ function coerce(val) { /***/ }), -/* 606 */ +/* 605 */ /***/ (function(module, exports) { /** @@ -67921,7 +67966,7 @@ function plural(ms, n, name) { /***/ }), -/* 607 */ +/* 606 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -67937,7 +67982,7 @@ var util = __webpack_require__(112); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(605); +exports = module.exports = __webpack_require__(604); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -68116,7 +68161,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(608); + var net = __webpack_require__(607); stream = new net.Socket({ fd: fd, readable: false, @@ -68175,13 +68220,13 @@ exports.enable(load()); /***/ }), -/* 608 */ +/* 607 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 609 */ +/* 608 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -68191,7 +68236,7 @@ module.exports = require("net"); * Module dependencies */ -exports.extend = __webpack_require__(550); +exports.extend = __webpack_require__(609); exports.SourceMap = __webpack_require__(610); exports.sourceMapResolve = __webpack_require__(621); @@ -68235,6 +68280,46 @@ exports.last = function(arr, n) { }; +/***/ }), +/* 609 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isObject = __webpack_require__(550); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + /***/ }), /* 610 */ /***/ (function(module, exports, __webpack_require__) { @@ -71684,7 +71769,7 @@ void (function(root, factory) { /* 623 */ /***/ (function(module, exports, __webpack_require__) { -var url = __webpack_require__(200) +var url = __webpack_require__(201) function resolveUrl(/* ...urls */) { return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { @@ -71814,23 +71899,23 @@ module.exports = function (encodedURI) { /* 626 */ /***/ (function(module, exports, __webpack_require__) { -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var path = __webpack_require__(4) - -"use strict" - -function urix(aPath) { - if (path.sep === "\\") { - return aPath - .replace(/\\/g, "/") - .replace(/^[a-z]:\/?/i, "/") - } - return aPath -} - -module.exports = urix +// Copyright 2014 Simon Lydell +// X11 (“MIT”) Licensed. (See LICENSE.) + +var path = __webpack_require__(4) + +"use strict" + +function urix(aPath) { + if (path.sep === "\\") { + return aPath + .replace(/\\/g, "/") + .replace(/^[a-z]:\/?/i, "/") + } + return aPath +} + +module.exports = urix /***/ }), @@ -71856,8 +71941,8 @@ module.exports = atob.atob = atob; var fs = __webpack_require__(134); var path = __webpack_require__(4); -var define = __webpack_require__(594); -var utils = __webpack_require__(609); +var define = __webpack_require__(593); +var utils = __webpack_require__(608); /** * Expose `mixin()`. @@ -72006,13 +72091,13 @@ exports.comment = function(node) { "use strict"; -var use = __webpack_require__(602); +var use = __webpack_require__(601); var util = __webpack_require__(112); var Cache = __webpack_require__(630); -var define = __webpack_require__(594); -var debug = __webpack_require__(603)('snapdragon:parser'); +var define = __webpack_require__(593); +var debug = __webpack_require__(602)('snapdragon:parser'); var Position = __webpack_require__(631); -var utils = __webpack_require__(609); +var utils = __webpack_require__(608); /** * Create a new `Parser` with the given `input` and `options`. @@ -72653,7 +72738,7 @@ MapCache.prototype.del = function mapDelete(key) { "use strict"; -var define = __webpack_require__(594); +var define = __webpack_require__(593); /** * Store position for a node @@ -72674,96 +72759,8 @@ module.exports = function Position(start, parser) { "use strict"; -var isExtendable = __webpack_require__(633); -var assignSymbols = __webpack_require__(545); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} - - -/***/ }), -/* 633 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__(544); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; - - -/***/ }), -/* 634 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var nanomatch = __webpack_require__(635); -var extglob = __webpack_require__(647); +var nanomatch = __webpack_require__(633); +var extglob = __webpack_require__(643); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -72840,7 +72837,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 635 */ +/* 633 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -72851,17 +72848,17 @@ function escapeExtglobs(compiler) { */ var util = __webpack_require__(112); -var toRegex = __webpack_require__(529); -var extend = __webpack_require__(636); +var toRegex = __webpack_require__(530); +var extend = __webpack_require__(543); /** * Local dependencies */ -var compilers = __webpack_require__(638); -var parsers = __webpack_require__(639); -var cache = __webpack_require__(640); -var utils = __webpack_require__(642); +var compilers = __webpack_require__(634); +var parsers = __webpack_require__(635); +var cache = __webpack_require__(636); +var utils = __webpack_require__(638); var MAX_LENGTH = 1024 * 64; /** @@ -73685,95 +73682,7 @@ module.exports = nanomatch; /***/ }), -/* 636 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isExtendable = __webpack_require__(637); -var assignSymbols = __webpack_require__(545); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} - - -/***/ }), -/* 637 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__(544); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; - - -/***/ }), -/* 638 */ +/* 634 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74119,14 +74028,14 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 639 */ +/* 635 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regexNot = __webpack_require__(546); -var toRegex = __webpack_require__(529); +var regexNot = __webpack_require__(547); +var toRegex = __webpack_require__(530); /** * Characters to use in negation regex (we want to "not" match @@ -74512,14 +74421,14 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 640 */ +/* 636 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(641))(); +module.exports = new (__webpack_require__(637))(); /***/ }), -/* 641 */ +/* 637 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74654,7 +74563,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 642 */ +/* 638 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -74667,14 +74576,14 @@ var path = __webpack_require__(4); * Module dependencies */ -var isWindows = __webpack_require__(643)(); -var Snapdragon = __webpack_require__(568); -utils.define = __webpack_require__(644); -utils.diff = __webpack_require__(645); -utils.extend = __webpack_require__(636); -utils.pick = __webpack_require__(646); -utils.typeOf = __webpack_require__(539); -utils.unique = __webpack_require__(549); +var isWindows = __webpack_require__(639)(); +var Snapdragon = __webpack_require__(566); +utils.define = __webpack_require__(640); +utils.diff = __webpack_require__(641); +utils.extend = __webpack_require__(543); +utils.pick = __webpack_require__(642); +utils.typeOf = __webpack_require__(540); +utils.unique = __webpack_require__(548); /** * Returns true if the given value is effectively an empty string @@ -75040,7 +74949,7 @@ utils.unixify = function(options) { /***/ }), -/* 643 */ +/* 639 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -75068,7 +74977,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 644 */ +/* 640 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75081,8 +74990,8 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ -var isobject = __webpack_require__(537); -var isDescriptor = __webpack_require__(538); +var isobject = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -75113,7 +75022,7 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 645 */ +/* 641 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75167,7 +75076,7 @@ function diffArray(one, two) { /***/ }), -/* 646 */ +/* 642 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75180,7 +75089,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(537); +var isObject = __webpack_require__(538); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -75209,7 +75118,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 647 */ +/* 643 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75219,18 +75128,18 @@ module.exports = function pick(obj, keys) { * Module dependencies */ -var extend = __webpack_require__(550); -var unique = __webpack_require__(549); -var toRegex = __webpack_require__(529); +var extend = __webpack_require__(644); +var unique = __webpack_require__(548); +var toRegex = __webpack_require__(530); /** * Local dependencies */ -var compilers = __webpack_require__(648); -var parsers = __webpack_require__(659); -var Extglob = __webpack_require__(662); -var utils = __webpack_require__(661); +var compilers = __webpack_require__(645); +var parsers = __webpack_require__(657); +var Extglob = __webpack_require__(660); +var utils = __webpack_require__(659); var MAX_LENGTH = 1024 * 64; /** @@ -75547,13 +75456,53 @@ module.exports = extglob; /***/ }), -/* 648 */ +/* 644 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isObject = __webpack_require__(550); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + +/***/ }), +/* 645 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(649); +var brackets = __webpack_require__(646); /** * Extglob compilers @@ -75723,7 +75672,7 @@ module.exports = function(extglob) { /***/ }), -/* 649 */ +/* 646 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -75733,17 +75682,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(650); -var parsers = __webpack_require__(652); +var compilers = __webpack_require__(647); +var parsers = __webpack_require__(649); /** * Module dependencies */ -var debug = __webpack_require__(654)('expand-brackets'); -var extend = __webpack_require__(550); -var Snapdragon = __webpack_require__(568); -var toRegex = __webpack_require__(529); +var debug = __webpack_require__(651)('expand-brackets'); +var extend = __webpack_require__(656); +var Snapdragon = __webpack_require__(566); +var toRegex = __webpack_require__(530); /** * Parses the given POSIX character class `pattern` and returns a @@ -75941,13 +75890,13 @@ module.exports = brackets; /***/ }), -/* 650 */ +/* 647 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(651); +var posix = __webpack_require__(648); module.exports = function(brackets) { brackets.compiler @@ -76035,7 +75984,7 @@ module.exports = function(brackets) { /***/ }), -/* 651 */ +/* 648 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -76064,14 +76013,14 @@ module.exports = { /***/ }), -/* 652 */ +/* 649 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(653); -var define = __webpack_require__(594); +var utils = __webpack_require__(650); +var define = __webpack_require__(593); /** * Text regex @@ -76290,14 +76239,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 653 */ +/* 650 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(529); -var regexNot = __webpack_require__(546); +var toRegex = __webpack_require__(530); +var regexNot = __webpack_require__(547); var cached; /** @@ -76331,7 +76280,7 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 654 */ +/* 651 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -76340,14 +76289,14 @@ exports.createRegex = function(pattern, include) { */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(655); + module.exports = __webpack_require__(652); } else { - module.exports = __webpack_require__(658); + module.exports = __webpack_require__(655); } /***/ }), -/* 655 */ +/* 652 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -76356,7 +76305,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(656); +exports = module.exports = __webpack_require__(653); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -76538,7 +76487,7 @@ function localstorage() { /***/ }), -/* 656 */ +/* 653 */ /***/ (function(module, exports, __webpack_require__) { @@ -76554,7 +76503,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(657); +exports.humanize = __webpack_require__(654); /** * The currently active debug mode names, and names to skip. @@ -76746,7 +76695,7 @@ function coerce(val) { /***/ }), -/* 657 */ +/* 654 */ /***/ (function(module, exports) { /** @@ -76904,7 +76853,7 @@ function plural(ms, n, name) { /***/ }), -/* 658 */ +/* 655 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -76920,7 +76869,7 @@ var util = __webpack_require__(112); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(656); +exports = module.exports = __webpack_require__(653); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -77099,7 +77048,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(608); + var net = __webpack_require__(607); stream = new net.Socket({ fd: fd, readable: false, @@ -77158,15 +77107,55 @@ exports.enable(load()); /***/ }), -/* 659 */ +/* 656 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(649); -var define = __webpack_require__(660); -var utils = __webpack_require__(661); +var isObject = __webpack_require__(550); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + +/***/ }), +/* 657 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var brackets = __webpack_require__(646); +var define = __webpack_require__(658); +var utils = __webpack_require__(659); /** * Characters to use in text regex (we want to "not" match @@ -77321,7 +77310,7 @@ module.exports = parsers; /***/ }), -/* 660 */ +/* 658 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77334,7 +77323,7 @@ module.exports = parsers; -var isDescriptor = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -77359,14 +77348,14 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 661 */ +/* 659 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regex = __webpack_require__(546); -var Cache = __webpack_require__(641); +var regex = __webpack_require__(547); +var Cache = __webpack_require__(637); /** * Utils @@ -77435,7 +77424,7 @@ utils.createRegex = function(str) { /***/ }), -/* 662 */ +/* 660 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77445,16 +77434,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(568); -var define = __webpack_require__(660); -var extend = __webpack_require__(550); +var Snapdragon = __webpack_require__(566); +var define = __webpack_require__(658); +var extend = __webpack_require__(644); /** * Local dependencies */ -var compilers = __webpack_require__(648); -var parsers = __webpack_require__(659); +var compilers = __webpack_require__(645); +var parsers = __webpack_require__(657); /** * Customize Snapdragon parser and renderer @@ -77520,16 +77509,16 @@ module.exports = Extglob; /***/ }), -/* 663 */ +/* 661 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(647); -var nanomatch = __webpack_require__(635); -var regexNot = __webpack_require__(546); -var toRegex = __webpack_require__(529); +var extglob = __webpack_require__(643); +var nanomatch = __webpack_require__(633); +var regexNot = __webpack_require__(547); +var toRegex = __webpack_require__(530); var not; /** @@ -77610,14 +77599,14 @@ function textRegex(pattern) { /***/ }), -/* 664 */ +/* 662 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(641))(); +module.exports = new (__webpack_require__(637))(); /***/ }), -/* 665 */ +/* 663 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77630,13 +77619,13 @@ var path = __webpack_require__(4); * Module dependencies */ -var Snapdragon = __webpack_require__(568); -utils.define = __webpack_require__(666); -utils.diff = __webpack_require__(645); -utils.extend = __webpack_require__(632); -utils.pick = __webpack_require__(646); -utils.typeOf = __webpack_require__(539); -utils.unique = __webpack_require__(549); +var Snapdragon = __webpack_require__(566); +utils.define = __webpack_require__(664); +utils.diff = __webpack_require__(641); +utils.extend = __webpack_require__(543); +utils.pick = __webpack_require__(642); +utils.typeOf = __webpack_require__(540); +utils.unique = __webpack_require__(548); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -77933,7 +77922,7 @@ utils.unixify = function(options) { /***/ }), -/* 666 */ +/* 664 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -77946,8 +77935,8 @@ utils.unixify = function(options) { -var isobject = __webpack_require__(537); -var isDescriptor = __webpack_require__(538); +var isobject = __webpack_require__(538); +var isDescriptor = __webpack_require__(539); var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) ? Reflect.defineProperty : Object.defineProperty; @@ -77978,97 +77967,97 @@ module.exports = function defineProperty(obj, key, val) { /***/ }), -/* 667 */ +/* 665 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(668); -var reader_1 = __webpack_require__(681); -var fs_stream_1 = __webpack_require__(685); -var ReaderAsync = /** @class */ (function (_super) { - __extends(ReaderAsync, _super); - function ReaderAsync() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderAsync.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_stream_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use async API to read entries for Task. - */ - ReaderAsync.prototype.read = function (task) { - var _this = this; - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - var entries = []; - return new Promise(function (resolve, reject) { - var stream = _this.api(root, task, options); - stream.on('error', function (err) { - _this.isEnoentCodeError(err) ? resolve([]) : reject(err); - stream.pause(); - }); - stream.on('data', function (entry) { return entries.push(_this.transform(entry)); }); - stream.on('end', function () { return resolve(entries); }); - }); - }; - /** - * Returns founded paths. - */ - ReaderAsync.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderAsync.prototype.dynamicApi = function (root, options) { - return readdir.readdirStreamStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderAsync.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderAsync; -}(reader_1.default)); -exports.default = ReaderAsync; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var readdir = __webpack_require__(666); +var reader_1 = __webpack_require__(679); +var fs_stream_1 = __webpack_require__(683); +var ReaderAsync = /** @class */ (function (_super) { + __extends(ReaderAsync, _super); + function ReaderAsync() { + return _super !== null && _super.apply(this, arguments) || this; + } + Object.defineProperty(ReaderAsync.prototype, "fsAdapter", { + /** + * Returns FileSystem adapter. + */ + get: function () { + return new fs_stream_1.default(this.options); + }, + enumerable: true, + configurable: true + }); + /** + * Use async API to read entries for Task. + */ + ReaderAsync.prototype.read = function (task) { + var _this = this; + var root = this.getRootDirectory(task); + var options = this.getReaderOptions(task); + var entries = []; + return new Promise(function (resolve, reject) { + var stream = _this.api(root, task, options); + stream.on('error', function (err) { + _this.isEnoentCodeError(err) ? resolve([]) : reject(err); + stream.pause(); + }); + stream.on('data', function (entry) { return entries.push(_this.transform(entry)); }); + stream.on('end', function () { return resolve(entries); }); + }); + }; + /** + * Returns founded paths. + */ + ReaderAsync.prototype.api = function (root, task, options) { + if (task.dynamic) { + return this.dynamicApi(root, options); + } + return this.staticApi(task, options); + }; + /** + * Api for dynamic tasks. + */ + ReaderAsync.prototype.dynamicApi = function (root, options) { + return readdir.readdirStreamStat(root, options); + }; + /** + * Api for static tasks. + */ + ReaderAsync.prototype.staticApi = function (task, options) { + return this.fsAdapter.read(task.patterns, options.filter); + }; + return ReaderAsync; +}(reader_1.default)); +exports.default = ReaderAsync; /***/ }), -/* 668 */ +/* 666 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(669); -const readdirAsync = __webpack_require__(677); -const readdirStream = __webpack_require__(680); +const readdirSync = __webpack_require__(667); +const readdirAsync = __webpack_require__(675); +const readdirStream = __webpack_require__(678); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -78152,7 +78141,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 669 */ +/* 667 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -78160,11 +78149,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(670); +const DirectoryReader = __webpack_require__(668); let syncFacade = { - fs: __webpack_require__(675), - forEach: __webpack_require__(676), + fs: __webpack_require__(673), + forEach: __webpack_require__(674), sync: true }; @@ -78193,18 +78182,18 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 670 */ +/* 668 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const Readable = __webpack_require__(138).Readable; -const EventEmitter = __webpack_require__(156).EventEmitter; +const EventEmitter = __webpack_require__(157).EventEmitter; const path = __webpack_require__(4); -const normalizeOptions = __webpack_require__(671); -const stat = __webpack_require__(673); -const call = __webpack_require__(674); +const normalizeOptions = __webpack_require__(669); +const stat = __webpack_require__(671); +const call = __webpack_require__(672); /** * Asynchronously reads the contents of a directory and streams the results @@ -78580,14 +78569,14 @@ module.exports = DirectoryReader; /***/ }), -/* 671 */ +/* 669 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const globToRegExp = __webpack_require__(672); +const globToRegExp = __webpack_require__(670); module.exports = normalizeOptions; @@ -78764,7 +78753,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 672 */ +/* 670 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -78901,13 +78890,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 673 */ +/* 671 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(674); +const call = __webpack_require__(672); module.exports = stat; @@ -78982,7 +78971,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 674 */ +/* 672 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79043,14 +79032,14 @@ function callOnce (fn) { /***/ }), -/* 675 */ +/* 673 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); -const call = __webpack_require__(674); +const call = __webpack_require__(672); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -79114,7 +79103,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 676 */ +/* 674 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79143,7 +79132,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 677 */ +/* 675 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79151,12 +79140,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(678); -const DirectoryReader = __webpack_require__(670); +const maybe = __webpack_require__(676); +const DirectoryReader = __webpack_require__(668); let asyncFacade = { fs: __webpack_require__(134), - forEach: __webpack_require__(679), + forEach: __webpack_require__(677), async: true }; @@ -79198,7 +79187,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 678 */ +/* 676 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79225,7 +79214,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 679 */ +/* 677 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79261,7 +79250,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 680 */ +/* 678 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79269,11 +79258,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(670); +const DirectoryReader = __webpack_require__(668); let streamFacade = { fs: __webpack_require__(134), - forEach: __webpack_require__(679), + forEach: __webpack_require__(677), async: true }; @@ -79293,373 +79282,373 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 681 */ +/* 679 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__(4); -var deep_1 = __webpack_require__(682); -var entry_1 = __webpack_require__(684); -var pathUtil = __webpack_require__(683); -var Reader = /** @class */ (function () { - function Reader(options) { - this.options = options; - this.micromatchOptions = this.getMicromatchOptions(); - this.entryFilter = new entry_1.default(options, this.micromatchOptions); - this.deepFilter = new deep_1.default(options, this.micromatchOptions); - } - /** - * Returns root path to scanner. - */ - Reader.prototype.getRootDirectory = function (task) { - return path.resolve(this.options.cwd, task.base); - }; - /** - * Returns options for reader. - */ - Reader.prototype.getReaderOptions = function (task) { - return { - basePath: task.base === '.' ? '' : task.base, - filter: this.entryFilter.getFilter(task.positive, task.negative), - deep: this.deepFilter.getFilter(task.positive, task.negative), - sep: '/' - }; - }; - /** - * Returns options for micromatch. - */ - Reader.prototype.getMicromatchOptions = function () { - return { - dot: this.options.dot, - nobrace: !this.options.brace, - noglobstar: !this.options.globstar, - noext: !this.options.extension, - nocase: !this.options.case, - matchBase: this.options.matchBase - }; - }; - /** - * Returns transformed entry. - */ - Reader.prototype.transform = function (entry) { - if (this.options.absolute) { - entry.path = pathUtil.makeAbsolute(this.options.cwd, entry.path); - } - if (this.options.markDirectories && entry.isDirectory()) { - entry.path += '/'; - } - var item = this.options.stats ? entry : entry.path; - if (this.options.transform === null) { - return item; - } - return this.options.transform(item); - }; - /** - * Returns true if error has ENOENT code. - */ - Reader.prototype.isEnoentCodeError = function (err) { - return err.code === 'ENOENT'; - }; - return Reader; -}()); -exports.default = Reader; + +Object.defineProperty(exports, "__esModule", { value: true }); +var path = __webpack_require__(4); +var deep_1 = __webpack_require__(680); +var entry_1 = __webpack_require__(682); +var pathUtil = __webpack_require__(681); +var Reader = /** @class */ (function () { + function Reader(options) { + this.options = options; + this.micromatchOptions = this.getMicromatchOptions(); + this.entryFilter = new entry_1.default(options, this.micromatchOptions); + this.deepFilter = new deep_1.default(options, this.micromatchOptions); + } + /** + * Returns root path to scanner. + */ + Reader.prototype.getRootDirectory = function (task) { + return path.resolve(this.options.cwd, task.base); + }; + /** + * Returns options for reader. + */ + Reader.prototype.getReaderOptions = function (task) { + return { + basePath: task.base === '.' ? '' : task.base, + filter: this.entryFilter.getFilter(task.positive, task.negative), + deep: this.deepFilter.getFilter(task.positive, task.negative), + sep: '/' + }; + }; + /** + * Returns options for micromatch. + */ + Reader.prototype.getMicromatchOptions = function () { + return { + dot: this.options.dot, + nobrace: !this.options.brace, + noglobstar: !this.options.globstar, + noext: !this.options.extension, + nocase: !this.options.case, + matchBase: this.options.matchBase + }; + }; + /** + * Returns transformed entry. + */ + Reader.prototype.transform = function (entry) { + if (this.options.absolute) { + entry.path = pathUtil.makeAbsolute(this.options.cwd, entry.path); + } + if (this.options.markDirectories && entry.isDirectory()) { + entry.path += '/'; + } + var item = this.options.stats ? entry : entry.path; + if (this.options.transform === null) { + return item; + } + return this.options.transform(item); + }; + /** + * Returns true if error has ENOENT code. + */ + Reader.prototype.isEnoentCodeError = function (err) { + return err.code === 'ENOENT'; + }; + return Reader; +}()); +exports.default = Reader; /***/ }), -/* 682 */ +/* 680 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(683); -var patternUtils = __webpack_require__(526); -var DeepFilter = /** @class */ (function () { - function DeepFilter(options, micromatchOptions) { - this.options = options; - this.micromatchOptions = micromatchOptions; - } - /** - * Returns filter for directories. - */ - DeepFilter.prototype.getFilter = function (positive, negative) { - var _this = this; - var maxPatternDepth = this.getMaxPatternDepth(positive); - var negativeRe = this.getNegativePatternsRe(negative); - return function (entry) { return _this.filter(entry, negativeRe, maxPatternDepth); }; - }; - /** - * Returns max depth of the provided patterns. - */ - DeepFilter.prototype.getMaxPatternDepth = function (patterns) { - var globstar = patterns.some(patternUtils.hasGlobStar); - return globstar ? Infinity : patternUtils.getMaxNaivePatternsDepth(patterns); - }; - /** - * Returns RegExp's for patterns that can affect the depth of reading. - */ - DeepFilter.prototype.getNegativePatternsRe = function (patterns) { - var affectDepthOfReadingPatterns = patterns.filter(patternUtils.isAffectDepthOfReadingPattern); - return patternUtils.convertPatternsToRe(affectDepthOfReadingPatterns, this.micromatchOptions); - }; - /** - * Returns «true» for directory that should be read. - */ - DeepFilter.prototype.filter = function (entry, negativeRe, maxPatternDepth) { - if (this.isSkippedByDeepOption(entry.depth)) { - return false; - } - if (this.isSkippedByMaxPatternDepth(entry.depth, maxPatternDepth)) { - return false; - } - if (this.isSkippedSymlinkedDirectory(entry)) { - return false; - } - if (this.isSkippedDotDirectory(entry)) { - return false; - } - return this.isSkippedByNegativePatterns(entry, negativeRe); - }; - /** - * Returns «true» when the «deep» option is disabled or number and depth of the entry is greater that the option value. - */ - DeepFilter.prototype.isSkippedByDeepOption = function (entryDepth) { - return !this.options.deep || (typeof this.options.deep === 'number' && entryDepth >= this.options.deep); - }; - /** - * Returns «true» when depth parameter is not an Infinity and entry depth greater that the parameter value. - */ - DeepFilter.prototype.isSkippedByMaxPatternDepth = function (entryDepth, maxPatternDepth) { - return maxPatternDepth !== Infinity && entryDepth >= maxPatternDepth; - }; - /** - * Returns «true» for symlinked directory if the «followSymlinkedDirectories» option is disabled. - */ - DeepFilter.prototype.isSkippedSymlinkedDirectory = function (entry) { - return !this.options.followSymlinkedDirectories && entry.isSymbolicLink(); - }; - /** - * Returns «true» for a directory whose name starts with a period if «dot» option is disabled. - */ - DeepFilter.prototype.isSkippedDotDirectory = function (entry) { - return !this.options.dot && pathUtils.isDotDirectory(entry.path); - }; - /** - * Returns «true» for a directory whose path math to any negative pattern. - */ - DeepFilter.prototype.isSkippedByNegativePatterns = function (entry, negativeRe) { - return !patternUtils.matchAny(entry.path, negativeRe); - }; - return DeepFilter; -}()); -exports.default = DeepFilter; + +Object.defineProperty(exports, "__esModule", { value: true }); +var pathUtils = __webpack_require__(681); +var patternUtils = __webpack_require__(527); +var DeepFilter = /** @class */ (function () { + function DeepFilter(options, micromatchOptions) { + this.options = options; + this.micromatchOptions = micromatchOptions; + } + /** + * Returns filter for directories. + */ + DeepFilter.prototype.getFilter = function (positive, negative) { + var _this = this; + var maxPatternDepth = this.getMaxPatternDepth(positive); + var negativeRe = this.getNegativePatternsRe(negative); + return function (entry) { return _this.filter(entry, negativeRe, maxPatternDepth); }; + }; + /** + * Returns max depth of the provided patterns. + */ + DeepFilter.prototype.getMaxPatternDepth = function (patterns) { + var globstar = patterns.some(patternUtils.hasGlobStar); + return globstar ? Infinity : patternUtils.getMaxNaivePatternsDepth(patterns); + }; + /** + * Returns RegExp's for patterns that can affect the depth of reading. + */ + DeepFilter.prototype.getNegativePatternsRe = function (patterns) { + var affectDepthOfReadingPatterns = patterns.filter(patternUtils.isAffectDepthOfReadingPattern); + return patternUtils.convertPatternsToRe(affectDepthOfReadingPatterns, this.micromatchOptions); + }; + /** + * Returns «true» for directory that should be read. + */ + DeepFilter.prototype.filter = function (entry, negativeRe, maxPatternDepth) { + if (this.isSkippedByDeepOption(entry.depth)) { + return false; + } + if (this.isSkippedByMaxPatternDepth(entry.depth, maxPatternDepth)) { + return false; + } + if (this.isSkippedSymlinkedDirectory(entry)) { + return false; + } + if (this.isSkippedDotDirectory(entry)) { + return false; + } + return this.isSkippedByNegativePatterns(entry, negativeRe); + }; + /** + * Returns «true» when the «deep» option is disabled or number and depth of the entry is greater that the option value. + */ + DeepFilter.prototype.isSkippedByDeepOption = function (entryDepth) { + return !this.options.deep || (typeof this.options.deep === 'number' && entryDepth >= this.options.deep); + }; + /** + * Returns «true» when depth parameter is not an Infinity and entry depth greater that the parameter value. + */ + DeepFilter.prototype.isSkippedByMaxPatternDepth = function (entryDepth, maxPatternDepth) { + return maxPatternDepth !== Infinity && entryDepth >= maxPatternDepth; + }; + /** + * Returns «true» for symlinked directory if the «followSymlinkedDirectories» option is disabled. + */ + DeepFilter.prototype.isSkippedSymlinkedDirectory = function (entry) { + return !this.options.followSymlinkedDirectories && entry.isSymbolicLink(); + }; + /** + * Returns «true» for a directory whose name starts with a period if «dot» option is disabled. + */ + DeepFilter.prototype.isSkippedDotDirectory = function (entry) { + return !this.options.dot && pathUtils.isDotDirectory(entry.path); + }; + /** + * Returns «true» for a directory whose path math to any negative pattern. + */ + DeepFilter.prototype.isSkippedByNegativePatterns = function (entry, negativeRe) { + return !patternUtils.matchAny(entry.path, negativeRe); + }; + return DeepFilter; +}()); +exports.default = DeepFilter; /***/ }), -/* 683 */ +/* 681 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__(4); -/** - * Returns «true» if the last partial of the path starting with a period. - */ -function isDotDirectory(filepath) { - return path.basename(filepath).startsWith('.'); -} -exports.isDotDirectory = isDotDirectory; -/** - * Convert a windows-like path to a unix-style path. - */ -function normalize(filepath) { - return filepath.replace(/\\/g, '/'); -} -exports.normalize = normalize; -/** - * Returns normalized absolute path of provided filepath. - */ -function makeAbsolute(cwd, filepath) { - return normalize(path.resolve(cwd, filepath)); -} -exports.makeAbsolute = makeAbsolute; + +Object.defineProperty(exports, "__esModule", { value: true }); +var path = __webpack_require__(4); +/** + * Returns «true» if the last partial of the path starting with a period. + */ +function isDotDirectory(filepath) { + return path.basename(filepath).startsWith('.'); +} +exports.isDotDirectory = isDotDirectory; +/** + * Convert a windows-like path to a unix-style path. + */ +function normalize(filepath) { + return filepath.replace(/\\/g, '/'); +} +exports.normalize = normalize; +/** + * Returns normalized absolute path of provided filepath. + */ +function makeAbsolute(cwd, filepath) { + return normalize(path.resolve(cwd, filepath)); +} +exports.makeAbsolute = makeAbsolute; /***/ }), -/* 684 */ +/* 682 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__(683); -var patternUtils = __webpack_require__(526); -var EntryFilter = /** @class */ (function () { - function EntryFilter(options, micromatchOptions) { - this.options = options; - this.micromatchOptions = micromatchOptions; - this.index = new Map(); - } - /** - * Returns filter for directories. - */ - EntryFilter.prototype.getFilter = function (positive, negative) { - var _this = this; - var positiveRe = patternUtils.convertPatternsToRe(positive, this.micromatchOptions); - var negativeRe = patternUtils.convertPatternsToRe(negative, this.micromatchOptions); - return function (entry) { return _this.filter(entry, positiveRe, negativeRe); }; - }; - /** - * Returns true if entry must be added to result. - */ - EntryFilter.prototype.filter = function (entry, positiveRe, negativeRe) { - // Exclude duplicate results - if (this.options.unique) { - if (this.isDuplicateEntry(entry)) { - return false; - } - this.createIndexRecord(entry); - } - // Filter files and directories by options - if (this.onlyFileFilter(entry) || this.onlyDirectoryFilter(entry)) { - return false; - } - if (this.isSkippedByAbsoluteNegativePatterns(entry, negativeRe)) { - return false; - } - return this.isMatchToPatterns(entry.path, positiveRe) && !this.isMatchToPatterns(entry.path, negativeRe); - }; - /** - * Return true if the entry already has in the cross reader index. - */ - EntryFilter.prototype.isDuplicateEntry = function (entry) { - return this.index.has(entry.path); - }; - /** - * Create record in the cross reader index. - */ - EntryFilter.prototype.createIndexRecord = function (entry) { - this.index.set(entry.path, undefined); - }; - /** - * Returns true for non-files if the «onlyFiles» option is enabled. - */ - EntryFilter.prototype.onlyFileFilter = function (entry) { - return this.options.onlyFiles && !entry.isFile(); - }; - /** - * Returns true for non-directories if the «onlyDirectories» option is enabled. - */ - EntryFilter.prototype.onlyDirectoryFilter = function (entry) { - return this.options.onlyDirectories && !entry.isDirectory(); - }; - /** - * Return true when `absolute` option is enabled and matched to the negative patterns. - */ - EntryFilter.prototype.isSkippedByAbsoluteNegativePatterns = function (entry, negativeRe) { - if (!this.options.absolute) { - return false; - } - var fullpath = pathUtils.makeAbsolute(this.options.cwd, entry.path); - return this.isMatchToPatterns(fullpath, negativeRe); - }; - /** - * Return true when entry match to provided patterns. - * - * First, just trying to apply patterns to the path. - * Second, trying to apply patterns to the path with final slash (need to micromatch to support «directory/**» patterns). - */ - EntryFilter.prototype.isMatchToPatterns = function (filepath, patternsRe) { - return patternUtils.matchAny(filepath, patternsRe) || patternUtils.matchAny(filepath + '/', patternsRe); - }; - return EntryFilter; -}()); -exports.default = EntryFilter; + +Object.defineProperty(exports, "__esModule", { value: true }); +var pathUtils = __webpack_require__(681); +var patternUtils = __webpack_require__(527); +var EntryFilter = /** @class */ (function () { + function EntryFilter(options, micromatchOptions) { + this.options = options; + this.micromatchOptions = micromatchOptions; + this.index = new Map(); + } + /** + * Returns filter for directories. + */ + EntryFilter.prototype.getFilter = function (positive, negative) { + var _this = this; + var positiveRe = patternUtils.convertPatternsToRe(positive, this.micromatchOptions); + var negativeRe = patternUtils.convertPatternsToRe(negative, this.micromatchOptions); + return function (entry) { return _this.filter(entry, positiveRe, negativeRe); }; + }; + /** + * Returns true if entry must be added to result. + */ + EntryFilter.prototype.filter = function (entry, positiveRe, negativeRe) { + // Exclude duplicate results + if (this.options.unique) { + if (this.isDuplicateEntry(entry)) { + return false; + } + this.createIndexRecord(entry); + } + // Filter files and directories by options + if (this.onlyFileFilter(entry) || this.onlyDirectoryFilter(entry)) { + return false; + } + if (this.isSkippedByAbsoluteNegativePatterns(entry, negativeRe)) { + return false; + } + return this.isMatchToPatterns(entry.path, positiveRe) && !this.isMatchToPatterns(entry.path, negativeRe); + }; + /** + * Return true if the entry already has in the cross reader index. + */ + EntryFilter.prototype.isDuplicateEntry = function (entry) { + return this.index.has(entry.path); + }; + /** + * Create record in the cross reader index. + */ + EntryFilter.prototype.createIndexRecord = function (entry) { + this.index.set(entry.path, undefined); + }; + /** + * Returns true for non-files if the «onlyFiles» option is enabled. + */ + EntryFilter.prototype.onlyFileFilter = function (entry) { + return this.options.onlyFiles && !entry.isFile(); + }; + /** + * Returns true for non-directories if the «onlyDirectories» option is enabled. + */ + EntryFilter.prototype.onlyDirectoryFilter = function (entry) { + return this.options.onlyDirectories && !entry.isDirectory(); + }; + /** + * Return true when `absolute` option is enabled and matched to the negative patterns. + */ + EntryFilter.prototype.isSkippedByAbsoluteNegativePatterns = function (entry, negativeRe) { + if (!this.options.absolute) { + return false; + } + var fullpath = pathUtils.makeAbsolute(this.options.cwd, entry.path); + return this.isMatchToPatterns(fullpath, negativeRe); + }; + /** + * Return true when entry match to provided patterns. + * + * First, just trying to apply patterns to the path. + * Second, trying to apply patterns to the path with final slash (need to micromatch to support «directory/**» patterns). + */ + EntryFilter.prototype.isMatchToPatterns = function (filepath, patternsRe) { + return patternUtils.matchAny(filepath, patternsRe) || patternUtils.matchAny(filepath + '/', patternsRe); + }; + return EntryFilter; +}()); +exports.default = EntryFilter; /***/ }), -/* 685 */ +/* 683 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(138); -var fsStat = __webpack_require__(686); -var fs_1 = __webpack_require__(690); -var FileSystemStream = /** @class */ (function (_super) { - __extends(FileSystemStream, _super); - function FileSystemStream() { - return _super !== null && _super.apply(this, arguments) || this; - } - /** - * Use stream API to read entries for Task. - */ - FileSystemStream.prototype.read = function (patterns, filter) { - var _this = this; - var filepaths = patterns.map(this.getFullEntryPath, this); - var transform = new stream.Transform({ objectMode: true }); - transform._transform = function (index, _enc, done) { - return _this.getEntry(filepaths[index], patterns[index]).then(function (entry) { - if (entry !== null && filter(entry)) { - transform.push(entry); - } - if (index === filepaths.length - 1) { - transform.end(); - } - done(); - }); - }; - for (var i = 0; i < filepaths.length; i++) { - transform.write(i); - } - return transform; - }; - /** - * Return entry for the provided path. - */ - FileSystemStream.prototype.getEntry = function (filepath, pattern) { - var _this = this; - return this.getStat(filepath) - .then(function (stat) { return _this.makeEntry(stat, pattern); }) - .catch(function () { return null; }); - }; - /** - * Return fs.Stats for the provided path. - */ - FileSystemStream.prototype.getStat = function (filepath) { - return fsStat.stat(filepath, { throwErrorOnBrokenSymlinks: false }); - }; - return FileSystemStream; -}(fs_1.default)); -exports.default = FileSystemStream; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var stream = __webpack_require__(138); +var fsStat = __webpack_require__(684); +var fs_1 = __webpack_require__(688); +var FileSystemStream = /** @class */ (function (_super) { + __extends(FileSystemStream, _super); + function FileSystemStream() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Use stream API to read entries for Task. + */ + FileSystemStream.prototype.read = function (patterns, filter) { + var _this = this; + var filepaths = patterns.map(this.getFullEntryPath, this); + var transform = new stream.Transform({ objectMode: true }); + transform._transform = function (index, _enc, done) { + return _this.getEntry(filepaths[index], patterns[index]).then(function (entry) { + if (entry !== null && filter(entry)) { + transform.push(entry); + } + if (index === filepaths.length - 1) { + transform.end(); + } + done(); + }); + }; + for (var i = 0; i < filepaths.length; i++) { + transform.write(i); + } + return transform; + }; + /** + * Return entry for the provided path. + */ + FileSystemStream.prototype.getEntry = function (filepath, pattern) { + var _this = this; + return this.getStat(filepath) + .then(function (stat) { return _this.makeEntry(stat, pattern); }) + .catch(function () { return null; }); + }; + /** + * Return fs.Stats for the provided path. + */ + FileSystemStream.prototype.getStat = function (filepath) { + return fsStat.stat(filepath, { throwErrorOnBrokenSymlinks: false }); + }; + return FileSystemStream; +}(fs_1.default)); +exports.default = FileSystemStream; /***/ }), -/* 686 */ +/* 684 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__(687); -const statProvider = __webpack_require__(689); +const optionsManager = __webpack_require__(685); +const statProvider = __webpack_require__(687); /** * Asynchronous API. */ @@ -79690,13 +79679,13 @@ exports.statSync = statSync; /***/ }), -/* 687 */ +/* 685 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__(688); +const fsAdapter = __webpack_require__(686); function prepare(opts) { const options = Object.assign({ fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), @@ -79709,7 +79698,7 @@ exports.prepare = prepare; /***/ }), -/* 688 */ +/* 686 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79732,7 +79721,7 @@ exports.getFileSystemAdapter = getFileSystemAdapter; /***/ }), -/* 689 */ +/* 687 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -79784,318 +79773,318 @@ exports.isFollowedSymlink = isFollowedSymlink; /***/ }), -/* 690 */ +/* 688 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__(4); -var FileSystem = /** @class */ (function () { - function FileSystem(options) { - this.options = options; - } - /** - * Return full path to entry. - */ - FileSystem.prototype.getFullEntryPath = function (filepath) { - return path.resolve(this.options.cwd, filepath); - }; - /** - * Return an implementation of the Entry interface. - */ - FileSystem.prototype.makeEntry = function (stat, pattern) { - stat.path = pattern; - stat.depth = pattern.split('/').length; - return stat; - }; - return FileSystem; -}()); -exports.default = FileSystem; + +Object.defineProperty(exports, "__esModule", { value: true }); +var path = __webpack_require__(4); +var FileSystem = /** @class */ (function () { + function FileSystem(options) { + this.options = options; + } + /** + * Return full path to entry. + */ + FileSystem.prototype.getFullEntryPath = function (filepath) { + return path.resolve(this.options.cwd, filepath); + }; + /** + * Return an implementation of the Entry interface. + */ + FileSystem.prototype.makeEntry = function (stat, pattern) { + stat.path = pattern; + stat.depth = pattern.split('/').length; + return stat; + }; + return FileSystem; +}()); +exports.default = FileSystem; /***/ }), -/* 691 */ +/* 689 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__(138); -var readdir = __webpack_require__(668); -var reader_1 = __webpack_require__(681); -var fs_stream_1 = __webpack_require__(685); -var TransformStream = /** @class */ (function (_super) { - __extends(TransformStream, _super); - function TransformStream(reader) { - var _this = _super.call(this, { objectMode: true }) || this; - _this.reader = reader; - return _this; - } - TransformStream.prototype._transform = function (entry, _encoding, callback) { - callback(null, this.reader.transform(entry)); - }; - return TransformStream; -}(stream.Transform)); -var ReaderStream = /** @class */ (function (_super) { - __extends(ReaderStream, _super); - function ReaderStream() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderStream.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_stream_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use stream API to read entries for Task. - */ - ReaderStream.prototype.read = function (task) { - var _this = this; - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - var transform = new TransformStream(this); - var readable = this.api(root, task, options); - return readable - .on('error', function (err) { return _this.isEnoentCodeError(err) ? null : transform.emit('error', err); }) - .pipe(transform); - }; - /** - * Returns founded paths. - */ - ReaderStream.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderStream.prototype.dynamicApi = function (root, options) { - return readdir.readdirStreamStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderStream.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderStream; -}(reader_1.default)); -exports.default = ReaderStream; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var stream = __webpack_require__(138); +var readdir = __webpack_require__(666); +var reader_1 = __webpack_require__(679); +var fs_stream_1 = __webpack_require__(683); +var TransformStream = /** @class */ (function (_super) { + __extends(TransformStream, _super); + function TransformStream(reader) { + var _this = _super.call(this, { objectMode: true }) || this; + _this.reader = reader; + return _this; + } + TransformStream.prototype._transform = function (entry, _encoding, callback) { + callback(null, this.reader.transform(entry)); + }; + return TransformStream; +}(stream.Transform)); +var ReaderStream = /** @class */ (function (_super) { + __extends(ReaderStream, _super); + function ReaderStream() { + return _super !== null && _super.apply(this, arguments) || this; + } + Object.defineProperty(ReaderStream.prototype, "fsAdapter", { + /** + * Returns FileSystem adapter. + */ + get: function () { + return new fs_stream_1.default(this.options); + }, + enumerable: true, + configurable: true + }); + /** + * Use stream API to read entries for Task. + */ + ReaderStream.prototype.read = function (task) { + var _this = this; + var root = this.getRootDirectory(task); + var options = this.getReaderOptions(task); + var transform = new TransformStream(this); + var readable = this.api(root, task, options); + return readable + .on('error', function (err) { return _this.isEnoentCodeError(err) ? null : transform.emit('error', err); }) + .pipe(transform); + }; + /** + * Returns founded paths. + */ + ReaderStream.prototype.api = function (root, task, options) { + if (task.dynamic) { + return this.dynamicApi(root, options); + } + return this.staticApi(task, options); + }; + /** + * Api for dynamic tasks. + */ + ReaderStream.prototype.dynamicApi = function (root, options) { + return readdir.readdirStreamStat(root, options); + }; + /** + * Api for static tasks. + */ + ReaderStream.prototype.staticApi = function (task, options) { + return this.fsAdapter.read(task.patterns, options.filter); + }; + return ReaderStream; +}(reader_1.default)); +exports.default = ReaderStream; /***/ }), -/* 692 */ +/* 690 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(668); -var reader_1 = __webpack_require__(681); -var fs_sync_1 = __webpack_require__(693); -var ReaderSync = /** @class */ (function (_super) { - __extends(ReaderSync, _super); - function ReaderSync() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderSync.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_sync_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use sync API to read entries for Task. - */ - ReaderSync.prototype.read = function (task) { - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - try { - var entries = this.api(root, task, options); - return entries.map(this.transform, this); - } - catch (err) { - if (this.isEnoentCodeError(err)) { - return []; - } - throw err; - } - }; - /** - * Returns founded paths. - */ - ReaderSync.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderSync.prototype.dynamicApi = function (root, options) { - return readdir.readdirSyncStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderSync.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderSync; -}(reader_1.default)); -exports.default = ReaderSync; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var readdir = __webpack_require__(666); +var reader_1 = __webpack_require__(679); +var fs_sync_1 = __webpack_require__(691); +var ReaderSync = /** @class */ (function (_super) { + __extends(ReaderSync, _super); + function ReaderSync() { + return _super !== null && _super.apply(this, arguments) || this; + } + Object.defineProperty(ReaderSync.prototype, "fsAdapter", { + /** + * Returns FileSystem adapter. + */ + get: function () { + return new fs_sync_1.default(this.options); + }, + enumerable: true, + configurable: true + }); + /** + * Use sync API to read entries for Task. + */ + ReaderSync.prototype.read = function (task) { + var root = this.getRootDirectory(task); + var options = this.getReaderOptions(task); + try { + var entries = this.api(root, task, options); + return entries.map(this.transform, this); + } + catch (err) { + if (this.isEnoentCodeError(err)) { + return []; + } + throw err; + } + }; + /** + * Returns founded paths. + */ + ReaderSync.prototype.api = function (root, task, options) { + if (task.dynamic) { + return this.dynamicApi(root, options); + } + return this.staticApi(task, options); + }; + /** + * Api for dynamic tasks. + */ + ReaderSync.prototype.dynamicApi = function (root, options) { + return readdir.readdirSyncStat(root, options); + }; + /** + * Api for static tasks. + */ + ReaderSync.prototype.staticApi = function (task, options) { + return this.fsAdapter.read(task.patterns, options.filter); + }; + return ReaderSync; +}(reader_1.default)); +exports.default = ReaderSync; /***/ }), -/* 693 */ +/* 691 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__(686); -var fs_1 = __webpack_require__(690); -var FileSystemSync = /** @class */ (function (_super) { - __extends(FileSystemSync, _super); - function FileSystemSync() { - return _super !== null && _super.apply(this, arguments) || this; - } - /** - * Use sync API to read entries for Task. - */ - FileSystemSync.prototype.read = function (patterns, filter) { - var _this = this; - var entries = []; - patterns.forEach(function (pattern) { - var filepath = _this.getFullEntryPath(pattern); - var entry = _this.getEntry(filepath, pattern); - if (entry === null || !filter(entry)) { - return; - } - entries.push(entry); - }); - return entries; - }; - /** - * Return entry for the provided path. - */ - FileSystemSync.prototype.getEntry = function (filepath, pattern) { - try { - var stat = this.getStat(filepath); - return this.makeEntry(stat, pattern); - } - catch (err) { - return null; - } - }; - /** - * Return fs.Stats for the provided path. - */ - FileSystemSync.prototype.getStat = function (filepath) { - return fsStat.statSync(filepath, { throwErrorOnBrokenSymlinks: false }); - }; - return FileSystemSync; -}(fs_1.default)); -exports.default = FileSystemSync; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var fsStat = __webpack_require__(684); +var fs_1 = __webpack_require__(688); +var FileSystemSync = /** @class */ (function (_super) { + __extends(FileSystemSync, _super); + function FileSystemSync() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Use sync API to read entries for Task. + */ + FileSystemSync.prototype.read = function (patterns, filter) { + var _this = this; + var entries = []; + patterns.forEach(function (pattern) { + var filepath = _this.getFullEntryPath(pattern); + var entry = _this.getEntry(filepath, pattern); + if (entry === null || !filter(entry)) { + return; + } + entries.push(entry); + }); + return entries; + }; + /** + * Return entry for the provided path. + */ + FileSystemSync.prototype.getEntry = function (filepath, pattern) { + try { + var stat = this.getStat(filepath); + return this.makeEntry(stat, pattern); + } + catch (err) { + return null; + } + }; + /** + * Return fs.Stats for the provided path. + */ + FileSystemSync.prototype.getStat = function (filepath) { + return fsStat.statSync(filepath, { throwErrorOnBrokenSymlinks: false }); + }; + return FileSystemSync; +}(fs_1.default)); +exports.default = FileSystemSync; /***/ }), -/* 694 */ +/* 692 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Flatten nested arrays (max depth is 2) into a non-nested array of non-array items. - */ -function flatten(items) { - return items.reduce(function (collection, item) { return [].concat(collection, item); }, []); -} -exports.flatten = flatten; + +Object.defineProperty(exports, "__esModule", { value: true }); +/** + * Flatten nested arrays (max depth is 2) into a non-nested array of non-array items. + */ +function flatten(items) { + return items.reduce(function (collection, item) { return [].concat(collection, item); }, []); +} +exports.flatten = flatten; /***/ }), -/* 695 */ +/* 693 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__(300); -/** - * Merge multiple streams and propagate their errors into one stream in parallel. - */ -function merge(streams) { - var mergedStream = merge2(streams); - streams.forEach(function (stream) { - stream.on('error', function (err) { return mergedStream.emit('error', err); }); - }); - return mergedStream; -} -exports.merge = merge; + +Object.defineProperty(exports, "__esModule", { value: true }); +var merge2 = __webpack_require__(301); +/** + * Merge multiple streams and propagate their errors into one stream in parallel. + */ +function merge(streams) { + var mergedStream = merge2(streams); + streams.forEach(function (stream) { + stream.on('error', function (err) { return mergedStream.emit('error', err); }); + }); + return mergedStream; +} +exports.merge = merge; /***/ }), -/* 696 */ +/* 694 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); -const pathType = __webpack_require__(697); +const pathType = __webpack_require__(695); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -80161,13 +80150,13 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 697 */ +/* 695 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); -const pify = __webpack_require__(698); +const pify = __webpack_require__(696); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -80210,7 +80199,7 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /***/ }), -/* 698 */ +/* 696 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80301,17 +80290,17 @@ module.exports = (obj, opts) => { /***/ }), -/* 699 */ +/* 697 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(134); const path = __webpack_require__(4); -const fastGlob = __webpack_require__(522); -const gitIgnore = __webpack_require__(700); -const pify = __webpack_require__(233); -const slash = __webpack_require__(701); +const fastGlob = __webpack_require__(523); +const gitIgnore = __webpack_require__(698); +const pify = __webpack_require__(234); +const slash = __webpack_require__(699); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -80409,7 +80398,7 @@ module.exports.sync = options => { /***/ }), -/* 700 */ +/* 698 */ /***/ (function(module, exports) { // A simple implementation of make-array @@ -80878,7 +80867,7 @@ module.exports = options => new IgnoreBase(options) /***/ }), -/* 701 */ +/* 699 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80896,7 +80885,7 @@ module.exports = input => { /***/ }), -/* 702 */ +/* 700 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -80909,7 +80898,7 @@ module.exports = input => { -var isGlob = __webpack_require__(703); +var isGlob = __webpack_require__(701); module.exports = function hasGlob(val) { if (val == null) return false; @@ -80929,7 +80918,7 @@ module.exports = function hasGlob(val) { /***/ }), -/* 703 */ +/* 701 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -80939,7 +80928,7 @@ module.exports = function hasGlob(val) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(311); +var isExtglob = __webpack_require__(312); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -80960,17 +80949,17 @@ module.exports = function isGlob(str) { /***/ }), -/* 704 */ +/* 702 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(4); const {constants: fsConstants} = __webpack_require__(134); -const pEvent = __webpack_require__(705); -const CpFileError = __webpack_require__(708); -const fs = __webpack_require__(710); -const ProgressEmitter = __webpack_require__(713); +const pEvent = __webpack_require__(703); +const CpFileError = __webpack_require__(706); +const fs = __webpack_require__(708); +const ProgressEmitter = __webpack_require__(711); const cpFileAsync = async (source, destination, options, progressEmitter) => { let readError; @@ -81084,12 +81073,12 @@ module.exports.sync = (source, destination, options) => { /***/ }), -/* 705 */ +/* 703 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pTimeout = __webpack_require__(706); +const pTimeout = __webpack_require__(704); const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; @@ -81382,13 +81371,13 @@ module.exports.TimeoutError = pTimeout.TimeoutError; /***/ }), -/* 706 */ +/* 704 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pFinally = __webpack_require__(707); +const pFinally = __webpack_require__(705); class TimeoutError extends Error { constructor(message) { @@ -81446,7 +81435,7 @@ module.exports.TimeoutError = TimeoutError; /***/ }), -/* 707 */ +/* 705 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81468,12 +81457,12 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 708 */ +/* 706 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(709); +const NestedError = __webpack_require__(707); class CpFileError extends NestedError { constructor(message, nested) { @@ -81487,7 +81476,7 @@ module.exports = CpFileError; /***/ }), -/* 709 */ +/* 707 */ /***/ (function(module, exports, __webpack_require__) { var inherits = __webpack_require__(112).inherits; @@ -81543,16 +81532,16 @@ module.exports = NestedError; /***/ }), -/* 710 */ +/* 708 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const {promisify} = __webpack_require__(112); const fs = __webpack_require__(133); -const makeDir = __webpack_require__(711); -const pEvent = __webpack_require__(705); -const CpFileError = __webpack_require__(708); +const makeDir = __webpack_require__(709); +const pEvent = __webpack_require__(703); +const CpFileError = __webpack_require__(706); const stat = promisify(fs.stat); const lstat = promisify(fs.lstat); @@ -81649,7 +81638,7 @@ exports.copyFileSync = (source, destination, flags) => { /***/ }), -/* 711 */ +/* 709 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -81657,7 +81646,7 @@ exports.copyFileSync = (source, destination, flags) => { const fs = __webpack_require__(134); const path = __webpack_require__(4); const {promisify} = __webpack_require__(112); -const semver = __webpack_require__(712); +const semver = __webpack_require__(710); const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); @@ -81812,7 +81801,7 @@ module.exports.sync = (input, options) => { /***/ }), -/* 712 */ +/* 710 */ /***/ (function(module, exports) { exports = module.exports = SemVer @@ -83414,12 +83403,12 @@ function coerce (version, options) { /***/ }), -/* 713 */ +/* 711 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__(156); +const EventEmitter = __webpack_require__(157); const written = new WeakMap(); @@ -83455,7 +83444,7 @@ module.exports = ProgressEmitter; /***/ }), -/* 714 */ +/* 712 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83501,12 +83490,12 @@ exports.default = module.exports; /***/ }), -/* 715 */ +/* 713 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pMap = __webpack_require__(716); +const pMap = __webpack_require__(714); const pFilter = async (iterable, filterer, options) => { const values = await pMap( @@ -83523,7 +83512,7 @@ module.exports.default = pFilter; /***/ }), -/* 716 */ +/* 714 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -83602,12 +83591,12 @@ module.exports.default = pMap; /***/ }), -/* 717 */ +/* 715 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(709); +const NestedError = __webpack_require__(707); class CpyError extends NestedError { constructor(message, nested) { diff --git a/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/package.json b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/package.json new file mode 100644 index 000000000000..f1c6f179d502 --- /dev/null +++ b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/package.json @@ -0,0 +1,14 @@ +{ + "name": "opensearch-dashboards", + "version": "1.0.0", + "private": "true", + "dependencies": { + "foo": "1.0.0", + "@scoped/baz": "file:../other-plugins/baz" + }, + "workspaces": { + "packages": [ + "packages/*" + ] + } +} diff --git a/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/bar/package.json b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/bar/package.json new file mode 100644 index 000000000000..62eba57e2481 --- /dev/null +++ b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/bar/package.json @@ -0,0 +1,8 @@ +{ + "name": "bar", + "version": "1.0.0", + "dependencies": { + "foo": "1.0.0", + "@scoped/baz": "file:../../../other-plugins/baz" + } +} diff --git a/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/foo/package.json b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/foo/package.json new file mode 100644 index 000000000000..da86787ad3ec --- /dev/null +++ b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/packages/foo/package.json @@ -0,0 +1,4 @@ +{ + "name": "foo", + "version": "1.0.0" +} diff --git a/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/yarn.lock b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/yarn.lock new file mode 100644 index 000000000000..3d2c45192493 --- /dev/null +++ b/packages/osd-pm/src/utils/__fixtures__/opensearch-dashboards-dev/yarn.lock @@ -0,0 +1,6 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@scoped/baz@file:../other-plugins/baz": + version "1.0.0" diff --git a/packages/osd-pm/src/utils/yarn_lock.test.ts b/packages/osd-pm/src/utils/yarn_lock.test.ts new file mode 100644 index 000000000000..5f3d1ae0d27a --- /dev/null +++ b/packages/osd-pm/src/utils/yarn_lock.test.ts @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { resolve } from 'path'; +import { OpenSearchDashboards } from './opensearch_dashboards'; +import { readYarnLock } from './yarn_lock'; + +const rootPath = resolve(`${__dirname}/__fixtures__/opensearch-dashboards-dev`); + +const linkedDepmarker = 'file:'; +const linkedDepmarkerLength = linkedDepmarker.length; + +describe('#readYarnLock', () => { + it('includes an entry with the absolute path to a linked dependency', async () => { + const devProject = await OpenSearchDashboards.loadFrom(rootPath); + const { allDependencies } = devProject.getProject('opensearch-dashboards'); + const expectedObject = Object.keys(allDependencies).reduce( + (accumulator: { [key: string]: any }, key) => { + if (allDependencies[key].startsWith('file:')) { + accumulator[ + key + + '@file:' + + resolve( + devProject.getAbsolute(), + allDependencies[key].substring(linkedDepmarkerLength) + ) + ] = expect.any(Object); + } + return accumulator; + }, + {} + ); + + const result = await readYarnLock(devProject); + + expect(result).toMatchObject(expectedObject); + }); +}); diff --git a/packages/osd-pm/src/utils/yarn_lock.ts b/packages/osd-pm/src/utils/yarn_lock.ts index cdd3639626d0..b83b17bb61e6 100644 --- a/packages/osd-pm/src/utils/yarn_lock.ts +++ b/packages/osd-pm/src/utils/yarn_lock.ts @@ -30,6 +30,8 @@ // @ts-expect-error published types are worthless import { parse as parseLockfile } from '@yarnpkg/lockfile'; +import { standardize } from '@osd/cross-platform'; +import { resolve, isAbsolute } from 'path'; import { readFile } from '../utils/fs'; import { OpenSearchDashboards } from '../utils/opensearch_dashboards'; @@ -62,7 +64,7 @@ export async function readYarnLock(osd: OpenSearchDashboards): Promise const yarnLock = parseLockfile(contents); if (yarnLock.type === 'success') { - return yarnLock.object; + return fixFileLinks(yarnLock.object, osd.getAbsolute()); } throw new Error('unable to read yarn.lock file, please run `yarn osd bootstrap`'); @@ -75,6 +77,33 @@ export async function readYarnLock(osd: OpenSearchDashboards): Promise return {}; } +/** + * Converts relative `file:` paths to absolute paths + * Yarn parsing method converts all file URIs to relative paths and this + * breaks the single-version requirement as dependencies to the same path + * would differ in their URIs across OSD and packages. + */ +function fixFileLinks(yarnLock: YarnLock, projectRoot: string): YarnLock { + const fileLinkDelimiter = '@file:'; + + const linkedKeys = Object.keys(yarnLock).filter((key) => key.includes(fileLinkDelimiter)); + + if (linkedKeys.length === 0) return yarnLock; + + const updatedYarnLock = { ...yarnLock }; + for (const key of linkedKeys) { + const [keyName, keyPath, ...rest] = key.split(fileLinkDelimiter); + if (!isAbsolute(keyPath)) { + const updatedKeyName = [keyName, standardize(resolve(projectRoot, keyPath)), ...rest].join( + fileLinkDelimiter + ); + updatedYarnLock[updatedKeyName] = updatedYarnLock[key]; + } + } + + return updatedYarnLock; +} + /** * Get a list of the absolute dependencies of this project, as resolved * in the yarn.lock file, does not include other projects in the workspace diff --git a/packages/osd-stylelint-config/.stylelintrc.js b/packages/osd-stylelint-config/.stylelintrc.js new file mode 100644 index 000000000000..6a4e2099f5a6 --- /dev/null +++ b/packages/osd-stylelint-config/.stylelintrc.js @@ -0,0 +1,32 @@ +/* + * 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. + */ + +module.exports = { + plugins: [ + '@osd/stylelint-plugin-stylelint', + ], + + rules: { + '@osd/stylelint/no_modifying_global_selectors': [ + { + config: "./../../../osd-stylelint-config/config/global_selectors.json" + }, + { + severity: "error" + } + ], + '@osd/stylelint/no_custom_colors': [ + { + config: './../../../osd-stylelint-config/config/colors.json' + }, + ] + } +} diff --git a/packages/osd-stylelint-config/README.md b/packages/osd-stylelint-config/README.md new file mode 100644 index 000000000000..68d7354626f3 --- /dev/null +++ b/packages/osd-stylelint-config/README.md @@ -0,0 +1,45 @@ +# osd-stylelint-config + +The Stylelint config used by OpenSearch Dashboards. This package is created to enable the modification of rules with the JSON files in `config/` and any consumer of the `@osd/stylelint-plugin-stylelint` can just extend this config within its `.stylelintrc`. + +The ideal state being that this package is maintained externally from the OpenSearch Dashboards repo so that the configs can be modified with rules without being blocked by processes within OpenSearch Dashboards. + +Issue: +https://github.com/opensearch-project/oui/issues/845 + +## Usage + +To use this stylelint config, just install the peer dependencies and reference it +in your `.stylelintrc`: + +```javascript +{ + extends: [ + '@osd/stylelint-config' + ] +} +``` + +This JSON configs that are sent through the compliance engine are expected to follow the schema: + +```json +{ + "cssProperty": { + "regexOfSelector": [ + { + "approved": "OUICompliantValue1", + "rejected": [ + "OUIViolationValue1", + "OUIViolationValue2", + ] + }, + { + "approved": "OUICompliantValue2", + "rejected": [ + "OUIViolationValue3" + ] + } + ] + } +} +``` diff --git a/packages/osd-stylelint-config/config/colors.json b/packages/osd-stylelint-config/config/colors.json new file mode 100644 index 000000000000..70728fa1227e --- /dev/null +++ b/packages/osd-stylelint-config/config/colors.json @@ -0,0 +1,18 @@ +{ + "background-color": { + "buttonTODOTHISANEXAMPLE": [ + { + "approved": "$euiColorPrimary", + "rejected": [ + "blueTODOTHISANEXAMPLE" + ] + }, + { + "approved": "$euiColorWarning", + "rejected": [ + "redTODOTHISANEXAMPLE" + ] + } + ] + } +} diff --git a/packages/osd-stylelint-config/config/global_selectors.json b/packages/osd-stylelint-config/config/global_selectors.json new file mode 100644 index 000000000000..19451066878c --- /dev/null +++ b/packages/osd-stylelint-config/config/global_selectors.json @@ -0,0 +1,30 @@ +{ + "#opensearch-dashboards-body": { + "approved": [ + "src/core/public/rendering/_base.scss" + ] + }, + ".app-wrapper": { + "approved": [ + "src/core/public/rendering/_base.scss" + ] + }, + "/\\.[eo]ui/": { + "approved": [ + "examples/expressions_example/public/index.scss", + "src/core/public/styles/_base.scss", + "src/plugins/vis_default_editor/public/_sidebar.scss", + "src/core/public/core_app/styles/_mixins.scss", + "src/core/public/chrome/ui/header/_index.scss", + "src/core/public/chrome/ui/header/header_breadcrumbs.scss", + "src/core/public/chrome/ui/header/home_loader.scss", + "src/plugins/data/public/ui/filter_bar/_global_filter_item.scss", + "src/plugins/home/public/application/components/_synopsis.scss", + "src/plugins/vis_builder/public/application/components/searchable_dropdown.scss", + "src/plugins/vis_builder/public/application/components/side_nav.scss", + "packages/osd-ui-framework/src/components/button/button_group/_button_group.scss", + "src/plugins/discover/public/application/components/sidebar/discover_sidebar.scss", + "src/plugins/discover/public/application/angular/doc_table/components/table_row/_open.scss" + ] + } +} diff --git a/packages/osd-stylelint-config/package.json b/packages/osd-stylelint-config/package.json new file mode 100644 index 000000000000..750a1bf207d8 --- /dev/null +++ b/packages/osd-stylelint-config/package.json @@ -0,0 +1,15 @@ +{ + "name": "@osd/stylelint-config", + "version": "1.0.0", + "description": "The stylelint config used by OpenSearch Dashboards", + "main": ".stylelintrc.js", + "private": true, + "license": "Apache-2.0", + "opensearchDashboards": { + "devOnly": true + }, + "peerDependencies": { + "@osd/stylelint-plugin-stylelint": "1.0.0", + "stylelint": "^14.5.2" + } +} diff --git a/packages/osd-stylelint-plugin-stylelint/README.md b/packages/osd-stylelint-plugin-stylelint/README.md new file mode 100644 index 000000000000..e6879cf1a9f5 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/README.md @@ -0,0 +1,18 @@ +# Custom Stylelint rules for OpenSearch Dashboards + +This package contains custom Stylelint rules used for OpenSearch Dashboards development. Rules are defined in `src/rules` and are the actual logic of the custom rules which are built around parsing a JSON config file passed in and applying the rules defined within there. + +This package can work with `@osd/stylelint-config` which houses the JSON config files to be passed into this plugin. The goal being to seperate out OUI compliance rules which can be modified by anyone versus the actual OUI compliance engine which should be only modified by developers. + +## Audit styles that are related to custom rules + +Setting: +``` +export OUI_AUDIT_ENABLED=true +``` + +Enables the ability to capture styling that potentially can be subject to compliance when there is a rule that interacts with the styling. + +For example, if a style attempts to set a button to have a `background-color: $incorrectVariable()` and the JSON config passed to the compliance engine does not explicitly reject the `$incorrectVariable()` being applied to a button's background color then the linter will pass. But it will output this if the environment variable is set to `true`. + +The goal being that setting this environment variable to output a list that can then be added to the JSON config which we can feed back into the compliance engine. diff --git a/packages/osd-stylelint-plugin-stylelint/package.json b/packages/osd-stylelint-plugin-stylelint/package.json new file mode 100644 index 000000000000..2d2a6e661d5d --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/package.json @@ -0,0 +1,22 @@ +{ + "name": "@osd/stylelint-plugin-stylelint", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "version": "1.0.0", + "private": true, + "license": "Apache-2.0", + "scripts": { + "build": "tsc", + "osd:bootstrap": "yarn build" + }, + "opensearchDashboards": { + "devOnly": true + }, + "peerDependencies": { + "stylelint": "^14.5.2" + }, + "devDependencies": { + "typescript": "4.0.2", + "tsd": "^0.21.0" + } +} diff --git a/packages/osd-stylelint-plugin-stylelint/src/index.ts b/packages/osd-stylelint-plugin-stylelint/src/index.ts new file mode 100644 index 000000000000..db919d008f99 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/index.ts @@ -0,0 +1,22 @@ +/* + * 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. + */ + +import stylelint from 'stylelint'; +import rules from './rules'; + +export const NAMESPACE = '@osd/stylelint'; + +const rulesPlugins = Object.keys(rules).map((ruleName: string) => { + return stylelint.createPlugin(`${NAMESPACE}/${ruleName}`, rules[ruleName]); +}); + +// eslint-disable-next-line import/no-default-export +export default rulesPlugins; diff --git a/packages/osd-stylelint-plugin-stylelint/src/rules/index.ts b/packages/osd-stylelint-plugin-stylelint/src/rules/index.ts new file mode 100644 index 000000000000..0f09ff62b234 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/rules/index.ts @@ -0,0 +1,19 @@ +/* + * 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. + */ + +import noCustomColors from './no_custom_colors'; +import noModifyingGlobalSelectors from './no_modifying_global_selectors'; + +// eslint-disable-next-line import/no-default-export +export default { + no_custom_colors: noCustomColors, + no_modifying_global_selectors: noModifyingGlobalSelectors, +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/rules/no_custom_colors/index.ts b/packages/osd-stylelint-plugin-stylelint/src/rules/no_custom_colors/index.ts new file mode 100644 index 000000000000..b8061f7ff9bd --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/rules/no_custom_colors/index.ts @@ -0,0 +1,106 @@ +/* + * 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. + */ + +import stylelint from 'stylelint'; +import { NAMESPACE } from '../..'; +import { + ComplianceEngine, + getTrackedMessage, + getUntrackedMessage, + getNotCompliantMessage, + getRulesFromConfig, + isColorProperty, + isValidOptions, +} from '../../utils'; + +const isOuiAuditEnabled = Boolean(process.env.OUI_AUDIT_ENABLED); + +const { ruleMessages, report } = stylelint.utils; +const engine = ComplianceEngine.default; + +const ruleName = 'no_custom_colors'; +const messages = ruleMessages(ruleName, { + expected: (message) => `${message}`, +}); + +const ruleFunction = ( + primaryOption: Record, + secondaryOptionObject: Record, + context +) => { + return (postcssRoot: any, postcssResult: any) => { + const validOptions = isValidOptions(postcssResult, ruleName, primaryOption); + if (!validOptions) { + return; + } + + const rules = getRulesFromConfig(primaryOption.config); + + const isAutoFixing = Boolean(context.fix); + + postcssRoot.walkDecls((decl: any) => { + if (!isColorProperty(decl.prop)) { + return; + } + + let shouldReport = false; + + const nodeInfo = { + selector: decl.parent.selector, + prop: decl.prop, + value: decl.value, + }; + + const reportInfo = { + ruleName: `${NAMESPACE}/${ruleName}`, + result: postcssResult, + node: decl, + message: '', + }; + + if (isOuiAuditEnabled && !engine.isTracked(rules, nodeInfo)) { + reportInfo.message = messages.expected(getUntrackedMessage(nodeInfo)); + report(reportInfo); + return; + } + + const ruleObject = engine.getComplianceRule(rules, nodeInfo); + + if (!ruleObject) { + if (isOuiAuditEnabled) { + reportInfo.message = messages.expected(getTrackedMessage(nodeInfo)); + report(reportInfo); + } + return; + } + + shouldReport = !ruleObject.isComplaint; + + if (shouldReport && isAutoFixing) { + decl.value = ruleObject.expected; + return; + } + + if (!shouldReport) { + return; + } + + reportInfo.message = messages.expected(getNotCompliantMessage(ruleObject.message)); + report(reportInfo); + }); + }; +}; + +ruleFunction.ruleName = ruleName; +ruleFunction.messages = messages; + +// eslint-disable-next-line import/no-default-export +export default ruleFunction; diff --git a/packages/osd-stylelint-plugin-stylelint/src/rules/no_modifying_global_selectors/index.ts b/packages/osd-stylelint-plugin-stylelint/src/rules/no_modifying_global_selectors/index.ts new file mode 100644 index 000000000000..2c6ee035aec1 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/rules/no_modifying_global_selectors/index.ts @@ -0,0 +1,88 @@ +/* + * 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. + */ + +import stylelint from 'stylelint'; +import { NAMESPACE } from '../..'; +import { + getNotCompliantMessage, + getRulesFromConfig, + isValidOptions, + getSelectorRule, +} from '../../utils'; + +const { ruleMessages, report } = stylelint.utils; + +const ruleName = 'no_modifying_global_selectors'; +const messages = ruleMessages(ruleName, { + expected: (message) => `${message}`, +}); + +const ruleFunction = ( + primaryOption: Record, + secondaryOptionObject: Record, + context +) => { + return (postcssRoot: any, postcssResult: any) => { + const validOptions = isValidOptions(postcssResult, ruleName, primaryOption); + if (!validOptions) { + return; + } + + const rules = getRulesFromConfig(primaryOption.config); + + const isAutoFixing = Boolean(context.fix); + + postcssRoot.walkRules((rule: any) => { + const selectorRule = getSelectorRule(rules, rule); + if (!selectorRule) { + return; + } + + let shouldReport = false; + + const file = postcssRoot.source.input.file; + const approvedFiles = selectorRule.approved; + + const reportInfo = { + ruleName: `${NAMESPACE}/${ruleName}`, + result: postcssResult, + node: rule, + message: '', + }; + + if (approvedFiles) { + shouldReport = !approvedFiles.some((inspectedFile) => { + return file.includes(inspectedFile); + }); + } + + if (shouldReport && isAutoFixing) { + rule.remove(); + return; + } + + if (!shouldReport) { + return; + } + + reportInfo.message = messages.expected( + getNotCompliantMessage(`Modifying global selector "${rule.selector}" not allowed.`) + ); + report(reportInfo); + }); + }; +}; + +ruleFunction.ruleName = ruleName; +ruleFunction.messages = messages; + +// eslint-disable-next-line import/no-default-export +export default ruleFunction; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/compliance_engine.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/compliance_engine.ts new file mode 100644 index 000000000000..dcdbcf0cc161 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/compliance_engine.ts @@ -0,0 +1,77 @@ +/* + * 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. + */ + +export interface ComplianceRule { + isComplaint: boolean; + actual: string; + expected: string; + message: string; +} + +const getRule = (rules: JSON, nodeInfo: { selector: string; prop: string }) => { + const rule = rules[nodeInfo.prop]; + if (!rule) { + return undefined; + } + + if (!nodeInfo.selector) { + return undefined; + } + + const ruleKey = Object.keys(rule).find((key) => { + const regex = new RegExp(key, 'gi'); + return nodeInfo.selector.match(regex); + }); + + if (!ruleKey) { + return undefined; + } + + return rule[ruleKey]; +}; + +const isTracked = (rules: JSON, nodeInfo: { selector: string; prop: string }) => { + return getRule(rules, nodeInfo) !== undefined; +}; + +const getComplianceRule = ( + rules: JSON, + nodeInfo: { selector: string; prop: string; value: string } +): ComplianceRule | undefined => { + const rule = getRule(rules, nodeInfo); + + if (!rule) { + return undefined; + } + + const ruleObject = rule.find((object) => { + if (object.approved.includes(nodeInfo.value) || object.rejected.includes(nodeInfo.value)) { + return object; + } + }); + + if (!ruleObject) { + return undefined; + } + + return { + isComplaint: !ruleObject.rejected.includes(nodeInfo.value), + actual: nodeInfo.value, + expected: ruleObject.approved, + message: `${nodeInfo.selector} expected: ${ruleObject.approved} - actual: ${nodeInfo.value}`, + }; +}; + +// eslint-disable-next-line import/no-default-export +export default { + isTracked, + getComplianceRule, +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/extract_regex.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/extract_regex.ts new file mode 100644 index 000000000000..937b486ad940 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/extract_regex.ts @@ -0,0 +1,22 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +export const extractRegex = (value: string) => { + if (!value.startsWith('/')) { + return undefined; + } + + const split = value.split('/'); + split.shift(); + + const flags = split.pop(); + if (split.length === 0) { + return undefined; + } + + const pattern = split.join('/'); + + return new RegExp(pattern, flags); +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/get_message.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/get_message.ts new file mode 100644 index 000000000000..65e236aaffad --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/get_message.ts @@ -0,0 +1,18 @@ +/* + * 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. + */ + +export const getUntrackedMessage = (nodeInfo: { selector: string; prop: string; value: string }) => + `Untracked: "${nodeInfo.selector}.${nodeInfo.prop}: ${nodeInfo.value}"`; + +export const getTrackedMessage = (nodeInfo: { selector: string; prop: string; value: string }) => + `Tracked but missing approval: "${nodeInfo.selector}.${nodeInfo.prop}: ${nodeInfo.value}"`; + +export const getNotCompliantMessage = (message: string) => `${message}`; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/get_rules_from_config.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/get_rules_from_config.ts new file mode 100644 index 000000000000..dc13230fa6b0 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/get_rules_from_config.ts @@ -0,0 +1,29 @@ +/* + * 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. + */ + +import path from 'path'; +import { readFileSync } from 'fs'; +import { matches } from './matches'; + +export const getRulesFromConfig = (configPath: string) => { + const filePath = path.resolve(__dirname, configPath); + return JSON.parse(readFileSync(filePath, 'utf-8')); +}; + +export const getSelectorRule = (rules: any, rule: any) => { + for (const configRule of Object.keys(rules)) { + if (matches(configRule, rule.selector)) { + return rules[configRule]; + } + } + + return undefined; +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/index.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/index.ts new file mode 100644 index 000000000000..ef60132e86b7 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/index.ts @@ -0,0 +1,18 @@ +/* + * 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. + */ + +export * as ComplianceEngine from './compliance_engine'; +export * from './extract_regex'; +export * from './get_message'; +export * from './get_rules_from_config'; +export * from './is_color_property'; +export * from './is_valid_options'; +export * from './matches'; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/is_color_property.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/is_color_property.ts new file mode 100644 index 000000000000..d52cb43cfc32 --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/is_color_property.ts @@ -0,0 +1,60 @@ +/* + * 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. + */ + +const COLOR_PROPERTIES = [ + 'all', + 'animation', + 'animation-name', + 'background', + 'background-color', + 'background-image', + 'border', + 'border-bottom', + 'border-bottom-color', + 'border-color', + 'border-image', + 'border-image-source', + 'border-left', + 'border-left-color', + 'border-right', + 'border-right-color', + 'border-top', + 'border-top-color', + 'box-shadow', + 'caret-color', + 'color', + 'column-rule', + 'column-rule-color', + 'content', + 'cursor', + 'filter', + 'list-style', + 'list-style-image', + 'outline', + 'outline-color', + 'text-decoration', + 'text-decoration-color', + 'text-shadow', + 'mask-image', + 'shape-outside', + 'mask-border-source', +]; + +/** + * This is intended to check a list of defined properties + * within a style and see if it's potentially modifying a property + * that can have a color. Stylelint crawls styles and will check + * each one, therefore this is to optimize the linter to + * skip any property that does not impact colors. + */ +export const isColorProperty = (prop: string) => { + return COLOR_PROPERTIES.includes(prop); +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/is_valid_options.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/is_valid_options.ts new file mode 100644 index 000000000000..15fae8862eaa --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/is_valid_options.ts @@ -0,0 +1,27 @@ +/* + * 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. + */ + +import stylelint from 'stylelint'; + +const { validateOptions } = stylelint.utils; + +export const isValidOptions = ( + postcssResult: any, + ruleName: string, + primaryOption: Record +) => { + return validateOptions(postcssResult, ruleName, { + actual: primaryOption, + possible: { + config: [(input) => typeof input === 'string'], + }, + }); +}; diff --git a/packages/osd-stylelint-plugin-stylelint/src/utils/matches.ts b/packages/osd-stylelint-plugin-stylelint/src/utils/matches.ts new file mode 100644 index 000000000000..02cc327615bd --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/src/utils/matches.ts @@ -0,0 +1,15 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { extractRegex } from './extract_regex'; + +export const matches = (matcher: string, value: string) => { + const regex = extractRegex(matcher); + if (!regex) { + return value === matcher; + } + + return regex.test(value); +}; diff --git a/packages/osd-stylelint-plugin-stylelint/tsconfig.json b/packages/osd-stylelint-plugin-stylelint/tsconfig.json new file mode 100644 index 000000000000..d7e31cada44d --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationDir": "./target", + "outDir": "./target", + "stripInternal": true, + "declarationMap": true, + "types": ["jest", "node"], + "noImplicitAny": false, + }, + "include": ["./src/**/*.ts"], + "exclude": ["target"] +} diff --git a/packages/osd-stylelint-plugin-stylelint/yarn.lock b/packages/osd-stylelint-plugin-stylelint/yarn.lock new file mode 120000 index 000000000000..3f82ebc9cdba --- /dev/null +++ b/packages/osd-stylelint-plugin-stylelint/yarn.lock @@ -0,0 +1 @@ +../../yarn.lock \ No newline at end of file diff --git a/packages/osd-ui-shared-deps/flot_charts/API.md b/packages/osd-ui-shared-deps/flot_charts/API.md index 699e2500f494..4fd076f1ac2a 100644 --- a/packages/osd-ui-shared-deps/flot_charts/API.md +++ b/packages/osd-ui-shared-deps/flot_charts/API.md @@ -167,7 +167,7 @@ var options = { points: { show: true } } }; - + $.plot(placeholder, data, options); ``` @@ -254,10 +254,10 @@ xaxis, yaxis: { min: null or number max: null or number autoscaleMargin: null or number - + transform: null or fn: number -> number inverseTransform: null or fn: number -> number - + ticks: null or number or ticks array or (fn: axis -> ticks array) tickSize: number or array minTickSize: number or array @@ -267,7 +267,7 @@ xaxis, yaxis: { labelWidth: null or number labelHeight: null or number reserveSpace: null or true - + tickLength: null or number alignTicksWithAxis: null or number @@ -415,7 +415,7 @@ ticks: [[0, "zero"], [1.2, "one mark"], [2.4, "two marks"]] ``` You can mix the two if you like. - + For extra flexibility you can specify a function as the "ticks" parameter. The function will be called with an object with the axis min and max and should return a ticks array. Here's a simplistic tick @@ -575,7 +575,7 @@ In Python you can get it with something like: calendar.timegm(datetime_object.timetuple()) * 1000 ``` In Ruby you can get it using the `#to_i` method on the -[`Time`](http://apidock.com/ruby/Time/to_i) object. If you're using the +`Time` object. If you're using the `active_support` gem (default for Ruby on Rails applications) `#to_i` is also available on the `DateTime` and `ActiveSupport::TimeWithZone` objects. You simply need to multiply the result by 1000: @@ -765,7 +765,7 @@ The options inside "series: {}" are copied to each of the series. So you can specify that all series should have bars by putting it in the global options, or override it for individual series by specifying bars in a particular the series object in the array of data. - + The most important options are "lines", "points" and "bars" that specify whether and how lines, points and bars should be shown for each data series. In case you don't specify anything at all, Flot will @@ -801,8 +801,8 @@ the y axis if "horizontal" is true), contrary to most other measures that are specified in pixels. For instance, for time series the unit is milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of a day. "align" specifies whether a bar should be left-aligned -(default), right-aligned or centered on top of the value it represents. -When "horizontal" is on, the bars are drawn horizontally, i.e. from the +(default), right-aligned or centered on top of the value it represents. +When "horizontal" is on, the bars are drawn horizontally, i.e. from the y axis instead of the x axis; note that the bar end points are still defined in the same way so you'll probably want to swap the coordinates if you've been plotting vertical bars first. @@ -1004,7 +1004,7 @@ item: { } ``` -For instance, if you have specified the data like this +For instance, if you have specified the data like this ```js $.plot($("#placeholder"), [ { label: "Foo", data: [[0, 10], [7, 3]] } ], ...); @@ -1155,7 +1155,7 @@ can call: Returns the calculated offset of the data point at (x, y) in data space within the placeholder div. If you are working with multiple - axes, you can specify the x and y axis references, e.g. + axes, you can specify the x and y axis references, e.g. ```js o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 }) @@ -1215,8 +1215,8 @@ Flot to keep track of its state, so be careful. With multiple axes, the extra axes are returned as x2axis, x3axis, etc., e.g. getAxes().y2axis is the second y axis. You can check y2axis.used to see whether the axis is associated with any data - points and y2axis.show to see if it is currently shown. - + points and y2axis.show to see if it is currently shown. + - getPlaceholder() Returns placeholder that the plot was put into. This can be useful @@ -1226,7 +1226,7 @@ Flot to keep track of its state, so be careful. Returns the canvas used for drawing in case you need to hack on it yourself. You'll probably need to get the plot offset too. - + - getPlotOffset() Gets the offset that the grid has within the canvas as an object @@ -1242,7 +1242,7 @@ Flot to keep track of its state, so be careful. if you modify the values in here, Flot will use the new values. If you change something, you probably have to call draw() or setupGrid() or triggerRedrawOverlay() to see the change. - + ## Hooks ## @@ -1254,7 +1254,7 @@ gets access to the internal data structures in Flot. Here's an overview of the phases Flot goes through: 1. Plugin initialization, parsing options - + 2. Constructing the canvases used for drawing 3. Set data: parsing data specification, calculating colors, @@ -1270,7 +1270,7 @@ Here's an overview of the phases Flot goes through: 7. Responding to events, if any - 8. Shutdown: this mostly happens in case a plot is overwritten + 8. Shutdown: this mostly happens in case a plot is overwritten Each hook is simply a function which is put in the appropriate array. You can add them through the "hooks" option, and they are also available @@ -1295,22 +1295,22 @@ hooks in the plugins bundled with Flot. - processOptions [phase 1] ```function(plot, options)``` - + Called after Flot has parsed and merged options. Useful in the instance where customizations beyond simple merging of default values is needed. A plugin might use it to detect that it has been enabled and then turn on or off other options. - + - processRawData [phase 3] ```function(plot, series, data, datapoints)``` - + Called before Flot copies and normalizes the raw data for the given series. If the function fills in datapoints.points with normalized points and sets datapoints.pointsize to the size of the points, Flot will skip the copying/normalization step for this series. - + In any case, you might be interested in setting datapoints.format, an array of objects for specifying how a point is normalized and how it interferes with axis scaling. It accepts the following options: @@ -1430,7 +1430,7 @@ hooks in the plugins bundled with Flot. state by drawing something (add a drawOverlay hook and call triggerRedrawOverlay) or firing an externally visible event for user code. See the crosshair plugin for an example. - + Currently, eventHolder actually contains both the static canvas used for the plot itself and the overlay canvas used for interactive features because some versions of IE get the stacking @@ -1469,7 +1469,7 @@ hooks in the plugins bundled with Flot. add a callback to clean up after you. Take a look at the section in the [PLUGINS](PLUGINS.md) document for more info. - + ## Plugins ## Plugins extend the functionality of Flot. To use a plugin, simply diff --git a/release-notes/opensearch-dashboards.release-notes-1.3.10.md b/release-notes/opensearch-dashboards.release-notes-1.3.10.md index be08d46aac93..a640c32356ce 100644 --- a/release-notes/opensearch-dashboards.release-notes-1.3.10.md +++ b/release-notes/opensearch-dashboards.release-notes-1.3.10.md @@ -19,8 +19,6 @@ ### 🐛 Bug Fixes -- [TSVB] Fix the link to "serial differencing aggregation" documentation ([#3503](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3503)) - ### 📝 Documentation - Update jest documentation links ([#3939](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3939)) @@ -28,6 +26,6 @@ ### 🛠 Maintenance - Add threshold to code coverage changes for project ([#4050](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4050)) -- Temporarily hardcode chromedriver to 112.0.0 to enable all ftr tests ([#4039]()) +- Temporarily hardcode chromedriver to 112.0.0 to enable all ftr tests ([#4039](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4039)) - Update MAINTAINERS.md and CODEOWNERS ([#3938](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3938)) - Add opensearch-dashboards-docker-dev to .gitignore ([#3781](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3781)) diff --git a/release-notes/opensearch-dashboards.release-notes-2.8.0.md b/release-notes/opensearch-dashboards.release-notes-2.8.0.md new file mode 100644 index 000000000000..ee4f1a239d89 --- /dev/null +++ b/release-notes/opensearch-dashboards.release-notes-2.8.0.md @@ -0,0 +1,35 @@ +## Version 2.8.0 Release Notes + +### Deprecations + +- Remove timeline application ([#3971](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3971)) + +### 🛡 Security + +- [CVE-2023-2251] Bump `yaml` to `2.2.2` ([#3947](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3947)) + +### 📈 Features/Enhancements + +- [Multiple Datasource] Support Amazon OpenSearch Serverless ([#3957](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3957)) +- Add support for Node.js >=14.20.1 <19 ([#4071](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4071)) +- Bundle Node.js 14 as a fallback for operating systems that cannot run Node.js 18 ([#4151](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4151)) +- Enhance grouping for context menus ([#3924](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3924)) + +### 🐛 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)) + +### 🛠 Maintenance + +- Use `exec` in the CLI shell scripts to prevent new process creation ([#3955](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3955)) + +## 🎉 Welcome + +Thank you to all the first-time contributors who made this release possible: @sikhote, @SergeyMyssak! diff --git a/scripts/use_node b/scripts/use_node index 48e7e2858200..695abfbcc4f2 100755 --- a/scripts/use_node +++ b/scripts/use_node @@ -64,7 +64,7 @@ else if [ -d "${OSD_HOME}/bin" ]; then NODE_ERROR_SHOW=true # Not all operating systems can run the latest Node.js and the fallback is for them - "${NODE}" -v 2> /dev/null + "${NODE}" -v > /dev/null 2>&1 if [ $? -ne 0 ] && [ -d "${OSD_HOME}/node/fallback" ]; then NODE="$OSD_HOME/node/fallback/bin/node" fi diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index 5ca7c491f72f..5fa3bf888b5c 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -84,6 +84,7 @@ function createManifest( version: 'some-version', configPath: ['path'], requiredPlugins: required, + requiredOpenSearchPlugins: optional, optionalPlugins: optional, requiredBundles: [], }; diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index ae7e85b98d67..a48ff12e859a 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -275,6 +275,7 @@ export class LegacyService implements CoreService { addClientWrapper: setupDeps.core.savedObjects.addClientWrapper, registerType: setupDeps.core.savedObjects.registerType, getImportExportObjectLimit: setupDeps.core.savedObjects.getImportExportObjectLimit, + setRepositoryFactoryProvider: setupDeps.core.savedObjects.setRepositoryFactoryProvider, }, status: { isStatusPageAnonymous: setupDeps.core.status.isStatusPageAnonymous, diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index 18b715d95050..66fd1336a554 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -247,6 +247,79 @@ test('return error when manifest contains unrecognized properties', async () => }); }); +describe('requiredOpenSearchPlugins', () => { + test('return error when plugin `requiredOpenSearchPlugins` is a string and not an array of string', async () => { + mockReadFilePromise.mockResolvedValue( + Buffer.from( + JSON.stringify({ + id: 'id1', + version: '7.0.0', + server: true, + requiredOpenSearchPlugins: 'abc', + }) + ) + ); + + await expect(parseManifest(pluginPath, packageInfo, logger)).rejects.toMatchObject({ + message: `The "requiredOpenSearchPlugins" in plugin manifest for "id1" should be an array of strings. (invalid-manifest, ${pluginManifestPath})`, + type: PluginDiscoveryErrorType.InvalidManifest, + path: pluginManifestPath, + }); + }); + + test('return error when `requiredOpenSearchPlugins` is not a string', async () => { + mockReadFilePromise.mockResolvedValue( + Buffer.from(JSON.stringify({ id: 'id2', version: '7.0.0', requiredOpenSearchPlugins: 2 })) + ); + + await expect(parseManifest(pluginPath, packageInfo, logger)).rejects.toMatchObject({ + message: `The "requiredOpenSearchPlugins" in plugin manifest for "id2" should be an array of strings. (invalid-manifest, ${pluginManifestPath})`, + type: PluginDiscoveryErrorType.InvalidManifest, + path: pluginManifestPath, + }); + }); + + test('return error when plugin requiredOpenSearchPlugins is an array that contains non-string values', async () => { + mockReadFilePromise.mockResolvedValue( + Buffer.from( + JSON.stringify({ id: 'id3', version: '7.0.0', requiredOpenSearchPlugins: ['plugin1', 2] }) + ) + ); + + await expect(parseManifest(pluginPath, packageInfo, logger)).rejects.toMatchObject({ + message: `The "requiredOpenSearchPlugins" in plugin manifest for "id3" should be an array of strings. (invalid-manifest, ${pluginManifestPath})`, + type: PluginDiscoveryErrorType.InvalidManifest, + path: pluginManifestPath, + }); + }); + + test('Happy path when plugin `requiredOpenSearchPlugins` is an array of string', async () => { + mockReadFilePromise.mockResolvedValue( + Buffer.from( + JSON.stringify({ + id: 'id1', + version: '7.0.0', + server: true, + requiredOpenSearchPlugins: ['plugin1', 'plugin2'], + }) + ) + ); + + await expect(parseManifest(pluginPath, packageInfo, logger)).resolves.toEqual({ + id: 'id1', + configPath: 'id_1', + version: '7.0.0', + opensearchDashboardsVersion: '7.0.0', + optionalPlugins: [], + requiredPlugins: [], + requiredOpenSearchPlugins: ['plugin1', 'plugin2'], + requiredBundles: [], + server: true, + ui: false, + }); + }); +}); + describe('configPath', () => { test('falls back to plugin id if not specified', async () => { mockReadFilePromise.mockResolvedValue( @@ -301,6 +374,7 @@ test('set defaults for all missing optional fields', async () => { opensearchDashboardsVersion: '7.0.0', optionalPlugins: [], requiredPlugins: [], + requiredOpenSearchPlugins: [], requiredBundles: [], server: true, ui: false, @@ -317,6 +391,7 @@ test('return all set optional fields as they are in manifest', async () => { opensearchDashboardsVersion: '7.0.0', requiredPlugins: ['some-required-plugin', 'some-required-plugin-2'], optionalPlugins: ['some-optional-plugin'], + requiredOpenSearchPlugins: ['test-opensearch-plugin-1', 'test-opensearch-plugin-2'], ui: true, }) ) @@ -330,6 +405,7 @@ test('return all set optional fields as they are in manifest', async () => { optionalPlugins: ['some-optional-plugin'], requiredBundles: [], requiredPlugins: ['some-required-plugin', 'some-required-plugin-2'], + requiredOpenSearchPlugins: ['test-opensearch-plugin-1', 'test-opensearch-plugin-2'], server: false, ui: true, }); @@ -344,6 +420,7 @@ test('return manifest when plugin expected OpenSearch Dashboards version matches version: 'some-version', opensearchDashboardsVersion: '7.0.0-alpha2', requiredPlugins: ['some-required-plugin'], + requiredOpenSearchPlugins: [], server: true, }) ) @@ -356,6 +433,7 @@ test('return manifest when plugin expected OpenSearch Dashboards version matches opensearchDashboardsVersion: '7.0.0-alpha2', optionalPlugins: [], requiredPlugins: ['some-required-plugin'], + requiredOpenSearchPlugins: [], requiredBundles: [], server: true, ui: false, @@ -383,6 +461,7 @@ test('return manifest when plugin expected OpenSearch Dashboards version is `ope opensearchDashboardsVersion: 'opensearchDashboards', optionalPlugins: [], requiredPlugins: ['some-required-plugin'], + requiredOpenSearchPlugins: [], requiredBundles: [], server: true, ui: true, diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.ts index 2a5ccf611f0c..ee435d2e310a 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.ts @@ -61,6 +61,7 @@ const KNOWN_MANIFEST_FIELDS = (() => { version: true, configPath: true, requiredPlugins: true, + requiredOpenSearchPlugins: true, optionalPlugins: true, ui: true, server: true, @@ -156,6 +157,28 @@ export async function parseManifest( ); } + if ( + manifest.requiredOpenSearchPlugins !== undefined && + (!Array.isArray(manifest.requiredOpenSearchPlugins) || + !manifest.requiredOpenSearchPlugins.every((plugin) => typeof plugin === 'string')) + ) { + throw PluginDiscoveryError.invalidManifest( + manifestPath, + new Error( + `The "requiredOpenSearchPlugins" in plugin manifest for "${manifest.id}" should be an array of strings.` + ) + ); + } + + if ( + Array.isArray(manifest.requiredOpenSearchPlugins) && + manifest.requiredOpenSearchPlugins.length > 0 + ) { + log.info( + `Plugin ${manifest.id} has a dependency on following OpenSearch plugin(s): "${manifest.requiredOpenSearchPlugins}".` + ); + } + const expectedOpenSearchDashboardsVersion = typeof manifest.opensearchDashboardsVersion === 'string' && manifest.opensearchDashboardsVersion ? manifest.opensearchDashboardsVersion @@ -198,6 +221,9 @@ export async function parseManifest( opensearchDashboardsVersion: expectedOpenSearchDashboardsVersion, configPath: manifest.configPath || snakeCase(manifest.id), requiredPlugins: Array.isArray(manifest.requiredPlugins) ? manifest.requiredPlugins : [], + requiredOpenSearchPlugins: Array.isArray(manifest.requiredOpenSearchPlugins) + ? manifest.requiredOpenSearchPlugins + : [], optionalPlugins: Array.isArray(manifest.optionalPlugins) ? manifest.optionalPlugins : [], requiredBundles: Array.isArray(manifest.requiredBundles) ? manifest.requiredBundles : [], ui: includesUiPlugin, diff --git a/src/core/server/plugins/integration_tests/plugins_service.test.ts b/src/core/server/plugins/integration_tests/plugins_service.test.ts index 34310ea3de37..4d1660f65c75 100644 --- a/src/core/server/plugins/integration_tests/plugins_service.test.ts +++ b/src/core/server/plugins/integration_tests/plugins_service.test.ts @@ -57,6 +57,7 @@ describe('PluginsService', () => { disabled = false, version = 'some-version', requiredPlugins = [], + requiredOpenSearchPlugins = [], requiredBundles = [], optionalPlugins = [], opensearchDashboardsVersion = '7.0.0', @@ -68,6 +69,7 @@ describe('PluginsService', () => { disabled?: boolean; version?: string; requiredPlugins?: string[]; + requiredOpenSearchPlugins?: string[]; requiredBundles?: string[]; optionalPlugins?: string[]; opensearchDashboardsVersion?: string; @@ -84,6 +86,7 @@ describe('PluginsService', () => { configPath: `${configPath}${disabled ? '-disabled' : ''}`, opensearchDashboardsVersion, requiredPlugins, + requiredOpenSearchPlugins, requiredBundles, optionalPlugins, server, diff --git a/src/core/server/plugins/plugin.test.ts b/src/core/server/plugins/plugin.test.ts index 9543d379493c..04df84ab8d12 100644 --- a/src/core/server/plugins/plugin.test.ts +++ b/src/core/server/plugins/plugin.test.ts @@ -69,6 +69,7 @@ function createPluginManifest(manifestProps: Partial = {}): Plug configPath: 'path', opensearchDashboardsVersion: '7.0.0', requiredPlugins: ['some-required-dep'], + requiredOpenSearchPlugins: ['some-os-plugins'], optionalPlugins: ['some-optional-dep'], requiredBundles: [], server: true, diff --git a/src/core/server/plugins/plugin.ts b/src/core/server/plugins/plugin.ts index 89a2aecc82f3..cc53e1b443e9 100644 --- a/src/core/server/plugins/plugin.ts +++ b/src/core/server/plugins/plugin.ts @@ -66,6 +66,7 @@ export class PluginWrapper< public readonly configPath: PluginManifest['configPath']; public readonly requiredPlugins: PluginManifest['requiredPlugins']; public readonly optionalPlugins: PluginManifest['optionalPlugins']; + public readonly requiredOpenSearchPlugins: PluginManifest['requiredOpenSearchPlugins']; public readonly requiredBundles: PluginManifest['requiredBundles']; public readonly includesServerPlugin: PluginManifest['server']; public readonly includesUiPlugin: PluginManifest['ui']; @@ -95,6 +96,7 @@ export class PluginWrapper< this.configPath = params.manifest.configPath; this.requiredPlugins = params.manifest.requiredPlugins; this.optionalPlugins = params.manifest.optionalPlugins; + this.requiredOpenSearchPlugins = params.manifest.requiredOpenSearchPlugins; this.requiredBundles = params.manifest.requiredBundles; this.includesServerPlugin = params.manifest.server; this.includesUiPlugin = params.manifest.ui; diff --git a/src/core/server/plugins/plugin_context.test.ts b/src/core/server/plugins/plugin_context.test.ts index c55603679c35..ca46a97a237e 100644 --- a/src/core/server/plugins/plugin_context.test.ts +++ b/src/core/server/plugins/plugin_context.test.ts @@ -56,6 +56,7 @@ function createPluginManifest(manifestProps: Partial = {}): Plug configPath: 'path', opensearchDashboardsVersion: '7.0.0', requiredPlugins: ['some-required-dep'], + requiredOpenSearchPlugins: ['some-backend-plugin'], requiredBundles: [], optionalPlugins: ['some-optional-dep'], server: true, diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index 521a8dd2f7b0..7782fd93041e 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -204,6 +204,7 @@ export function createPluginSetupContext( addClientWrapper: deps.savedObjects.addClientWrapper, registerType: deps.savedObjects.registerType, getImportExportObjectLimit: deps.savedObjects.getImportExportObjectLimit, + setRepositoryFactoryProvider: deps.savedObjects.setRepositoryFactoryProvider, }, status: { core$: deps.status.core$, diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index b020e56539a7..c3ee05d60ed8 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -78,6 +78,7 @@ const createPlugin = ( disabled = false, version = 'some-version', requiredPlugins = [], + requiredOpenSearchPlugins = [], requiredBundles = [], optionalPlugins = [], opensearchDashboardsVersion = '7.0.0', @@ -89,6 +90,7 @@ const createPlugin = ( disabled?: boolean; version?: string; requiredPlugins?: string[]; + requiredOpenSearchPlugins?: string[]; requiredBundles?: string[]; optionalPlugins?: string[]; opensearchDashboardsVersion?: string; @@ -105,6 +107,7 @@ const createPlugin = ( configPath: `${configPath}${disabled ? '-disabled' : ''}`, opensearchDashboardsVersion, requiredPlugins, + requiredOpenSearchPlugins, requiredBundles, optionalPlugins, server, diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index 2e8aa6b4a4c0..286bb0d97846 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -53,9 +53,16 @@ function createPlugin( { required = [], optional = [], + requiredOSPlugin = [], server = true, ui = true, - }: { required?: string[]; optional?: string[]; server?: boolean; ui?: boolean } = {} + }: { + required?: string[]; + optional?: string[]; + requiredOSPlugin?: string[]; + server?: boolean; + ui?: boolean; + } = {} ) { return new PluginWrapper({ path: 'some-path', @@ -65,6 +72,7 @@ function createPlugin( configPath: 'path', opensearchDashboardsVersion: '7.0.0', requiredPlugins: required, + requiredOpenSearchPlugins: requiredOSPlugin, optionalPlugins: optional, requiredBundles: [], server, @@ -187,7 +195,7 @@ test('correctly orders plugins and returns exposed values for "setup" and "start } const plugins = new Map([ [ - createPlugin('order-4', { required: ['order-2'] }), + createPlugin('order-4', { required: ['order-2'], requiredOSPlugin: ['test-plugin'] }), { setup: { 'order-2': 'added-as-2' }, start: { 'order-2': 'started-as-2' }, @@ -244,6 +252,17 @@ test('correctly orders plugins and returns exposed values for "setup" and "start startContextMap.get(plugin.name) ); + const opensearch = startDeps.opensearch; + opensearch.client.asInternalUser.cat.plugins.mockResolvedValue({ + body: [ + { + name: 'node-1', + component: 'test-plugin', + version: 'v1', + }, + ], + } as any); + expect([...(await pluginsSystem.setupPlugins(setupDeps))]).toMatchInlineSnapshot(` Array [ Array [ @@ -484,6 +503,16 @@ describe('start', () => { afterAll(() => { jest.useRealTimers(); }); + const opensearch = startDeps.opensearch; + opensearch.client.asInternalUser.cat.plugins.mockResolvedValue({ + body: [ + { + name: 'node-1', + component: 'test-plugin', + version: 'v1', + }, + ], + } as any); it('throws timeout error if "start" was not completed in 30 sec.', async () => { const plugin: PluginWrapper = createPlugin('timeout-start'); jest.spyOn(plugin, 'setup').mockResolvedValue({}); @@ -517,4 +546,48 @@ describe('start', () => { const log = logger.get.mock.results[0].value as jest.Mocked; expect(log.info).toHaveBeenCalledWith(`Starting [2] plugins: [order-1,order-0]`); }); + + it('validates opensearch plugin installation when dependency is fulfilled', async () => { + [ + createPlugin('order-1', { requiredOSPlugin: ['test-plugin'] }), + createPlugin('order-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); + }); + + it('validates opensearch plugin installation and does not error out when plugin is not installed', async () => { + [ + createPlugin('id-1', { requiredOSPlugin: ['missing-opensearch-dep'] }), + createPlugin('id-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); + }); + + it('validates opensearch plugin installation and does not error out when there is no dependency', async () => { + [createPlugin('id-1'), createPlugin('id-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); + }); }); diff --git a/src/core/server/plugins/plugins_system.ts b/src/core/server/plugins/plugins_system.ts index b3adc71323f9..6445f38f8e70 100644 --- a/src/core/server/plugins/plugins_system.ts +++ b/src/core/server/plugins/plugins_system.ts @@ -158,13 +158,45 @@ export class PluginsSystem { timeout: 30 * Sec, errorMessage: `Start lifecycle of "${pluginName}" plugin wasn't completed in 30sec. Consider disabling the plugin and re-start.`, }); - contracts.set(pluginName, contract); } + await this.healthCheckOpenSearchPlugins(deps); return contracts; } + private async healthCheckOpenSearchPlugins(deps: PluginsServiceStartDeps) { + // make _cat/plugins?format=json call to the OpenSearch instance + const opensearchPlugins = await this.getOpenSearchPlugins(deps); + for (const pluginName of this.satupPlugins) { + this.log.debug(`For plugin "${pluginName}"...`); + const plugin = this.plugins.get(pluginName)!; + const pluginBackendDeps = new Set([...plugin.requiredOpenSearchPlugins]); + pluginBackendDeps.forEach((opensearchPlugin) => { + if (!opensearchPlugins.find((obj) => obj.component === opensearchPlugin)) { + this.log.warn( + `OpenSearch plugin "${opensearchPlugin}" is not installed on the cluster for the OpenSearch Dashboards plugin to function as expected.` + ); + } + }); + } + } + + 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}` + ); + return []; + } + } + public async stopPlugins() { if (this.plugins.size === 0 || this.satupPlugins.length === 0) { return; diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index cf769b45daa3..12b28f48f237 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -154,6 +154,12 @@ export interface PluginManifest { */ readonly requiredPlugins: readonly PluginName[]; + /** + * An optional list of component names of the backend OpenSearch plugins that **must be** installed on the cluster + * for this plugin to function properly. + */ + readonly requiredOpenSearchPlugins: readonly PluginName[]; + /** * List of plugin ids that this plugin's UI code imports modules from that are * not in `requiredPlugins`. diff --git a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap index 1913a972ab8c..ad92d759a832 100644 --- a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap +++ b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap @@ -106,7 +106,7 @@ Object { } `; -exports[`RenderingService setup() render() renders "core" page driven by settings 1`] = ` +exports[`RenderingService setup() render() renders "core" page driven by defaults 1`] = ` Object { "anonymousStatusPage": false, "basePath": "/mock-server-basepath", @@ -148,6 +148,59 @@ Object { "name": "title", }, }, + "user": Object {}, + }, + }, + "serverBasePath": "/mock-server-basepath", + "survey": "https://survey.opensearch.org", + "uiPlugins": Array [], + "vars": Object {}, + "version": Any, +} +`; + +exports[`RenderingService setup() render() renders "core" page driven by settings 1`] = ` +Object { + "anonymousStatusPage": false, + "basePath": "/mock-server-basepath", + "branch": Any, + "branding": Object { + "applicationTitle": "OpenSearch Dashboards", + "assetFolderUrl": "/mock-server-basepath/ui/default_branding", + "darkMode": true, + "loadingLogo": Object {}, + "logo": Object {}, + "mark": Object {}, + "useExpandedHeader": true, + }, + "buildNumber": Any, + "csp": Object { + "warnLegacyBrowsers": true, + }, + "env": Object { + "mode": Object { + "dev": Any, + "name": Any, + "prod": Any, + }, + "packageInfo": Object { + "branch": Any, + "buildNum": Any, + "buildSha": Any, + "dist": Any, + "version": Any, + }, + }, + "i18n": Object { + "translationsUrl": "/mock-server-basepath/translations/en.json", + }, + "legacyMetadata": Object { + "uiSettings": Object { + "defaults": Object { + "theme:darkMode": Object { + "value": false, + }, + }, "user": Object { "theme:darkMode": Object { "userValue": true, @@ -216,6 +269,59 @@ Object { } `; +exports[`RenderingService setup() render() renders "core" page with no defaults or overrides 1`] = ` +Object { + "anonymousStatusPage": false, + "basePath": "/mock-server-basepath", + "branch": Any, + "branding": Object { + "applicationTitle": "OpenSearch Dashboards", + "assetFolderUrl": "/mock-server-basepath/ui/default_branding", + "darkMode": false, + "loadingLogo": Object {}, + "logo": Object {}, + "mark": Object {}, + "useExpandedHeader": true, + }, + "buildNumber": Any, + "csp": Object { + "warnLegacyBrowsers": true, + }, + "env": Object { + "mode": Object { + "dev": Any, + "name": Any, + "prod": Any, + }, + "packageInfo": Object { + "branch": Any, + "buildNum": Any, + "buildSha": Any, + "dist": Any, + "version": Any, + }, + }, + "i18n": Object { + "translationsUrl": "/mock-server-basepath/translations/en.json", + }, + "legacyMetadata": Object { + "uiSettings": Object { + "defaults": Object { + "registered": Object { + "name": "title", + }, + }, + "user": Object {}, + }, + }, + "serverBasePath": "/mock-server-basepath", + "survey": "https://survey.opensearch.org", + "uiPlugins": Array [], + "vars": Object {}, + "version": Any, +} +`; + exports[`RenderingService setup() render() renders "core" with excluded user settings 1`] = ` Object { "anonymousStatusPage": false, diff --git a/src/core/server/rendering/rendering_service.test.ts b/src/core/server/rendering/rendering_service.test.ts index 725a02d75d52..56a39915e73c 100644 --- a/src/core/server/rendering/rendering_service.test.ts +++ b/src/core/server/rendering/rendering_service.test.ts @@ -106,8 +106,22 @@ describe('RenderingService', () => { expect(data).toMatchSnapshot(INJECTED_METADATA); }); + it('renders "core" page driven by defaults', async () => { + uiSettings.getUserProvided.mockResolvedValue({ 'theme:darkMode': { userValue: false } }); + uiSettings.getOverrideOrDefault.mockImplementation((name) => name === 'theme:darkMode'); + const content = await render(createOpenSearchDashboardsRequest(), uiSettings, { + includeUserSettings: false, + }); + const dom = load(content); + const data = JSON.parse(dom('osd-injected-metadata').attr('data') || ''); + + expect(uiSettings.getUserProvided).not.toHaveBeenCalled(); + expect(data).toMatchSnapshot(INJECTED_METADATA); + }); + it('renders "core" page driven by settings', async () => { uiSettings.getUserProvided.mockResolvedValue({ 'theme:darkMode': { userValue: true } }); + uiSettings.getRegistered.mockReturnValue({ 'theme:darkMode': { value: false } }); const content = await render(createOpenSearchDashboardsRequest(), uiSettings); const dom = load(content); const data = JSON.parse(dom('osd-injected-metadata').attr('data') || ''); @@ -115,6 +129,21 @@ describe('RenderingService', () => { expect(data).toMatchSnapshot(INJECTED_METADATA); }); + it('renders "core" page with no defaults or overrides', async () => { + uiSettings.getUserProvided.mockResolvedValue({}); + uiSettings.getOverrideOrDefault.mockImplementation((name) => + name === 'theme:darkMode' ? undefined : false + ); + const content = await render(createOpenSearchDashboardsRequest(), uiSettings, { + includeUserSettings: false, + }); + const dom = load(content); + const data = JSON.parse(dom('osd-injected-metadata').attr('data') || ''); + + expect(uiSettings.getUserProvided).not.toHaveBeenCalled(); + expect(data).toMatchSnapshot(INJECTED_METADATA); + }); + it('renders "core" with excluded user settings', async () => { const content = await render(createOpenSearchDashboardsRequest(), uiSettings, { includeUserSettings: false, diff --git a/src/core/server/rendering/rendering_service.tsx b/src/core/server/rendering/rendering_service.tsx index 16430739bd04..c62ee08db6bc 100644 --- a/src/core/server/rendering/rendering_service.tsx +++ b/src/core/server/rendering/rendering_service.tsx @@ -95,9 +95,11 @@ export class RenderingService { defaults: uiSettings.getRegistered(), user: includeUserSettings ? await uiSettings.getUserProvided() : {}, }; - const darkMode = settings.user?.['theme:darkMode']?.userValue - ? Boolean(settings.user['theme:darkMode'].userValue) - : false; + // Cannot use `uiSettings.get()` since a user might not be authenticated + const darkMode = + (settings.user?.['theme:darkMode']?.userValue ?? + uiSettings.getOverrideOrDefault('theme:darkMode')) || + false; const brandingAssignment = await this.assignBrandingConfig( darkMode, diff --git a/src/core/server/saved_objects/saved_objects_service.mock.ts b/src/core/server/saved_objects/saved_objects_service.mock.ts index ae36b83c0cdd..74168c436c3d 100644 --- a/src/core/server/saved_objects/saved_objects_service.mock.ts +++ b/src/core/server/saved_objects/saved_objects_service.mock.ts @@ -79,6 +79,7 @@ const createSetupContractMock = () => { addClientWrapper: jest.fn(), registerType: jest.fn(), getImportExportObjectLimit: jest.fn(), + setRepositoryFactoryProvider: jest.fn(), }; setupContract.getImportExportObjectLimit.mockReturnValue(100); diff --git a/src/core/server/saved_objects/saved_objects_service.test.ts b/src/core/server/saved_objects/saved_objects_service.test.ts index 42ee52567e5f..98d1da393319 100644 --- a/src/core/server/saved_objects/saved_objects_service.test.ts +++ b/src/core/server/saved_objects/saved_objects_service.test.ts @@ -41,7 +41,7 @@ import { errors as opensearchErrors } from '@opensearch-project/opensearch'; import { SavedObjectsService } from './saved_objects_service'; import { mockCoreContext } from '../core_context.mock'; import { Env } from '../config'; -import { configServiceMock } from '../mocks'; +import { configServiceMock, savedObjectsRepositoryMock } from '../mocks'; import { opensearchServiceMock } from '../opensearch/opensearch_service.mock'; import { opensearchClientMock } from '../opensearch/client/mocks'; import { httpServiceMock } from '../http/http_service.mock'; @@ -49,6 +49,7 @@ import { httpServerMock } from '../http/http_server.mocks'; import { SavedObjectsClientFactoryProvider } from './service/lib'; import { NodesVersionCompatibility } from '../opensearch/version_check/ensure_opensearch_version'; import { SavedObjectsRepository } from './service/lib/repository'; +import { SavedObjectRepositoryFactoryProvider } from './service/lib/scoped_client_provider'; jest.mock('./service/lib/repository'); @@ -169,6 +170,27 @@ describe('SavedObjectsService', () => { expect(typeRegistryInstanceMock.registerType).toHaveBeenCalledWith(type); }); }); + + describe('#setRepositoryFactoryProvider', () => { + it('throws error if a repository is already registered', async () => { + const coreContext = createCoreContext(); + const soService = new SavedObjectsService(coreContext); + const setup = await soService.setup(createSetupDeps()); + + const firstRepository: SavedObjectRepositoryFactoryProvider = () => + savedObjectsRepositoryMock.create(); + const secondRepository: SavedObjectRepositoryFactoryProvider = () => + savedObjectsRepositoryMock.create(); + + setup.setRepositoryFactoryProvider(firstRepository); + + expect(() => { + setup.setRepositoryFactoryProvider(secondRepository); + }).toThrowErrorMatchingInlineSnapshot( + `"custom repository factory is already set, and can only be set once"` + ); + }); + }); }); describe('#start()', () => { @@ -281,6 +303,15 @@ describe('SavedObjectsService', () => { }).toThrowErrorMatchingInlineSnapshot( `"cannot call \`registerType\` after service startup."` ); + + const customRpository: SavedObjectRepositoryFactoryProvider = () => + savedObjectsRepositoryMock.create(); + + expect(() => { + setup.setRepositoryFactoryProvider(customRpository); + }).toThrowErrorMatchingInlineSnapshot( + '"cannot call `setRepositoryFactoryProvider` after service startup."' + ); }); describe('#getTypeRegistry', () => { @@ -368,6 +399,36 @@ describe('SavedObjectsService', () => { expect(includedHiddenTypes).toEqual(['someHiddenType']); }); + + it('Should not create SavedObjectsRepository when custom repository is registered ', async () => { + const coreContext = createCoreContext({ skipMigration: false }); + const soService = new SavedObjectsService(coreContext); + const coreSetup = createSetupDeps(); + const setup = await soService.setup(coreSetup); + + const customRpository: SavedObjectRepositoryFactoryProvider = () => + savedObjectsRepositoryMock.create(); + setup.setRepositoryFactoryProvider(customRpository); + + const coreStart = createStartDeps(); + const { createInternalRepository } = await soService.start(coreStart); + createInternalRepository(); + + expect(SavedObjectsRepository.createRepository as jest.Mocked).not.toHaveBeenCalled(); + }); + + it('Should create SavedObjectsRepository when no custom repository is registered ', async () => { + const coreContext = createCoreContext({ skipMigration: false }); + const soService = new SavedObjectsService(coreContext); + const coreSetup = createSetupDeps(); + await soService.setup(coreSetup); + + const coreStart = createStartDeps(); + const { createInternalRepository } = await soService.start(coreStart); + createInternalRepository(); + + expect(SavedObjectsRepository.createRepository as jest.Mocked).toHaveBeenCalled(); + }); }); }); }); diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts index 92649d36beb4..b6fc21617bcc 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/src/core/server/saved_objects/saved_objects_service.ts @@ -56,6 +56,7 @@ import { ISavedObjectsRepository, SavedObjectsRepository } from './service/lib/r import { SavedObjectsClientFactoryProvider, SavedObjectsClientWrapperFactory, + SavedObjectRepositoryFactoryProvider, } from './service/lib/scoped_client_provider'; import { Logger } from '../logging'; import { SavedObjectTypeRegistry, ISavedObjectTypeRegistry } from './saved_objects_type_registry'; @@ -166,6 +167,14 @@ export interface SavedObjectsServiceSetup { * Returns the maximum number of objects allowed for import or export operations. */ getImportExportObjectLimit: () => number; + + /** + * Set the default {@link SavedObjectRepositoryFactoryProvider | factory provider} for creating Saved Objects repository. + * Only one repository can be set, subsequent calls to this method will fail. + */ + setRepositoryFactoryProvider: ( + respositoryFactoryProvider: SavedObjectRepositoryFactoryProvider + ) => void; } /** @@ -291,6 +300,8 @@ export class SavedObjectsService private typeRegistry = new SavedObjectTypeRegistry(); private started = false; + private respositoryFactoryProvider?: SavedObjectRepositoryFactoryProvider; + constructor(private readonly coreContext: CoreContext) { this.logger = coreContext.logger.get('savedobjects-service'); } @@ -348,6 +359,15 @@ export class SavedObjectsService this.typeRegistry.registerType(type); }, getImportExportObjectLimit: () => this.config!.maxImportExportSize, + setRepositoryFactoryProvider: (repositoryProvider) => { + if (this.started) { + throw new Error('cannot call `setRepositoryFactoryProvider` after service startup.'); + } + if (this.respositoryFactoryProvider) { + throw new Error('custom repository factory is already set, and can only be set once'); + } + this.respositoryFactoryProvider = repositoryProvider; + }, }; } @@ -422,13 +442,21 @@ export class SavedObjectsService opensearchClient: OpenSearchClient, includedHiddenTypes: string[] = [] ) => { - return SavedObjectsRepository.createRepository( - migrator, - this.typeRegistry, - opensearchDashboardsConfig.index, - opensearchClient, - includedHiddenTypes - ); + if (this.respositoryFactoryProvider) { + return this.respositoryFactoryProvider({ + migrator, + typeRegistry: this.typeRegistry, + includedHiddenTypes, + }); + } else { + return SavedObjectsRepository.createRepository( + migrator, + this.typeRegistry, + opensearchDashboardsConfig.index, + opensearchClient, + includedHiddenTypes + ); + } }; const repositoryFactory: SavedObjectsRepositoryFactory = { diff --git a/src/core/server/saved_objects/service/lib/scoped_client_provider.ts b/src/core/server/saved_objects/service/lib/scoped_client_provider.ts index 439cd31afa9c..fea1a1641a6f 100644 --- a/src/core/server/saved_objects/service/lib/scoped_client_provider.ts +++ b/src/core/server/saved_objects/service/lib/scoped_client_provider.ts @@ -31,8 +31,31 @@ import { PriorityCollection } from './priority_collection'; import { SavedObjectsClientContract } from '../../types'; import { SavedObjectsRepositoryFactory } from '../../saved_objects_service'; -import { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import { + ISavedObjectTypeRegistry, + SavedObjectTypeRegistry, +} from '../../saved_objects_type_registry'; import { OpenSearchDashboardsRequest } from '../../../http'; +import { ISavedObjectsRepository } from './repository'; +import { IOpenSearchDashboardsMigrator } from '../../migrations'; + +/** + * Options passed to each SavedObjectRepositoryFactoryProvider to aid in creating the repository instance. + * @public + */ +export interface SavedObjectsRepositoryOptions { + migrator: IOpenSearchDashboardsMigrator; + typeRegistry: SavedObjectTypeRegistry; + includedHiddenTypes: string[]; +} + +/** + * Provider to invoke to a factory function for creating ISavedObjectRepository {@link ISavedObjectRepository} instances. + * @public + */ +export type SavedObjectRepositoryFactoryProvider = ( + options: SavedObjectsRepositoryOptions +) => ISavedObjectsRepository; /** * Options passed to each SavedObjectsClientWrapperFactory to aid in creating the wrapper instance. diff --git a/src/core/server/ui_settings/types.ts b/src/core/server/ui_settings/types.ts index 9086fb37697e..60510882755a 100644 --- a/src/core/server/ui_settings/types.ts +++ b/src/core/server/ui_settings/types.ts @@ -52,9 +52,13 @@ export { */ export interface IUiSettingsClient { /** - * Returns registered uiSettings values {@link UiSettingsParams} + * Returns all registered uiSettings values {@link UiSettingsParams} */ getRegistered: () => Readonly>; + /** + * Returns the overridden uiSettings value if one exists, or the registered default if one exists {@link UiSettingsParams} + */ + getOverrideOrDefault: (key: string) => unknown; /** * Retrieves uiSettings values set by the user with fallbacks to default values if not specified. */ diff --git a/src/core/server/ui_settings/ui_settings_client.test.ts b/src/core/server/ui_settings/ui_settings_client.test.ts index 9108467fd04c..f40b7a173587 100644 --- a/src/core/server/ui_settings/ui_settings_client.test.ts +++ b/src/core/server/ui_settings/ui_settings_client.test.ts @@ -333,6 +333,25 @@ describe('ui settings', () => { }); }); + describe('#getOverrideOrDefault()', () => { + it('returns the non-overridden default settings passed within the constructor', () => { + const value = chance.word(); + const defaults = { key: { value } }; + const { uiSettings } = setup({ defaults }); + expect(uiSettings.getOverrideOrDefault('key')).toEqual(value); + expect(uiSettings.getOverrideOrDefault('unknown')).toBeUndefined(); + }); + + it('returns the overridden settings passed within the constructor', () => { + const value = chance.word(); + const override = chance.word(); + const defaults = { key: { value } }; + const overrides = { key: { value: override } }; + const { uiSettings } = setup({ defaults, overrides }); + expect(uiSettings.getOverrideOrDefault('key')).toEqual(override); + }); + }); + describe('#getUserProvided()', () => { it('pulls user configuration from OpenSearch', async () => { const { uiSettings, savedObjectsClient } = setup(); diff --git a/src/core/server/ui_settings/ui_settings_client.ts b/src/core/server/ui_settings/ui_settings_client.ts index e7e5030035b8..066efa34cafd 100644 --- a/src/core/server/ui_settings/ui_settings_client.ts +++ b/src/core/server/ui_settings/ui_settings_client.ts @@ -91,6 +91,10 @@ export class UiSettingsClient implements IUiSettingsClient { return copiedDefaults; } + getOverrideOrDefault(key: string): unknown { + return this.isOverridden(key) ? this.overrides[key].value : this.defaults[key]?.value; + } + async get(key: string): Promise { const all = await this.getAll(); return all[key]; diff --git a/src/core/server/ui_settings/ui_settings_config.ts b/src/core/server/ui_settings/ui_settings_config.ts index 634fb5c62d55..19e79008845d 100644 --- a/src/core/server/ui_settings/ui_settings_config.ts +++ b/src/core/server/ui_settings/ui_settings_config.ts @@ -37,13 +37,33 @@ const deprecations: ConfigDeprecationProvider = ({ unused, renameFromRoot }) => renameFromRoot('server.defaultRoute', 'uiSettings.overrides.defaultRoute'), ]; +/* There are 4 levels of uiSettings: + * 1) defaults hardcoded in code + * 2) defaults provided in the opensearch_dashboards.yml + * 3) values selected by the user and received from savedObjects + * 4) overrides provided in the opensearch_dashboards.yml + * + * Each of these levels override the one above them. + * + * The schema below exposes only a limited set of settings to be set in the config file. + * + * ToDo: Remove overrides; these were added to force the lock down the theme version. + * The schema is temporarily relaxed to allow overriding the `darkMode` and setting + * `defaults`. An upcoming change would relax them further to allow setting them. + */ + const configSchema = schema.object({ overrides: schema.object( { + 'theme:darkMode': schema.maybe(schema.boolean({ defaultValue: true })), 'theme:version': schema.string({ defaultValue: 'v7' }), }, { unknowns: 'allow' } ), + defaults: schema.object({ + 'theme:darkMode': schema.maybe(schema.boolean({ defaultValue: false })), + 'theme:version': schema.maybe(schema.string({ defaultValue: 'v7' })), + }), }); export type UiSettingsConfigType = TypeOf; diff --git a/src/core/server/ui_settings/ui_settings_service.mock.ts b/src/core/server/ui_settings/ui_settings_service.mock.ts index ac52042bb71c..bb6e9ec64bd5 100644 --- a/src/core/server/ui_settings/ui_settings_service.mock.ts +++ b/src/core/server/ui_settings/ui_settings_service.mock.ts @@ -39,6 +39,7 @@ import { UiSettingsService } from './ui_settings_service'; const createClientMock = () => { const mocked: jest.Mocked = { getRegistered: jest.fn(), + getOverrideOrDefault: jest.fn(), get: jest.fn(), getAll: jest.fn(), getUserProvided: jest.fn(), diff --git a/src/core/server/ui_settings/ui_settings_service.test.ts b/src/core/server/ui_settings/ui_settings_service.test.ts index e32429de7abe..f9316d30695c 100644 --- a/src/core/server/ui_settings/ui_settings_service.test.ts +++ b/src/core/server/ui_settings/ui_settings_service.test.ts @@ -46,7 +46,7 @@ const overrides = { overrideBaz: 'baz', }; -const defaults = { +const defaults: Record = { foo: { name: 'foo', value: 'bar', @@ -97,6 +97,21 @@ describe('uiSettings', () => { ); }); }); + + it('fails if configured default was not previously defined', async () => { + const coreContext = mockCoreContext.create(); + coreContext.configService.atPath.mockReturnValueOnce( + new BehaviorSubject({ + defaults: { + foo: 'configured', + }, + }) + ); + const customizedService = new UiSettingsService(coreContext); + await expect(customizedService.setup(setupDeps)).rejects.toMatchInlineSnapshot( + `[Error: [ui settings defaults [foo]: expected key to be have been registered]` + ); + }); }); describe('#start', () => { @@ -168,6 +183,31 @@ describe('uiSettings', () => { expect(MockUiSettingsClientConstructor.mock.calls[0][0].defaults).toEqual(defaults); expect(MockUiSettingsClientConstructor.mock.calls[0][0].defaults).not.toBe(defaults); }); + + it('passes configured defaults to UiSettingsClient', async () => { + const defaultsClone: Record = {}; + Object.keys(defaults).forEach((key: string) => { + defaultsClone[key] = { ...defaults[key] }; + }); + + getCoreSettingsMock.mockReturnValue(defaultsClone); + const coreContext = mockCoreContext.create(); + coreContext.configService.atPath.mockReturnValueOnce( + new BehaviorSubject({ + defaults: { + foo: 'configured', + }, + }) + ); + const customizedService = new UiSettingsService(coreContext); + await customizedService.setup(setupDeps); + const start = await customizedService.start(); + start.asScopedToClient(savedObjectsClient); + expect(MockUiSettingsClientConstructor).toBeCalledTimes(1); + expect(MockUiSettingsClientConstructor.mock.calls[0][0].defaults?.foo?.value).toEqual( + 'configured' + ); + }); }); }); }); diff --git a/src/core/server/ui_settings/ui_settings_service.ts b/src/core/server/ui_settings/ui_settings_service.ts index 5543485b25e8..d20b1e964e5b 100644 --- a/src/core/server/ui_settings/ui_settings_service.ts +++ b/src/core/server/ui_settings/ui_settings_service.ts @@ -75,7 +75,10 @@ export class UiSettingsService this.register(getCoreSettings()); const config = await this.config$.pipe(first()).toPromise(); - this.overrides = config.overrides; + this.overrides = config.overrides || {}; + + // Use uiSettings.defaults from the config file + this.validateAndUpdateConfiguredDefaults(config.defaults); return { register: this.register.bind(this), @@ -134,4 +137,17 @@ export class UiSettingsService } } } + + private validateAndUpdateConfiguredDefaults(defaults: Record = {}) { + for (const [key, value] of Object.entries(defaults)) { + const definition = this.uiSettingsDefaults.get(key); + if (!definition) + throw new Error(`[ui settings defaults [${key}]: expected key to be have been registered`); + + if (definition.schema) { + definition.schema.validate(value, {}, `ui settings configuration [${key}]`); + } + definition.value = value; + } + } } diff --git a/src/dev/build/tasks/__fixtures__/opensearch-dashboards-dev/yarn.lock b/src/dev/build/tasks/__fixtures__/opensearch-dashboards-dev/yarn.lock new file mode 100644 index 000000000000..b57871a8b8c1 --- /dev/null +++ b/src/dev/build/tasks/__fixtures__/opensearch-dashboards-dev/yarn.lock @@ -0,0 +1,17 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@scoped/foo@file:../linked/foo": + version "1.0.0" + +"bar@file:../../deeper/linked/bar, @scoped/bar@file:../../deeper/linked/bar": + version "1.0.0" + +"baz@file:/absolute/baz": + version "1.0.0" + +# impossible but used for validating the transformer +"qux@^1.0.0, qux@file:../linked/qux, @scoped/qux@^1.0.0, @scoped/qux@file:../linked/qux": + version "1.0.0" + resolved "https://user@file:password@some.registry/package" diff --git a/src/dev/build/tasks/__snapshots__/copy_source_task.test.ts.snap b/src/dev/build/tasks/__snapshots__/copy_source_task.test.ts.snap new file mode 100644 index 000000000000..bafb289d8060 --- /dev/null +++ b/src/dev/build/tasks/__snapshots__/copy_source_task.test.ts.snap @@ -0,0 +1,22 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`copy source task transform relative paths while copying yarn.lock 1`] = ` +"# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +\\"@scoped/foo@file:../../../linked/foo\\": + version \\"1.0.0\\" + +\\"bar@file:../../../../deeper/linked/bar, @scoped/bar@file:../../../../deeper/linked/bar\\": + version \\"1.0.0\\" + +\\"baz@file:/absolute/baz\\": + version \\"1.0.0\\" + +# impossible but used for validating the transformer +\\"qux@^1.0.0, qux@file:../../../linked/qux, @scoped/qux@^1.0.0, @scoped/qux@file:../../../linked/qux\\": + version \\"1.0.0\\" + resolved \\"https://user@file:password@some.registry/package\\" +" +`; diff --git a/src/dev/build/tasks/copy_source_task.test.ts b/src/dev/build/tasks/copy_source_task.test.ts new file mode 100644 index 000000000000..c8cfcc9dcfc3 --- /dev/null +++ b/src/dev/build/tasks/copy_source_task.test.ts @@ -0,0 +1,27 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { join, resolve } from 'path'; +import { mkdirSync, readFileSync, rmSync } from 'fs'; +import { copyYarnLock } from './copy_source_task'; + +const repoRoot = resolve(`${__dirname}/__fixtures__/opensearch-dashboards-dev`); +const disposableRoot = join(repoRoot, 'build'); +const buildRoot = join(repoRoot, 'build/opensearch-dashboards-dev'); + +describe('copy source task', () => { + beforeEach(() => { + mkdirSync(buildRoot, { recursive: true }); + }); + + afterEach(() => { + rmSync(disposableRoot, { force: true, recursive: true }); + }); + + it('transform relative paths while copying yarn.lock', async () => { + await copyYarnLock(repoRoot, buildRoot); + expect(readFileSync(join(buildRoot, 'yarn.lock'), 'utf8')).toMatchSnapshot(); + }); +}); diff --git a/src/dev/build/tasks/copy_source_task.ts b/src/dev/build/tasks/copy_source_task.ts index 10a1aea61e41..9605e1922c28 100644 --- a/src/dev/build/tasks/copy_source_task.ts +++ b/src/dev/build/tasks/copy_source_task.ts @@ -28,16 +28,21 @@ * under the License. */ +import { createInterface } from 'readline'; +import { join, isAbsolute, relative } from 'path'; +import { createReadStream, createWriteStream } from 'fs'; import { copyAll, Task } from '../lib'; export const CopySource: Task = { description: 'Copying source into platform-generic build directory', async run(config, log, build) { - await copyAll(config.resolveFromRepo(), build.resolvePath(), { + const repoRoot = config.resolveFromRepo(); + const buildRoot = build.resolvePath(); + + await copyAll(repoRoot, buildRoot, { dot: false, select: [ - 'yarn.lock', 'src/**', '!src/**/*.{test,test.mocks,mock}.{js,ts,tsx}', '!src/**/mocks.ts', // special file who imports .mock files @@ -60,5 +65,67 @@ export const CopySource: Task = { 'opensearch_dashboards.d.ts', ], }); + + await copyYarnLock(repoRoot, buildRoot); }, }; + +/* + * Dependencies linked using `file:` in the `yarn.lock` file are + * referenced with relative paths. Moving them to the `build` + * folder, these paths need to be transformed. + */ +export const copyYarnLock = async (repoRoot: string, buildRoot: string) => { + const writeStream = createWriteStream(join(buildRoot, 'yarn.lock')); + const writeLine = (line: string) => + new Promise((resolve) => { + if (writeStream.write(line + '\n')) return resolve(); + writeStream.once('drain', resolve); + }); + + const returnPromise = new Promise((resolve) => { + writeStream.once('close', resolve); + }); + + /* + * Dependency patterns are comma separated `name@range` values, followed + * by a colon, like `AAAA:` and `AAAA, BBBB, CCCC:` + * Some are wrapped in quotes, like `"AAAA":` and `"AAAA, BBBB, CCCC":` + * + * The linked file will have `@file:` in it and the inner strings will + * not have commas or colons. + * + * Zero-width lookbehind and lookaheads allow getting only the part + * required for processing the patterns. `\S` is to avoid matching + * spaces after commas. + */ + const linkedFileDepPattern = /(?<=^"?|,\s*)(\S+?[^,:]+)@file:([^,:]+)(?=,\s*|"?:\s*$)/g; + const fileLinkDelimiter = '@file:'; + + const reader = createInterface({ + input: createReadStream(join(repoRoot, 'yarn.lock')), + crlfDelay: Infinity, + }); + + for await (const line of reader) { + /* + * For added safety, we make sure the line doesn't start with whitespace + * before we check that it has `@file:`. + */ + if (!line.startsWith(' ') && line.includes(fileLinkDelimiter)) { + await writeLine( + line.replace(linkedFileDepPattern, (match, m1, m2) => { + if (isAbsolute(m2)) return `${m1}${fileLinkDelimiter}${m2}`; + // Join the relative path and repoRoot and find how to ge there from buildRoot + return `${m1}${fileLinkDelimiter}${relative(buildRoot, join(repoRoot, m2))}`; + }) + ); + } else { + await writeLine(line); + } + } + + writeStream.end(); + + return returnPromise; +}; diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 0cfbb609bbe3..53dc1869bd52 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -101,6 +101,7 @@ export const IGNORE_DIRECTORY_GLOBS = [ 'src/legacy/ui/public/flot-charts', 'test/functional/fixtures/opensearch_archiver/visualize_source-filters', 'packages/osd-pm/src/utils/__fixtures__/*', + 'src/dev/build/tasks/__fixtures__/*', ]; /** diff --git a/src/legacy/ui/ui_render/ui_render_mixin.js b/src/legacy/ui/ui_render/ui_render_mixin.js index 673d3483e78b..e6591ad72d92 100644 --- a/src/legacy/ui/ui_render/ui_render_mixin.js +++ b/src/legacy/ui/ui_render/ui_render_mixin.js @@ -95,7 +95,7 @@ export function uiRenderMixin(osdServer, server, config) { const darkMode = !authEnabled || request.auth.isAuthenticated ? await uiSettings.get('theme:darkMode') - : false; + : uiSettings.getOverrideOrDefault('theme:darkMode'); const themeVersion = !authEnabled || request.auth.isAuthenticated ? await uiSettings.get('theme:version') : 'v7'; diff --git a/src/plugins/charts/public/static/color_maps/color_maps.ts b/src/plugins/charts/public/static/color_maps/color_maps.ts index c5e844d97b4e..f2d9b8828da0 100644 --- a/src/plugins/charts/public/static/color_maps/color_maps.ts +++ b/src/plugins/charts/public/static/color_maps/color_maps.ts @@ -29,6 +29,14 @@ */ import { i18n } from '@osd/i18n'; +import { euiThemeVars } from '@osd/ui-shared-deps/theme'; +import { + ouiPaletteCool, + ouiPaletteGray, + ouiPalettePositive, + ouiPaletteNegative, + colorPalette as ouiColorPalette, +} from '@elastic/eui'; export enum ColorSchemas { Blues = 'Blues', @@ -54,6 +62,29 @@ export interface ColorMap { [key: string]: RawColorSchema; } +const COLOR_MAP_LENGTH = 512; + +// TODO: replace with on demand palette generation: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4400 +function convertColorPaletteToColorMap(colorPalette: string[]): RawColorSchema['value'] { + const colorMap: RawColorSchema['value'] = []; + + for (let i = 0; i < colorPalette.length; i++) { + const color = colorPalette[i]; + const regex = /#([0-9a-zA-Z]{2})([0-9a-zA-Z]{2})([0-9a-zA-Z]{2})/; + + const [, rawRed, rawGreen, rawBlue] = regex.exec(color)!; + const [red, green, blue] = [ + parseInt(rawRed, 16) / 255, + parseInt(rawGreen, 16) / 255, + parseInt(rawBlue, 16) / 255, + ]; + + colorMap[i] = [i / (colorPalette.length - 1), [red, green, blue]]; + } + + return colorMap; +} + export const vislibColorMaps: ColorMap = { // Sequential [ColorSchemas.Blues]: { @@ -61,2600 +92,42 @@ export const vislibColorMaps: ColorMap = { label: i18n.translate('charts.colormaps.bluesText', { defaultMessage: 'Blues', }), - value: [ - [0.0, [0.969, 0.984, 1.0]], - [0.002, [0.969, 0.984, 1.0]], - [0.004, [0.966, 0.982, 0.999]], - [0.006, [0.966, 0.982, 0.999]], - [0.008, [0.962, 0.98, 0.998]], - [0.01, [0.962, 0.98, 0.998]], - [0.012, [0.959, 0.978, 0.997]], - [0.014, [0.959, 0.978, 0.997]], - [0.016, [0.956, 0.976, 0.996]], - [0.018, [0.956, 0.976, 0.996]], - [0.02, [0.953, 0.974, 0.995]], - [0.022, [0.953, 0.974, 0.995]], - [0.023, [0.95, 0.973, 0.994]], - [0.025, [0.95, 0.973, 0.994]], - [0.027, [0.947, 0.971, 0.993]], - [0.029, [0.947, 0.971, 0.993]], - [0.031, [0.944, 0.969, 0.992]], - [0.033, [0.944, 0.969, 0.992]], - [0.035, [0.941, 0.967, 0.991]], - [0.037, [0.941, 0.967, 0.991]], - [0.039, [0.938, 0.965, 0.99]], - [0.041, [0.938, 0.965, 0.99]], - [0.043, [0.935, 0.963, 0.989]], - [0.045, [0.935, 0.963, 0.989]], - [0.047, [0.932, 0.961, 0.988]], - [0.049, [0.932, 0.961, 0.988]], - [0.051, [0.929, 0.959, 0.987]], - [0.053, [0.929, 0.959, 0.987]], - [0.055, [0.926, 0.957, 0.986]], - [0.057, [0.926, 0.957, 0.986]], - [0.059, [0.922, 0.955, 0.985]], - [0.061, [0.922, 0.955, 0.985]], - [0.063, [0.919, 0.953, 0.984]], - [0.065, [0.919, 0.953, 0.984]], - [0.067, [0.916, 0.951, 0.983]], - [0.068, [0.916, 0.951, 0.983]], - [0.07, [0.913, 0.949, 0.982]], - [0.072, [0.913, 0.949, 0.982]], - [0.074, [0.91, 0.947, 0.981]], - [0.076, [0.91, 0.947, 0.981]], - [0.078, [0.907, 0.945, 0.98]], - [0.08, [0.907, 0.945, 0.98]], - [0.082, [0.904, 0.943, 0.979]], - [0.084, [0.904, 0.943, 0.979]], - [0.086, [0.901, 0.941, 0.978]], - [0.088, [0.901, 0.941, 0.978]], - [0.09, [0.898, 0.939, 0.977]], - [0.092, [0.898, 0.939, 0.977]], - [0.094, [0.895, 0.937, 0.976]], - [0.096, [0.895, 0.937, 0.976]], - [0.098, [0.892, 0.935, 0.975]], - [0.1, [0.892, 0.935, 0.975]], - [0.102, [0.889, 0.933, 0.974]], - [0.104, [0.889, 0.933, 0.974]], - [0.106, [0.886, 0.931, 0.973]], - [0.108, [0.886, 0.931, 0.973]], - [0.11, [0.883, 0.929, 0.972]], - [0.112, [0.883, 0.929, 0.972]], - [0.114, [0.879, 0.927, 0.971]], - [0.115, [0.879, 0.927, 0.971]], - [0.117, [0.876, 0.925, 0.97]], - [0.119, [0.876, 0.925, 0.97]], - [0.121, [0.873, 0.923, 0.969]], - [0.123, [0.873, 0.923, 0.969]], - [0.125, [0.87, 0.921, 0.969]], - [0.127, [0.87, 0.921, 0.969]], - [0.129, [0.867, 0.919, 0.968]], - [0.131, [0.867, 0.919, 0.968]], - [0.133, [0.864, 0.917, 0.967]], - [0.135, [0.864, 0.917, 0.967]], - [0.137, [0.861, 0.915, 0.966]], - [0.139, [0.861, 0.915, 0.966]], - [0.141, [0.858, 0.913, 0.965]], - [0.143, [0.858, 0.913, 0.965]], - [0.145, [0.855, 0.911, 0.964]], - [0.147, [0.855, 0.911, 0.964]], - [0.149, [0.853, 0.91, 0.963]], - [0.151, [0.853, 0.91, 0.963]], - [0.153, [0.85, 0.908, 0.962]], - [0.155, [0.85, 0.908, 0.962]], - [0.157, [0.847, 0.906, 0.961]], - [0.159, [0.847, 0.906, 0.961]], - [0.16, [0.844, 0.904, 0.96]], - [0.162, [0.844, 0.904, 0.96]], - [0.164, [0.841, 0.902, 0.959]], - [0.166, [0.841, 0.902, 0.959]], - [0.168, [0.838, 0.9, 0.958]], - [0.17, [0.838, 0.9, 0.958]], - [0.172, [0.835, 0.898, 0.957]], - [0.174, [0.835, 0.898, 0.957]], - [0.176, [0.832, 0.896, 0.956]], - [0.178, [0.832, 0.896, 0.956]], - [0.18, [0.829, 0.894, 0.955]], - [0.182, [0.829, 0.894, 0.955]], - [0.184, [0.826, 0.892, 0.954]], - [0.186, [0.826, 0.892, 0.954]], - [0.188, [0.823, 0.89, 0.953]], - [0.19, [0.823, 0.89, 0.953]], - [0.192, [0.82, 0.888, 0.952]], - [0.194, [0.82, 0.888, 0.952]], - [0.196, [0.817, 0.886, 0.951]], - [0.198, [0.817, 0.886, 0.951]], - [0.2, [0.814, 0.884, 0.95]], - [0.202, [0.814, 0.884, 0.95]], - [0.204, [0.811, 0.882, 0.949]], - [0.205, [0.811, 0.882, 0.949]], - [0.207, [0.808, 0.88, 0.948]], - [0.209, [0.808, 0.88, 0.948]], - [0.211, [0.805, 0.878, 0.947]], - [0.213, [0.805, 0.878, 0.947]], - [0.215, [0.802, 0.876, 0.946]], - [0.217, [0.802, 0.876, 0.946]], - [0.219, [0.799, 0.874, 0.945]], - [0.221, [0.799, 0.874, 0.945]], - [0.223, [0.796, 0.872, 0.944]], - [0.225, [0.796, 0.872, 0.944]], - [0.227, [0.793, 0.87, 0.943]], - [0.229, [0.793, 0.87, 0.943]], - [0.231, [0.79, 0.868, 0.942]], - [0.233, [0.79, 0.868, 0.942]], - [0.235, [0.788, 0.866, 0.941]], - [0.237, [0.788, 0.866, 0.941]], - [0.239, [0.785, 0.864, 0.94]], - [0.241, [0.785, 0.864, 0.94]], - [0.243, [0.782, 0.862, 0.939]], - [0.245, [0.782, 0.862, 0.939]], - [0.247, [0.779, 0.86, 0.938]], - [0.249, [0.779, 0.86, 0.938]], - [0.25, [0.775, 0.858, 0.937]], - [0.252, [0.775, 0.858, 0.937]], - [0.254, [0.77, 0.856, 0.935]], - [0.256, [0.77, 0.856, 0.935]], - [0.258, [0.765, 0.854, 0.933]], - [0.26, [0.765, 0.854, 0.933]], - [0.262, [0.76, 0.852, 0.932]], - [0.264, [0.76, 0.852, 0.932]], - [0.266, [0.756, 0.85, 0.93]], - [0.268, [0.756, 0.85, 0.93]], - [0.27, [0.751, 0.848, 0.928]], - [0.272, [0.751, 0.848, 0.928]], - [0.274, [0.746, 0.846, 0.926]], - [0.276, [0.746, 0.846, 0.926]], - [0.278, [0.741, 0.844, 0.925]], - [0.28, [0.741, 0.844, 0.925]], - [0.282, [0.736, 0.842, 0.923]], - [0.284, [0.736, 0.842, 0.923]], - [0.286, [0.731, 0.839, 0.921]], - [0.288, [0.731, 0.839, 0.921]], - [0.29, [0.726, 0.837, 0.92]], - [0.292, [0.726, 0.837, 0.92]], - [0.294, [0.721, 0.835, 0.918]], - [0.295, [0.721, 0.835, 0.918]], - [0.297, [0.716, 0.833, 0.916]], - [0.299, [0.716, 0.833, 0.916]], - [0.301, [0.711, 0.831, 0.914]], - [0.303, [0.711, 0.831, 0.914]], - [0.305, [0.706, 0.829, 0.913]], - [0.307, [0.706, 0.829, 0.913]], - [0.309, [0.701, 0.827, 0.911]], - [0.311, [0.701, 0.827, 0.911]], - [0.313, [0.697, 0.825, 0.909]], - [0.315, [0.697, 0.825, 0.909]], - [0.317, [0.692, 0.823, 0.908]], - [0.319, [0.692, 0.823, 0.908]], - [0.321, [0.687, 0.821, 0.906]], - [0.323, [0.687, 0.821, 0.906]], - [0.325, [0.682, 0.819, 0.904]], - [0.327, [0.682, 0.819, 0.904]], - [0.329, [0.677, 0.816, 0.902]], - [0.331, [0.677, 0.816, 0.902]], - [0.333, [0.672, 0.814, 0.901]], - [0.335, [0.672, 0.814, 0.901]], - [0.337, [0.667, 0.812, 0.899]], - [0.339, [0.667, 0.812, 0.899]], - [0.341, [0.662, 0.81, 0.897]], - [0.342, [0.662, 0.81, 0.897]], - [0.344, [0.657, 0.808, 0.895]], - [0.346, [0.657, 0.808, 0.895]], - [0.348, [0.652, 0.806, 0.894]], - [0.35, [0.652, 0.806, 0.894]], - [0.352, [0.647, 0.804, 0.892]], - [0.354, [0.647, 0.804, 0.892]], - [0.356, [0.642, 0.802, 0.89]], - [0.358, [0.642, 0.802, 0.89]], - [0.36, [0.637, 0.8, 0.889]], - [0.362, [0.637, 0.8, 0.889]], - [0.364, [0.633, 0.798, 0.887]], - [0.366, [0.633, 0.798, 0.887]], - [0.368, [0.628, 0.796, 0.885]], - [0.37, [0.628, 0.796, 0.885]], - [0.372, [0.623, 0.793, 0.883]], - [0.374, [0.623, 0.793, 0.883]], - [0.376, [0.617, 0.791, 0.882]], - [0.378, [0.617, 0.791, 0.882]], - [0.38, [0.611, 0.787, 0.88]], - [0.382, [0.611, 0.787, 0.88]], - [0.384, [0.605, 0.784, 0.879]], - [0.386, [0.605, 0.784, 0.879]], - [0.387, [0.598, 0.781, 0.878]], - [0.389, [0.598, 0.781, 0.878]], - [0.391, [0.592, 0.777, 0.876]], - [0.393, [0.592, 0.777, 0.876]], - [0.395, [0.586, 0.774, 0.875]], - [0.397, [0.586, 0.774, 0.875]], - [0.399, [0.58, 0.77, 0.874]], - [0.401, [0.58, 0.77, 0.874]], - [0.403, [0.573, 0.767, 0.872]], - [0.405, [0.573, 0.767, 0.872]], - [0.407, [0.567, 0.763, 0.871]], - [0.409, [0.567, 0.763, 0.871]], - [0.411, [0.561, 0.76, 0.87]], - [0.413, [0.561, 0.76, 0.87]], - [0.415, [0.555, 0.756, 0.868]], - [0.417, [0.555, 0.756, 0.868]], - [0.419, [0.548, 0.753, 0.867]], - [0.421, [0.548, 0.753, 0.867]], - [0.423, [0.542, 0.75, 0.866]], - [0.425, [0.542, 0.75, 0.866]], - [0.427, [0.536, 0.746, 0.864]], - [0.429, [0.536, 0.746, 0.864]], - [0.431, [0.529, 0.743, 0.863]], - [0.432, [0.529, 0.743, 0.863]], - [0.434, [0.523, 0.739, 0.862]], - [0.436, [0.523, 0.739, 0.862]], - [0.438, [0.517, 0.736, 0.86]], - [0.44, [0.517, 0.736, 0.86]], - [0.442, [0.511, 0.732, 0.859]], - [0.444, [0.511, 0.732, 0.859]], - [0.446, [0.504, 0.729, 0.857]], - [0.448, [0.504, 0.729, 0.857]], - [0.45, [0.498, 0.725, 0.856]], - [0.452, [0.498, 0.725, 0.856]], - [0.454, [0.492, 0.722, 0.855]], - [0.456, [0.492, 0.722, 0.855]], - [0.458, [0.485, 0.719, 0.853]], - [0.46, [0.485, 0.719, 0.853]], - [0.462, [0.479, 0.715, 0.852]], - [0.464, [0.479, 0.715, 0.852]], - [0.466, [0.473, 0.712, 0.851]], - [0.468, [0.473, 0.712, 0.851]], - [0.47, [0.467, 0.708, 0.849]], - [0.472, [0.467, 0.708, 0.849]], - [0.474, [0.46, 0.705, 0.848]], - [0.476, [0.46, 0.705, 0.848]], - [0.477, [0.454, 0.701, 0.847]], - [0.479, [0.454, 0.701, 0.847]], - [0.481, [0.448, 0.698, 0.845]], - [0.483, [0.448, 0.698, 0.845]], - [0.485, [0.442, 0.694, 0.844]], - [0.487, [0.442, 0.694, 0.844]], - [0.489, [0.435, 0.691, 0.843]], - [0.491, [0.435, 0.691, 0.843]], - [0.493, [0.429, 0.688, 0.841]], - [0.495, [0.429, 0.688, 0.841]], - [0.497, [0.423, 0.684, 0.84]], - [0.499, [0.423, 0.684, 0.84]], - [0.501, [0.417, 0.681, 0.838]], - [0.503, [0.417, 0.681, 0.838]], - [0.505, [0.412, 0.677, 0.836]], - [0.507, [0.412, 0.677, 0.836]], - [0.509, [0.407, 0.674, 0.834]], - [0.511, [0.407, 0.674, 0.834]], - [0.513, [0.402, 0.67, 0.832]], - [0.515, [0.402, 0.67, 0.832]], - [0.517, [0.397, 0.667, 0.83]], - [0.519, [0.397, 0.667, 0.83]], - [0.521, [0.392, 0.663, 0.828]], - [0.523, [0.392, 0.663, 0.828]], - [0.524, [0.387, 0.66, 0.826]], - [0.526, [0.387, 0.66, 0.826]], - [0.528, [0.382, 0.657, 0.824]], - [0.53, [0.382, 0.657, 0.824]], - [0.532, [0.377, 0.653, 0.822]], - [0.534, [0.377, 0.653, 0.822]], - [0.536, [0.372, 0.65, 0.821]], - [0.538, [0.372, 0.65, 0.821]], - [0.54, [0.367, 0.646, 0.819]], - [0.542, [0.367, 0.646, 0.819]], - [0.544, [0.362, 0.643, 0.817]], - [0.546, [0.362, 0.643, 0.817]], - [0.548, [0.357, 0.639, 0.815]], - [0.55, [0.357, 0.639, 0.815]], - [0.552, [0.352, 0.636, 0.813]], - [0.554, [0.352, 0.636, 0.813]], - [0.556, [0.346, 0.632, 0.811]], - [0.558, [0.346, 0.632, 0.811]], - [0.56, [0.341, 0.629, 0.809]], - [0.562, [0.341, 0.629, 0.809]], - [0.564, [0.336, 0.626, 0.807]], - [0.566, [0.336, 0.626, 0.807]], - [0.568, [0.331, 0.622, 0.805]], - [0.569, [0.331, 0.622, 0.805]], - [0.571, [0.326, 0.619, 0.803]], - [0.573, [0.326, 0.619, 0.803]], - [0.575, [0.321, 0.615, 0.801]], - [0.577, [0.321, 0.615, 0.801]], - [0.579, [0.316, 0.612, 0.799]], - [0.581, [0.316, 0.612, 0.799]], - [0.583, [0.311, 0.608, 0.797]], - [0.585, [0.311, 0.608, 0.797]], - [0.587, [0.306, 0.605, 0.795]], - [0.589, [0.306, 0.605, 0.795]], - [0.591, [0.301, 0.601, 0.793]], - [0.593, [0.301, 0.601, 0.793]], - [0.595, [0.296, 0.598, 0.791]], - [0.597, [0.296, 0.598, 0.791]], - [0.599, [0.291, 0.595, 0.789]], - [0.601, [0.291, 0.595, 0.789]], - [0.603, [0.286, 0.591, 0.787]], - [0.605, [0.286, 0.591, 0.787]], - [0.607, [0.281, 0.588, 0.785]], - [0.609, [0.281, 0.588, 0.785]], - [0.611, [0.276, 0.584, 0.783]], - [0.613, [0.276, 0.584, 0.783]], - [0.614, [0.271, 0.581, 0.781]], - [0.616, [0.271, 0.581, 0.781]], - [0.618, [0.266, 0.577, 0.779]], - [0.62, [0.266, 0.577, 0.779]], - [0.622, [0.261, 0.574, 0.777]], - [0.624, [0.261, 0.574, 0.777]], - [0.626, [0.256, 0.57, 0.775]], - [0.628, [0.256, 0.57, 0.775]], - [0.63, [0.252, 0.566, 0.773]], - [0.632, [0.252, 0.566, 0.773]], - [0.634, [0.248, 0.562, 0.771]], - [0.636, [0.248, 0.562, 0.771]], - [0.638, [0.244, 0.558, 0.769]], - [0.64, [0.244, 0.558, 0.769]], - [0.642, [0.24, 0.554, 0.767]], - [0.644, [0.24, 0.554, 0.767]], - [0.646, [0.236, 0.55, 0.765]], - [0.648, [0.236, 0.55, 0.765]], - [0.65, [0.232, 0.546, 0.763]], - [0.652, [0.232, 0.546, 0.763]], - [0.654, [0.228, 0.542, 0.761]], - [0.656, [0.228, 0.542, 0.761]], - [0.658, [0.224, 0.538, 0.758]], - [0.659, [0.224, 0.538, 0.758]], - [0.661, [0.22, 0.533, 0.756]], - [0.663, [0.22, 0.533, 0.756]], - [0.665, [0.216, 0.529, 0.754]], - [0.667, [0.216, 0.529, 0.754]], - [0.669, [0.212, 0.525, 0.752]], - [0.671, [0.212, 0.525, 0.752]], - [0.673, [0.208, 0.521, 0.75]], - [0.675, [0.208, 0.521, 0.75]], - [0.677, [0.204, 0.517, 0.748]], - [0.679, [0.204, 0.517, 0.748]], - [0.681, [0.199, 0.513, 0.746]], - [0.683, [0.199, 0.513, 0.746]], - [0.685, [0.195, 0.509, 0.744]], - [0.687, [0.195, 0.509, 0.744]], - [0.689, [0.191, 0.505, 0.742]], - [0.691, [0.191, 0.505, 0.742]], - [0.693, [0.187, 0.501, 0.74]], - [0.695, [0.187, 0.501, 0.74]], - [0.697, [0.183, 0.497, 0.738]], - [0.699, [0.183, 0.497, 0.738]], - [0.701, [0.179, 0.493, 0.735]], - [0.703, [0.179, 0.493, 0.735]], - [0.705, [0.175, 0.489, 0.733]], - [0.706, [0.175, 0.489, 0.733]], - [0.708, [0.171, 0.485, 0.731]], - [0.71, [0.171, 0.485, 0.731]], - [0.712, [0.167, 0.481, 0.729]], - [0.714, [0.167, 0.481, 0.729]], - [0.716, [0.163, 0.477, 0.727]], - [0.718, [0.163, 0.477, 0.727]], - [0.72, [0.159, 0.473, 0.725]], - [0.722, [0.159, 0.473, 0.725]], - [0.724, [0.155, 0.469, 0.723]], - [0.726, [0.155, 0.469, 0.723]], - [0.728, [0.151, 0.464, 0.721]], - [0.73, [0.151, 0.464, 0.721]], - [0.732, [0.147, 0.46, 0.719]], - [0.734, [0.147, 0.46, 0.719]], - [0.736, [0.143, 0.456, 0.717]], - [0.738, [0.143, 0.456, 0.717]], - [0.74, [0.139, 0.452, 0.715]], - [0.742, [0.139, 0.452, 0.715]], - [0.744, [0.134, 0.448, 0.712]], - [0.746, [0.134, 0.448, 0.712]], - [0.748, [0.13, 0.444, 0.71]], - [0.75, [0.13, 0.444, 0.71]], - [0.751, [0.127, 0.44, 0.707]], - [0.753, [0.127, 0.44, 0.707]], - [0.755, [0.124, 0.436, 0.704]], - [0.757, [0.124, 0.436, 0.704]], - [0.759, [0.121, 0.432, 0.701]], - [0.761, [0.121, 0.432, 0.701]], - [0.763, [0.118, 0.428, 0.698]], - [0.765, [0.118, 0.428, 0.698]], - [0.767, [0.115, 0.424, 0.695]], - [0.769, [0.115, 0.424, 0.695]], - [0.771, [0.112, 0.42, 0.692]], - [0.773, [0.112, 0.42, 0.692]], - [0.775, [0.109, 0.417, 0.689]], - [0.777, [0.109, 0.417, 0.689]], - [0.779, [0.106, 0.413, 0.686]], - [0.781, [0.106, 0.413, 0.686]], - [0.783, [0.102, 0.409, 0.683]], - [0.785, [0.102, 0.409, 0.683]], - [0.787, [0.099, 0.405, 0.68]], - [0.789, [0.099, 0.405, 0.68]], - [0.791, [0.096, 0.401, 0.677]], - [0.793, [0.096, 0.401, 0.677]], - [0.795, [0.093, 0.397, 0.674]], - [0.796, [0.093, 0.397, 0.674]], - [0.798, [0.09, 0.393, 0.671]], - [0.8, [0.09, 0.393, 0.671]], - [0.802, [0.087, 0.389, 0.668]], - [0.804, [0.087, 0.389, 0.668]], - [0.806, [0.084, 0.385, 0.664]], - [0.808, [0.084, 0.385, 0.664]], - [0.81, [0.081, 0.381, 0.661]], - [0.812, [0.081, 0.381, 0.661]], - [0.814, [0.078, 0.377, 0.658]], - [0.816, [0.078, 0.377, 0.658]], - [0.818, [0.075, 0.373, 0.655]], - [0.82, [0.075, 0.373, 0.655]], - [0.822, [0.072, 0.369, 0.652]], - [0.824, [0.072, 0.369, 0.652]], - [0.826, [0.069, 0.365, 0.649]], - [0.828, [0.069, 0.365, 0.649]], - [0.83, [0.066, 0.361, 0.646]], - [0.832, [0.066, 0.361, 0.646]], - [0.834, [0.063, 0.358, 0.643]], - [0.836, [0.063, 0.358, 0.643]], - [0.838, [0.059, 0.354, 0.64]], - [0.84, [0.059, 0.354, 0.64]], - [0.841, [0.056, 0.35, 0.637]], - [0.843, [0.056, 0.35, 0.637]], - [0.845, [0.053, 0.346, 0.634]], - [0.847, [0.053, 0.346, 0.634]], - [0.849, [0.05, 0.342, 0.631]], - [0.851, [0.05, 0.342, 0.631]], - [0.853, [0.047, 0.338, 0.628]], - [0.855, [0.047, 0.338, 0.628]], - [0.857, [0.044, 0.334, 0.624]], - [0.859, [0.044, 0.334, 0.624]], - [0.861, [0.041, 0.33, 0.621]], - [0.863, [0.041, 0.33, 0.621]], - [0.865, [0.038, 0.326, 0.618]], - [0.867, [0.038, 0.326, 0.618]], - [0.869, [0.035, 0.322, 0.615]], - [0.871, [0.035, 0.322, 0.615]], - [0.873, [0.032, 0.318, 0.612]], - [0.875, [0.032, 0.318, 0.612]], - [0.877, [0.031, 0.314, 0.606]], - [0.879, [0.031, 0.314, 0.606]], - [0.881, [0.031, 0.31, 0.6]], - [0.883, [0.031, 0.31, 0.6]], - [0.885, [0.031, 0.306, 0.594]], - [0.886, [0.031, 0.306, 0.594]], - [0.888, [0.031, 0.302, 0.588]], - [0.89, [0.031, 0.302, 0.588]], - [0.892, [0.031, 0.298, 0.582]], - [0.894, [0.031, 0.298, 0.582]], - [0.896, [0.031, 0.294, 0.576]], - [0.898, [0.031, 0.294, 0.576]], - [0.9, [0.031, 0.29, 0.57]], - [0.902, [0.031, 0.29, 0.57]], - [0.904, [0.031, 0.286, 0.564]], - [0.906, [0.031, 0.286, 0.564]], - [0.908, [0.031, 0.282, 0.558]], - [0.91, [0.031, 0.282, 0.558]], - [0.912, [0.031, 0.278, 0.552]], - [0.914, [0.031, 0.278, 0.552]], - [0.916, [0.031, 0.273, 0.546]], - [0.918, [0.031, 0.273, 0.546]], - [0.92, [0.031, 0.269, 0.54]], - [0.922, [0.031, 0.269, 0.54]], - [0.924, [0.031, 0.265, 0.534]], - [0.926, [0.031, 0.265, 0.534]], - [0.928, [0.031, 0.261, 0.528]], - [0.93, [0.031, 0.261, 0.528]], - [0.932, [0.031, 0.257, 0.522]], - [0.933, [0.031, 0.257, 0.522]], - [0.935, [0.031, 0.253, 0.516]], - [0.937, [0.031, 0.253, 0.516]], - [0.939, [0.031, 0.249, 0.51]], - [0.941, [0.031, 0.249, 0.51]], - [0.943, [0.031, 0.245, 0.504]], - [0.945, [0.031, 0.245, 0.504]], - [0.947, [0.031, 0.241, 0.498]], - [0.949, [0.031, 0.241, 0.498]], - [0.951, [0.031, 0.237, 0.492]], - [0.953, [0.031, 0.237, 0.492]], - [0.955, [0.031, 0.233, 0.486]], - [0.957, [0.031, 0.233, 0.486]], - [0.959, [0.031, 0.229, 0.48]], - [0.961, [0.031, 0.229, 0.48]], - [0.963, [0.031, 0.225, 0.474]], - [0.965, [0.031, 0.225, 0.474]], - [0.967, [0.031, 0.221, 0.468]], - [0.969, [0.031, 0.221, 0.468]], - [0.971, [0.031, 0.217, 0.462]], - [0.973, [0.031, 0.217, 0.462]], - [0.975, [0.031, 0.213, 0.456]], - [0.977, [0.031, 0.213, 0.456]], - [0.978, [0.031, 0.209, 0.45]], - [0.98, [0.031, 0.209, 0.45]], - [0.982, [0.031, 0.204, 0.444]], - [0.984, [0.031, 0.204, 0.444]], - [0.986, [0.031, 0.2, 0.438]], - [0.988, [0.031, 0.2, 0.438]], - [0.99, [0.031, 0.196, 0.432]], - [0.992, [0.031, 0.196, 0.432]], - [0.994, [0.031, 0.192, 0.426]], - [0.996, [0.031, 0.192, 0.426]], - [0.998, [0.031, 0.188, 0.42]], - [1.0, [0.031, 0.188, 0.42]], - ], + value: convertColorPaletteToColorMap(ouiPaletteCool(COLOR_MAP_LENGTH)), }, [ColorSchemas.Greens]: { id: ColorSchemas.Greens, label: i18n.translate('charts.colormaps.greensText', { defaultMessage: 'Greens', }), - value: [ - [0.0, [0.969, 0.988, 0.961]], - [0.002, [0.969, 0.988, 0.961]], - [0.004, [0.966, 0.987, 0.958]], - [0.006, [0.966, 0.987, 0.958]], - [0.008, [0.964, 0.987, 0.956]], - [0.01, [0.964, 0.987, 0.956]], - [0.012, [0.962, 0.986, 0.953]], - [0.014, [0.962, 0.986, 0.953]], - [0.016, [0.96, 0.985, 0.95]], - [0.018, [0.96, 0.985, 0.95]], - [0.02, [0.958, 0.984, 0.948]], - [0.022, [0.958, 0.984, 0.948]], - [0.023, [0.955, 0.983, 0.945]], - [0.025, [0.955, 0.983, 0.945]], - [0.027, [0.953, 0.982, 0.943]], - [0.029, [0.953, 0.982, 0.943]], - [0.031, [0.951, 0.981, 0.94]], - [0.033, [0.951, 0.981, 0.94]], - [0.035, [0.949, 0.98, 0.938]], - [0.037, [0.949, 0.98, 0.938]], - [0.039, [0.946, 0.98, 0.935]], - [0.041, [0.946, 0.98, 0.935]], - [0.043, [0.944, 0.979, 0.932]], - [0.045, [0.944, 0.979, 0.932]], - [0.047, [0.942, 0.978, 0.93]], - [0.049, [0.942, 0.978, 0.93]], - [0.051, [0.94, 0.977, 0.927]], - [0.053, [0.94, 0.977, 0.927]], - [0.055, [0.938, 0.976, 0.925]], - [0.057, [0.938, 0.976, 0.925]], - [0.059, [0.935, 0.975, 0.922]], - [0.061, [0.935, 0.975, 0.922]], - [0.063, [0.933, 0.974, 0.919]], - [0.065, [0.933, 0.974, 0.919]], - [0.067, [0.931, 0.974, 0.917]], - [0.068, [0.931, 0.974, 0.917]], - [0.07, [0.929, 0.973, 0.914]], - [0.072, [0.929, 0.973, 0.914]], - [0.074, [0.927, 0.972, 0.912]], - [0.076, [0.927, 0.972, 0.912]], - [0.078, [0.924, 0.971, 0.909]], - [0.08, [0.924, 0.971, 0.909]], - [0.082, [0.922, 0.97, 0.907]], - [0.084, [0.922, 0.97, 0.907]], - [0.086, [0.92, 0.969, 0.904]], - [0.088, [0.92, 0.969, 0.904]], - [0.09, [0.918, 0.968, 0.901]], - [0.092, [0.918, 0.968, 0.901]], - [0.094, [0.915, 0.968, 0.899]], - [0.096, [0.915, 0.968, 0.899]], - [0.098, [0.913, 0.967, 0.896]], - [0.1, [0.913, 0.967, 0.896]], - [0.102, [0.911, 0.966, 0.894]], - [0.104, [0.911, 0.966, 0.894]], - [0.106, [0.909, 0.965, 0.891]], - [0.108, [0.909, 0.965, 0.891]], - [0.11, [0.907, 0.964, 0.888]], - [0.112, [0.907, 0.964, 0.888]], - [0.114, [0.904, 0.963, 0.886]], - [0.115, [0.904, 0.963, 0.886]], - [0.117, [0.902, 0.962, 0.883]], - [0.119, [0.902, 0.962, 0.883]], - [0.121, [0.9, 0.962, 0.881]], - [0.123, [0.9, 0.962, 0.881]], - [0.125, [0.898, 0.961, 0.878]], - [0.127, [0.898, 0.961, 0.878]], - [0.129, [0.894, 0.959, 0.874]], - [0.131, [0.894, 0.959, 0.874]], - [0.133, [0.89, 0.958, 0.87]], - [0.135, [0.89, 0.958, 0.87]], - [0.137, [0.887, 0.956, 0.866]], - [0.139, [0.887, 0.956, 0.866]], - [0.141, [0.883, 0.955, 0.862]], - [0.143, [0.883, 0.955, 0.862]], - [0.145, [0.879, 0.953, 0.858]], - [0.147, [0.879, 0.953, 0.858]], - [0.149, [0.875, 0.952, 0.854]], - [0.151, [0.875, 0.952, 0.854]], - [0.153, [0.872, 0.95, 0.85]], - [0.155, [0.872, 0.95, 0.85]], - [0.157, [0.868, 0.949, 0.846]], - [0.159, [0.868, 0.949, 0.846]], - [0.16, [0.864, 0.947, 0.843]], - [0.162, [0.864, 0.947, 0.843]], - [0.164, [0.861, 0.946, 0.839]], - [0.166, [0.861, 0.946, 0.839]], - [0.168, [0.857, 0.944, 0.835]], - [0.17, [0.857, 0.944, 0.835]], - [0.172, [0.853, 0.943, 0.831]], - [0.174, [0.853, 0.943, 0.831]], - [0.176, [0.85, 0.941, 0.827]], - [0.178, [0.85, 0.941, 0.827]], - [0.18, [0.846, 0.94, 0.823]], - [0.182, [0.846, 0.94, 0.823]], - [0.184, [0.842, 0.938, 0.819]], - [0.186, [0.842, 0.938, 0.819]], - [0.188, [0.839, 0.937, 0.815]], - [0.19, [0.839, 0.937, 0.815]], - [0.192, [0.835, 0.936, 0.811]], - [0.194, [0.835, 0.936, 0.811]], - [0.196, [0.831, 0.934, 0.807]], - [0.198, [0.831, 0.934, 0.807]], - [0.2, [0.827, 0.933, 0.803]], - [0.202, [0.827, 0.933, 0.803]], - [0.204, [0.824, 0.931, 0.799]], - [0.205, [0.824, 0.931, 0.799]], - [0.207, [0.82, 0.93, 0.795]], - [0.209, [0.82, 0.93, 0.795]], - [0.211, [0.816, 0.928, 0.791]], - [0.213, [0.816, 0.928, 0.791]], - [0.215, [0.813, 0.927, 0.787]], - [0.217, [0.813, 0.927, 0.787]], - [0.219, [0.809, 0.925, 0.783]], - [0.221, [0.809, 0.925, 0.783]], - [0.223, [0.805, 0.924, 0.78]], - [0.225, [0.805, 0.924, 0.78]], - [0.227, [0.802, 0.922, 0.776]], - [0.229, [0.802, 0.922, 0.776]], - [0.231, [0.798, 0.921, 0.772]], - [0.233, [0.798, 0.921, 0.772]], - [0.235, [0.794, 0.919, 0.768]], - [0.237, [0.794, 0.919, 0.768]], - [0.239, [0.791, 0.918, 0.764]], - [0.241, [0.791, 0.918, 0.764]], - [0.243, [0.787, 0.916, 0.76]], - [0.245, [0.787, 0.916, 0.76]], - [0.247, [0.783, 0.915, 0.756]], - [0.249, [0.783, 0.915, 0.756]], - [0.25, [0.779, 0.913, 0.752]], - [0.252, [0.779, 0.913, 0.752]], - [0.254, [0.775, 0.911, 0.747]], - [0.256, [0.775, 0.911, 0.747]], - [0.258, [0.77, 0.909, 0.743]], - [0.26, [0.77, 0.909, 0.743]], - [0.262, [0.765, 0.907, 0.738]], - [0.264, [0.765, 0.907, 0.738]], - [0.266, [0.761, 0.905, 0.734]], - [0.268, [0.761, 0.905, 0.734]], - [0.27, [0.756, 0.903, 0.729]], - [0.272, [0.756, 0.903, 0.729]], - [0.274, [0.751, 0.901, 0.724]], - [0.276, [0.751, 0.901, 0.724]], - [0.278, [0.746, 0.899, 0.72]], - [0.28, [0.746, 0.899, 0.72]], - [0.282, [0.742, 0.897, 0.715]], - [0.284, [0.742, 0.897, 0.715]], - [0.286, [0.737, 0.896, 0.711]], - [0.288, [0.737, 0.896, 0.711]], - [0.29, [0.732, 0.894, 0.706]], - [0.292, [0.732, 0.894, 0.706]], - [0.294, [0.728, 0.892, 0.702]], - [0.295, [0.728, 0.892, 0.702]], - [0.297, [0.723, 0.89, 0.697]], - [0.299, [0.723, 0.89, 0.697]], - [0.301, [0.718, 0.888, 0.693]], - [0.303, [0.718, 0.888, 0.693]], - [0.305, [0.714, 0.886, 0.688]], - [0.307, [0.714, 0.886, 0.688]], - [0.309, [0.709, 0.884, 0.684]], - [0.311, [0.709, 0.884, 0.684]], - [0.313, [0.704, 0.882, 0.679]], - [0.315, [0.704, 0.882, 0.679]], - [0.317, [0.7, 0.88, 0.674]], - [0.319, [0.7, 0.88, 0.674]], - [0.321, [0.695, 0.878, 0.67]], - [0.323, [0.695, 0.878, 0.67]], - [0.325, [0.69, 0.876, 0.665]], - [0.327, [0.69, 0.876, 0.665]], - [0.329, [0.686, 0.874, 0.661]], - [0.331, [0.686, 0.874, 0.661]], - [0.333, [0.681, 0.872, 0.656]], - [0.335, [0.681, 0.872, 0.656]], - [0.337, [0.676, 0.87, 0.652]], - [0.339, [0.676, 0.87, 0.652]], - [0.341, [0.672, 0.868, 0.647]], - [0.342, [0.672, 0.868, 0.647]], - [0.344, [0.667, 0.866, 0.643]], - [0.346, [0.667, 0.866, 0.643]], - [0.348, [0.662, 0.864, 0.638]], - [0.35, [0.662, 0.864, 0.638]], - [0.352, [0.658, 0.862, 0.633]], - [0.354, [0.658, 0.862, 0.633]], - [0.356, [0.653, 0.86, 0.629]], - [0.358, [0.653, 0.86, 0.629]], - [0.36, [0.648, 0.858, 0.624]], - [0.362, [0.648, 0.858, 0.624]], - [0.364, [0.644, 0.856, 0.62]], - [0.366, [0.644, 0.856, 0.62]], - [0.368, [0.639, 0.854, 0.615]], - [0.37, [0.639, 0.854, 0.615]], - [0.372, [0.634, 0.852, 0.611]], - [0.374, [0.634, 0.852, 0.611]], - [0.376, [0.629, 0.85, 0.606]], - [0.378, [0.629, 0.85, 0.606]], - [0.38, [0.624, 0.847, 0.602]], - [0.382, [0.624, 0.847, 0.602]], - [0.384, [0.618, 0.845, 0.597]], - [0.386, [0.618, 0.845, 0.597]], - [0.387, [0.613, 0.842, 0.592]], - [0.389, [0.613, 0.842, 0.592]], - [0.391, [0.607, 0.84, 0.588]], - [0.393, [0.607, 0.84, 0.588]], - [0.395, [0.602, 0.837, 0.583]], - [0.397, [0.602, 0.837, 0.583]], - [0.399, [0.596, 0.835, 0.579]], - [0.401, [0.596, 0.835, 0.579]], - [0.403, [0.591, 0.832, 0.574]], - [0.405, [0.591, 0.832, 0.574]], - [0.407, [0.585, 0.829, 0.57]], - [0.409, [0.585, 0.829, 0.57]], - [0.411, [0.579, 0.827, 0.565]], - [0.413, [0.579, 0.827, 0.565]], - [0.415, [0.574, 0.824, 0.561]], - [0.417, [0.574, 0.824, 0.561]], - [0.419, [0.568, 0.822, 0.556]], - [0.421, [0.568, 0.822, 0.556]], - [0.423, [0.563, 0.819, 0.552]], - [0.425, [0.563, 0.819, 0.552]], - [0.427, [0.557, 0.816, 0.547]], - [0.429, [0.557, 0.816, 0.547]], - [0.431, [0.552, 0.814, 0.542]], - [0.432, [0.552, 0.814, 0.542]], - [0.434, [0.546, 0.811, 0.538]], - [0.436, [0.546, 0.811, 0.538]], - [0.438, [0.541, 0.809, 0.533]], - [0.44, [0.541, 0.809, 0.533]], - [0.442, [0.535, 0.806, 0.529]], - [0.444, [0.535, 0.806, 0.529]], - [0.446, [0.53, 0.804, 0.524]], - [0.448, [0.53, 0.804, 0.524]], - [0.45, [0.524, 0.801, 0.52]], - [0.452, [0.524, 0.801, 0.52]], - [0.454, [0.519, 0.798, 0.515]], - [0.456, [0.519, 0.798, 0.515]], - [0.458, [0.513, 0.796, 0.511]], - [0.46, [0.513, 0.796, 0.511]], - [0.462, [0.507, 0.793, 0.506]], - [0.464, [0.507, 0.793, 0.506]], - [0.466, [0.502, 0.791, 0.501]], - [0.468, [0.502, 0.791, 0.501]], - [0.47, [0.496, 0.788, 0.497]], - [0.472, [0.496, 0.788, 0.497]], - [0.474, [0.491, 0.785, 0.492]], - [0.476, [0.491, 0.785, 0.492]], - [0.477, [0.485, 0.783, 0.488]], - [0.479, [0.485, 0.783, 0.488]], - [0.481, [0.48, 0.78, 0.483]], - [0.483, [0.48, 0.78, 0.483]], - [0.485, [0.474, 0.778, 0.479]], - [0.487, [0.474, 0.778, 0.479]], - [0.489, [0.469, 0.775, 0.474]], - [0.491, [0.469, 0.775, 0.474]], - [0.493, [0.463, 0.773, 0.47]], - [0.495, [0.463, 0.773, 0.47]], - [0.497, [0.458, 0.77, 0.465]], - [0.499, [0.458, 0.77, 0.465]], - [0.501, [0.452, 0.767, 0.461]], - [0.503, [0.452, 0.767, 0.461]], - [0.505, [0.445, 0.764, 0.458]], - [0.507, [0.445, 0.764, 0.458]], - [0.509, [0.439, 0.761, 0.455]], - [0.511, [0.439, 0.761, 0.455]], - [0.513, [0.433, 0.758, 0.452]], - [0.515, [0.433, 0.758, 0.452]], - [0.517, [0.427, 0.755, 0.449]], - [0.519, [0.427, 0.755, 0.449]], - [0.521, [0.42, 0.752, 0.446]], - [0.523, [0.42, 0.752, 0.446]], - [0.524, [0.414, 0.749, 0.443]], - [0.526, [0.414, 0.749, 0.443]], - [0.528, [0.408, 0.746, 0.44]], - [0.53, [0.408, 0.746, 0.44]], - [0.532, [0.402, 0.742, 0.437]], - [0.534, [0.402, 0.742, 0.437]], - [0.536, [0.395, 0.739, 0.434]], - [0.538, [0.395, 0.739, 0.434]], - [0.54, [0.389, 0.736, 0.43]], - [0.542, [0.389, 0.736, 0.43]], - [0.544, [0.383, 0.733, 0.427]], - [0.546, [0.383, 0.733, 0.427]], - [0.548, [0.376, 0.73, 0.424]], - [0.55, [0.376, 0.73, 0.424]], - [0.552, [0.37, 0.727, 0.421]], - [0.554, [0.37, 0.727, 0.421]], - [0.556, [0.364, 0.724, 0.418]], - [0.558, [0.364, 0.724, 0.418]], - [0.56, [0.358, 0.721, 0.415]], - [0.562, [0.358, 0.721, 0.415]], - [0.564, [0.351, 0.718, 0.412]], - [0.566, [0.351, 0.718, 0.412]], - [0.568, [0.345, 0.715, 0.409]], - [0.569, [0.345, 0.715, 0.409]], - [0.571, [0.339, 0.712, 0.406]], - [0.573, [0.339, 0.712, 0.406]], - [0.575, [0.333, 0.709, 0.403]], - [0.577, [0.333, 0.709, 0.403]], - [0.579, [0.326, 0.706, 0.4]], - [0.581, [0.326, 0.706, 0.4]], - [0.583, [0.32, 0.702, 0.397]], - [0.585, [0.32, 0.702, 0.397]], - [0.587, [0.314, 0.699, 0.394]], - [0.589, [0.314, 0.699, 0.394]], - [0.591, [0.307, 0.696, 0.39]], - [0.593, [0.307, 0.696, 0.39]], - [0.595, [0.301, 0.693, 0.387]], - [0.597, [0.301, 0.693, 0.387]], - [0.599, [0.295, 0.69, 0.384]], - [0.601, [0.295, 0.69, 0.384]], - [0.603, [0.289, 0.687, 0.381]], - [0.605, [0.289, 0.687, 0.381]], - [0.607, [0.282, 0.684, 0.378]], - [0.609, [0.282, 0.684, 0.378]], - [0.611, [0.276, 0.681, 0.375]], - [0.613, [0.276, 0.681, 0.375]], - [0.614, [0.27, 0.678, 0.372]], - [0.616, [0.27, 0.678, 0.372]], - [0.618, [0.264, 0.675, 0.369]], - [0.62, [0.264, 0.675, 0.369]], - [0.622, [0.257, 0.672, 0.366]], - [0.624, [0.257, 0.672, 0.366]], - [0.626, [0.253, 0.668, 0.363]], - [0.628, [0.253, 0.668, 0.363]], - [0.63, [0.249, 0.664, 0.36]], - [0.632, [0.249, 0.664, 0.36]], - [0.634, [0.245, 0.66, 0.357]], - [0.636, [0.245, 0.66, 0.357]], - [0.638, [0.242, 0.656, 0.354]], - [0.64, [0.242, 0.656, 0.354]], - [0.642, [0.238, 0.652, 0.351]], - [0.644, [0.238, 0.652, 0.351]], - [0.646, [0.234, 0.648, 0.348]], - [0.648, [0.234, 0.648, 0.348]], - [0.65, [0.23, 0.645, 0.345]], - [0.652, [0.23, 0.645, 0.345]], - [0.654, [0.227, 0.641, 0.342]], - [0.656, [0.227, 0.641, 0.342]], - [0.658, [0.223, 0.637, 0.339]], - [0.659, [0.223, 0.637, 0.339]], - [0.661, [0.219, 0.633, 0.336]], - [0.663, [0.219, 0.633, 0.336]], - [0.665, [0.216, 0.629, 0.333]], - [0.667, [0.216, 0.629, 0.333]], - [0.669, [0.212, 0.625, 0.33]], - [0.671, [0.212, 0.625, 0.33]], - [0.673, [0.208, 0.621, 0.327]], - [0.675, [0.208, 0.621, 0.327]], - [0.677, [0.205, 0.617, 0.324]], - [0.679, [0.205, 0.617, 0.324]], - [0.681, [0.201, 0.613, 0.322]], - [0.683, [0.201, 0.613, 0.322]], - [0.685, [0.197, 0.609, 0.319]], - [0.687, [0.197, 0.609, 0.319]], - [0.689, [0.194, 0.605, 0.316]], - [0.691, [0.194, 0.605, 0.316]], - [0.693, [0.19, 0.601, 0.313]], - [0.695, [0.19, 0.601, 0.313]], - [0.697, [0.186, 0.597, 0.31]], - [0.699, [0.186, 0.597, 0.31]], - [0.701, [0.182, 0.593, 0.307]], - [0.703, [0.182, 0.593, 0.307]], - [0.705, [0.179, 0.589, 0.304]], - [0.706, [0.179, 0.589, 0.304]], - [0.708, [0.175, 0.585, 0.301]], - [0.71, [0.175, 0.585, 0.301]], - [0.712, [0.171, 0.582, 0.298]], - [0.714, [0.171, 0.582, 0.298]], - [0.716, [0.168, 0.578, 0.295]], - [0.718, [0.168, 0.578, 0.295]], - [0.72, [0.164, 0.574, 0.292]], - [0.722, [0.164, 0.574, 0.292]], - [0.724, [0.16, 0.57, 0.289]], - [0.726, [0.16, 0.57, 0.289]], - [0.728, [0.157, 0.566, 0.286]], - [0.73, [0.157, 0.566, 0.286]], - [0.732, [0.153, 0.562, 0.283]], - [0.734, [0.153, 0.562, 0.283]], - [0.736, [0.149, 0.558, 0.28]], - [0.738, [0.149, 0.558, 0.28]], - [0.74, [0.146, 0.554, 0.277]], - [0.742, [0.146, 0.554, 0.277]], - [0.744, [0.142, 0.55, 0.274]], - [0.746, [0.142, 0.55, 0.274]], - [0.748, [0.138, 0.546, 0.271]], - [0.75, [0.138, 0.546, 0.271]], - [0.751, [0.134, 0.542, 0.268]], - [0.753, [0.134, 0.542, 0.268]], - [0.755, [0.13, 0.539, 0.265]], - [0.757, [0.13, 0.539, 0.265]], - [0.759, [0.125, 0.535, 0.262]], - [0.761, [0.125, 0.535, 0.262]], - [0.763, [0.121, 0.531, 0.259]], - [0.765, [0.121, 0.531, 0.259]], - [0.767, [0.117, 0.528, 0.256]], - [0.769, [0.117, 0.528, 0.256]], - [0.771, [0.112, 0.524, 0.253]], - [0.773, [0.112, 0.524, 0.253]], - [0.775, [0.108, 0.52, 0.25]], - [0.777, [0.108, 0.52, 0.25]], - [0.779, [0.104, 0.516, 0.247]], - [0.781, [0.104, 0.516, 0.247]], - [0.783, [0.1, 0.513, 0.244]], - [0.785, [0.1, 0.513, 0.244]], - [0.787, [0.095, 0.509, 0.241]], - [0.789, [0.095, 0.509, 0.241]], - [0.791, [0.091, 0.505, 0.238]], - [0.793, [0.091, 0.505, 0.238]], - [0.795, [0.087, 0.502, 0.234]], - [0.796, [0.087, 0.502, 0.234]], - [0.798, [0.082, 0.498, 0.231]], - [0.8, [0.082, 0.498, 0.231]], - [0.802, [0.078, 0.494, 0.228]], - [0.804, [0.078, 0.494, 0.228]], - [0.806, [0.074, 0.491, 0.225]], - [0.808, [0.074, 0.491, 0.225]], - [0.81, [0.069, 0.487, 0.222]], - [0.812, [0.069, 0.487, 0.222]], - [0.814, [0.065, 0.483, 0.219]], - [0.816, [0.065, 0.483, 0.219]], - [0.818, [0.061, 0.48, 0.216]], - [0.82, [0.061, 0.48, 0.216]], - [0.822, [0.057, 0.476, 0.213]], - [0.824, [0.057, 0.476, 0.213]], - [0.826, [0.052, 0.472, 0.21]], - [0.828, [0.052, 0.472, 0.21]], - [0.83, [0.048, 0.469, 0.207]], - [0.832, [0.048, 0.469, 0.207]], - [0.834, [0.044, 0.465, 0.204]], - [0.836, [0.044, 0.465, 0.204]], - [0.838, [0.039, 0.461, 0.201]], - [0.84, [0.039, 0.461, 0.201]], - [0.841, [0.035, 0.457, 0.198]], - [0.843, [0.035, 0.457, 0.198]], - [0.845, [0.031, 0.454, 0.194]], - [0.847, [0.031, 0.454, 0.194]], - [0.849, [0.026, 0.45, 0.191]], - [0.851, [0.026, 0.45, 0.191]], - [0.853, [0.022, 0.446, 0.188]], - [0.855, [0.022, 0.446, 0.188]], - [0.857, [0.018, 0.443, 0.185]], - [0.859, [0.018, 0.443, 0.185]], - [0.861, [0.013, 0.439, 0.182]], - [0.863, [0.013, 0.439, 0.182]], - [0.865, [0.009, 0.435, 0.179]], - [0.867, [0.009, 0.435, 0.179]], - [0.869, [0.005, 0.432, 0.176]], - [0.871, [0.005, 0.432, 0.176]], - [0.873, [0.001, 0.428, 0.173]], - [0.875, [0.001, 0.428, 0.173]], - [0.877, [0.0, 0.423, 0.171]], - [0.879, [0.0, 0.423, 0.171]], - [0.881, [0.0, 0.418, 0.169]], - [0.883, [0.0, 0.418, 0.169]], - [0.885, [0.0, 0.413, 0.167]], - [0.886, [0.0, 0.413, 0.167]], - [0.888, [0.0, 0.408, 0.164]], - [0.89, [0.0, 0.408, 0.164]], - [0.892, [0.0, 0.403, 0.162]], - [0.894, [0.0, 0.403, 0.162]], - [0.896, [0.0, 0.398, 0.16]], - [0.898, [0.0, 0.398, 0.16]], - [0.9, [0.0, 0.393, 0.158]], - [0.902, [0.0, 0.393, 0.158]], - [0.904, [0.0, 0.388, 0.156]], - [0.906, [0.0, 0.388, 0.156]], - [0.908, [0.0, 0.383, 0.154]], - [0.91, [0.0, 0.383, 0.154]], - [0.912, [0.0, 0.378, 0.152]], - [0.914, [0.0, 0.378, 0.152]], - [0.916, [0.0, 0.373, 0.15]], - [0.918, [0.0, 0.373, 0.15]], - [0.92, [0.0, 0.368, 0.148]], - [0.922, [0.0, 0.368, 0.148]], - [0.924, [0.0, 0.363, 0.146]], - [0.926, [0.0, 0.363, 0.146]], - [0.928, [0.0, 0.357, 0.144]], - [0.93, [0.0, 0.357, 0.144]], - [0.932, [0.0, 0.352, 0.141]], - [0.933, [0.0, 0.352, 0.141]], - [0.935, [0.0, 0.347, 0.139]], - [0.937, [0.0, 0.347, 0.139]], - [0.939, [0.0, 0.342, 0.137]], - [0.941, [0.0, 0.342, 0.137]], - [0.943, [0.0, 0.337, 0.135]], - [0.945, [0.0, 0.337, 0.135]], - [0.947, [0.0, 0.332, 0.133]], - [0.949, [0.0, 0.332, 0.133]], - [0.951, [0.0, 0.327, 0.131]], - [0.953, [0.0, 0.327, 0.131]], - [0.955, [0.0, 0.322, 0.129]], - [0.957, [0.0, 0.322, 0.129]], - [0.959, [0.0, 0.317, 0.127]], - [0.961, [0.0, 0.317, 0.127]], - [0.963, [0.0, 0.312, 0.125]], - [0.965, [0.0, 0.312, 0.125]], - [0.967, [0.0, 0.307, 0.123]], - [0.969, [0.0, 0.307, 0.123]], - [0.971, [0.0, 0.302, 0.121]], - [0.973, [0.0, 0.302, 0.121]], - [0.975, [0.0, 0.297, 0.118]], - [0.977, [0.0, 0.297, 0.118]], - [0.978, [0.0, 0.292, 0.116]], - [0.98, [0.0, 0.292, 0.116]], - [0.982, [0.0, 0.287, 0.114]], - [0.984, [0.0, 0.287, 0.114]], - [0.986, [0.0, 0.282, 0.112]], - [0.988, [0.0, 0.282, 0.112]], - [0.99, [0.0, 0.277, 0.11]], - [0.992, [0.0, 0.277, 0.11]], - [0.994, [0.0, 0.272, 0.108]], - [0.996, [0.0, 0.272, 0.108]], - [0.998, [0.0, 0.267, 0.106]], - [1.0, [0.0, 0.267, 0.106]], - ], + value: convertColorPaletteToColorMap(ouiPalettePositive(COLOR_MAP_LENGTH)), }, [ColorSchemas.Greys]: { id: ColorSchemas.Greys, label: i18n.translate('charts.colormaps.greysText', { defaultMessage: 'Greys', }), - value: [ - [0.0, [1.0, 1.0, 1.0]], - [0.002, [1.0, 1.0, 1.0]], - [0.004, [0.998, 0.998, 0.998]], - [0.006, [0.998, 0.998, 0.998]], - [0.008, [0.996, 0.996, 0.996]], - [0.01, [0.996, 0.996, 0.996]], - [0.012, [0.994, 0.994, 0.994]], - [0.014, [0.994, 0.994, 0.994]], - [0.016, [0.993, 0.993, 0.993]], - [0.018, [0.993, 0.993, 0.993]], - [0.02, [0.991, 0.991, 0.991]], - [0.022, [0.991, 0.991, 0.991]], - [0.023, [0.989, 0.989, 0.989]], - [0.025, [0.989, 0.989, 0.989]], - [0.027, [0.987, 0.987, 0.987]], - [0.029, [0.987, 0.987, 0.987]], - [0.031, [0.985, 0.985, 0.985]], - [0.033, [0.985, 0.985, 0.985]], - [0.035, [0.983, 0.983, 0.983]], - [0.037, [0.983, 0.983, 0.983]], - [0.039, [0.982, 0.982, 0.982]], - [0.041, [0.982, 0.982, 0.982]], - [0.043, [0.98, 0.98, 0.98]], - [0.045, [0.98, 0.98, 0.98]], - [0.047, [0.978, 0.978, 0.978]], - [0.049, [0.978, 0.978, 0.978]], - [0.051, [0.976, 0.976, 0.976]], - [0.053, [0.976, 0.976, 0.976]], - [0.055, [0.974, 0.974, 0.974]], - [0.057, [0.974, 0.974, 0.974]], - [0.059, [0.972, 0.972, 0.972]], - [0.061, [0.972, 0.972, 0.972]], - [0.063, [0.97, 0.97, 0.97]], - [0.065, [0.97, 0.97, 0.97]], - [0.067, [0.969, 0.969, 0.969]], - [0.068, [0.969, 0.969, 0.969]], - [0.07, [0.967, 0.967, 0.967]], - [0.072, [0.967, 0.967, 0.967]], - [0.074, [0.965, 0.965, 0.965]], - [0.076, [0.965, 0.965, 0.965]], - [0.078, [0.963, 0.963, 0.963]], - [0.08, [0.963, 0.963, 0.963]], - [0.082, [0.961, 0.961, 0.961]], - [0.084, [0.961, 0.961, 0.961]], - [0.086, [0.959, 0.959, 0.959]], - [0.088, [0.959, 0.959, 0.959]], - [0.09, [0.958, 0.958, 0.958]], - [0.092, [0.958, 0.958, 0.958]], - [0.094, [0.956, 0.956, 0.956]], - [0.096, [0.956, 0.956, 0.956]], - [0.098, [0.954, 0.954, 0.954]], - [0.1, [0.954, 0.954, 0.954]], - [0.102, [0.952, 0.952, 0.952]], - [0.104, [0.952, 0.952, 0.952]], - [0.106, [0.95, 0.95, 0.95]], - [0.108, [0.95, 0.95, 0.95]], - [0.11, [0.948, 0.948, 0.948]], - [0.112, [0.948, 0.948, 0.948]], - [0.114, [0.946, 0.946, 0.946]], - [0.115, [0.946, 0.946, 0.946]], - [0.117, [0.945, 0.945, 0.945]], - [0.119, [0.945, 0.945, 0.945]], - [0.121, [0.943, 0.943, 0.943]], - [0.123, [0.943, 0.943, 0.943]], - [0.125, [0.941, 0.941, 0.941]], - [0.127, [0.941, 0.941, 0.941]], - [0.129, [0.938, 0.938, 0.938]], - [0.131, [0.938, 0.938, 0.938]], - [0.133, [0.935, 0.935, 0.935]], - [0.135, [0.935, 0.935, 0.935]], - [0.137, [0.932, 0.932, 0.932]], - [0.139, [0.932, 0.932, 0.932]], - [0.141, [0.93, 0.93, 0.93]], - [0.143, [0.93, 0.93, 0.93]], - [0.145, [0.927, 0.927, 0.927]], - [0.147, [0.927, 0.927, 0.927]], - [0.149, [0.924, 0.924, 0.924]], - [0.151, [0.924, 0.924, 0.924]], - [0.153, [0.921, 0.921, 0.921]], - [0.155, [0.921, 0.921, 0.921]], - [0.157, [0.918, 0.918, 0.918]], - [0.159, [0.918, 0.918, 0.918]], - [0.16, [0.915, 0.915, 0.915]], - [0.162, [0.915, 0.915, 0.915]], - [0.164, [0.913, 0.913, 0.913]], - [0.166, [0.913, 0.913, 0.913]], - [0.168, [0.91, 0.91, 0.91]], - [0.17, [0.91, 0.91, 0.91]], - [0.172, [0.907, 0.907, 0.907]], - [0.174, [0.907, 0.907, 0.907]], - [0.176, [0.904, 0.904, 0.904]], - [0.178, [0.904, 0.904, 0.904]], - [0.18, [0.901, 0.901, 0.901]], - [0.182, [0.901, 0.901, 0.901]], - [0.184, [0.898, 0.898, 0.898]], - [0.186, [0.898, 0.898, 0.898]], - [0.188, [0.896, 0.896, 0.896]], - [0.19, [0.896, 0.896, 0.896]], - [0.192, [0.893, 0.893, 0.893]], - [0.194, [0.893, 0.893, 0.893]], - [0.196, [0.89, 0.89, 0.89]], - [0.198, [0.89, 0.89, 0.89]], - [0.2, [0.887, 0.887, 0.887]], - [0.202, [0.887, 0.887, 0.887]], - [0.204, [0.884, 0.884, 0.884]], - [0.205, [0.884, 0.884, 0.884]], - [0.207, [0.881, 0.881, 0.881]], - [0.209, [0.881, 0.881, 0.881]], - [0.211, [0.879, 0.879, 0.879]], - [0.213, [0.879, 0.879, 0.879]], - [0.215, [0.876, 0.876, 0.876]], - [0.217, [0.876, 0.876, 0.876]], - [0.219, [0.873, 0.873, 0.873]], - [0.221, [0.873, 0.873, 0.873]], - [0.223, [0.87, 0.87, 0.87]], - [0.225, [0.87, 0.87, 0.87]], - [0.227, [0.867, 0.867, 0.867]], - [0.229, [0.867, 0.867, 0.867]], - [0.231, [0.864, 0.864, 0.864]], - [0.233, [0.864, 0.864, 0.864]], - [0.235, [0.862, 0.862, 0.862]], - [0.237, [0.862, 0.862, 0.862]], - [0.239, [0.859, 0.859, 0.859]], - [0.241, [0.859, 0.859, 0.859]], - [0.243, [0.856, 0.856, 0.856]], - [0.245, [0.856, 0.856, 0.856]], - [0.247, [0.853, 0.853, 0.853]], - [0.249, [0.853, 0.853, 0.853]], - [0.25, [0.85, 0.85, 0.85]], - [0.252, [0.85, 0.85, 0.85]], - [0.254, [0.847, 0.847, 0.847]], - [0.256, [0.847, 0.847, 0.847]], - [0.258, [0.843, 0.843, 0.843]], - [0.26, [0.843, 0.843, 0.843]], - [0.262, [0.84, 0.84, 0.84]], - [0.264, [0.84, 0.84, 0.84]], - [0.266, [0.836, 0.836, 0.836]], - [0.268, [0.836, 0.836, 0.836]], - [0.27, [0.833, 0.833, 0.833]], - [0.272, [0.833, 0.833, 0.833]], - [0.274, [0.829, 0.829, 0.829]], - [0.276, [0.829, 0.829, 0.829]], - [0.278, [0.826, 0.826, 0.826]], - [0.28, [0.826, 0.826, 0.826]], - [0.282, [0.823, 0.823, 0.823]], - [0.284, [0.823, 0.823, 0.823]], - [0.286, [0.819, 0.819, 0.819]], - [0.288, [0.819, 0.819, 0.819]], - [0.29, [0.816, 0.816, 0.816]], - [0.292, [0.816, 0.816, 0.816]], - [0.294, [0.812, 0.812, 0.812]], - [0.295, [0.812, 0.812, 0.812]], - [0.297, [0.809, 0.809, 0.809]], - [0.299, [0.809, 0.809, 0.809]], - [0.301, [0.805, 0.805, 0.805]], - [0.303, [0.805, 0.805, 0.805]], - [0.305, [0.802, 0.802, 0.802]], - [0.307, [0.802, 0.802, 0.802]], - [0.309, [0.798, 0.798, 0.798]], - [0.311, [0.798, 0.798, 0.798]], - [0.313, [0.795, 0.795, 0.795]], - [0.315, [0.795, 0.795, 0.795]], - [0.317, [0.792, 0.792, 0.792]], - [0.319, [0.792, 0.792, 0.792]], - [0.321, [0.788, 0.788, 0.788]], - [0.323, [0.788, 0.788, 0.788]], - [0.325, [0.785, 0.785, 0.785]], - [0.327, [0.785, 0.785, 0.785]], - [0.329, [0.781, 0.781, 0.781]], - [0.331, [0.781, 0.781, 0.781]], - [0.333, [0.778, 0.778, 0.778]], - [0.335, [0.778, 0.778, 0.778]], - [0.337, [0.774, 0.774, 0.774]], - [0.339, [0.774, 0.774, 0.774]], - [0.341, [0.771, 0.771, 0.771]], - [0.342, [0.771, 0.771, 0.771]], - [0.344, [0.767, 0.767, 0.767]], - [0.346, [0.767, 0.767, 0.767]], - [0.348, [0.764, 0.764, 0.764]], - [0.35, [0.764, 0.764, 0.764]], - [0.352, [0.761, 0.761, 0.761]], - [0.354, [0.761, 0.761, 0.761]], - [0.356, [0.757, 0.757, 0.757]], - [0.358, [0.757, 0.757, 0.757]], - [0.36, [0.754, 0.754, 0.754]], - [0.362, [0.754, 0.754, 0.754]], - [0.364, [0.75, 0.75, 0.75]], - [0.366, [0.75, 0.75, 0.75]], - [0.368, [0.747, 0.747, 0.747]], - [0.37, [0.747, 0.747, 0.747]], - [0.372, [0.743, 0.743, 0.743]], - [0.374, [0.743, 0.743, 0.743]], - [0.376, [0.739, 0.739, 0.739]], - [0.378, [0.739, 0.739, 0.739]], - [0.38, [0.735, 0.735, 0.735]], - [0.382, [0.735, 0.735, 0.735]], - [0.384, [0.73, 0.73, 0.73]], - [0.386, [0.73, 0.73, 0.73]], - [0.387, [0.725, 0.725, 0.725]], - [0.389, [0.725, 0.725, 0.725]], - [0.391, [0.72, 0.72, 0.72]], - [0.393, [0.72, 0.72, 0.72]], - [0.395, [0.715, 0.715, 0.715]], - [0.397, [0.715, 0.715, 0.715]], - [0.399, [0.711, 0.711, 0.711]], - [0.401, [0.711, 0.711, 0.711]], - [0.403, [0.706, 0.706, 0.706]], - [0.405, [0.706, 0.706, 0.706]], - [0.407, [0.701, 0.701, 0.701]], - [0.409, [0.701, 0.701, 0.701]], - [0.411, [0.696, 0.696, 0.696]], - [0.413, [0.696, 0.696, 0.696]], - [0.415, [0.691, 0.691, 0.691]], - [0.417, [0.691, 0.691, 0.691]], - [0.419, [0.687, 0.687, 0.687]], - [0.421, [0.687, 0.687, 0.687]], - [0.423, [0.682, 0.682, 0.682]], - [0.425, [0.682, 0.682, 0.682]], - [0.427, [0.677, 0.677, 0.677]], - [0.429, [0.677, 0.677, 0.677]], - [0.431, [0.672, 0.672, 0.672]], - [0.432, [0.672, 0.672, 0.672]], - [0.434, [0.667, 0.667, 0.667]], - [0.436, [0.667, 0.667, 0.667]], - [0.438, [0.663, 0.663, 0.663]], - [0.44, [0.663, 0.663, 0.663]], - [0.442, [0.658, 0.658, 0.658]], - [0.444, [0.658, 0.658, 0.658]], - [0.446, [0.653, 0.653, 0.653]], - [0.448, [0.653, 0.653, 0.653]], - [0.45, [0.648, 0.648, 0.648]], - [0.452, [0.648, 0.648, 0.648]], - [0.454, [0.643, 0.643, 0.643]], - [0.456, [0.643, 0.643, 0.643]], - [0.458, [0.639, 0.639, 0.639]], - [0.46, [0.639, 0.639, 0.639]], - [0.462, [0.634, 0.634, 0.634]], - [0.464, [0.634, 0.634, 0.634]], - [0.466, [0.629, 0.629, 0.629]], - [0.468, [0.629, 0.629, 0.629]], - [0.47, [0.624, 0.624, 0.624]], - [0.472, [0.624, 0.624, 0.624]], - [0.474, [0.619, 0.619, 0.619]], - [0.476, [0.619, 0.619, 0.619]], - [0.477, [0.615, 0.615, 0.615]], - [0.479, [0.615, 0.615, 0.615]], - [0.481, [0.61, 0.61, 0.61]], - [0.483, [0.61, 0.61, 0.61]], - [0.485, [0.605, 0.605, 0.605]], - [0.487, [0.605, 0.605, 0.605]], - [0.489, [0.6, 0.6, 0.6]], - [0.491, [0.6, 0.6, 0.6]], - [0.493, [0.595, 0.595, 0.595]], - [0.495, [0.595, 0.595, 0.595]], - [0.497, [0.591, 0.591, 0.591]], - [0.499, [0.591, 0.591, 0.591]], - [0.501, [0.586, 0.586, 0.586]], - [0.503, [0.586, 0.586, 0.586]], - [0.505, [0.582, 0.582, 0.582]], - [0.507, [0.582, 0.582, 0.582]], - [0.509, [0.577, 0.577, 0.577]], - [0.511, [0.577, 0.577, 0.577]], - [0.513, [0.573, 0.573, 0.573]], - [0.515, [0.573, 0.573, 0.573]], - [0.517, [0.569, 0.569, 0.569]], - [0.519, [0.569, 0.569, 0.569]], - [0.521, [0.565, 0.565, 0.565]], - [0.523, [0.565, 0.565, 0.565]], - [0.524, [0.56, 0.56, 0.56]], - [0.526, [0.56, 0.56, 0.56]], - [0.528, [0.556, 0.556, 0.556]], - [0.53, [0.556, 0.556, 0.556]], - [0.532, [0.552, 0.552, 0.552]], - [0.534, [0.552, 0.552, 0.552]], - [0.536, [0.547, 0.547, 0.547]], - [0.538, [0.547, 0.547, 0.547]], - [0.54, [0.543, 0.543, 0.543]], - [0.542, [0.543, 0.543, 0.543]], - [0.544, [0.539, 0.539, 0.539]], - [0.546, [0.539, 0.539, 0.539]], - [0.548, [0.534, 0.534, 0.534]], - [0.55, [0.534, 0.534, 0.534]], - [0.552, [0.53, 0.53, 0.53]], - [0.554, [0.53, 0.53, 0.53]], - [0.556, [0.526, 0.526, 0.526]], - [0.558, [0.526, 0.526, 0.526]], - [0.56, [0.521, 0.521, 0.521]], - [0.562, [0.521, 0.521, 0.521]], - [0.564, [0.517, 0.517, 0.517]], - [0.566, [0.517, 0.517, 0.517]], - [0.568, [0.513, 0.513, 0.513]], - [0.569, [0.513, 0.513, 0.513]], - [0.571, [0.509, 0.509, 0.509]], - [0.573, [0.509, 0.509, 0.509]], - [0.575, [0.504, 0.504, 0.504]], - [0.577, [0.504, 0.504, 0.504]], - [0.579, [0.5, 0.5, 0.5]], - [0.581, [0.5, 0.5, 0.5]], - [0.583, [0.496, 0.496, 0.496]], - [0.585, [0.496, 0.496, 0.496]], - [0.587, [0.491, 0.491, 0.491]], - [0.589, [0.491, 0.491, 0.491]], - [0.591, [0.487, 0.487, 0.487]], - [0.593, [0.487, 0.487, 0.487]], - [0.595, [0.483, 0.483, 0.483]], - [0.597, [0.483, 0.483, 0.483]], - [0.599, [0.478, 0.478, 0.478]], - [0.601, [0.478, 0.478, 0.478]], - [0.603, [0.474, 0.474, 0.474]], - [0.605, [0.474, 0.474, 0.474]], - [0.607, [0.47, 0.47, 0.47]], - [0.609, [0.47, 0.47, 0.47]], - [0.611, [0.466, 0.466, 0.466]], - [0.613, [0.466, 0.466, 0.466]], - [0.614, [0.461, 0.461, 0.461]], - [0.616, [0.461, 0.461, 0.461]], - [0.618, [0.457, 0.457, 0.457]], - [0.62, [0.457, 0.457, 0.457]], - [0.622, [0.453, 0.453, 0.453]], - [0.624, [0.453, 0.453, 0.453]], - [0.626, [0.448, 0.448, 0.448]], - [0.628, [0.448, 0.448, 0.448]], - [0.63, [0.444, 0.444, 0.444]], - [0.632, [0.444, 0.444, 0.444]], - [0.634, [0.44, 0.44, 0.44]], - [0.636, [0.44, 0.44, 0.44]], - [0.638, [0.436, 0.436, 0.436]], - [0.64, [0.436, 0.436, 0.436]], - [0.642, [0.432, 0.432, 0.432]], - [0.644, [0.432, 0.432, 0.432]], - [0.646, [0.428, 0.428, 0.428]], - [0.648, [0.428, 0.428, 0.428]], - [0.65, [0.424, 0.424, 0.424]], - [0.652, [0.424, 0.424, 0.424]], - [0.654, [0.42, 0.42, 0.42]], - [0.656, [0.42, 0.42, 0.42]], - [0.658, [0.416, 0.416, 0.416]], - [0.659, [0.416, 0.416, 0.416]], - [0.661, [0.412, 0.412, 0.412]], - [0.663, [0.412, 0.412, 0.412]], - [0.665, [0.408, 0.408, 0.408]], - [0.667, [0.408, 0.408, 0.408]], - [0.669, [0.404, 0.404, 0.404]], - [0.671, [0.404, 0.404, 0.404]], - [0.673, [0.4, 0.4, 0.4]], - [0.675, [0.4, 0.4, 0.4]], - [0.677, [0.396, 0.396, 0.396]], - [0.679, [0.396, 0.396, 0.396]], - [0.681, [0.392, 0.392, 0.392]], - [0.683, [0.392, 0.392, 0.392]], - [0.685, [0.388, 0.388, 0.388]], - [0.687, [0.388, 0.388, 0.388]], - [0.689, [0.383, 0.383, 0.383]], - [0.691, [0.383, 0.383, 0.383]], - [0.693, [0.379, 0.379, 0.379]], - [0.695, [0.379, 0.379, 0.379]], - [0.697, [0.375, 0.375, 0.375]], - [0.699, [0.375, 0.375, 0.375]], - [0.701, [0.371, 0.371, 0.371]], - [0.703, [0.371, 0.371, 0.371]], - [0.705, [0.367, 0.367, 0.367]], - [0.706, [0.367, 0.367, 0.367]], - [0.708, [0.363, 0.363, 0.363]], - [0.71, [0.363, 0.363, 0.363]], - [0.712, [0.359, 0.359, 0.359]], - [0.714, [0.359, 0.359, 0.359]], - [0.716, [0.355, 0.355, 0.355]], - [0.718, [0.355, 0.355, 0.355]], - [0.72, [0.351, 0.351, 0.351]], - [0.722, [0.351, 0.351, 0.351]], - [0.724, [0.347, 0.347, 0.347]], - [0.726, [0.347, 0.347, 0.347]], - [0.728, [0.343, 0.343, 0.343]], - [0.73, [0.343, 0.343, 0.343]], - [0.732, [0.339, 0.339, 0.339]], - [0.734, [0.339, 0.339, 0.339]], - [0.736, [0.335, 0.335, 0.335]], - [0.738, [0.335, 0.335, 0.335]], - [0.74, [0.331, 0.331, 0.331]], - [0.742, [0.331, 0.331, 0.331]], - [0.744, [0.327, 0.327, 0.327]], - [0.746, [0.327, 0.327, 0.327]], - [0.748, [0.323, 0.323, 0.323]], - [0.75, [0.323, 0.323, 0.323]], - [0.751, [0.317, 0.317, 0.317]], - [0.753, [0.317, 0.317, 0.317]], - [0.755, [0.312, 0.312, 0.312]], - [0.757, [0.312, 0.312, 0.312]], - [0.759, [0.306, 0.306, 0.306]], - [0.761, [0.306, 0.306, 0.306]], - [0.763, [0.301, 0.301, 0.301]], - [0.765, [0.301, 0.301, 0.301]], - [0.767, [0.295, 0.295, 0.295]], - [0.769, [0.295, 0.295, 0.295]], - [0.771, [0.29, 0.29, 0.29]], - [0.773, [0.29, 0.29, 0.29]], - [0.775, [0.284, 0.284, 0.284]], - [0.777, [0.284, 0.284, 0.284]], - [0.779, [0.279, 0.279, 0.279]], - [0.781, [0.279, 0.279, 0.279]], - [0.783, [0.273, 0.273, 0.273]], - [0.785, [0.273, 0.273, 0.273]], - [0.787, [0.268, 0.268, 0.268]], - [0.789, [0.268, 0.268, 0.268]], - [0.791, [0.262, 0.262, 0.262]], - [0.793, [0.262, 0.262, 0.262]], - [0.795, [0.257, 0.257, 0.257]], - [0.796, [0.257, 0.257, 0.257]], - [0.798, [0.251, 0.251, 0.251]], - [0.8, [0.251, 0.251, 0.251]], - [0.802, [0.245, 0.245, 0.245]], - [0.804, [0.245, 0.245, 0.245]], - [0.806, [0.24, 0.24, 0.24]], - [0.808, [0.24, 0.24, 0.24]], - [0.81, [0.234, 0.234, 0.234]], - [0.812, [0.234, 0.234, 0.234]], - [0.814, [0.229, 0.229, 0.229]], - [0.816, [0.229, 0.229, 0.229]], - [0.818, [0.223, 0.223, 0.223]], - [0.82, [0.223, 0.223, 0.223]], - [0.822, [0.218, 0.218, 0.218]], - [0.824, [0.218, 0.218, 0.218]], - [0.826, [0.212, 0.212, 0.212]], - [0.828, [0.212, 0.212, 0.212]], - [0.83, [0.207, 0.207, 0.207]], - [0.832, [0.207, 0.207, 0.207]], - [0.834, [0.201, 0.201, 0.201]], - [0.836, [0.201, 0.201, 0.201]], - [0.838, [0.196, 0.196, 0.196]], - [0.84, [0.196, 0.196, 0.196]], - [0.841, [0.19, 0.19, 0.19]], - [0.843, [0.19, 0.19, 0.19]], - [0.845, [0.185, 0.185, 0.185]], - [0.847, [0.185, 0.185, 0.185]], - [0.849, [0.179, 0.179, 0.179]], - [0.851, [0.179, 0.179, 0.179]], - [0.853, [0.173, 0.173, 0.173]], - [0.855, [0.173, 0.173, 0.173]], - [0.857, [0.168, 0.168, 0.168]], - [0.859, [0.168, 0.168, 0.168]], - [0.861, [0.162, 0.162, 0.162]], - [0.863, [0.162, 0.162, 0.162]], - [0.865, [0.157, 0.157, 0.157]], - [0.867, [0.157, 0.157, 0.157]], - [0.869, [0.151, 0.151, 0.151]], - [0.871, [0.151, 0.151, 0.151]], - [0.873, [0.146, 0.146, 0.146]], - [0.875, [0.146, 0.146, 0.146]], - [0.877, [0.141, 0.141, 0.141]], - [0.879, [0.141, 0.141, 0.141]], - [0.881, [0.137, 0.137, 0.137]], - [0.883, [0.137, 0.137, 0.137]], - [0.885, [0.132, 0.132, 0.132]], - [0.886, [0.132, 0.132, 0.132]], - [0.888, [0.127, 0.127, 0.127]], - [0.89, [0.127, 0.127, 0.127]], - [0.892, [0.123, 0.123, 0.123]], - [0.894, [0.123, 0.123, 0.123]], - [0.896, [0.118, 0.118, 0.118]], - [0.898, [0.118, 0.118, 0.118]], - [0.9, [0.114, 0.114, 0.114]], - [0.902, [0.114, 0.114, 0.114]], - [0.904, [0.109, 0.109, 0.109]], - [0.906, [0.109, 0.109, 0.109]], - [0.908, [0.105, 0.105, 0.105]], - [0.91, [0.105, 0.105, 0.105]], - [0.912, [0.1, 0.1, 0.1]], - [0.914, [0.1, 0.1, 0.1]], - [0.916, [0.096, 0.096, 0.096]], - [0.918, [0.096, 0.096, 0.096]], - [0.92, [0.091, 0.091, 0.091]], - [0.922, [0.091, 0.091, 0.091]], - [0.924, [0.086, 0.086, 0.086]], - [0.926, [0.086, 0.086, 0.086]], - [0.928, [0.082, 0.082, 0.082]], - [0.93, [0.082, 0.082, 0.082]], - [0.932, [0.077, 0.077, 0.077]], - [0.933, [0.077, 0.077, 0.077]], - [0.935, [0.073, 0.073, 0.073]], - [0.937, [0.073, 0.073, 0.073]], - [0.939, [0.068, 0.068, 0.068]], - [0.941, [0.068, 0.068, 0.068]], - [0.943, [0.064, 0.064, 0.064]], - [0.945, [0.064, 0.064, 0.064]], - [0.947, [0.059, 0.059, 0.059]], - [0.949, [0.059, 0.059, 0.059]], - [0.951, [0.055, 0.055, 0.055]], - [0.953, [0.055, 0.055, 0.055]], - [0.955, [0.05, 0.05, 0.05]], - [0.957, [0.05, 0.05, 0.05]], - [0.959, [0.046, 0.046, 0.046]], - [0.961, [0.046, 0.046, 0.046]], - [0.963, [0.041, 0.041, 0.041]], - [0.965, [0.041, 0.041, 0.041]], - [0.967, [0.036, 0.036, 0.036]], - [0.969, [0.036, 0.036, 0.036]], - [0.971, [0.032, 0.032, 0.032]], - [0.973, [0.032, 0.032, 0.032]], - [0.975, [0.027, 0.027, 0.027]], - [0.977, [0.027, 0.027, 0.027]], - [0.978, [0.023, 0.023, 0.023]], - [0.98, [0.023, 0.023, 0.023]], - [0.982, [0.018, 0.018, 0.018]], - [0.984, [0.018, 0.018, 0.018]], - [0.986, [0.014, 0.014, 0.014]], - [0.988, [0.014, 0.014, 0.014]], - [0.99, [0.009, 0.009, 0.009]], - [0.992, [0.009, 0.009, 0.009]], - [0.994, [0.005, 0.005, 0.005]], - [0.996, [0.005, 0.005, 0.005]], - [0.998, [0.0, 0.0, 0.0]], - [1.0, [0.0, 0.0, 0.0]], - ], + value: convertColorPaletteToColorMap(ouiPaletteGray(COLOR_MAP_LENGTH)), }, [ColorSchemas.Reds]: { id: ColorSchemas.Reds, label: i18n.translate('charts.colormaps.redsText', { defaultMessage: 'Reds', }), - value: [ - [0.0, [1.0, 0.961, 0.941]], - [0.002, [1.0, 0.961, 0.941]], - [0.004, [1.0, 0.958, 0.937]], - [0.006, [1.0, 0.958, 0.937]], - [0.008, [1.0, 0.956, 0.934]], - [0.01, [1.0, 0.956, 0.934]], - [0.012, [1.0, 0.953, 0.93]], - [0.014, [1.0, 0.953, 0.93]], - [0.016, [1.0, 0.95, 0.926]], - [0.018, [1.0, 0.95, 0.926]], - [0.02, [0.999, 0.948, 0.923]], - [0.022, [0.999, 0.948, 0.923]], - [0.023, [0.999, 0.945, 0.919]], - [0.025, [0.999, 0.945, 0.919]], - [0.027, [0.999, 0.943, 0.915]], - [0.029, [0.999, 0.943, 0.915]], - [0.031, [0.999, 0.94, 0.912]], - [0.033, [0.999, 0.94, 0.912]], - [0.035, [0.999, 0.938, 0.908]], - [0.037, [0.999, 0.938, 0.908]], - [0.039, [0.999, 0.935, 0.904]], - [0.041, [0.999, 0.935, 0.904]], - [0.043, [0.999, 0.932, 0.901]], - [0.045, [0.999, 0.932, 0.901]], - [0.047, [0.999, 0.93, 0.897]], - [0.049, [0.999, 0.93, 0.897]], - [0.051, [0.998, 0.927, 0.893]], - [0.053, [0.998, 0.927, 0.893]], - [0.055, [0.998, 0.925, 0.89]], - [0.057, [0.998, 0.925, 0.89]], - [0.059, [0.998, 0.922, 0.886]], - [0.061, [0.998, 0.922, 0.886]], - [0.063, [0.998, 0.919, 0.882]], - [0.065, [0.998, 0.919, 0.882]], - [0.067, [0.998, 0.917, 0.878]], - [0.068, [0.998, 0.917, 0.878]], - [0.07, [0.998, 0.914, 0.875]], - [0.072, [0.998, 0.914, 0.875]], - [0.074, [0.998, 0.912, 0.871]], - [0.076, [0.998, 0.912, 0.871]], - [0.078, [0.998, 0.909, 0.867]], - [0.08, [0.998, 0.909, 0.867]], - [0.082, [0.997, 0.907, 0.864]], - [0.084, [0.997, 0.907, 0.864]], - [0.086, [0.997, 0.904, 0.86]], - [0.088, [0.997, 0.904, 0.86]], - [0.09, [0.997, 0.901, 0.856]], - [0.092, [0.997, 0.901, 0.856]], - [0.094, [0.997, 0.899, 0.853]], - [0.096, [0.997, 0.899, 0.853]], - [0.098, [0.997, 0.896, 0.849]], - [0.1, [0.997, 0.896, 0.849]], - [0.102, [0.997, 0.894, 0.845]], - [0.104, [0.997, 0.894, 0.845]], - [0.106, [0.997, 0.891, 0.842]], - [0.108, [0.997, 0.891, 0.842]], - [0.11, [0.997, 0.888, 0.838]], - [0.112, [0.997, 0.888, 0.838]], - [0.114, [0.996, 0.886, 0.834]], - [0.115, [0.996, 0.886, 0.834]], - [0.117, [0.996, 0.883, 0.83]], - [0.119, [0.996, 0.883, 0.83]], - [0.121, [0.996, 0.881, 0.827]], - [0.123, [0.996, 0.881, 0.827]], - [0.125, [0.996, 0.878, 0.823]], - [0.127, [0.996, 0.878, 0.823]], - [0.129, [0.996, 0.873, 0.817]], - [0.131, [0.996, 0.873, 0.817]], - [0.133, [0.996, 0.869, 0.811]], - [0.135, [0.996, 0.869, 0.811]], - [0.137, [0.995, 0.864, 0.805]], - [0.139, [0.995, 0.864, 0.805]], - [0.141, [0.995, 0.86, 0.799]], - [0.143, [0.995, 0.86, 0.799]], - [0.145, [0.995, 0.855, 0.793]], - [0.147, [0.995, 0.855, 0.793]], - [0.149, [0.995, 0.851, 0.787]], - [0.151, [0.995, 0.851, 0.787]], - [0.153, [0.994, 0.846, 0.781]], - [0.155, [0.994, 0.846, 0.781]], - [0.157, [0.994, 0.841, 0.775]], - [0.159, [0.994, 0.841, 0.775]], - [0.16, [0.994, 0.837, 0.769]], - [0.162, [0.994, 0.837, 0.769]], - [0.164, [0.994, 0.832, 0.762]], - [0.166, [0.994, 0.832, 0.762]], - [0.168, [0.993, 0.828, 0.756]], - [0.17, [0.993, 0.828, 0.756]], - [0.172, [0.993, 0.823, 0.75]], - [0.174, [0.993, 0.823, 0.75]], - [0.176, [0.993, 0.819, 0.744]], - [0.178, [0.993, 0.819, 0.744]], - [0.18, [0.993, 0.814, 0.738]], - [0.182, [0.993, 0.814, 0.738]], - [0.184, [0.992, 0.81, 0.732]], - [0.186, [0.992, 0.81, 0.732]], - [0.188, [0.992, 0.805, 0.726]], - [0.19, [0.992, 0.805, 0.726]], - [0.192, [0.992, 0.8, 0.72]], - [0.194, [0.992, 0.8, 0.72]], - [0.196, [0.992, 0.796, 0.714]], - [0.198, [0.992, 0.796, 0.714]], - [0.2, [0.991, 0.791, 0.708]], - [0.202, [0.991, 0.791, 0.708]], - [0.204, [0.991, 0.787, 0.702]], - [0.205, [0.991, 0.787, 0.702]], - [0.207, [0.991, 0.782, 0.696]], - [0.209, [0.991, 0.782, 0.696]], - [0.211, [0.991, 0.778, 0.69]], - [0.213, [0.991, 0.778, 0.69]], - [0.215, [0.99, 0.773, 0.684]], - [0.217, [0.99, 0.773, 0.684]], - [0.219, [0.99, 0.769, 0.678]], - [0.221, [0.99, 0.769, 0.678]], - [0.223, [0.99, 0.764, 0.672]], - [0.225, [0.99, 0.764, 0.672]], - [0.227, [0.99, 0.76, 0.666]], - [0.229, [0.99, 0.76, 0.666]], - [0.231, [0.989, 0.755, 0.66]], - [0.233, [0.989, 0.755, 0.66]], - [0.235, [0.989, 0.75, 0.654]], - [0.237, [0.989, 0.75, 0.654]], - [0.239, [0.989, 0.746, 0.648]], - [0.241, [0.989, 0.746, 0.648]], - [0.243, [0.989, 0.741, 0.642]], - [0.245, [0.989, 0.741, 0.642]], - [0.247, [0.988, 0.737, 0.636]], - [0.249, [0.988, 0.737, 0.636]], - [0.25, [0.988, 0.732, 0.63]], - [0.252, [0.988, 0.732, 0.63]], - [0.254, [0.988, 0.727, 0.624]], - [0.256, [0.988, 0.727, 0.624]], - [0.258, [0.988, 0.722, 0.618]], - [0.26, [0.988, 0.722, 0.618]], - [0.262, [0.988, 0.717, 0.613]], - [0.264, [0.988, 0.717, 0.613]], - [0.266, [0.988, 0.712, 0.607]], - [0.268, [0.988, 0.712, 0.607]], - [0.27, [0.988, 0.707, 0.601]], - [0.272, [0.988, 0.707, 0.601]], - [0.274, [0.988, 0.702, 0.595]], - [0.276, [0.988, 0.702, 0.595]], - [0.278, [0.988, 0.697, 0.589]], - [0.28, [0.988, 0.697, 0.589]], - [0.282, [0.988, 0.692, 0.584]], - [0.284, [0.988, 0.692, 0.584]], - [0.286, [0.988, 0.687, 0.578]], - [0.288, [0.988, 0.687, 0.578]], - [0.29, [0.988, 0.682, 0.572]], - [0.292, [0.988, 0.682, 0.572]], - [0.294, [0.988, 0.677, 0.566]], - [0.295, [0.988, 0.677, 0.566]], - [0.297, [0.988, 0.672, 0.561]], - [0.299, [0.988, 0.672, 0.561]], - [0.301, [0.988, 0.666, 0.555]], - [0.303, [0.988, 0.666, 0.555]], - [0.305, [0.988, 0.661, 0.549]], - [0.307, [0.988, 0.661, 0.549]], - [0.309, [0.988, 0.656, 0.543]], - [0.311, [0.988, 0.656, 0.543]], - [0.313, [0.988, 0.651, 0.537]], - [0.315, [0.988, 0.651, 0.537]], - [0.317, [0.988, 0.646, 0.532]], - [0.319, [0.988, 0.646, 0.532]], - [0.321, [0.988, 0.641, 0.526]], - [0.323, [0.988, 0.641, 0.526]], - [0.325, [0.988, 0.636, 0.52]], - [0.327, [0.988, 0.636, 0.52]], - [0.329, [0.988, 0.631, 0.514]], - [0.331, [0.988, 0.631, 0.514]], - [0.333, [0.988, 0.626, 0.508]], - [0.335, [0.988, 0.626, 0.508]], - [0.337, [0.988, 0.621, 0.503]], - [0.339, [0.988, 0.621, 0.503]], - [0.341, [0.988, 0.616, 0.497]], - [0.342, [0.988, 0.616, 0.497]], - [0.344, [0.988, 0.611, 0.491]], - [0.346, [0.988, 0.611, 0.491]], - [0.348, [0.988, 0.606, 0.485]], - [0.35, [0.988, 0.606, 0.485]], - [0.352, [0.988, 0.601, 0.48]], - [0.354, [0.988, 0.601, 0.48]], - [0.356, [0.988, 0.596, 0.474]], - [0.358, [0.988, 0.596, 0.474]], - [0.36, [0.988, 0.591, 0.468]], - [0.362, [0.988, 0.591, 0.468]], - [0.364, [0.988, 0.586, 0.462]], - [0.366, [0.988, 0.586, 0.462]], - [0.368, [0.988, 0.581, 0.456]], - [0.37, [0.988, 0.581, 0.456]], - [0.372, [0.988, 0.576, 0.451]], - [0.374, [0.988, 0.576, 0.451]], - [0.376, [0.988, 0.571, 0.445]], - [0.378, [0.988, 0.571, 0.445]], - [0.38, [0.988, 0.566, 0.44]], - [0.382, [0.988, 0.566, 0.44]], - [0.384, [0.988, 0.561, 0.435]], - [0.386, [0.988, 0.561, 0.435]], - [0.387, [0.988, 0.556, 0.43]], - [0.389, [0.988, 0.556, 0.43]], - [0.391, [0.988, 0.551, 0.426]], - [0.393, [0.988, 0.551, 0.426]], - [0.395, [0.988, 0.546, 0.421]], - [0.397, [0.988, 0.546, 0.421]], - [0.399, [0.987, 0.541, 0.416]], - [0.401, [0.987, 0.541, 0.416]], - [0.403, [0.987, 0.536, 0.411]], - [0.405, [0.987, 0.536, 0.411]], - [0.407, [0.987, 0.531, 0.406]], - [0.409, [0.987, 0.531, 0.406]], - [0.411, [0.987, 0.526, 0.401]], - [0.413, [0.987, 0.526, 0.401]], - [0.415, [0.987, 0.521, 0.396]], - [0.417, [0.987, 0.521, 0.396]], - [0.419, [0.987, 0.517, 0.391]], - [0.421, [0.987, 0.517, 0.391]], - [0.423, [0.987, 0.512, 0.386]], - [0.425, [0.987, 0.512, 0.386]], - [0.427, [0.987, 0.507, 0.381]], - [0.429, [0.987, 0.507, 0.381]], - [0.431, [0.986, 0.502, 0.376]], - [0.432, [0.986, 0.502, 0.376]], - [0.434, [0.986, 0.497, 0.371]], - [0.436, [0.986, 0.497, 0.371]], - [0.438, [0.986, 0.492, 0.366]], - [0.44, [0.986, 0.492, 0.366]], - [0.442, [0.986, 0.487, 0.362]], - [0.444, [0.986, 0.487, 0.362]], - [0.446, [0.986, 0.482, 0.357]], - [0.448, [0.986, 0.482, 0.357]], - [0.45, [0.986, 0.477, 0.352]], - [0.452, [0.986, 0.477, 0.352]], - [0.454, [0.986, 0.472, 0.347]], - [0.456, [0.986, 0.472, 0.347]], - [0.458, [0.986, 0.467, 0.342]], - [0.46, [0.986, 0.467, 0.342]], - [0.462, [0.985, 0.462, 0.337]], - [0.464, [0.985, 0.462, 0.337]], - [0.466, [0.985, 0.458, 0.332]], - [0.468, [0.985, 0.458, 0.332]], - [0.47, [0.985, 0.453, 0.327]], - [0.472, [0.985, 0.453, 0.327]], - [0.474, [0.985, 0.448, 0.322]], - [0.476, [0.985, 0.448, 0.322]], - [0.477, [0.985, 0.443, 0.317]], - [0.479, [0.985, 0.443, 0.317]], - [0.481, [0.985, 0.438, 0.312]], - [0.483, [0.985, 0.438, 0.312]], - [0.485, [0.985, 0.433, 0.307]], - [0.487, [0.985, 0.433, 0.307]], - [0.489, [0.985, 0.428, 0.302]], - [0.491, [0.985, 0.428, 0.302]], - [0.493, [0.984, 0.423, 0.298]], - [0.495, [0.984, 0.423, 0.298]], - [0.497, [0.984, 0.418, 0.293]], - [0.499, [0.984, 0.418, 0.293]], - [0.501, [0.984, 0.413, 0.288]], - [0.503, [0.984, 0.413, 0.288]], - [0.505, [0.982, 0.407, 0.285]], - [0.507, [0.982, 0.407, 0.285]], - [0.509, [0.981, 0.401, 0.281]], - [0.511, [0.981, 0.401, 0.281]], - [0.513, [0.979, 0.395, 0.277]], - [0.515, [0.979, 0.395, 0.277]], - [0.517, [0.978, 0.39, 0.274]], - [0.519, [0.978, 0.39, 0.274]], - [0.521, [0.976, 0.384, 0.27]], - [0.523, [0.976, 0.384, 0.27]], - [0.524, [0.975, 0.378, 0.266]], - [0.526, [0.975, 0.378, 0.266]], - [0.528, [0.973, 0.372, 0.263]], - [0.53, [0.973, 0.372, 0.263]], - [0.532, [0.972, 0.367, 0.259]], - [0.534, [0.972, 0.367, 0.259]], - [0.536, [0.97, 0.361, 0.255]], - [0.538, [0.97, 0.361, 0.255]], - [0.54, [0.969, 0.355, 0.251]], - [0.542, [0.969, 0.355, 0.251]], - [0.544, [0.967, 0.349, 0.248]], - [0.546, [0.967, 0.349, 0.248]], - [0.548, [0.966, 0.343, 0.244]], - [0.55, [0.966, 0.343, 0.244]], - [0.552, [0.964, 0.338, 0.24]], - [0.554, [0.964, 0.338, 0.24]], - [0.556, [0.963, 0.332, 0.237]], - [0.558, [0.963, 0.332, 0.237]], - [0.56, [0.961, 0.326, 0.233]], - [0.562, [0.961, 0.326, 0.233]], - [0.564, [0.96, 0.32, 0.229]], - [0.566, [0.96, 0.32, 0.229]], - [0.568, [0.958, 0.314, 0.226]], - [0.569, [0.958, 0.314, 0.226]], - [0.571, [0.957, 0.309, 0.222]], - [0.573, [0.957, 0.309, 0.222]], - [0.575, [0.956, 0.303, 0.218]], - [0.577, [0.956, 0.303, 0.218]], - [0.579, [0.954, 0.297, 0.215]], - [0.581, [0.954, 0.297, 0.215]], - [0.583, [0.953, 0.291, 0.211]], - [0.585, [0.953, 0.291, 0.211]], - [0.587, [0.951, 0.286, 0.207]], - [0.589, [0.951, 0.286, 0.207]], - [0.591, [0.95, 0.28, 0.203]], - [0.593, [0.95, 0.28, 0.203]], - [0.595, [0.948, 0.274, 0.2]], - [0.597, [0.948, 0.274, 0.2]], - [0.599, [0.947, 0.268, 0.196]], - [0.601, [0.947, 0.268, 0.196]], - [0.603, [0.945, 0.262, 0.192]], - [0.605, [0.945, 0.262, 0.192]], - [0.607, [0.944, 0.257, 0.189]], - [0.609, [0.944, 0.257, 0.189]], - [0.611, [0.942, 0.251, 0.185]], - [0.613, [0.942, 0.251, 0.185]], - [0.614, [0.941, 0.245, 0.181]], - [0.616, [0.941, 0.245, 0.181]], - [0.618, [0.939, 0.239, 0.178]], - [0.62, [0.939, 0.239, 0.178]], - [0.622, [0.938, 0.234, 0.174]], - [0.624, [0.938, 0.234, 0.174]], - [0.626, [0.934, 0.229, 0.171]], - [0.628, [0.934, 0.229, 0.171]], - [0.63, [0.93, 0.224, 0.17]], - [0.632, [0.93, 0.224, 0.17]], - [0.634, [0.926, 0.22, 0.168]], - [0.636, [0.926, 0.22, 0.168]], - [0.638, [0.921, 0.216, 0.166]], - [0.64, [0.921, 0.216, 0.166]], - [0.642, [0.917, 0.211, 0.164]], - [0.644, [0.917, 0.211, 0.164]], - [0.646, [0.912, 0.207, 0.162]], - [0.648, [0.912, 0.207, 0.162]], - [0.65, [0.908, 0.203, 0.16]], - [0.652, [0.908, 0.203, 0.16]], - [0.654, [0.903, 0.199, 0.158]], - [0.656, [0.903, 0.199, 0.158]], - [0.658, [0.899, 0.194, 0.157]], - [0.659, [0.899, 0.194, 0.157]], - [0.661, [0.895, 0.19, 0.155]], - [0.663, [0.895, 0.19, 0.155]], - [0.665, [0.89, 0.186, 0.153]], - [0.667, [0.89, 0.186, 0.153]], - [0.669, [0.886, 0.181, 0.151]], - [0.671, [0.886, 0.181, 0.151]], - [0.673, [0.881, 0.177, 0.149]], - [0.675, [0.881, 0.177, 0.149]], - [0.677, [0.877, 0.173, 0.147]], - [0.679, [0.877, 0.173, 0.147]], - [0.681, [0.872, 0.168, 0.146]], - [0.683, [0.872, 0.168, 0.146]], - [0.685, [0.868, 0.164, 0.144]], - [0.687, [0.868, 0.164, 0.144]], - [0.689, [0.864, 0.16, 0.142]], - [0.691, [0.864, 0.16, 0.142]], - [0.693, [0.859, 0.155, 0.14]], - [0.695, [0.859, 0.155, 0.14]], - [0.697, [0.855, 0.151, 0.138]], - [0.699, [0.855, 0.151, 0.138]], - [0.701, [0.85, 0.147, 0.136]], - [0.703, [0.85, 0.147, 0.136]], - [0.705, [0.846, 0.143, 0.134]], - [0.706, [0.846, 0.143, 0.134]], - [0.708, [0.841, 0.138, 0.133]], - [0.71, [0.841, 0.138, 0.133]], - [0.712, [0.837, 0.134, 0.131]], - [0.714, [0.837, 0.134, 0.131]], - [0.716, [0.833, 0.13, 0.129]], - [0.718, [0.833, 0.13, 0.129]], - [0.72, [0.828, 0.125, 0.127]], - [0.722, [0.828, 0.125, 0.127]], - [0.724, [0.824, 0.121, 0.125]], - [0.726, [0.824, 0.121, 0.125]], - [0.728, [0.819, 0.117, 0.123]], - [0.73, [0.819, 0.117, 0.123]], - [0.732, [0.815, 0.112, 0.122]], - [0.734, [0.815, 0.112, 0.122]], - [0.736, [0.81, 0.108, 0.12]], - [0.738, [0.81, 0.108, 0.12]], - [0.74, [0.806, 0.104, 0.118]], - [0.742, [0.806, 0.104, 0.118]], - [0.744, [0.802, 0.1, 0.116]], - [0.746, [0.802, 0.1, 0.116]], - [0.748, [0.797, 0.095, 0.114]], - [0.75, [0.797, 0.095, 0.114]], - [0.751, [0.793, 0.093, 0.113]], - [0.753, [0.793, 0.093, 0.113]], - [0.755, [0.788, 0.092, 0.112]], - [0.757, [0.788, 0.092, 0.112]], - [0.759, [0.783, 0.091, 0.111]], - [0.761, [0.783, 0.091, 0.111]], - [0.763, [0.779, 0.09, 0.11]], - [0.765, [0.779, 0.09, 0.11]], - [0.767, [0.774, 0.089, 0.109]], - [0.769, [0.774, 0.089, 0.109]], - [0.771, [0.769, 0.088, 0.108]], - [0.773, [0.769, 0.088, 0.108]], - [0.775, [0.765, 0.087, 0.107]], - [0.777, [0.765, 0.087, 0.107]], - [0.779, [0.76, 0.086, 0.106]], - [0.781, [0.76, 0.086, 0.106]], - [0.783, [0.755, 0.084, 0.105]], - [0.785, [0.755, 0.084, 0.105]], - [0.787, [0.75, 0.083, 0.104]], - [0.789, [0.75, 0.083, 0.104]], - [0.791, [0.746, 0.082, 0.103]], - [0.793, [0.746, 0.082, 0.103]], - [0.795, [0.741, 0.081, 0.102]], - [0.796, [0.741, 0.081, 0.102]], - [0.798, [0.736, 0.08, 0.101]], - [0.8, [0.736, 0.08, 0.101]], - [0.802, [0.732, 0.079, 0.1]], - [0.804, [0.732, 0.079, 0.1]], - [0.806, [0.727, 0.078, 0.099]], - [0.808, [0.727, 0.078, 0.099]], - [0.81, [0.722, 0.077, 0.098]], - [0.812, [0.722, 0.077, 0.098]], - [0.814, [0.718, 0.076, 0.097]], - [0.816, [0.718, 0.076, 0.097]], - [0.818, [0.713, 0.074, 0.096]], - [0.82, [0.713, 0.074, 0.096]], - [0.822, [0.708, 0.073, 0.095]], - [0.824, [0.708, 0.073, 0.095]], - [0.826, [0.704, 0.072, 0.094]], - [0.828, [0.704, 0.072, 0.094]], - [0.83, [0.699, 0.071, 0.093]], - [0.832, [0.699, 0.071, 0.093]], - [0.834, [0.694, 0.07, 0.092]], - [0.836, [0.694, 0.07, 0.092]], - [0.838, [0.69, 0.069, 0.091]], - [0.84, [0.69, 0.069, 0.091]], - [0.841, [0.685, 0.068, 0.09]], - [0.843, [0.685, 0.068, 0.09]], - [0.845, [0.68, 0.067, 0.089]], - [0.847, [0.68, 0.067, 0.089]], - [0.849, [0.676, 0.066, 0.088]], - [0.851, [0.676, 0.066, 0.088]], - [0.853, [0.671, 0.064, 0.087]], - [0.855, [0.671, 0.064, 0.087]], - [0.857, [0.666, 0.063, 0.086]], - [0.859, [0.666, 0.063, 0.086]], - [0.861, [0.662, 0.062, 0.085]], - [0.863, [0.662, 0.062, 0.085]], - [0.865, [0.657, 0.061, 0.084]], - [0.867, [0.657, 0.061, 0.084]], - [0.869, [0.652, 0.06, 0.083]], - [0.871, [0.652, 0.06, 0.083]], - [0.873, [0.648, 0.059, 0.082]], - [0.875, [0.648, 0.059, 0.082]], - [0.877, [0.64, 0.057, 0.081]], - [0.879, [0.64, 0.057, 0.081]], - [0.881, [0.633, 0.055, 0.081]], - [0.883, [0.633, 0.055, 0.081]], - [0.885, [0.625, 0.054, 0.08]], - [0.886, [0.625, 0.054, 0.08]], - [0.888, [0.618, 0.052, 0.079]], - [0.89, [0.618, 0.052, 0.079]], - [0.892, [0.61, 0.05, 0.078]], - [0.894, [0.61, 0.05, 0.078]], - [0.896, [0.602, 0.048, 0.077]], - [0.898, [0.602, 0.048, 0.077]], - [0.9, [0.595, 0.046, 0.076]], - [0.902, [0.595, 0.046, 0.076]], - [0.904, [0.587, 0.044, 0.075]], - [0.906, [0.587, 0.044, 0.075]], - [0.908, [0.579, 0.042, 0.074]], - [0.91, [0.579, 0.042, 0.074]], - [0.912, [0.572, 0.041, 0.073]], - [0.914, [0.572, 0.041, 0.073]], - [0.916, [0.564, 0.039, 0.072]], - [0.918, [0.564, 0.039, 0.072]], - [0.92, [0.556, 0.037, 0.071]], - [0.922, [0.556, 0.037, 0.071]], - [0.924, [0.549, 0.035, 0.07]], - [0.926, [0.549, 0.035, 0.07]], - [0.928, [0.541, 0.033, 0.069]], - [0.93, [0.541, 0.033, 0.069]], - [0.932, [0.534, 0.031, 0.068]], - [0.933, [0.534, 0.031, 0.068]], - [0.935, [0.526, 0.03, 0.067]], - [0.937, [0.526, 0.03, 0.067]], - [0.939, [0.518, 0.028, 0.066]], - [0.941, [0.518, 0.028, 0.066]], - [0.943, [0.511, 0.026, 0.065]], - [0.945, [0.511, 0.026, 0.065]], - [0.947, [0.503, 0.024, 0.064]], - [0.949, [0.503, 0.024, 0.064]], - [0.951, [0.495, 0.022, 0.063]], - [0.953, [0.495, 0.022, 0.063]], - [0.955, [0.488, 0.02, 0.062]], - [0.957, [0.488, 0.02, 0.062]], - [0.959, [0.48, 0.018, 0.061]], - [0.961, [0.48, 0.018, 0.061]], - [0.963, [0.473, 0.017, 0.06]], - [0.965, [0.473, 0.017, 0.06]], - [0.967, [0.465, 0.015, 0.059]], - [0.969, [0.465, 0.015, 0.059]], - [0.971, [0.457, 0.013, 0.058]], - [0.973, [0.457, 0.013, 0.058]], - [0.975, [0.45, 0.011, 0.057]], - [0.977, [0.45, 0.011, 0.057]], - [0.978, [0.442, 0.009, 0.056]], - [0.98, [0.442, 0.009, 0.056]], - [0.982, [0.434, 0.007, 0.055]], - [0.984, [0.434, 0.007, 0.055]], - [0.986, [0.427, 0.006, 0.054]], - [0.988, [0.427, 0.006, 0.054]], - [0.99, [0.419, 0.004, 0.053]], - [0.992, [0.419, 0.004, 0.053]], - [0.994, [0.412, 0.002, 0.052]], - [0.996, [0.412, 0.002, 0.052]], - [0.998, [0.404, 0.0, 0.051]], - [1.0, [0.404, 0.0, 0.051]], - ], + value: convertColorPaletteToColorMap(ouiPaletteNegative(COLOR_MAP_LENGTH)), }, [ColorSchemas.YellowToRed]: { id: ColorSchemas.YellowToRed, label: i18n.translate('charts.colormaps.yellowToRedText', { defaultMessage: 'Yellow to Red', }), - value: [ - [0.0, [1.0, 1.0, 0.8]], - [0.002, [1.0, 1.0, 0.8]], - [0.004, [1.0, 0.998, 0.795]], - [0.006, [1.0, 0.998, 0.795]], - [0.008, [1.0, 0.996, 0.789]], - [0.01, [1.0, 0.996, 0.789]], - [0.012, [1.0, 0.993, 0.784]], - [0.014, [1.0, 0.993, 0.784]], - [0.016, [1.0, 0.991, 0.778]], - [0.018, [1.0, 0.991, 0.778]], - [0.02, [1.0, 0.989, 0.773]], - [0.022, [1.0, 0.989, 0.773]], - [0.023, [1.0, 0.987, 0.768]], - [0.025, [1.0, 0.987, 0.768]], - [0.027, [1.0, 0.984, 0.762]], - [0.029, [1.0, 0.984, 0.762]], - [0.031, [1.0, 0.982, 0.757]], - [0.033, [1.0, 0.982, 0.757]], - [0.035, [1.0, 0.98, 0.751]], - [0.037, [1.0, 0.98, 0.751]], - [0.039, [1.0, 0.978, 0.746]], - [0.041, [1.0, 0.978, 0.746]], - [0.043, [1.0, 0.976, 0.74]], - [0.045, [1.0, 0.976, 0.74]], - [0.047, [1.0, 0.973, 0.735]], - [0.049, [1.0, 0.973, 0.735]], - [0.051, [1.0, 0.971, 0.73]], - [0.053, [1.0, 0.971, 0.73]], - [0.055, [1.0, 0.969, 0.724]], - [0.057, [1.0, 0.969, 0.724]], - [0.059, [1.0, 0.967, 0.719]], - [0.061, [1.0, 0.967, 0.719]], - [0.063, [1.0, 0.965, 0.713]], - [0.065, [1.0, 0.965, 0.713]], - [0.067, [1.0, 0.962, 0.708]], - [0.068, [1.0, 0.962, 0.708]], - [0.07, [1.0, 0.96, 0.703]], - [0.072, [1.0, 0.96, 0.703]], - [0.074, [1.0, 0.958, 0.697]], - [0.076, [1.0, 0.958, 0.697]], - [0.078, [1.0, 0.956, 0.692]], - [0.08, [1.0, 0.956, 0.692]], - [0.082, [1.0, 0.953, 0.686]], - [0.084, [1.0, 0.953, 0.686]], - [0.086, [1.0, 0.951, 0.681]], - [0.088, [1.0, 0.951, 0.681]], - [0.09, [1.0, 0.949, 0.675]], - [0.092, [1.0, 0.949, 0.675]], - [0.094, [1.0, 0.947, 0.67]], - [0.096, [1.0, 0.947, 0.67]], - [0.098, [1.0, 0.945, 0.665]], - [0.1, [1.0, 0.945, 0.665]], - [0.102, [1.0, 0.942, 0.659]], - [0.104, [1.0, 0.942, 0.659]], - [0.106, [1.0, 0.94, 0.654]], - [0.108, [1.0, 0.94, 0.654]], - [0.11, [1.0, 0.938, 0.648]], - [0.112, [1.0, 0.938, 0.648]], - [0.114, [1.0, 0.936, 0.643]], - [0.115, [1.0, 0.936, 0.643]], - [0.117, [1.0, 0.934, 0.638]], - [0.119, [1.0, 0.934, 0.638]], - [0.121, [1.0, 0.931, 0.632]], - [0.123, [1.0, 0.931, 0.632]], - [0.125, [1.0, 0.929, 0.627]], - [0.127, [1.0, 0.929, 0.627]], - [0.129, [1.0, 0.927, 0.622]], - [0.131, [1.0, 0.927, 0.622]], - [0.133, [1.0, 0.924, 0.616]], - [0.135, [1.0, 0.924, 0.616]], - [0.137, [1.0, 0.922, 0.611]], - [0.139, [1.0, 0.922, 0.611]], - [0.141, [0.999, 0.919, 0.606]], - [0.143, [0.999, 0.919, 0.606]], - [0.145, [0.999, 0.917, 0.601]], - [0.147, [0.999, 0.917, 0.601]], - [0.149, [0.999, 0.914, 0.596]], - [0.151, [0.999, 0.914, 0.596]], - [0.153, [0.999, 0.912, 0.591]], - [0.155, [0.999, 0.912, 0.591]], - [0.157, [0.999, 0.909, 0.585]], - [0.159, [0.999, 0.909, 0.585]], - [0.16, [0.999, 0.907, 0.58]], - [0.162, [0.999, 0.907, 0.58]], - [0.164, [0.999, 0.904, 0.575]], - [0.166, [0.999, 0.904, 0.575]], - [0.168, [0.999, 0.902, 0.57]], - [0.17, [0.999, 0.902, 0.57]], - [0.172, [0.999, 0.9, 0.565]], - [0.174, [0.999, 0.9, 0.565]], - [0.176, [0.998, 0.897, 0.56]], - [0.178, [0.998, 0.897, 0.56]], - [0.18, [0.998, 0.895, 0.554]], - [0.182, [0.998, 0.895, 0.554]], - [0.184, [0.998, 0.892, 0.549]], - [0.186, [0.998, 0.892, 0.549]], - [0.188, [0.998, 0.89, 0.544]], - [0.19, [0.998, 0.89, 0.544]], - [0.192, [0.998, 0.887, 0.539]], - [0.194, [0.998, 0.887, 0.539]], - [0.196, [0.998, 0.885, 0.534]], - [0.198, [0.998, 0.885, 0.534]], - [0.2, [0.998, 0.882, 0.529]], - [0.202, [0.998, 0.882, 0.529]], - [0.204, [0.998, 0.88, 0.523]], - [0.205, [0.998, 0.88, 0.523]], - [0.207, [0.997, 0.877, 0.518]], - [0.209, [0.997, 0.877, 0.518]], - [0.211, [0.997, 0.875, 0.513]], - [0.213, [0.997, 0.875, 0.513]], - [0.215, [0.997, 0.873, 0.508]], - [0.217, [0.997, 0.873, 0.508]], - [0.219, [0.997, 0.87, 0.503]], - [0.221, [0.997, 0.87, 0.503]], - [0.223, [0.997, 0.868, 0.498]], - [0.225, [0.997, 0.868, 0.498]], - [0.227, [0.997, 0.865, 0.492]], - [0.229, [0.997, 0.865, 0.492]], - [0.231, [0.997, 0.863, 0.487]], - [0.233, [0.997, 0.863, 0.487]], - [0.235, [0.997, 0.86, 0.482]], - [0.237, [0.997, 0.86, 0.482]], - [0.239, [0.996, 0.858, 0.477]], - [0.241, [0.996, 0.858, 0.477]], - [0.243, [0.996, 0.855, 0.472]], - [0.245, [0.996, 0.855, 0.472]], - [0.247, [0.996, 0.853, 0.467]], - [0.249, [0.996, 0.853, 0.467]], - [0.25, [0.996, 0.85, 0.461]], - [0.252, [0.996, 0.85, 0.461]], - [0.254, [0.996, 0.845, 0.456]], - [0.256, [0.996, 0.845, 0.456]], - [0.258, [0.996, 0.84, 0.451]], - [0.26, [0.996, 0.84, 0.451]], - [0.262, [0.996, 0.835, 0.446]], - [0.264, [0.996, 0.835, 0.446]], - [0.266, [0.996, 0.831, 0.441]], - [0.268, [0.996, 0.831, 0.441]], - [0.27, [0.996, 0.826, 0.436]], - [0.272, [0.996, 0.826, 0.436]], - [0.274, [0.996, 0.821, 0.43]], - [0.276, [0.996, 0.821, 0.43]], - [0.278, [0.996, 0.816, 0.425]], - [0.28, [0.996, 0.816, 0.425]], - [0.282, [0.996, 0.811, 0.42]], - [0.284, [0.996, 0.811, 0.42]], - [0.286, [0.996, 0.807, 0.415]], - [0.288, [0.996, 0.807, 0.415]], - [0.29, [0.996, 0.802, 0.41]], - [0.292, [0.996, 0.802, 0.41]], - [0.294, [0.996, 0.797, 0.405]], - [0.295, [0.996, 0.797, 0.405]], - [0.297, [0.996, 0.792, 0.399]], - [0.299, [0.996, 0.792, 0.399]], - [0.301, [0.996, 0.787, 0.394]], - [0.303, [0.996, 0.787, 0.394]], - [0.305, [0.996, 0.783, 0.389]], - [0.307, [0.996, 0.783, 0.389]], - [0.309, [0.996, 0.778, 0.384]], - [0.311, [0.996, 0.778, 0.384]], - [0.313, [0.996, 0.773, 0.379]], - [0.315, [0.996, 0.773, 0.379]], - [0.317, [0.996, 0.768, 0.374]], - [0.319, [0.996, 0.768, 0.374]], - [0.321, [0.996, 0.763, 0.368]], - [0.323, [0.996, 0.763, 0.368]], - [0.325, [0.996, 0.759, 0.363]], - [0.327, [0.996, 0.759, 0.363]], - [0.329, [0.996, 0.754, 0.358]], - [0.331, [0.996, 0.754, 0.358]], - [0.333, [0.996, 0.749, 0.353]], - [0.335, [0.996, 0.749, 0.353]], - [0.337, [0.996, 0.744, 0.348]], - [0.339, [0.996, 0.744, 0.348]], - [0.341, [0.996, 0.739, 0.343]], - [0.342, [0.996, 0.739, 0.343]], - [0.344, [0.996, 0.735, 0.337]], - [0.346, [0.996, 0.735, 0.337]], - [0.348, [0.996, 0.73, 0.332]], - [0.35, [0.996, 0.73, 0.332]], - [0.352, [0.996, 0.725, 0.327]], - [0.354, [0.996, 0.725, 0.327]], - [0.356, [0.996, 0.72, 0.322]], - [0.358, [0.996, 0.72, 0.322]], - [0.36, [0.996, 0.715, 0.317]], - [0.362, [0.996, 0.715, 0.317]], - [0.364, [0.996, 0.711, 0.312]], - [0.366, [0.996, 0.711, 0.312]], - [0.368, [0.996, 0.706, 0.306]], - [0.37, [0.996, 0.706, 0.306]], - [0.372, [0.996, 0.701, 0.301]], - [0.374, [0.996, 0.701, 0.301]], - [0.376, [0.996, 0.696, 0.297]], - [0.378, [0.996, 0.696, 0.297]], - [0.38, [0.996, 0.692, 0.295]], - [0.382, [0.996, 0.692, 0.295]], - [0.384, [0.996, 0.687, 0.293]], - [0.386, [0.996, 0.687, 0.293]], - [0.387, [0.996, 0.683, 0.291]], - [0.389, [0.996, 0.683, 0.291]], - [0.391, [0.996, 0.678, 0.289]], - [0.393, [0.996, 0.678, 0.289]], - [0.395, [0.995, 0.674, 0.287]], - [0.397, [0.995, 0.674, 0.287]], - [0.399, [0.995, 0.669, 0.285]], - [0.401, [0.995, 0.669, 0.285]], - [0.403, [0.995, 0.664, 0.284]], - [0.405, [0.995, 0.664, 0.284]], - [0.407, [0.995, 0.66, 0.282]], - [0.409, [0.995, 0.66, 0.282]], - [0.411, [0.995, 0.655, 0.28]], - [0.413, [0.995, 0.655, 0.28]], - [0.415, [0.995, 0.651, 0.278]], - [0.417, [0.995, 0.651, 0.278]], - [0.419, [0.995, 0.646, 0.276]], - [0.421, [0.995, 0.646, 0.276]], - [0.423, [0.995, 0.642, 0.274]], - [0.425, [0.995, 0.642, 0.274]], - [0.427, [0.994, 0.637, 0.272]], - [0.429, [0.994, 0.637, 0.272]], - [0.431, [0.994, 0.633, 0.27]], - [0.432, [0.994, 0.633, 0.27]], - [0.434, [0.994, 0.628, 0.268]], - [0.436, [0.994, 0.628, 0.268]], - [0.438, [0.994, 0.623, 0.266]], - [0.44, [0.994, 0.623, 0.266]], - [0.442, [0.994, 0.619, 0.264]], - [0.444, [0.994, 0.619, 0.264]], - [0.446, [0.994, 0.614, 0.262]], - [0.448, [0.994, 0.614, 0.262]], - [0.45, [0.994, 0.61, 0.26]], - [0.452, [0.994, 0.61, 0.26]], - [0.454, [0.994, 0.605, 0.258]], - [0.456, [0.994, 0.605, 0.258]], - [0.458, [0.993, 0.601, 0.256]], - [0.46, [0.993, 0.601, 0.256]], - [0.462, [0.993, 0.596, 0.254]], - [0.464, [0.993, 0.596, 0.254]], - [0.466, [0.993, 0.592, 0.252]], - [0.468, [0.993, 0.592, 0.252]], - [0.47, [0.993, 0.587, 0.25]], - [0.472, [0.993, 0.587, 0.25]], - [0.474, [0.993, 0.583, 0.248]], - [0.476, [0.993, 0.583, 0.248]], - [0.477, [0.993, 0.578, 0.246]], - [0.479, [0.993, 0.578, 0.246]], - [0.481, [0.993, 0.573, 0.244]], - [0.483, [0.993, 0.573, 0.244]], - [0.485, [0.993, 0.569, 0.242]], - [0.487, [0.993, 0.569, 0.242]], - [0.489, [0.992, 0.564, 0.24]], - [0.491, [0.992, 0.564, 0.24]], - [0.493, [0.992, 0.56, 0.238]], - [0.495, [0.992, 0.56, 0.238]], - [0.497, [0.992, 0.555, 0.236]], - [0.499, [0.992, 0.555, 0.236]], - [0.501, [0.992, 0.549, 0.234]], - [0.503, [0.992, 0.549, 0.234]], - [0.505, [0.992, 0.541, 0.232]], - [0.507, [0.992, 0.541, 0.232]], - [0.509, [0.992, 0.534, 0.23]], - [0.511, [0.992, 0.534, 0.23]], - [0.513, [0.992, 0.526, 0.228]], - [0.515, [0.992, 0.526, 0.228]], - [0.517, [0.992, 0.518, 0.225]], - [0.519, [0.992, 0.518, 0.225]], - [0.521, [0.991, 0.51, 0.223]], - [0.523, [0.991, 0.51, 0.223]], - [0.524, [0.991, 0.503, 0.221]], - [0.526, [0.991, 0.503, 0.221]], - [0.528, [0.991, 0.495, 0.219]], - [0.53, [0.991, 0.495, 0.219]], - [0.532, [0.991, 0.487, 0.216]], - [0.534, [0.991, 0.487, 0.216]], - [0.536, [0.991, 0.479, 0.214]], - [0.538, [0.991, 0.479, 0.214]], - [0.54, [0.991, 0.472, 0.212]], - [0.542, [0.991, 0.472, 0.212]], - [0.544, [0.991, 0.464, 0.21]], - [0.546, [0.991, 0.464, 0.21]], - [0.548, [0.991, 0.456, 0.208]], - [0.55, [0.991, 0.456, 0.208]], - [0.552, [0.99, 0.448, 0.205]], - [0.554, [0.99, 0.448, 0.205]], - [0.556, [0.99, 0.441, 0.203]], - [0.558, [0.99, 0.441, 0.203]], - [0.56, [0.99, 0.433, 0.201]], - [0.562, [0.99, 0.433, 0.201]], - [0.564, [0.99, 0.425, 0.199]], - [0.566, [0.99, 0.425, 0.199]], - [0.568, [0.99, 0.417, 0.197]], - [0.569, [0.99, 0.417, 0.197]], - [0.571, [0.99, 0.41, 0.194]], - [0.573, [0.99, 0.41, 0.194]], - [0.575, [0.99, 0.402, 0.192]], - [0.577, [0.99, 0.402, 0.192]], - [0.579, [0.99, 0.394, 0.19]], - [0.581, [0.99, 0.394, 0.19]], - [0.583, [0.99, 0.386, 0.188]], - [0.585, [0.99, 0.386, 0.188]], - [0.587, [0.989, 0.379, 0.185]], - [0.589, [0.989, 0.379, 0.185]], - [0.591, [0.989, 0.371, 0.183]], - [0.593, [0.989, 0.371, 0.183]], - [0.595, [0.989, 0.363, 0.181]], - [0.597, [0.989, 0.363, 0.181]], - [0.599, [0.989, 0.355, 0.179]], - [0.601, [0.989, 0.355, 0.179]], - [0.603, [0.989, 0.348, 0.177]], - [0.605, [0.989, 0.348, 0.177]], - [0.607, [0.989, 0.34, 0.174]], - [0.609, [0.989, 0.34, 0.174]], - [0.611, [0.989, 0.332, 0.172]], - [0.613, [0.989, 0.332, 0.172]], - [0.614, [0.989, 0.324, 0.17]], - [0.616, [0.989, 0.324, 0.17]], - [0.618, [0.988, 0.317, 0.168]], - [0.62, [0.988, 0.317, 0.168]], - [0.622, [0.988, 0.309, 0.166]], - [0.624, [0.988, 0.309, 0.166]], - [0.626, [0.986, 0.302, 0.164]], - [0.628, [0.986, 0.302, 0.164]], - [0.63, [0.983, 0.295, 0.162]], - [0.632, [0.983, 0.295, 0.162]], - [0.634, [0.98, 0.289, 0.16]], - [0.636, [0.98, 0.289, 0.16]], - [0.638, [0.977, 0.283, 0.158]], - [0.64, [0.977, 0.283, 0.158]], - [0.642, [0.974, 0.276, 0.157]], - [0.644, [0.974, 0.276, 0.157]], - [0.646, [0.971, 0.27, 0.155]], - [0.648, [0.971, 0.27, 0.155]], - [0.65, [0.968, 0.263, 0.153]], - [0.652, [0.968, 0.263, 0.153]], - [0.654, [0.965, 0.257, 0.152]], - [0.656, [0.965, 0.257, 0.152]], - [0.658, [0.962, 0.251, 0.15]], - [0.659, [0.962, 0.251, 0.15]], - [0.661, [0.959, 0.244, 0.148]], - [0.663, [0.959, 0.244, 0.148]], - [0.665, [0.956, 0.238, 0.146]], - [0.667, [0.956, 0.238, 0.146]], - [0.669, [0.952, 0.232, 0.145]], - [0.671, [0.952, 0.232, 0.145]], - [0.673, [0.949, 0.225, 0.143]], - [0.675, [0.949, 0.225, 0.143]], - [0.677, [0.946, 0.219, 0.141]], - [0.679, [0.946, 0.219, 0.141]], - [0.681, [0.943, 0.212, 0.14]], - [0.683, [0.943, 0.212, 0.14]], - [0.685, [0.94, 0.206, 0.138]], - [0.687, [0.94, 0.206, 0.138]], - [0.689, [0.937, 0.2, 0.136]], - [0.691, [0.937, 0.2, 0.136]], - [0.693, [0.934, 0.193, 0.134]], - [0.695, [0.934, 0.193, 0.134]], - [0.697, [0.931, 0.187, 0.133]], - [0.699, [0.931, 0.187, 0.133]], - [0.701, [0.928, 0.18, 0.131]], - [0.703, [0.928, 0.18, 0.131]], - [0.705, [0.925, 0.174, 0.129]], - [0.706, [0.925, 0.174, 0.129]], - [0.708, [0.922, 0.168, 0.127]], - [0.71, [0.922, 0.168, 0.127]], - [0.712, [0.919, 0.161, 0.126]], - [0.714, [0.919, 0.161, 0.126]], - [0.716, [0.916, 0.155, 0.124]], - [0.718, [0.916, 0.155, 0.124]], - [0.72, [0.912, 0.148, 0.122]], - [0.722, [0.912, 0.148, 0.122]], - [0.724, [0.909, 0.142, 0.121]], - [0.726, [0.909, 0.142, 0.121]], - [0.728, [0.906, 0.136, 0.119]], - [0.73, [0.906, 0.136, 0.119]], - [0.732, [0.903, 0.129, 0.117]], - [0.734, [0.903, 0.129, 0.117]], - [0.736, [0.9, 0.123, 0.115]], - [0.738, [0.9, 0.123, 0.115]], - [0.74, [0.897, 0.116, 0.114]], - [0.742, [0.897, 0.116, 0.114]], - [0.744, [0.894, 0.11, 0.112]], - [0.746, [0.894, 0.11, 0.112]], - [0.748, [0.891, 0.104, 0.11]], - [0.75, [0.891, 0.104, 0.11]], - [0.751, [0.887, 0.1, 0.111]], - [0.753, [0.887, 0.1, 0.111]], - [0.755, [0.882, 0.096, 0.112]], - [0.757, [0.882, 0.096, 0.112]], - [0.759, [0.877, 0.093, 0.113]], - [0.761, [0.877, 0.093, 0.113]], - [0.763, [0.873, 0.09, 0.114]], - [0.765, [0.873, 0.09, 0.114]], - [0.767, [0.868, 0.087, 0.116]], - [0.769, [0.868, 0.087, 0.116]], - [0.771, [0.863, 0.084, 0.117]], - [0.773, [0.863, 0.084, 0.117]], - [0.775, [0.859, 0.08, 0.118]], - [0.777, [0.859, 0.08, 0.118]], - [0.779, [0.854, 0.077, 0.119]], - [0.781, [0.854, 0.077, 0.119]], - [0.783, [0.849, 0.074, 0.121]], - [0.785, [0.849, 0.074, 0.121]], - [0.787, [0.845, 0.071, 0.122]], - [0.789, [0.845, 0.071, 0.122]], - [0.791, [0.84, 0.068, 0.123]], - [0.793, [0.84, 0.068, 0.123]], - [0.795, [0.835, 0.064, 0.124]], - [0.796, [0.835, 0.064, 0.124]], - [0.798, [0.831, 0.061, 0.125]], - [0.8, [0.831, 0.061, 0.125]], - [0.802, [0.826, 0.058, 0.127]], - [0.804, [0.826, 0.058, 0.127]], - [0.806, [0.821, 0.055, 0.128]], - [0.808, [0.821, 0.055, 0.128]], - [0.81, [0.817, 0.052, 0.129]], - [0.812, [0.817, 0.052, 0.129]], - [0.814, [0.812, 0.048, 0.13]], - [0.816, [0.812, 0.048, 0.13]], - [0.818, [0.807, 0.045, 0.132]], - [0.82, [0.807, 0.045, 0.132]], - [0.822, [0.803, 0.042, 0.133]], - [0.824, [0.803, 0.042, 0.133]], - [0.826, [0.798, 0.039, 0.134]], - [0.828, [0.798, 0.039, 0.134]], - [0.83, [0.793, 0.036, 0.135]], - [0.832, [0.793, 0.036, 0.135]], - [0.834, [0.789, 0.032, 0.137]], - [0.836, [0.789, 0.032, 0.137]], - [0.838, [0.784, 0.029, 0.138]], - [0.84, [0.784, 0.029, 0.138]], - [0.841, [0.779, 0.026, 0.139]], - [0.843, [0.779, 0.026, 0.139]], - [0.845, [0.774, 0.023, 0.14]], - [0.847, [0.774, 0.023, 0.14]], - [0.849, [0.77, 0.02, 0.141]], - [0.851, [0.77, 0.02, 0.141]], - [0.853, [0.765, 0.016, 0.143]], - [0.855, [0.765, 0.016, 0.143]], - [0.857, [0.76, 0.013, 0.144]], - [0.859, [0.76, 0.013, 0.144]], - [0.861, [0.756, 0.01, 0.145]], - [0.863, [0.756, 0.01, 0.145]], - [0.865, [0.751, 0.007, 0.146]], - [0.867, [0.751, 0.007, 0.146]], - [0.869, [0.746, 0.004, 0.148]], - [0.871, [0.746, 0.004, 0.148]], - [0.873, [0.742, 0.0, 0.149]], - [0.875, [0.742, 0.0, 0.149]], - [0.877, [0.735, 0.0, 0.149]], - [0.879, [0.735, 0.0, 0.149]], - [0.881, [0.727, 0.0, 0.149]], - [0.883, [0.727, 0.0, 0.149]], - [0.885, [0.72, 0.0, 0.149]], - [0.886, [0.72, 0.0, 0.149]], - [0.888, [0.712, 0.0, 0.149]], - [0.89, [0.712, 0.0, 0.149]], - [0.892, [0.705, 0.0, 0.149]], - [0.894, [0.705, 0.0, 0.149]], - [0.896, [0.697, 0.0, 0.149]], - [0.898, [0.697, 0.0, 0.149]], - [0.9, [0.69, 0.0, 0.149]], - [0.902, [0.69, 0.0, 0.149]], - [0.904, [0.682, 0.0, 0.149]], - [0.906, [0.682, 0.0, 0.149]], - [0.908, [0.675, 0.0, 0.149]], - [0.91, [0.675, 0.0, 0.149]], - [0.912, [0.667, 0.0, 0.149]], - [0.914, [0.667, 0.0, 0.149]], - [0.916, [0.66, 0.0, 0.149]], - [0.918, [0.66, 0.0, 0.149]], - [0.92, [0.652, 0.0, 0.149]], - [0.922, [0.652, 0.0, 0.149]], - [0.924, [0.645, 0.0, 0.149]], - [0.926, [0.645, 0.0, 0.149]], - [0.928, [0.637, 0.0, 0.149]], - [0.93, [0.637, 0.0, 0.149]], - [0.932, [0.63, 0.0, 0.149]], - [0.933, [0.63, 0.0, 0.149]], - [0.935, [0.622, 0.0, 0.149]], - [0.937, [0.622, 0.0, 0.149]], - [0.939, [0.615, 0.0, 0.149]], - [0.941, [0.615, 0.0, 0.149]], - [0.943, [0.607, 0.0, 0.149]], - [0.945, [0.607, 0.0, 0.149]], - [0.947, [0.6, 0.0, 0.149]], - [0.949, [0.6, 0.0, 0.149]], - [0.951, [0.592, 0.0, 0.149]], - [0.953, [0.592, 0.0, 0.149]], - [0.955, [0.585, 0.0, 0.149]], - [0.957, [0.585, 0.0, 0.149]], - [0.959, [0.577, 0.0, 0.149]], - [0.961, [0.577, 0.0, 0.149]], - [0.963, [0.57, 0.0, 0.149]], - [0.965, [0.57, 0.0, 0.149]], - [0.967, [0.562, 0.0, 0.149]], - [0.969, [0.562, 0.0, 0.149]], - [0.971, [0.554, 0.0, 0.149]], - [0.973, [0.554, 0.0, 0.149]], - [0.975, [0.547, 0.0, 0.149]], - [0.977, [0.547, 0.0, 0.149]], - [0.978, [0.539, 0.0, 0.149]], - [0.98, [0.539, 0.0, 0.149]], - [0.982, [0.532, 0.0, 0.149]], - [0.984, [0.532, 0.0, 0.149]], - [0.986, [0.524, 0.0, 0.149]], - [0.988, [0.524, 0.0, 0.149]], - [0.99, [0.517, 0.0, 0.149]], - [0.992, [0.517, 0.0, 0.149]], - [0.994, [0.509, 0.0, 0.149]], - [0.996, [0.509, 0.0, 0.149]], - [0.998, [0.502, 0.0, 0.149]], - [1.0, [0.502, 0.0, 0.149]], - ], + value: convertColorPaletteToColorMap( + ouiColorPalette( + [euiThemeVars.euiColorWarning, euiThemeVars.euiColorDanger], + COLOR_MAP_LENGTH, + false, + true + ) + ), }, [ColorSchemas.GreenToRed]: { @@ -2662,520 +135,14 @@ export const vislibColorMaps: ColorMap = { label: i18n.translate('charts.colormaps.greenToRedText', { defaultMessage: 'Green to Red', }), - value: [ - [0, [0, 0.408, 0.216]], - [0.002, [0, 0.408, 0.216]], - [0.004, [0.004, 0.415, 0.22]], - [0.006, [0.004, 0.415, 0.22]], - [0.008, [0.008, 0.423, 0.223]], - [0.01, [0.008, 0.423, 0.223]], - [0.012, [0.012, 0.43, 0.227]], - [0.014, [0.012, 0.43, 0.227]], - [0.016, [0.016, 0.437, 0.231]], - [0.018, [0.016, 0.437, 0.231]], - [0.02, [0.02, 0.445, 0.235]], - [0.022, [0.02, 0.445, 0.235]], - [0.023, [0.024, 0.452, 0.239]], - [0.025, [0.024, 0.452, 0.239]], - [0.027, [0.028, 0.46, 0.243]], - [0.029, [0.028, 0.46, 0.243]], - [0.031, [0.032, 0.467, 0.246]], - [0.033, [0.032, 0.467, 0.246]], - [0.035, [0.036, 0.474, 0.25]], - [0.037, [0.036, 0.474, 0.25]], - [0.039, [0.04, 0.482, 0.254]], - [0.041, [0.04, 0.482, 0.254]], - [0.043, [0.044, 0.489, 0.258]], - [0.045, [0.044, 0.489, 0.258]], - [0.047, [0.048, 0.496, 0.262]], - [0.049, [0.048, 0.496, 0.262]], - [0.051, [0.052, 0.504, 0.266]], - [0.053, [0.052, 0.504, 0.266]], - [0.055, [0.056, 0.511, 0.27]], - [0.057, [0.056, 0.511, 0.27]], - [0.059, [0.06, 0.519, 0.273]], - [0.061, [0.06, 0.519, 0.273]], - [0.063, [0.064, 0.526, 0.277]], - [0.065, [0.064, 0.526, 0.277]], - [0.067, [0.068, 0.533, 0.281]], - [0.068, [0.068, 0.533, 0.281]], - [0.07, [0.072, 0.541, 0.285]], - [0.072, [0.072, 0.541, 0.285]], - [0.074, [0.076, 0.548, 0.289]], - [0.076, [0.076, 0.548, 0.289]], - [0.078, [0.08, 0.555, 0.293]], - [0.08, [0.08, 0.555, 0.293]], - [0.082, [0.084, 0.563, 0.296]], - [0.084, [0.084, 0.563, 0.296]], - [0.086, [0.088, 0.57, 0.3]], - [0.088, [0.088, 0.57, 0.3]], - [0.09, [0.092, 0.578, 0.304]], - [0.092, [0.092, 0.578, 0.304]], - [0.094, [0.096, 0.585, 0.308]], - [0.096, [0.096, 0.585, 0.308]], - [0.098, [0.1, 0.592, 0.312]], - [0.1, [0.1, 0.592, 0.312]], - [0.102, [0.108, 0.599, 0.315]], - [0.104, [0.108, 0.599, 0.315]], - [0.106, [0.119, 0.605, 0.318]], - [0.108, [0.119, 0.605, 0.318]], - [0.11, [0.131, 0.61, 0.321]], - [0.112, [0.131, 0.61, 0.321]], - [0.114, [0.143, 0.616, 0.324]], - [0.115, [0.143, 0.616, 0.324]], - [0.117, [0.155, 0.622, 0.327]], - [0.119, [0.155, 0.622, 0.327]], - [0.121, [0.166, 0.627, 0.33]], - [0.123, [0.166, 0.627, 0.33]], - [0.125, [0.178, 0.633, 0.333]], - [0.127, [0.178, 0.633, 0.333]], - [0.129, [0.19, 0.639, 0.336]], - [0.131, [0.19, 0.639, 0.336]], - [0.133, [0.201, 0.644, 0.339]], - [0.135, [0.201, 0.644, 0.339]], - [0.137, [0.213, 0.65, 0.341]], - [0.139, [0.213, 0.65, 0.341]], - [0.141, [0.225, 0.656, 0.344]], - [0.143, [0.225, 0.656, 0.344]], - [0.145, [0.236, 0.662, 0.347]], - [0.147, [0.236, 0.662, 0.347]], - [0.149, [0.248, 0.667, 0.35]], - [0.151, [0.248, 0.667, 0.35]], - [0.153, [0.26, 0.673, 0.353]], - [0.155, [0.26, 0.673, 0.353]], - [0.157, [0.271, 0.679, 0.356]], - [0.159, [0.271, 0.679, 0.356]], - [0.16, [0.283, 0.684, 0.359]], - [0.162, [0.283, 0.684, 0.359]], - [0.164, [0.295, 0.69, 0.362]], - [0.166, [0.295, 0.69, 0.362]], - [0.168, [0.306, 0.696, 0.365]], - [0.17, [0.306, 0.696, 0.365]], - [0.172, [0.318, 0.701, 0.368]], - [0.174, [0.318, 0.701, 0.368]], - [0.176, [0.33, 0.707, 0.371]], - [0.178, [0.33, 0.707, 0.371]], - [0.18, [0.342, 0.713, 0.374]], - [0.182, [0.342, 0.713, 0.374]], - [0.184, [0.353, 0.718, 0.377]], - [0.186, [0.353, 0.718, 0.377]], - [0.188, [0.365, 0.724, 0.379]], - [0.19, [0.365, 0.724, 0.379]], - [0.192, [0.377, 0.73, 0.382]], - [0.194, [0.377, 0.73, 0.382]], - [0.196, [0.388, 0.735, 0.385]], - [0.198, [0.388, 0.735, 0.385]], - [0.2, [0.4, 0.741, 0.388]], - [0.202, [0.4, 0.741, 0.388]], - [0.204, [0.41, 0.745, 0.389]], - [0.205, [0.41, 0.745, 0.389]], - [0.207, [0.42, 0.75, 0.39]], - [0.209, [0.42, 0.75, 0.39]], - [0.211, [0.43, 0.754, 0.391]], - [0.213, [0.43, 0.754, 0.391]], - [0.215, [0.439, 0.758, 0.393]], - [0.217, [0.439, 0.758, 0.393]], - [0.219, [0.449, 0.763, 0.394]], - [0.221, [0.449, 0.763, 0.394]], - [0.223, [0.459, 0.767, 0.395]], - [0.225, [0.459, 0.767, 0.395]], - [0.227, [0.469, 0.771, 0.396]], - [0.229, [0.469, 0.771, 0.396]], - [0.231, [0.479, 0.776, 0.397]], - [0.233, [0.479, 0.776, 0.397]], - [0.235, [0.489, 0.78, 0.398]], - [0.237, [0.489, 0.78, 0.398]], - [0.239, [0.498, 0.784, 0.399]], - [0.241, [0.498, 0.784, 0.399]], - [0.243, [0.508, 0.789, 0.4]], - [0.245, [0.508, 0.789, 0.4]], - [0.247, [0.518, 0.793, 0.401]], - [0.249, [0.518, 0.793, 0.401]], - [0.25, [0.528, 0.797, 0.402]], - [0.252, [0.528, 0.797, 0.402]], - [0.254, [0.538, 0.801, 0.403]], - [0.256, [0.538, 0.801, 0.403]], - [0.258, [0.548, 0.806, 0.404]], - [0.26, [0.548, 0.806, 0.404]], - [0.262, [0.557, 0.81, 0.405]], - [0.264, [0.557, 0.81, 0.405]], - [0.266, [0.567, 0.814, 0.407]], - [0.268, [0.567, 0.814, 0.407]], - [0.27, [0.577, 0.819, 0.408]], - [0.272, [0.577, 0.819, 0.408]], - [0.274, [0.587, 0.823, 0.409]], - [0.276, [0.587, 0.823, 0.409]], - [0.278, [0.597, 0.827, 0.41]], - [0.28, [0.597, 0.827, 0.41]], - [0.282, [0.607, 0.832, 0.411]], - [0.284, [0.607, 0.832, 0.411]], - [0.286, [0.617, 0.836, 0.412]], - [0.288, [0.617, 0.836, 0.412]], - [0.29, [0.626, 0.84, 0.413]], - [0.292, [0.626, 0.84, 0.413]], - [0.294, [0.636, 0.845, 0.414]], - [0.295, [0.636, 0.845, 0.414]], - [0.297, [0.646, 0.849, 0.415]], - [0.299, [0.646, 0.849, 0.415]], - [0.301, [0.655, 0.853, 0.418]], - [0.303, [0.655, 0.853, 0.418]], - [0.305, [0.663, 0.856, 0.423]], - [0.307, [0.663, 0.856, 0.423]], - [0.309, [0.671, 0.859, 0.428]], - [0.311, [0.671, 0.859, 0.428]], - [0.313, [0.678, 0.863, 0.433]], - [0.315, [0.678, 0.863, 0.433]], - [0.317, [0.686, 0.866, 0.439]], - [0.319, [0.686, 0.866, 0.439]], - [0.321, [0.694, 0.87, 0.444]], - [0.323, [0.694, 0.87, 0.444]], - [0.325, [0.702, 0.873, 0.449]], - [0.327, [0.702, 0.873, 0.449]], - [0.329, [0.71, 0.876, 0.454]], - [0.331, [0.71, 0.876, 0.454]], - [0.333, [0.718, 0.88, 0.459]], - [0.335, [0.718, 0.88, 0.459]], - [0.337, [0.725, 0.883, 0.464]], - [0.339, [0.725, 0.883, 0.464]], - [0.341, [0.733, 0.887, 0.469]], - [0.342, [0.733, 0.887, 0.469]], - [0.344, [0.741, 0.89, 0.474]], - [0.346, [0.741, 0.89, 0.474]], - [0.348, [0.749, 0.893, 0.479]], - [0.35, [0.749, 0.893, 0.479]], - [0.352, [0.757, 0.897, 0.484]], - [0.354, [0.757, 0.897, 0.484]], - [0.356, [0.765, 0.9, 0.489]], - [0.358, [0.765, 0.9, 0.489]], - [0.36, [0.773, 0.903, 0.494]], - [0.362, [0.773, 0.903, 0.494]], - [0.364, [0.78, 0.907, 0.499]], - [0.366, [0.78, 0.907, 0.499]], - [0.368, [0.788, 0.91, 0.504]], - [0.37, [0.788, 0.91, 0.504]], - [0.372, [0.796, 0.914, 0.51]], - [0.374, [0.796, 0.914, 0.51]], - [0.376, [0.804, 0.917, 0.515]], - [0.378, [0.804, 0.917, 0.515]], - [0.38, [0.812, 0.92, 0.52]], - [0.382, [0.812, 0.92, 0.52]], - [0.384, [0.82, 0.924, 0.525]], - [0.386, [0.82, 0.924, 0.525]], - [0.387, [0.827, 0.927, 0.53]], - [0.389, [0.827, 0.927, 0.53]], - [0.391, [0.835, 0.93, 0.535]], - [0.393, [0.835, 0.93, 0.535]], - [0.395, [0.843, 0.934, 0.54]], - [0.397, [0.843, 0.934, 0.54]], - [0.399, [0.851, 0.937, 0.545]], - [0.401, [0.851, 0.937, 0.545]], - [0.403, [0.857, 0.94, 0.553]], - [0.405, [0.857, 0.94, 0.553]], - [0.407, [0.863, 0.942, 0.561]], - [0.409, [0.863, 0.942, 0.561]], - [0.411, [0.869, 0.945, 0.569]], - [0.413, [0.869, 0.945, 0.569]], - [0.415, [0.874, 0.947, 0.577]], - [0.417, [0.874, 0.947, 0.577]], - [0.419, [0.88, 0.95, 0.585]], - [0.421, [0.88, 0.95, 0.585]], - [0.423, [0.886, 0.952, 0.593]], - [0.425, [0.886, 0.952, 0.593]], - [0.427, [0.892, 0.954, 0.601]], - [0.429, [0.892, 0.954, 0.601]], - [0.431, [0.898, 0.957, 0.609]], - [0.432, [0.898, 0.957, 0.609]], - [0.434, [0.904, 0.959, 0.617]], - [0.436, [0.904, 0.959, 0.617]], - [0.438, [0.909, 0.962, 0.625]], - [0.44, [0.909, 0.962, 0.625]], - [0.442, [0.915, 0.964, 0.633]], - [0.444, [0.915, 0.964, 0.633]], - [0.446, [0.921, 0.967, 0.641]], - [0.448, [0.921, 0.967, 0.641]], - [0.45, [0.927, 0.969, 0.649]], - [0.452, [0.927, 0.969, 0.649]], - [0.454, [0.933, 0.972, 0.657]], - [0.456, [0.933, 0.972, 0.657]], - [0.458, [0.939, 0.974, 0.665]], - [0.46, [0.939, 0.974, 0.665]], - [0.462, [0.944, 0.977, 0.673]], - [0.464, [0.944, 0.977, 0.673]], - [0.466, [0.95, 0.979, 0.681]], - [0.468, [0.95, 0.979, 0.681]], - [0.47, [0.956, 0.982, 0.689]], - [0.472, [0.956, 0.982, 0.689]], - [0.474, [0.962, 0.984, 0.697]], - [0.476, [0.962, 0.984, 0.697]], - [0.477, [0.968, 0.986, 0.705]], - [0.479, [0.968, 0.986, 0.705]], - [0.481, [0.974, 0.989, 0.713]], - [0.483, [0.974, 0.989, 0.713]], - [0.485, [0.98, 0.991, 0.721]], - [0.487, [0.98, 0.991, 0.721]], - [0.489, [0.985, 0.994, 0.729]], - [0.491, [0.985, 0.994, 0.729]], - [0.493, [0.991, 0.996, 0.737]], - [0.495, [0.991, 0.996, 0.737]], - [0.497, [0.997, 0.999, 0.745]], - [0.499, [0.997, 0.999, 0.745]], - [0.501, [1, 0.998, 0.745]], - [0.503, [1, 0.998, 0.745]], - [0.505, [1, 0.993, 0.737]], - [0.507, [1, 0.993, 0.737]], - [0.509, [1, 0.988, 0.729]], - [0.511, [1, 0.988, 0.729]], - [0.513, [0.999, 0.983, 0.721]], - [0.515, [0.999, 0.983, 0.721]], - [0.517, [0.999, 0.979, 0.713]], - [0.519, [0.999, 0.979, 0.713]], - [0.521, [0.999, 0.974, 0.705]], - [0.523, [0.999, 0.974, 0.705]], - [0.524, [0.999, 0.969, 0.697]], - [0.526, [0.999, 0.969, 0.697]], - [0.528, [0.999, 0.964, 0.689]], - [0.53, [0.999, 0.964, 0.689]], - [0.532, [0.999, 0.959, 0.681]], - [0.534, [0.999, 0.959, 0.681]], - [0.536, [0.999, 0.955, 0.673]], - [0.538, [0.999, 0.955, 0.673]], - [0.54, [0.998, 0.95, 0.665]], - [0.542, [0.998, 0.95, 0.665]], - [0.544, [0.998, 0.945, 0.657]], - [0.546, [0.998, 0.945, 0.657]], - [0.548, [0.998, 0.94, 0.649]], - [0.55, [0.998, 0.94, 0.649]], - [0.552, [0.998, 0.936, 0.641]], - [0.554, [0.998, 0.936, 0.641]], - [0.556, [0.998, 0.931, 0.633]], - [0.558, [0.998, 0.931, 0.633]], - [0.56, [0.998, 0.926, 0.625]], - [0.562, [0.998, 0.926, 0.625]], - [0.564, [0.997, 0.921, 0.617]], - [0.566, [0.997, 0.921, 0.617]], - [0.568, [0.997, 0.917, 0.609]], - [0.569, [0.997, 0.917, 0.609]], - [0.571, [0.997, 0.912, 0.601]], - [0.573, [0.997, 0.912, 0.601]], - [0.575, [0.997, 0.907, 0.593]], - [0.577, [0.997, 0.907, 0.593]], - [0.579, [0.997, 0.902, 0.585]], - [0.581, [0.997, 0.902, 0.585]], - [0.583, [0.997, 0.898, 0.577]], - [0.585, [0.997, 0.898, 0.577]], - [0.587, [0.997, 0.893, 0.569]], - [0.589, [0.997, 0.893, 0.569]], - [0.591, [0.996, 0.888, 0.561]], - [0.593, [0.996, 0.888, 0.561]], - [0.595, [0.996, 0.883, 0.553]], - [0.597, [0.996, 0.883, 0.553]], - [0.599, [0.996, 0.878, 0.545]], - [0.601, [0.996, 0.878, 0.545]], - [0.603, [0.996, 0.871, 0.539]], - [0.605, [0.996, 0.871, 0.539]], - [0.607, [0.996, 0.863, 0.532]], - [0.609, [0.996, 0.863, 0.532]], - [0.611, [0.996, 0.855, 0.526]], - [0.613, [0.996, 0.855, 0.526]], - [0.614, [0.995, 0.848, 0.519]], - [0.616, [0.995, 0.848, 0.519]], - [0.618, [0.995, 0.84, 0.513]], - [0.62, [0.995, 0.84, 0.513]], - [0.622, [0.995, 0.832, 0.506]], - [0.624, [0.995, 0.832, 0.506]], - [0.626, [0.995, 0.825, 0.5]], - [0.628, [0.995, 0.825, 0.5]], - [0.63, [0.995, 0.817, 0.493]], - [0.632, [0.995, 0.817, 0.493]], - [0.634, [0.995, 0.809, 0.487]], - [0.636, [0.995, 0.809, 0.487]], - [0.638, [0.995, 0.802, 0.481]], - [0.64, [0.995, 0.802, 0.481]], - [0.642, [0.994, 0.794, 0.474]], - [0.644, [0.994, 0.794, 0.474]], - [0.646, [0.994, 0.786, 0.468]], - [0.648, [0.994, 0.786, 0.468]], - [0.65, [0.994, 0.778, 0.461]], - [0.652, [0.994, 0.778, 0.461]], - [0.654, [0.994, 0.771, 0.455]], - [0.656, [0.994, 0.771, 0.455]], - [0.658, [0.994, 0.763, 0.448]], - [0.659, [0.994, 0.763, 0.448]], - [0.661, [0.994, 0.755, 0.442]], - [0.663, [0.994, 0.755, 0.442]], - [0.665, [0.993, 0.748, 0.435]], - [0.667, [0.993, 0.748, 0.435]], - [0.669, [0.993, 0.74, 0.429]], - [0.671, [0.993, 0.74, 0.429]], - [0.673, [0.993, 0.732, 0.422]], - [0.675, [0.993, 0.732, 0.422]], - [0.677, [0.993, 0.725, 0.416]], - [0.679, [0.993, 0.725, 0.416]], - [0.681, [0.993, 0.717, 0.409]], - [0.683, [0.993, 0.717, 0.409]], - [0.685, [0.993, 0.709, 0.403]], - [0.687, [0.993, 0.709, 0.403]], - [0.689, [0.993, 0.702, 0.397]], - [0.691, [0.993, 0.702, 0.397]], - [0.693, [0.992, 0.694, 0.39]], - [0.695, [0.992, 0.694, 0.39]], - [0.697, [0.992, 0.686, 0.384]], - [0.699, [0.992, 0.686, 0.384]], - [0.701, [0.991, 0.677, 0.378]], - [0.703, [0.991, 0.677, 0.378]], - [0.705, [0.99, 0.667, 0.373]], - [0.706, [0.99, 0.667, 0.373]], - [0.708, [0.989, 0.657, 0.369]], - [0.71, [0.989, 0.657, 0.369]], - [0.712, [0.987, 0.647, 0.364]], - [0.714, [0.987, 0.647, 0.364]], - [0.716, [0.986, 0.637, 0.36]], - [0.718, [0.986, 0.637, 0.36]], - [0.72, [0.985, 0.627, 0.355]], - [0.722, [0.985, 0.627, 0.355]], - [0.724, [0.983, 0.617, 0.35]], - [0.726, [0.983, 0.617, 0.35]], - [0.728, [0.982, 0.607, 0.346]], - [0.73, [0.982, 0.607, 0.346]], - [0.732, [0.98, 0.597, 0.341]], - [0.734, [0.98, 0.597, 0.341]], - [0.736, [0.979, 0.587, 0.337]], - [0.738, [0.979, 0.587, 0.337]], - [0.74, [0.978, 0.577, 0.332]], - [0.742, [0.978, 0.577, 0.332]], - [0.744, [0.976, 0.567, 0.327]], - [0.746, [0.976, 0.567, 0.327]], - [0.748, [0.975, 0.557, 0.323]], - [0.75, [0.975, 0.557, 0.323]], - [0.751, [0.973, 0.547, 0.318]], - [0.753, [0.973, 0.547, 0.318]], - [0.755, [0.972, 0.537, 0.313]], - [0.757, [0.972, 0.537, 0.313]], - [0.759, [0.971, 0.527, 0.309]], - [0.761, [0.971, 0.527, 0.309]], - [0.763, [0.969, 0.517, 0.304]], - [0.765, [0.969, 0.517, 0.304]], - [0.767, [0.968, 0.507, 0.3]], - [0.769, [0.968, 0.507, 0.3]], - [0.771, [0.967, 0.497, 0.295]], - [0.773, [0.967, 0.497, 0.295]], - [0.775, [0.965, 0.487, 0.29]], - [0.777, [0.965, 0.487, 0.29]], - [0.779, [0.964, 0.477, 0.286]], - [0.781, [0.964, 0.477, 0.286]], - [0.783, [0.962, 0.467, 0.281]], - [0.785, [0.962, 0.467, 0.281]], - [0.787, [0.961, 0.457, 0.277]], - [0.789, [0.961, 0.457, 0.277]], - [0.791, [0.96, 0.447, 0.272]], - [0.793, [0.96, 0.447, 0.272]], - [0.795, [0.958, 0.437, 0.267]], - [0.796, [0.958, 0.437, 0.267]], - [0.798, [0.957, 0.427, 0.263]], - [0.8, [0.957, 0.427, 0.263]], - [0.802, [0.952, 0.418, 0.258]], - [0.804, [0.952, 0.418, 0.258]], - [0.806, [0.948, 0.409, 0.254]], - [0.808, [0.948, 0.409, 0.254]], - [0.81, [0.943, 0.399, 0.25]], - [0.812, [0.943, 0.399, 0.25]], - [0.814, [0.939, 0.39, 0.246]], - [0.816, [0.939, 0.39, 0.246]], - [0.818, [0.935, 0.381, 0.241]], - [0.82, [0.935, 0.381, 0.241]], - [0.822, [0.93, 0.371, 0.237]], - [0.824, [0.93, 0.371, 0.237]], - [0.826, [0.926, 0.362, 0.233]], - [0.828, [0.926, 0.362, 0.233]], - [0.83, [0.921, 0.352, 0.228]], - [0.832, [0.921, 0.352, 0.228]], - [0.834, [0.917, 0.343, 0.224]], - [0.836, [0.917, 0.343, 0.224]], - [0.838, [0.912, 0.334, 0.22]], - [0.84, [0.912, 0.334, 0.22]], - [0.841, [0.908, 0.324, 0.215]], - [0.843, [0.908, 0.324, 0.215]], - [0.845, [0.903, 0.315, 0.211]], - [0.847, [0.903, 0.315, 0.211]], - [0.849, [0.899, 0.305, 0.207]], - [0.851, [0.899, 0.305, 0.207]], - [0.853, [0.894, 0.296, 0.202]], - [0.855, [0.894, 0.296, 0.202]], - [0.857, [0.89, 0.287, 0.198]], - [0.859, [0.89, 0.287, 0.198]], - [0.861, [0.886, 0.277, 0.194]], - [0.863, [0.886, 0.277, 0.194]], - [0.865, [0.881, 0.268, 0.19]], - [0.867, [0.881, 0.268, 0.19]], - [0.869, [0.877, 0.259, 0.185]], - [0.871, [0.877, 0.259, 0.185]], - [0.873, [0.872, 0.249, 0.181]], - [0.875, [0.872, 0.249, 0.181]], - [0.877, [0.868, 0.24, 0.177]], - [0.879, [0.868, 0.24, 0.177]], - [0.881, [0.863, 0.23, 0.172]], - [0.883, [0.863, 0.23, 0.172]], - [0.885, [0.859, 0.221, 0.168]], - [0.886, [0.859, 0.221, 0.168]], - [0.888, [0.854, 0.212, 0.164]], - [0.89, [0.854, 0.212, 0.164]], - [0.892, [0.85, 0.202, 0.159]], - [0.894, [0.85, 0.202, 0.159]], - [0.896, [0.845, 0.193, 0.155]], - [0.898, [0.845, 0.193, 0.155]], - [0.9, [0.839, 0.185, 0.153]], - [0.902, [0.839, 0.185, 0.153]], - [0.904, [0.832, 0.177, 0.153]], - [0.906, [0.832, 0.177, 0.153]], - [0.908, [0.824, 0.17, 0.153]], - [0.91, [0.824, 0.17, 0.153]], - [0.912, [0.816, 0.162, 0.152]], - [0.914, [0.816, 0.162, 0.152]], - [0.916, [0.809, 0.155, 0.152]], - [0.918, [0.809, 0.155, 0.152]], - [0.92, [0.801, 0.148, 0.152]], - [0.922, [0.801, 0.148, 0.152]], - [0.924, [0.793, 0.14, 0.152]], - [0.926, [0.793, 0.14, 0.152]], - [0.928, [0.785, 0.133, 0.152]], - [0.93, [0.785, 0.133, 0.152]], - [0.932, [0.778, 0.125, 0.152]], - [0.933, [0.778, 0.125, 0.152]], - [0.935, [0.77, 0.118, 0.151]], - [0.937, [0.77, 0.118, 0.151]], - [0.939, [0.762, 0.111, 0.151]], - [0.941, [0.762, 0.111, 0.151]], - [0.943, [0.755, 0.103, 0.151]], - [0.945, [0.755, 0.103, 0.151]], - [0.947, [0.747, 0.096, 0.151]], - [0.949, [0.747, 0.096, 0.151]], - [0.951, [0.739, 0.089, 0.151]], - [0.953, [0.739, 0.089, 0.151]], - [0.955, [0.732, 0.081, 0.151]], - [0.957, [0.732, 0.081, 0.151]], - [0.959, [0.724, 0.074, 0.151]], - [0.961, [0.724, 0.074, 0.151]], - [0.963, [0.716, 0.066, 0.15]], - [0.965, [0.716, 0.066, 0.15]], - [0.967, [0.709, 0.059, 0.15]], - [0.969, [0.709, 0.059, 0.15]], - [0.971, [0.701, 0.052, 0.15]], - [0.973, [0.701, 0.052, 0.15]], - [0.975, [0.693, 0.044, 0.15]], - [0.977, [0.693, 0.044, 0.15]], - [0.978, [0.686, 0.037, 0.15]], - [0.98, [0.686, 0.037, 0.15]], - [0.982, [0.678, 0.03, 0.15]], - [0.984, [0.678, 0.03, 0.15]], - [0.986, [0.67, 0.022, 0.149]], - [0.988, [0.67, 0.022, 0.149]], - [0.99, [0.662, 0.015, 0.149]], - [0.992, [0.662, 0.015, 0.149]], - [0.994, [0.655, 0.007, 0.149]], - [0.996, [0.655, 0.007, 0.149]], - [0.998, [0.647, 0, 0.149]], - [1, [0.647, 0, 0.149]], - ], + value: convertColorPaletteToColorMap( + ouiColorPalette( + [euiThemeVars.euiColorSuccess, euiThemeVars.euiColorWarning, euiThemeVars.euiColorDanger], + COLOR_MAP_LENGTH, + false, + true + ) + ), }, }; diff --git a/src/plugins/data_source/server/client/configure_client.ts b/src/plugins/data_source/server/client/configure_client.ts index 77a0e067bbc0..acbdfddb3fc4 100644 --- a/src/plugins/data_source/server/client/configure_client.ts +++ b/src/plugins/data_source/server/client/configure_client.ts @@ -74,7 +74,7 @@ export const configureClient = async ( requireDecryption ); } catch (error: any) { - logger.error( + logger.debug( `Failed to get data source client for dataSourceId: [${dataSourceId}]. ${error}: ${error.stack}` ); // Re-throw as DataSourceError diff --git a/src/plugins/data_source/server/legacy/configure_legacy_client.ts b/src/plugins/data_source/server/legacy/configure_legacy_client.ts index 0d074cf77d4a..8341e844edc8 100644 --- a/src/plugins/data_source/server/legacy/configure_legacy_client.ts +++ b/src/plugins/data_source/server/legacy/configure_legacy_client.ts @@ -60,7 +60,7 @@ export const configureLegacyClient = async ( dataSourceId ); } catch (error: any) { - logger.error( + logger.debug( `Failed to get data source client for dataSourceId: [${dataSourceId}]. ${error}: ${error.stack}` ); // Re-throw as DataSourceError diff --git a/src/plugins/data_source_management/public/components/create_data_source_wizard/components/create_form/create_data_source_form.tsx b/src/plugins/data_source_management/public/components/create_data_source_wizard/components/create_form/create_data_source_form.tsx index 9f320400fb76..3107ee84006a 100644 --- a/src/plugins/data_source_management/public/components/create_data_source_wizard/components/create_form/create_data_source_form.tsx +++ b/src/plugins/data_source_management/public/components/create_data_source_wizard/components/create_form/create_data_source_form.tsx @@ -584,7 +584,7 @@ export class CreateDataSourceForm extends React.Component< + getSavedObjectsWithDataSource(getSavedObjects(), dataSourceId, dataSourceTitle), dataIndices: [ { id: 'ecommerce', diff --git a/src/plugins/home/server/services/sample_data/data_sets/flights/index.ts b/src/plugins/home/server/services/sample_data/data_sets/flights/index.ts index e90cdaea3b8a..038744419f3e 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/flights/index.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/flights/index.ts @@ -33,6 +33,7 @@ import { i18n } from '@osd/i18n'; import { getSavedObjects } from './saved_objects'; import { fieldMappings } from './field_mappings'; import { SampleDatasetSchema, AppLinkSchema } from '../../lib/sample_dataset_registry_types'; +import { getSavedObjectsWithDataSource, appendDataSourceId } from '../util'; const flightsName = i18n.translate('home.sampleData.flightsSpecTitle', { defaultMessage: 'Sample flight data', @@ -42,6 +43,9 @@ const flightsDescription = i18n.translate('home.sampleData.flightsSpecDescriptio }); const initialAppLinks = [] as AppLinkSchema[]; +const DEFAULT_INDEX = 'd3d7af60-4c81-11e8-b3d7-01146121b73d'; +const DASHBOARD_ID = '7adfa750-4c81-11e8-b3d7-01146121b73d'; + export const flightsSpecProvider = function (): SampleDatasetSchema { return { id: 'flights', @@ -49,10 +53,11 @@ export const flightsSpecProvider = function (): SampleDatasetSchema { description: flightsDescription, previewImagePath: '/plugins/home/assets/sample_data_resources/flights/dashboard.png', darkPreviewImagePath: '/plugins/home/assets/sample_data_resources/flights/dashboard_dark.png', - overviewDashboard: '7adfa750-4c81-11e8-b3d7-01146121b73d', + overviewDashboard: appendDataSourceId(DASHBOARD_ID), appLinks: initialAppLinks, - defaultIndex: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', - savedObjects: getSavedObjects(), + defaultIndex: appendDataSourceId(DEFAULT_INDEX), + savedObjects: (dataSourceId?: string, dataSourceTitle?: string) => + getSavedObjectsWithDataSource(getSavedObjects(), dataSourceId, dataSourceTitle), dataIndices: [ { id: 'flights', diff --git a/src/plugins/home/server/services/sample_data/data_sets/logs/index.ts b/src/plugins/home/server/services/sample_data/data_sets/logs/index.ts index 1438de8ad64f..e4afabcdd212 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/logs/index.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/logs/index.ts @@ -33,6 +33,7 @@ import { i18n } from '@osd/i18n'; import { getSavedObjects } from './saved_objects'; import { fieldMappings } from './field_mappings'; import { SampleDatasetSchema, AppLinkSchema } from '../../lib/sample_dataset_registry_types'; +import { appendDataSourceId, getSavedObjectsWithDataSource } from '../util'; const logsName = i18n.translate('home.sampleData.logsSpecTitle', { defaultMessage: 'Sample web logs', @@ -42,6 +43,9 @@ const logsDescription = i18n.translate('home.sampleData.logsSpecDescription', { }); const initialAppLinks = [] as AppLinkSchema[]; +const DEFAULT_INDEX = '90943e30-9a47-11e8-b64d-95841ca0b247'; +const DASHBOARD_ID = 'edf84fe0-e1a0-11e7-b6d5-4dc382ef7f5b'; + export const logsSpecProvider = function (): SampleDatasetSchema { return { id: 'logs', @@ -49,10 +53,11 @@ export const logsSpecProvider = function (): SampleDatasetSchema { description: logsDescription, previewImagePath: '/plugins/home/assets/sample_data_resources/logs/dashboard.png', darkPreviewImagePath: '/plugins/home/assets/sample_data_resources/logs/dashboard_dark.png', - overviewDashboard: 'edf84fe0-e1a0-11e7-b6d5-4dc382ef7f5b', + overviewDashboard: appendDataSourceId(DASHBOARD_ID), appLinks: initialAppLinks, - defaultIndex: '90943e30-9a47-11e8-b64d-95841ca0b247', - savedObjects: getSavedObjects(), + defaultIndex: appendDataSourceId(DEFAULT_INDEX), + savedObjects: (dataSourceId?: string, dataSourceTitle?: string) => + getSavedObjectsWithDataSource(getSavedObjects(), dataSourceId, dataSourceTitle), dataIndices: [ { id: 'logs', diff --git a/src/plugins/home/server/services/sample_data/data_sets/util.ts b/src/plugins/home/server/services/sample_data/data_sets/util.ts new file mode 100644 index 000000000000..46022f1c22d3 --- /dev/null +++ b/src/plugins/home/server/services/sample_data/data_sets/util.ts @@ -0,0 +1,84 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { SavedObject } from 'opensearch-dashboards/server'; + +export const appendDataSourceId = (id: string) => { + return (dataSourceId?: string) => (dataSourceId ? `${dataSourceId}_` + id : id); +}; + +export const getSavedObjectsWithDataSource = ( + saveObjectList: SavedObject[], + dataSourceId?: string, + dataSourceTitle?: string +): SavedObject[] => { + if (dataSourceId) { + return saveObjectList.map((saveObject) => { + saveObject.id = `${dataSourceId}_` + saveObject.id; + // update reference + if (saveObject.type === 'dashboard') { + saveObject.references.map((reference) => { + if (reference.id) { + reference.id = `${dataSourceId}_` + reference.id; + } + }); + } + + // update reference + if (saveObject.type === 'visualization' || saveObject.type === 'search') { + const searchSourceString = saveObject.attributes?.kibanaSavedObjectMeta?.searchSourceJSON; + const visStateString = saveObject.attributes?.visState; + + if (searchSourceString) { + const searchSource = JSON.parse(searchSourceString); + if (searchSource.index) { + searchSource.index = `${dataSourceId}_` + searchSource.index; + saveObject.attributes.kibanaSavedObjectMeta.searchSourceJSON = JSON.stringify( + searchSource + ); + } + } + + if (visStateString) { + const visState = JSON.parse(visStateString); + const controlList = visState.params?.controls; + if (controlList) { + controlList.map((control) => { + if (control.indexPattern) { + control.indexPattern = `${dataSourceId}_` + control.indexPattern; + } + }); + } + saveObject.attributes.visState = JSON.stringify(visState); + } + } + + // update reference + if (saveObject.type === 'index-pattern') { + saveObject.references = [ + { + id: `${dataSourceId}`, + type: 'data-source', + name: 'dataSource', + }, + ]; + } + + if (dataSourceTitle) { + if ( + saveObject.type === 'dashboard' || + saveObject.type === 'visualization' || + saveObject.type === 'search' + ) { + saveObject.attributes.title = saveObject.attributes.title + `_${dataSourceTitle}`; + } + } + + return saveObject; + }); + } + + return saveObjectList; +}; diff --git a/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts b/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts index 86ac5bcc5779..76632ee4489d 100644 --- a/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts +++ b/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts @@ -87,15 +87,15 @@ export interface SampleDatasetSchema { darkPreviewImagePath: string; // saved object id of main dashboard for sample data set - overviewDashboard: string; + overviewDashboard: (dataSourceId?: string) => string; appLinks: AppLinkSchema[]; // saved object id of default index-pattern for sample data set - defaultIndex: string; + defaultIndex: (dataSourceId?: string) => string; // OpenSearch Dashboards saved objects (index patter, visualizations, dashboard, ...) // Should provide a nice demo of OpenSearch Dashboards's functionality with the sample data set - savedObjects: Array>; + savedObjects: (dataSourceId?: string, dataSourceTitle?: string) => Array>; dataIndices: DataIndexSchema[]; status?: string | undefined; statusMsg?: unknown; diff --git a/src/plugins/home/server/services/sample_data/routes/install.test.ts b/src/plugins/home/server/services/sample_data/routes/install.test.ts new file mode 100644 index 000000000000..ad7b421c23d5 --- /dev/null +++ b/src/plugins/home/server/services/sample_data/routes/install.test.ts @@ -0,0 +1,160 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CoreSetup, RequestHandlerContext } from 'src/core/server'; +import { coreMock, httpServerMock } from '../../../../../../core/server/mocks'; +import { flightsSpecProvider } from '../data_sets'; +import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; +import { createInstallRoute } from './install'; + +const flightsSampleDataset = flightsSpecProvider(); + +const sampleDatasets: SampleDatasetSchema[] = [flightsSampleDataset]; + +describe('sample data install route', () => { + let mockCoreSetup: MockedKeys; + let mockLogger; + let mockUsageTracker; + + beforeEach(() => { + mockCoreSetup = coreMock.createSetup(); + mockLogger = { + warn: jest.fn(), + }; + + mockUsageTracker = { + addInstall: jest.fn(), + addUninstall: jest.fn(), + }; + }); + + it('handler calls expected api with the given request', async () => { + const mockClient = jest.fn().mockResolvedValue(true); + + const mockSOClientGetResponse = { + saved_objects: [ + { + type: 'dashboard', + id: '12345', + namespaces: ['default'], + attributes: { title: 'dashboard' }, + }, + ], + }; + const mockSOClient = { bulkCreate: jest.fn().mockResolvedValue(mockSOClientGetResponse) }; + + const mockContext = { + core: { + opensearch: { + legacy: { + client: { callAsCurrentUser: mockClient }, + }, + }, + savedObjects: { client: mockSOClient }, + }, + }; + const mockBody = { id: 'flights' }; + const mockQuery = {}; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + params: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createInstallRoute( + mockCoreSetup.http.createRouter(), + sampleDatasets, + mockLogger, + mockUsageTracker + ); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.post.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient.mock.calls[1][1].body.settings).toMatchObject({ + index: { number_of_shards: 1, auto_expand_replicas: '0-1' }, + }); + + // expect(mockClient).toBeCalledTimes(2); + expect(mockResponse.ok).toBeCalled(); + expect(mockResponse.ok.mock.calls[0][0]).toMatchObject({ + body: { + opensearchIndicesCreated: { opensearch_dashboards_sample_data_flights: 13059 }, + opensearchDashboardsSavedObjectsLoaded: 20, + }, + }); + }); + + it('handler calls expected api with the given request with data source', async () => { + const mockDataSourceId = 'dataSource'; + + const mockClient = jest.fn().mockResolvedValue(true); + + const mockSOClientGetResponse = { + saved_objects: [ + { + type: 'dashboard', + id: '12345', + namespaces: ['default'], + attributes: { title: 'dashboard' }, + }, + ], + }; + const mockSOClient = { + bulkCreate: jest.fn().mockResolvedValue(mockSOClientGetResponse), + get: jest.fn().mockResolvedValue(mockSOClientGetResponse), + }; + + const mockContext = { + dataSource: { + opensearch: { + legacy: { + getClient: (id) => { + return { + callAPI: mockClient, + }; + }, + }, + }, + }, + core: { + savedObjects: { client: mockSOClient }, + }, + }; + const mockBody = { id: 'flights' }; + const mockQuery = { data_source_id: mockDataSourceId }; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + params: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createInstallRoute( + mockCoreSetup.http.createRouter(), + sampleDatasets, + mockLogger, + mockUsageTracker + ); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.post.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient.mock.calls[1][1].body.settings).toMatchObject({ + index: { number_of_shards: 1 }, + }); + + expect(mockResponse.ok).toBeCalled(); + expect(mockResponse.ok.mock.calls[0][0]).toMatchObject({ + body: { + opensearchIndicesCreated: { opensearch_dashboards_sample_data_flights: 13059 }, + opensearchDashboardsSavedObjectsLoaded: 20, + }, + }); + }); +}); diff --git a/src/plugins/home/server/services/sample_data/routes/install.ts b/src/plugins/home/server/services/sample_data/routes/install.ts index eec5f0d5bc86..3a321c3bdf0a 100644 --- a/src/plugins/home/server/services/sample_data/routes/install.ts +++ b/src/plugins/home/server/services/sample_data/routes/install.ts @@ -29,7 +29,7 @@ */ import { schema } from '@osd/config-schema'; -import { IRouter, Logger, RequestHandlerContext } from 'src/core/server'; +import { IRouter, LegacyCallAPIOptions, Logger } from 'src/core/server'; import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; import { createIndexName } from '../lib/create_index_name'; import { @@ -44,7 +44,11 @@ const insertDataIntoIndex = ( dataIndexConfig: any, index: string, nowReference: string, - context: RequestHandlerContext, + caller: ( + endpoint: string, + clientParams?: Record, + options?: LegacyCallAPIOptions + ) => Promise, logger: Logger ) => { function updateTimestamps(doc: any) { @@ -73,7 +77,8 @@ const insertDataIntoIndex = ( bulk.push(insertCmd); bulk.push(updateTimestamps(doc)); }); - const resp = await context.core.opensearch.legacy.client.callAsCurrentUser('bulk', { + + const resp = await caller('bulk', { body: bulk, }); if (resp.errors) { @@ -105,11 +110,16 @@ export function createInstallRoute( validate: { params: schema.object({ id: schema.string() }), // TODO validate now as date - query: schema.object({ now: schema.maybe(schema.string()) }), + query: schema.object({ + now: schema.maybe(schema.string()), + data_source_id: schema.maybe(schema.string()), + }), }, }, async (context, req, res) => { const { params, query } = req; + const dataSourceId = query.data_source_id; + const sampleDataset = sampleDatasets.find(({ id }) => id === params.id); if (!sampleDataset) { return res.notFound(); @@ -118,13 +128,36 @@ export function createInstallRoute( const now = query.now ? new Date(query.now) : new Date(); const nowReference = dateToIso8601IgnoringTime(now); const counts = {}; + const caller = dataSourceId + ? context.dataSource.opensearch.legacy.getClient(dataSourceId).callAPI + : context.core.opensearch.legacy.client.callAsCurrentUser; + + let dataSourceTitle; + try { + if (dataSourceId) { + const dataSource = await context.core.savedObjects.client + .get('data-source', dataSourceId) + .then((response) => { + const attributes: any = response?.attributes || {}; + return { + id: response.id, + title: attributes.title, + }; + }); + + dataSourceTitle = dataSource.title; + } + } catch (err) { + return res.internalError({ body: err }); + } + for (let i = 0; i < sampleDataset.dataIndices.length; i++) { const dataIndexConfig = sampleDataset.dataIndices[i]; const index = createIndexName(sampleDataset.id, dataIndexConfig.id); // clean up any old installation of dataset try { - await context.core.opensearch.legacy.client.callAsCurrentUser('indices.delete', { + await caller('indices.delete', { index, }); } catch (err) { @@ -135,14 +168,13 @@ export function createInstallRoute( const createIndexParams = { index, body: { - settings: { index: { number_of_shards: 1, auto_expand_replicas: '0-1' } }, + settings: dataSourceId + ? { index: { number_of_shards: 1 } } + : { index: { number_of_shards: 1, auto_expand_replicas: '0-1' } }, mappings: { properties: dataIndexConfig.fields }, }, }; - await context.core.opensearch.legacy.client.callAsCurrentUser( - 'indices.create', - createIndexParams - ); + await caller('indices.create', createIndexParams); } catch (err) { const errMsg = `Unable to create sample data index "${index}", error: ${err.message}`; logger.warn(errMsg); @@ -154,7 +186,7 @@ export function createInstallRoute( dataIndexConfig, index, nowReference, - context, + caller, logger ); (counts as any)[index] = count; @@ -166,9 +198,11 @@ export function createInstallRoute( } let createResults; + const savedObjectsList = sampleDataset.savedObjects(dataSourceId, dataSourceTitle); + try { createResults = await context.core.savedObjects.client.bulkCreate( - sampleDataset.savedObjects.map(({ version, ...savedObject }) => savedObject), + savedObjectsList.map(({ version, ...savedObject }) => savedObject), { overwrite: true } ); } catch (err) { @@ -192,7 +226,7 @@ export function createInstallRoute( return res.ok({ body: { opensearchIndicesCreated: counts, - opensearchDashboardsSavedObjectsLoaded: sampleDataset.savedObjects.length, + opensearchDashboardsSavedObjectsLoaded: savedObjectsList.length, }, }); } diff --git a/src/plugins/home/server/services/sample_data/routes/list.test.ts b/src/plugins/home/server/services/sample_data/routes/list.test.ts new file mode 100644 index 000000000000..70201fafd06b --- /dev/null +++ b/src/plugins/home/server/services/sample_data/routes/list.test.ts @@ -0,0 +1,122 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CoreSetup, RequestHandlerContext } from 'src/core/server'; +import { coreMock, httpServerMock } from '../../../../../../core/server/mocks'; +import { createListRoute } from './list'; +import { flightsSpecProvider } from '../data_sets'; +import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; + +const flightsSampleDataset = flightsSpecProvider(); + +const sampleDatasets: SampleDatasetSchema[] = [flightsSampleDataset]; + +describe('sample data list route', () => { + let mockCoreSetup: MockedKeys; + + beforeEach(() => { + mockCoreSetup = coreMock.createSetup(); + }); + + it('handler calls expected api with the given request', async () => { + const mockClient = jest.fn().mockResolvedValueOnce(true).mockResolvedValueOnce({ count: 1 }); + + const mockSOClientGetResponse = { + saved_objects: [ + { + type: 'dashboard', + id: '7adfa750-4c81-11e8-b3d7-01146121b73d', + namespaces: ['default'], + attributes: { title: 'dashboard' }, + }, + ], + }; + const mockSOClient = { get: jest.fn().mockResolvedValue(mockSOClientGetResponse) }; + + const mockContext = { + core: { + opensearch: { + legacy: { + client: { callAsCurrentUser: mockClient }, + }, + }, + savedObjects: { client: mockSOClient }, + }, + }; + const mockBody = {}; + const mockQuery = {}; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + body: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createListRoute(mockCoreSetup.http.createRouter(), sampleDatasets); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.get.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient).toBeCalledTimes(2); + expect(mockResponse.ok).toBeCalled(); + expect(mockSOClient.get.mock.calls[0][1]).toMatch('7adfa750-4c81-11e8-b3d7-01146121b73d'); + }); + + it('handler calls expected api with the given request with data source', async () => { + const mockDataSourceId = 'dataSource'; + const mockClient = jest.fn().mockResolvedValueOnce(true).mockResolvedValueOnce({ count: 1 }); + + const mockSOClientGetResponse = { + saved_objects: [ + { + type: 'dashboard', + id: `${mockDataSourceId}_7adfa750-4c81-11e8-b3d7-01146121b73d`, + namespaces: ['default'], + attributes: { title: 'dashboard' }, + }, + ], + }; + const mockSOClient = { get: jest.fn().mockResolvedValue(mockSOClientGetResponse) }; + + const mockContext = { + dataSource: { + opensearch: { + legacy: { + getClient: (id) => { + return { + callAPI: mockClient, + }; + }, + }, + }, + }, + core: { + savedObjects: { client: mockSOClient }, + }, + }; + + const mockBody = {}; + const mockQuery = { data_source_id: mockDataSourceId }; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + body: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createListRoute(mockCoreSetup.http.createRouter(), sampleDatasets); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.get.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient).toBeCalledTimes(2); + expect(mockResponse.ok).toBeCalled(); + expect(mockSOClient.get.mock.calls[0][1]).toMatch( + `${mockDataSourceId}_7adfa750-4c81-11e8-b3d7-01146121b73d` + ); + }); +}); diff --git a/src/plugins/home/server/services/sample_data/routes/list.ts b/src/plugins/home/server/services/sample_data/routes/list.ts index a0665132dd10..bc6fac2b76f3 100644 --- a/src/plugins/home/server/services/sample_data/routes/list.ts +++ b/src/plugins/home/server/services/sample_data/routes/list.ts @@ -29,6 +29,7 @@ */ import { IRouter } from 'src/core/server'; +import { schema } from '@osd/config-schema'; import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; import { createIndexName } from '../lib/create_index_name'; @@ -37,66 +38,79 @@ const INSTALLED = 'installed'; const UNKNOWN = 'unknown'; export const createListRoute = (router: IRouter, sampleDatasets: SampleDatasetSchema[]) => { - router.get({ path: '/api/sample_data', validate: false }, async (context, req, res) => { - const registeredSampleDatasets = sampleDatasets.map((sampleDataset) => { - return { - id: sampleDataset.id, - name: sampleDataset.name, - description: sampleDataset.description, - previewImagePath: sampleDataset.previewImagePath, - darkPreviewImagePath: sampleDataset.darkPreviewImagePath, - overviewDashboard: sampleDataset.overviewDashboard, - appLinks: sampleDataset.appLinks, - defaultIndex: sampleDataset.defaultIndex, - dataIndices: sampleDataset.dataIndices.map(({ id }) => ({ id })), - status: sampleDataset.status, - statusMsg: sampleDataset.statusMsg, - }; - }); - const isInstalledPromises = registeredSampleDatasets.map(async (sampleDataset) => { - for (let i = 0; i < sampleDataset.dataIndices.length; i++) { - const dataIndexConfig = sampleDataset.dataIndices[i]; - const index = createIndexName(sampleDataset.id, dataIndexConfig.id); - try { - const indexExists = await context.core.opensearch.legacy.client.callAsCurrentUser( - 'indices.exists', - { index } - ); - if (!indexExists) { - sampleDataset.status = NOT_INSTALLED; + router.get( + { + path: '/api/sample_data', + validate: { + query: schema.object({ data_source_id: schema.maybe(schema.string()) }), + }, + }, + async (context, req, res) => { + const dataSourceId = req.query.data_source_id; + + const registeredSampleDatasets = sampleDatasets.map((sampleDataset) => { + return { + id: sampleDataset.id, + name: sampleDataset.name, + description: sampleDataset.description, + previewImagePath: sampleDataset.previewImagePath, + darkPreviewImagePath: sampleDataset.darkPreviewImagePath, + overviewDashboard: sampleDataset.overviewDashboard(dataSourceId), + appLinks: sampleDataset.appLinks, + defaultIndex: sampleDataset.defaultIndex(dataSourceId), + dataIndices: sampleDataset.dataIndices.map(({ id }) => ({ id })), + status: sampleDataset.status, + statusMsg: sampleDataset.statusMsg, + }; + }); + const isInstalledPromises = registeredSampleDatasets.map(async (sampleDataset) => { + const caller = dataSourceId + ? context.dataSource.opensearch.legacy.getClient(dataSourceId).callAPI + : context.core.opensearch.legacy.client.callAsCurrentUser; + + for (let i = 0; i < sampleDataset.dataIndices.length; i++) { + const dataIndexConfig = sampleDataset.dataIndices[i]; + const index = createIndexName(sampleDataset.id, dataIndexConfig.id); + try { + const indexExists = await caller('indices.exists', { index }); + + if (!indexExists) { + sampleDataset.status = NOT_INSTALLED; + return; + } + + const { count } = await caller('count', { + index, + }); + + if (count === 0) { + sampleDataset.status = NOT_INSTALLED; + return; + } + } catch (err) { + sampleDataset.status = UNKNOWN; + sampleDataset.statusMsg = err.message; return; } - - const { count } = await context.core.opensearch.legacy.client.callAsCurrentUser('count', { - index, - }); - if (count === 0) { + } + try { + await context.core.savedObjects.client.get('dashboard', sampleDataset.overviewDashboard); + } catch (err) { + if (context.core.savedObjects.client.errors.isNotFoundError(err)) { sampleDataset.status = NOT_INSTALLED; return; } - } catch (err) { + sampleDataset.status = UNKNOWN; sampleDataset.statusMsg = err.message; return; } - } - try { - await context.core.savedObjects.client.get('dashboard', sampleDataset.overviewDashboard); - } catch (err) { - if (context.core.savedObjects.client.errors.isNotFoundError(err)) { - sampleDataset.status = NOT_INSTALLED; - return; - } - - sampleDataset.status = UNKNOWN; - sampleDataset.statusMsg = err.message; - return; - } - sampleDataset.status = INSTALLED; - }); + sampleDataset.status = INSTALLED; + }); - await Promise.all(isInstalledPromises); - return res.ok({ body: registeredSampleDatasets }); - }); + await Promise.all(isInstalledPromises); + return res.ok({ body: registeredSampleDatasets }); + } + ); }; diff --git a/src/plugins/home/server/services/sample_data/routes/uninstall.test.ts b/src/plugins/home/server/services/sample_data/routes/uninstall.test.ts new file mode 100644 index 000000000000..7d9797d752cb --- /dev/null +++ b/src/plugins/home/server/services/sample_data/routes/uninstall.test.ts @@ -0,0 +1,101 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { CoreSetup, RequestHandlerContext } from 'src/core/server'; +import { coreMock, httpServerMock } from '../../../../../../core/server/mocks'; +import { flightsSpecProvider } from '../data_sets'; +import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; +import { createUninstallRoute } from './uninstall'; + +const flightsSampleDataset = flightsSpecProvider(); + +const sampleDatasets: SampleDatasetSchema[] = [flightsSampleDataset]; + +describe('sample data uninstall route', () => { + let mockCoreSetup: MockedKeys; + let mockUsageTracker; + let mockClient; + let mockSOClient; + + beforeEach(() => { + mockCoreSetup = coreMock.createSetup(); + + mockUsageTracker = { + addInstall: jest.fn(), + addUninstall: jest.fn(), + }; + + mockClient = jest.fn(); + mockSOClient = { delete: jest.fn().mockResolvedValue(true) }; + }); + + it('handler calls expected api with the given request', async () => { + const mockContext = { + core: { + opensearch: { + legacy: { + client: { callAsCurrentUser: mockClient }, + }, + }, + savedObjects: { client: mockSOClient }, + }, + }; + const mockBody = { id: 'flights' }; + const mockQuery = {}; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + params: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createUninstallRoute(mockCoreSetup.http.createRouter(), sampleDatasets, mockUsageTracker); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.delete.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient).toBeCalled(); + expect(mockSOClient.delete).toBeCalled(); + }); + + it('handler calls expected api with the given request with data source', async () => { + const mockDataSourceId = 'dataSource'; + + const mockContext = { + dataSource: { + opensearch: { + legacy: { + getClient: (id) => { + return { + callAPI: mockClient, + }; + }, + }, + }, + }, + core: { + savedObjects: { client: mockSOClient }, + }, + }; + const mockBody = { id: 'flights' }; + const mockQuery = { data_source_id: mockDataSourceId }; + const mockRequest = httpServerMock.createOpenSearchDashboardsRequest({ + params: mockBody, + query: mockQuery, + }); + const mockResponse = httpServerMock.createResponseFactory(); + + createUninstallRoute(mockCoreSetup.http.createRouter(), sampleDatasets, mockUsageTracker); + + const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; + const handler = mockRouter.delete.mock.calls[0][1]; + + await handler((mockContext as unknown) as RequestHandlerContext, mockRequest, mockResponse); + + expect(mockClient).toBeCalled(); + expect(mockSOClient.delete).toBeCalled(); + }); +}); diff --git a/src/plugins/home/server/services/sample_data/routes/uninstall.ts b/src/plugins/home/server/services/sample_data/routes/uninstall.ts index e38a2224aae8..730de6afff30 100644 --- a/src/plugins/home/server/services/sample_data/routes/uninstall.ts +++ b/src/plugins/home/server/services/sample_data/routes/uninstall.ts @@ -45,34 +45,29 @@ export function createUninstallRoute( path: '/api/sample_data/{id}', validate: { params: schema.object({ id: schema.string() }), + query: schema.object({ + data_source_id: schema.maybe(schema.string()), + }), }, }, - async ( - { - core: { - opensearch: { - legacy: { - client: { callAsCurrentUser }, - }, - }, - savedObjects: { client: savedObjectsClient }, - }, - }, - request, - response - ) => { + async (context, request, response) => { const sampleDataset = sampleDatasets.find(({ id }) => id === request.params.id); + const dataSourceId = request.query.data_source_id; if (!sampleDataset) { return response.notFound(); } + const caller = dataSourceId + ? context.dataSource.opensearch.legacy.getClient(dataSourceId).callAPI + : context.core.opensearch.legacy.client.callAsCurrentUser; + for (let i = 0; i < sampleDataset.dataIndices.length; i++) { const dataIndexConfig = sampleDataset.dataIndices[i]; const index = createIndexName(sampleDataset.id, dataIndexConfig.id); try { - await callAsCurrentUser('indices.delete', { index }); + await caller('indices.delete', { index }); } catch (err) { return response.customError({ statusCode: err.status, @@ -83,8 +78,10 @@ export function createUninstallRoute( } } - const deletePromises = sampleDataset.savedObjects.map(({ type, id }) => - savedObjectsClient.delete(type, id) + const savedObjectsList = sampleDataset.savedObjects(dataSourceId); + + const deletePromises = savedObjectsList.map(({ type, id }) => + context.core.savedObjects.client.delete(type, id) ); try { diff --git a/src/plugins/home/server/services/sample_data/sample_data_registry.ts b/src/plugins/home/server/services/sample_data/sample_data_registry.ts index d90de532c339..5f298fd86ef3 100644 --- a/src/plugins/home/server/services/sample_data/sample_data_registry.ts +++ b/src/plugins/home/server/services/sample_data/sample_data_registry.ts @@ -84,23 +84,23 @@ export class SampleDataRegistry { } const defaultIndexSavedObjectJson = value.savedObjects.find((savedObjectJson: any) => { return ( - savedObjectJson.type === 'index-pattern' && savedObjectJson.id === value.defaultIndex + savedObjectJson.type === 'index-pattern' && savedObjectJson.id === value.defaultIndex() ); }); if (!defaultIndexSavedObjectJson) { throw new Error( - `Unable to register sample dataset spec, defaultIndex: "${value.defaultIndex}" does not exist in savedObjects list.` + `Unable to register sample dataset spec, defaultIndex: "${value.defaultIndex()}" does not exist in savedObjects list.` ); } const dashboardSavedObjectJson = value.savedObjects.find((savedObjectJson: any) => { return ( - savedObjectJson.type === 'dashboard' && savedObjectJson.id === value.overviewDashboard + savedObjectJson.type === 'dashboard' && savedObjectJson.id === value.overviewDashboard() ); }); if (!dashboardSavedObjectJson) { throw new Error( - `Unable to register sample dataset spec, overviewDashboard: "${value.overviewDashboard}" does not exist in savedObject list.` + `Unable to register sample dataset spec, overviewDashboard: "${value.overviewDashboard()}" does not exist in savedObject list.` ); } this.sampleDatasets.push(value); diff --git a/src/plugins/maps_legacy/public/map/opensearch_dashboards_map.js b/src/plugins/maps_legacy/public/map/opensearch_dashboards_map.js index 3ca067c27796..6f4af0e47c17 100644 --- a/src/plugins/maps_legacy/public/map/opensearch_dashboards_map.js +++ b/src/plugins/maps_legacy/public/map/opensearch_dashboards_map.js @@ -41,6 +41,7 @@ import { i18n } from '@osd/i18n'; import { ORIGIN } from '../common/constants/origin'; import { getToasts } from '../opensearch_dashboards_services'; import { L } from '../leaflet'; +import { euiThemeVars } from '@osd/ui-shared-deps/theme'; function makeFitControl(fitContainer, opensearchDashboardsMap) { // eslint-disable-next-line no-undef @@ -474,7 +475,7 @@ export class OpenSearchDashboardsMap extends EventEmitter { } addDrawControl() { - const drawColor = '#000'; + const drawColor = euiThemeVars.euiColorInk; const drawOptions = { draw: { polyline: false, diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx index d4dbd4c9f5ef..5fa97eb0a7d2 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx @@ -43,7 +43,6 @@ const dataShim = { }; describe('TopNavMenu', () => { - const WRAPPER_SELECTOR = '.osdTopNavMenu__wrapper'; const TOP_NAV_ITEM_SELECTOR = 'TopNavMenuItem'; const SEARCH_BAR_SELECTOR = 'SearchBar'; const menuItems: TopNavMenuData[] = [ @@ -66,28 +65,24 @@ describe('TopNavMenu', () => { it('Should render nothing when no config is provided', () => { const component = shallowWithIntl(); - expect(component.find(WRAPPER_SELECTOR).length).toBe(0); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(0); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(0); }); it('Should not render menu items when config is empty', () => { const component = shallowWithIntl(); - expect(component.find(WRAPPER_SELECTOR).length).toBe(0); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(0); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(0); }); it('Should render 1 menu item', () => { const component = shallowWithIntl(); - expect(component.find(WRAPPER_SELECTOR).length).toBe(1); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(1); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(0); }); it('Should render multiple menu items', () => { const component = shallowWithIntl(); - expect(component.find(WRAPPER_SELECTOR).length).toBe(1); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(menuItems.length); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(0); }); @@ -96,7 +91,6 @@ describe('TopNavMenu', () => { const component = shallowWithIntl( ); - expect(component.find(WRAPPER_SELECTOR).length).toBe(1); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(0); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(1); }); @@ -105,7 +99,6 @@ describe('TopNavMenu', () => { const component = shallowWithIntl( ); - expect(component.find(WRAPPER_SELECTOR).length).toBe(1); expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(menuItems.length); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(1); }); @@ -170,7 +163,6 @@ describe('TopNavMenu', () => { await refresh(); - expect(component.find(WRAPPER_SELECTOR).length).toBe(1); expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(1); // menu is rendered outside of the component diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx index bddea070fd12..15b6c6bff057 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx @@ -115,22 +115,21 @@ export function TopNavMenu(props: TopNavMenuProps): ReactElement | null { function renderLayout() { const { setMenuMountPoint } = props; const menuClassName = classNames('osdTopNavMenu', props.className); - const wrapperClassName = 'osdTopNavMenu__wrapper'; if (setMenuMountPoint) { return ( <> - {renderMenu(menuClassName)} + {renderMenu(menuClassName)} - {renderSearchBar()} + {renderSearchBar()} ); } else { return ( - + <> {renderMenu(menuClassName)} {renderSearchBar()} - + ); } } diff --git a/src/plugins/saved_objects/public/saved_object/saved_object.test.ts b/src/plugins/saved_objects/public/saved_object/saved_object.test.ts index 7e10a68c2d1f..3b1eea303f23 100644 --- a/src/plugins/saved_objects/public/saved_object/saved_object.test.ts +++ b/src/plugins/saved_objects/public/saved_object/saved_object.test.ts @@ -28,7 +28,6 @@ * under the License. */ -import Bluebird from 'bluebird'; import { createSavedObjectClass } from './saved_object'; import { SavedObject, @@ -76,16 +75,16 @@ describe('Saved Object', () => { */ function stubOpenSearchResponse(mockDocResponse: SimpleSavedObject) { // Stub out search for duplicate title: - savedObjectsClientStub.get = jest.fn().mockReturnValue(Bluebird.resolve(mockDocResponse)); - savedObjectsClientStub.update = jest.fn().mockReturnValue(Bluebird.resolve(mockDocResponse)); + savedObjectsClientStub.get = jest.fn().mockReturnValue(Promise.resolve(mockDocResponse)); + savedObjectsClientStub.update = jest.fn().mockReturnValue(Promise.resolve(mockDocResponse)); savedObjectsClientStub.find = jest .fn() - .mockReturnValue(Bluebird.resolve({ savedObjects: [], total: 0 })); + .mockReturnValue(Promise.resolve({ savedObjects: [], total: 0 })); savedObjectsClientStub.bulkGet = jest .fn() - .mockReturnValue(Bluebird.resolve({ savedObjects: [mockDocResponse] })); + .mockReturnValue(Promise.resolve({ savedObjects: [mockDocResponse] })); } function stubSavedObjectsClientCreate( @@ -94,7 +93,7 @@ describe('Saved Object', () => { ) { savedObjectsClientStub.create = jest .fn() - .mockReturnValue(resolve ? Bluebird.resolve(resp) : Bluebird.reject(resp)); + .mockReturnValue(resolve ? Promise.resolve(resp) : Promise.reject(resp)); } /** @@ -193,7 +192,7 @@ describe('Saved Object', () => { return createInitializedSavedObject({ type: 'dashboard', id: myId }).then((savedObject) => { savedObjectsClientStub.create = jest.fn().mockImplementation(() => { expect(savedObject.id).toBe(myId); - return Bluebird.resolve({ id: myId }); + return Promise.resolve({ id: myId }); }); savedObject.copyOnSave = false; @@ -227,7 +226,7 @@ describe('Saved Object', () => { return createInitializedSavedObject({ type: 'dashboard', id }).then((savedObject) => { savedObjectsClientStub.create = jest.fn().mockImplementation(() => { expect(savedObject.isSaving).toBe(true); - return Bluebird.resolve({ + return Promise.resolve({ type: 'dashboard', id, _version: 'foo', @@ -246,7 +245,7 @@ describe('Saved Object', () => { return createInitializedSavedObject({ type: 'dashboard' }).then((savedObject) => { savedObjectsClientStub.create = jest.fn().mockImplementation(() => { expect(savedObject.isSaving).toBe(true); - return Bluebird.reject(''); + return Promise.reject(); }); expect(savedObject.isSaving).toBe(false); @@ -681,7 +680,7 @@ describe('Saved Object', () => { ); indexPattern.title = indexPattern.id!; savedObject.searchSource!.setField('index', indexPattern); - return Bluebird.resolve(indexPattern); + return Promise.resolve(indexPattern); }); expect(!!savedObject.searchSource!.getField('index')).toBe(false); diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap index b4842f289136..293b8c2e30d2 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap @@ -8,21 +8,10 @@ exports[`Relationships from legacy app should render dashboards normally 1`] = ` hasBorder={true} >

- - - -    MyDashboard

@@ -167,21 +156,10 @@ exports[`Relationships from legacy app should render errors 1`] = ` hasBorder={true} >

- - - -    MyDashboard

@@ -211,21 +189,10 @@ exports[`Relationships from legacy app should render index patterns normally 1`] hasBorder={true} >

- - - -    MyIndexPattern*

@@ -375,21 +342,10 @@ exports[`Relationships from legacy app should render searches normally 1`] = ` hasBorder={true} >

- - - -    MySearch

@@ -539,21 +495,10 @@ exports[`Relationships from legacy app should render visualizations normally 1`] hasBorder={true} >

- - - -    MyViz

@@ -698,21 +643,10 @@ exports[`Relationships should render dashboards normally 1`] = ` hasBorder={true} >

- - - -    MyDashboard

@@ -857,21 +791,10 @@ exports[`Relationships should render errors 1`] = ` hasBorder={true} >

- - - -    MyDashboard

@@ -901,21 +824,10 @@ exports[`Relationships should render index patterns normally 1`] = ` hasBorder={true} >

- - - -    MyIndexPattern*

@@ -1065,21 +977,10 @@ exports[`Relationships should render searches normally 1`] = ` hasBorder={true} >

- - - -    MySearch

@@ -1229,21 +1130,10 @@ exports[`Relationships should render visualizations normally 1`] = ` hasBorder={true} >

- - - -    MyViz

diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx index ff42351d83af..68e1ffec8e3b 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx @@ -336,18 +336,8 @@ export class Relationships extends Component - -

- - - -    - {savedObject.meta.title || getDefaultTitle(savedObject)} -

+ +

{savedObject.meta.title || getDefaultTitle(savedObject)}

diff --git a/src/plugins/ui_actions/README.md b/src/plugins/ui_actions/README.md index 28e3b2d63d2e..4431a47a06ed 100644 --- a/src/plugins/ui_actions/README.md +++ b/src/plugins/ui_actions/README.md @@ -97,3 +97,12 @@ Use the UI actions explorer in the Developer examples to learn more about the se ```sh yarn start --run-examples ``` + +## Action Properties + +Refer to [./public/actions/action.ts](./public/actions/action.ts) for all properties, keeping in mind it extends the [presentable](./public/util/presentable.ts) interface. Here are some properties that provide special functionality and customization. + +- `order` is used when there is more than one action matched to a trigger and within context menus. Higher numbers are displayed first. +- `getDisplayName` is a function that can return either a string or a JSX element. Returning a JSX element allows flexibility with formatting. +- `getIconType` can be used to add an icon before the display name. +- `grouping` determines where this item should appear as a submenu. Each group can also contain a category, which is used within context menus to organize similar groups into the same section of the menu. See examples explorer for more details about what this looks like within a context menu. diff --git a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts index b9afca9fb99c..e70561bea221 100644 --- a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts +++ b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts @@ -448,3 +448,123 @@ test('groups with deep nesting', async () => { ] `); }); + +// Tests with: +// a regular action +// a group with 2 actions uncategorized +// a group with 2 actions with a category of "test-category" and low order of 10 +// a group with 1 actions with a category of "test-category" and high order of 20 +test('groups with categories and order', async () => { + const grouping1 = [ + { + id: 'test-group', + getDisplayName: () => 'Test group', + getIconType: () => 'bell', + }, + ]; + const grouping2 = [ + { + id: 'test-group-2', + getDisplayName: () => 'Test group 2', + getIconType: () => 'bell', + category: 'test-category', + order: 10, + }, + ]; + const grouping3 = [ + { + id: 'test-group-3', + getDisplayName: () => 'Test group 3', + getIconType: () => 'bell', + category: 'test-category', + order: 20, + }, + ]; + + const actions = [ + createTestAction({ + dispayName: 'Foo 1', + }), + createTestAction({ + dispayName: 'Bar 1', + grouping: grouping1, + }), + createTestAction({ + dispayName: 'Bar 2', + grouping: grouping1, + }), + createTestAction({ + dispayName: 'Qux 1', + grouping: grouping2, + }), + createTestAction({ + dispayName: 'Qux 2', + grouping: grouping2, + }), + // It is expected that, because there is only 1 action within this group, + // it will be added to the mainMenu as a single item, but next to other + // groups of the same category. When a group has a category, but only one + // item, we just add that single item; otherwise, we add a link to the group + createTestAction({ + dispayName: 'Waldo 1', + grouping: grouping3, + }), + ]; + const menu = await buildContextMenuForActions({ + actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + }); + + expect(menu.map(resultMapper)).toMatchInlineSnapshot(` + Array [ + Object { + "items": Array [ + Object { + "name": "Foo 1", + }, + Object { + "isSeparator": true, + }, + Object { + "name": "Test group", + }, + Object { + "isSeparator": true, + }, + Object { + "name": "Waldo 1", + }, + Object { + "name": "Test group 2", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Bar 1", + }, + Object { + "name": "Bar 2", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Qux 1", + }, + Object { + "name": "Qux 2", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Waldo 1", + }, + ], + }, + ] + `); +}); diff --git a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx index 6d69be1f3faa..81710767e0a9 100644 --- a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx +++ b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx @@ -64,6 +64,8 @@ type PanelDescriptor = EuiContextMenuPanelDescriptor & { _level?: number; _icon?: string; items: ItemDescriptor[]; + _category?: string; + _order?: number; }; const onClick = (action: Action, context: ActionExecutionContext, close: () => void) => ( @@ -125,7 +127,7 @@ const removeItemMetaFields = (items: ItemDescriptor[]): EuiContextMenuPanelItemD const removePanelMetaFields = (panels: PanelDescriptor[]): EuiContextMenuPanelDescriptor[] => { const euiPanels: EuiContextMenuPanelDescriptor[] = []; for (const panel of panels) { - const { _level: omit, _icon: omit2, ...rest } = panel; + const { _level: omit, _icon: omit2, _category: omit3, _order: omit4, ...rest } = panel; euiPanels.push({ ...rest, items: removeItemMetaFields(rest.items) }); } return euiPanels; @@ -179,6 +181,8 @@ export async function buildContextMenuForActions({ items: [], _level: i, _icon: group.getIconType ? group.getIconType(context) : 'empty', + _category: group.category, + _order: group.order, }; // If there are multiple groups and this is not the first group, @@ -231,17 +235,57 @@ export async function buildContextMenuForActions({ // Any additional items are hidden behind a "more" item wrapMainPanelItemsIntoSubmenu(panels, 'mainMenu'); + // This will be used to store items that eventually are placed into the + // mainMenu panel. Specifying a category allows for placing groups into the + // mainMenu so they appear without the separator between them. + const categories = {}; + for (const panel of Object.values(panels)) { - // If the panel is a root-level panel, such as the parent of a group, - // then create mainMenu item for this panel - if (panel._level === 0) { + // Do nothing if not root-level panel, such as the parent of a group + if (panel._level !== 0) { + continue; + } + + // Proceed to create mainMenu item for this panel + + // If a category is specified, store either a link to the panel or the + // item within to that category. We will deal with the category after + // looping through all panels. + if (panel._category) { + // Create array to store category items + if (!categories[panel._category]) { + categories[panel._category] = []; + } + + // If multiple items in the panel, store a link to this panel into the category. + // Otherwise, just store the single item into the category. + if (panel.items.length > 1) { + categories[panel._category].push({ + order: panel._order, + items: [ + { + name: panel.title || panel.id, + icon: panel._icon || 'empty', + panel: panel.id, + }, + ], + }); + } else { + categories[panel._category].push({ + order: panel._order || 0, + items: panel.items, + }); + } + } else { + // If no category, continue with adding items to the mainMenu + // Add separator with unique key if needed if (panels.mainMenu.items.length) { panels.mainMenu.items.push({ isSeparator: true, key: `${panel.id}separator` }); } // If a panel has more than one child, then allow items to be grouped - // and link to it in the mainMenu. Otherwise, flatten the group. + // and link to it in the mainMenu. Otherwise, link to the single item. // Note: this only happens on the root level panels, not for inner groups. if (panel.items.length > 1) { panels.mainMenu.items.push({ @@ -255,6 +299,27 @@ export async function buildContextMenuForActions({ } } + // For each category, add a separator before each one and then add category items. + // This is for the mainMenu panel. + Object.keys(categories).forEach((key) => { + // Get the items sorted by group order, allowing for groups within categories + // to be ordered. A category consists of an order and its items. + // Higher orders are sorted to the top. + const sortedEntries = categories[key].sort((a, b) => b.order - a.order); + const sortedItems = sortedEntries.reduce( + (items, category) => [...items, ...category.items], + [] + ); + + // Add separator with unique key if needed + if (panels.mainMenu.items.length) { + panels.mainMenu.items.push({ isSeparator: true, key: `${key}separator` }); + } + + panels.mainMenu.items.push(...sortedItems); + }); + const panelList = Object.values(panels); + return removePanelMetaFields(panelList); } diff --git a/src/plugins/ui_actions/public/util/presentable.ts b/src/plugins/ui_actions/public/util/presentable.ts index 428644e1c2c6..9aaeada8a16e 100644 --- a/src/plugins/ui_actions/public/util/presentable.ts +++ b/src/plugins/ui_actions/public/util/presentable.ts @@ -94,6 +94,14 @@ export interface PresentableGroup Pick, 'getDisplayName' | 'getDisplayNameTooltip' | 'getIconType' | 'order'> > { id: string; + /** + * This allows groups to be categorized with other groups. Within a UI action + * context menu, this means that an item, which links to a group, will be + * placed in the menu adjacent to similar items that link to groups of the + * same category. + * See PanelGroupOptionsAndContextActions example to learn more. + */ + category?: string; } export type PresentableGrouping = Array>; diff --git a/src/plugins/vis_type_table/public/components/table_vis_app.scss b/src/plugins/vis_type_table/public/components/table_vis_app.scss index aafcd40e7382..f0b82a1cd8d8 100644 --- a/src/plugins/vis_type_table/public/components/table_vis_app.scss +++ b/src/plugins/vis_type_table/public/components/table_vis_app.scss @@ -17,11 +17,6 @@ flex: 0 0 auto; } -// Style for table component title -.visTable__component__title { - text-align: center; -} - // Modifier for visTables__group when displayed in columns .visTable__groupInColumns { flex-direction: row; diff --git a/src/plugins/vis_type_table/public/components/table_vis_component.tsx b/src/plugins/vis_type_table/public/components/table_vis_component.tsx index 1b16ec170a84..79cf768f66e8 100644 --- a/src/plugins/vis_type_table/public/components/table_vis_component.tsx +++ b/src/plugins/vis_type_table/public/components/table_vis_component.tsx @@ -104,7 +104,7 @@ export const TableVisComponent = ({ return ( <> {title && ( - +

{title}

)} diff --git a/src/plugins/vis_type_timeline/public/helpers/panel_utils.ts b/src/plugins/vis_type_timeline/public/helpers/panel_utils.ts index 35089811c08b..a7bcf0f7786e 100644 --- a/src/plugins/vis_type_timeline/public/helpers/panel_utils.ts +++ b/src/plugins/vis_type_timeline/public/helpers/panel_utils.ts @@ -32,6 +32,7 @@ import { cloneDeep, defaults, mergeWith, compact } from 'lodash'; import $ from 'jquery'; import moment, { Moment } from 'moment-timezone'; +import { euiPaletteColorBlind } from '@elastic/eui'; import { TimefilterContract } from 'src/plugins/data/public'; import { IUiSettingsClient } from 'opensearch-dashboards/public'; @@ -65,18 +66,7 @@ interface TimeRangeBounds { export const ACTIVE_CURSOR = 'ACTIVE_CURSOR_TIMELINE'; export const eventBus = $({}); -const colors = [ - '#01A4A4', - '#C66', - '#D0D102', - '#616161', - '#00A1CB', - '#32742C', - '#F18D05', - '#113F8C', - '#61AE24', - '#D70060', -]; +const colors = euiPaletteColorBlind(); const SERIES_ID_ATTR = 'data-series-id'; diff --git a/src/plugins/vis_type_timeseries/public/metrics_type.ts b/src/plugins/vis_type_timeseries/public/metrics_type.ts index 3562684a0b1b..ed3ea21c25e2 100644 --- a/src/plugins/vis_type_timeseries/public/metrics_type.ts +++ b/src/plugins/vis_type_timeseries/public/metrics_type.ts @@ -30,6 +30,7 @@ import { i18n } from '@osd/i18n'; +import { euiPaletteColorBlind } from '@elastic/eui'; // @ts-ignore import { metricsRequestHandler } from './request_handler'; import { EditorController } from './application'; @@ -53,7 +54,7 @@ export const metricsVisDefinition = { series: [ { id: '61ca57f1-469d-11e7-af02-69e470af7417', - color: '#68BC00', + color: euiPaletteColorBlind()[0], split_mode: 'everything', split_color_mode: 'opensearchDashboards', metrics: [ diff --git a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js b/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js index aa25c059ed28..1559050aaa3a 100644 --- a/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js +++ b/src/plugins/vis_type_vislib/public/vislib/visualizations/gauge_chart.test.js @@ -155,11 +155,11 @@ describe('Vislib Gauge Chart Test Suite', function () { fills.push(this.style.fill); }); expect(fills).toEqual([ - 'rgb(165,0,38)', - 'rgb(255,255,190)', - 'rgb(255,255,190)', - 'rgb(0,104,55)', - 'rgb(0,104,55)', + 'rgb(189,39,30)', + 'rgb(245,167,0)', + 'rgb(245,167,0)', + 'rgb(1,125,115)', + 'rgb(1,125,115)', ]); }); @@ -175,11 +175,11 @@ describe('Vislib Gauge Chart Test Suite', function () { fills.push(this.style.fill); }); expect(fills).toEqual([ - 'rgb(8,48,107)', - 'rgb(107,174,214)', - 'rgb(107,174,214)', - 'rgb(247,251,255)', - 'rgb(247,251,255)', + 'rgb(96,146,192)', + 'rgb(178,199,223)', + 'rgb(178,199,223)', + 'rgb(255,255,255)', + 'rgb(255,255,255)', ]); }); });