From 7bc1ca54cc6a4344d8a7774df0f28f6e42dcf7c9 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 5 Aug 2022 17:43:18 -0700 Subject: [PATCH 01/38] Remove odfe bwc test (#408) (#409) * removed odfe bwc test Signed-off-by: Shenoy Pratik * removed bwc test from workflows Signed-off-by: Shenoy Pratik (cherry picked from commit 556b5fb0a774534ec167dfb9e96f68855296ef75) Co-authored-by: Shenoy Pratik --- ...orts-scheduler-test-and-build-workflow.yml | 8 - reports-scheduler/build.gradle | 188 ------------------ 2 files changed, 196 deletions(-) diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index 2e78ad08..eaec60d8 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -21,13 +21,6 @@ jobs: - name: Checkout Reports Scheduler uses: actions/checkout@v2 - - name: RunBackwards Compatibility Tests - run: | - cd reports-scheduler - echo "Running backwards compatibility tests ..." - ./gradlew bwcTestSuite - - - name: Build with Gradle run: | cd reports-scheduler @@ -50,4 +43,3 @@ jobs: with: name: reports-scheduler path: reports-scheduler-builds - diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index ddc2a28f..df277e1d 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -315,194 +315,6 @@ testClusters.integTest { setting 'path.repo', repo.absolutePath } -// For job-scheduler and reports-scheduler, the latest opendistro releases appear to be 1.13.0.0. -String bwcVersion = "1.13.0.0" -String baseName = "reportsSchedulerBwcCluster" -String bwcFilePath = "src/test/resources/bwc" -String bwcJobSchedulerURL = "https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-job-scheduler/opendistro-job-scheduler-" + bwcVersion + ".zip" -String bwcReportsSchedulerURL = "https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-reports-scheduler/opendistro-reports-scheduler-" + bwcVersion + ".zip" - -2.times {i -> - testClusters { - "${baseName}$i" { - testDistribution = "ARCHIVE" - versions = ["7.10.2", opensearch_version] - numberOfNodes = 3 - plugin(provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/job-scheduler/" + bwcVersion) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-job-scheduler-" + bwcVersion + ".zip") - if (!file.exists()) { - new URL(bwcJobSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/job-scheduler/" + bwcVersion).getSingleFile() - } - } - } - })) - plugin(provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/reports-scheduler/" + bwcVersion) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-reports-scheduler-" + bwcVersion + ".zip") - if (!file.exists()) { - new URL(bwcReportsSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/reports-scheduler/" + bwcVersion).getSingleFile() - } - } - } - })) - setting 'path.repo', "${buildDir}/cluster/shared/repo/${baseName}" - setting 'http.content_type.required', 'true' - } - } -} - -List> plugins = [] - -// Ensure the artifact for the current project version is available to be used for the bwc tests -task prepareBwcTests { - dependsOn bundle - doLast { - plugins = [ - provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/job-scheduler/" + project.version) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-reports-scheduler-" + project.version + ".zip") - if (!file.exists()) { - new URL(jobSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/job-scheduler/" + project.version).getSingleFile() - } - } - } - }), - project.getObjects().fileProperty().value(bundle.getArchiveFile()) - ] - } -} - -// Create two test clusters with 3 nodes of the old version -2.times {i -> - task "${baseName}#oldVersionClusterTask$i"(type: StandaloneRestIntegTestTask) { - dependsOn 'prepareBwcTests' - useCluster testClusters."${baseName}$i" - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'old_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'old' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}$i".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}$i".getName()}") - } -} - -// Upgrade one node of the old cluster to new OpenSearch version with upgraded plugin version. -// This results in a mixed cluster with 2 nodes on the old version and 1 upgraded node. -// This is also used as a one third upgraded cluster for a rolling upgrade. -task "${baseName}#mixedClusterTask"(type: StandaloneRestIntegTestTask) { - useCluster testClusters."${baseName}0" - dependsOn "${baseName}#oldVersionClusterTask0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'first' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade the second node to new OpenSearch version with upgraded plugin version after the first node is upgraded. -// This results in a mixed cluster with 1 node on the old version and 2 upgraded nodes. -// This is used for rolling upgrade. -task "${baseName}#twoThirdsUpgradedClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#mixedClusterTask" - useCluster testClusters."${baseName}0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'second' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade the third node to new OpenSearch version with upgraded plugin version after the second node is upgraded. -// This results in a fully upgraded cluster. -// This is used for rolling upgrade. -task "${baseName}#rollingUpgradeClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#twoThirdsUpgradedClusterTask" - useCluster testClusters."${baseName}0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - mustRunAfter "${baseName}#mixedClusterTask" - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'third' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade all the nodes of the old cluster to new OpenSearch version with upgraded plugin version -// at the same time resulting in a fully upgraded cluster. -task "${baseName}#fullRestartClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#oldVersionClusterTask1" - useCluster testClusters."${baseName}1" - doFirst { - testClusters."${baseName}1".upgradeAllNodesAndPluginsToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'upgraded_cluster' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}1".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}1".getName()}") -} - -// A bwc test suite which runs all the bwc tasks combined -task bwcTestSuite(type: StandaloneRestIntegTestTask) { - exclude '**/*Test*' - exclude '**/*IT*' - dependsOn tasks.named("${baseName}#mixedClusterTask") - dependsOn tasks.named("${baseName}#rollingUpgradeClusterTask") - dependsOn tasks.named("${baseName}#fullRestartClusterTask") -} - task integTestRemote(type: RestIntegTestTask) { testClassesDirs = sourceSets.test.output.classesDirs classpath = sourceSets.test.runtimeClasspath From a7ba6ad77f2d6775230c083eb2f8641ecbd263df Mon Sep 17 00:00:00 2001 From: Shenoy Pratik Date: Fri, 5 Aug 2022 17:26:57 -0700 Subject: [PATCH 02/38] Remove odfe bwc test (#408) * removed odfe bwc test Signed-off-by: Shenoy Pratik * removed bwc test from workflows Signed-off-by: Shenoy Pratik (cherry picked from commit 556b5fb0a774534ec167dfb9e96f68855296ef75) --- ...orts-scheduler-test-and-build-workflow.yml | 8 - reports-scheduler/build.gradle | 188 ------------------ 2 files changed, 196 deletions(-) diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index 2e78ad08..eaec60d8 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -21,13 +21,6 @@ jobs: - name: Checkout Reports Scheduler uses: actions/checkout@v2 - - name: RunBackwards Compatibility Tests - run: | - cd reports-scheduler - echo "Running backwards compatibility tests ..." - ./gradlew bwcTestSuite - - - name: Build with Gradle run: | cd reports-scheduler @@ -50,4 +43,3 @@ jobs: with: name: reports-scheduler path: reports-scheduler-builds - diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index ddc2a28f..df277e1d 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -315,194 +315,6 @@ testClusters.integTest { setting 'path.repo', repo.absolutePath } -// For job-scheduler and reports-scheduler, the latest opendistro releases appear to be 1.13.0.0. -String bwcVersion = "1.13.0.0" -String baseName = "reportsSchedulerBwcCluster" -String bwcFilePath = "src/test/resources/bwc" -String bwcJobSchedulerURL = "https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-job-scheduler/opendistro-job-scheduler-" + bwcVersion + ".zip" -String bwcReportsSchedulerURL = "https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-reports-scheduler/opendistro-reports-scheduler-" + bwcVersion + ".zip" - -2.times {i -> - testClusters { - "${baseName}$i" { - testDistribution = "ARCHIVE" - versions = ["7.10.2", opensearch_version] - numberOfNodes = 3 - plugin(provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/job-scheduler/" + bwcVersion) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-job-scheduler-" + bwcVersion + ".zip") - if (!file.exists()) { - new URL(bwcJobSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/job-scheduler/" + bwcVersion).getSingleFile() - } - } - } - })) - plugin(provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/reports-scheduler/" + bwcVersion) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-reports-scheduler-" + bwcVersion + ".zip") - if (!file.exists()) { - new URL(bwcReportsSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/reports-scheduler/" + bwcVersion).getSingleFile() - } - } - } - })) - setting 'path.repo', "${buildDir}/cluster/shared/repo/${baseName}" - setting 'http.content_type.required', 'true' - } - } -} - -List> plugins = [] - -// Ensure the artifact for the current project version is available to be used for the bwc tests -task prepareBwcTests { - dependsOn bundle - doLast { - plugins = [ - provider(new Callable(){ - @Override - RegularFile call() throws Exception { - return new RegularFile() { - @Override - File getAsFile() { - File dir = new File(bwcFilePath + "/job-scheduler/" + project.version) - if (!dir.exists()) { - dir.mkdirs() - } - File file = new File(dir, "opendistro-reports-scheduler-" + project.version + ".zip") - if (!file.exists()) { - new URL(jobSchedulerURL).withInputStream{ ins -> file.withOutputStream{ it << ins }} - } - return fileTree(bwcFilePath + "/job-scheduler/" + project.version).getSingleFile() - } - } - } - }), - project.getObjects().fileProperty().value(bundle.getArchiveFile()) - ] - } -} - -// Create two test clusters with 3 nodes of the old version -2.times {i -> - task "${baseName}#oldVersionClusterTask$i"(type: StandaloneRestIntegTestTask) { - dependsOn 'prepareBwcTests' - useCluster testClusters."${baseName}$i" - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'old_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'old' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}$i".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}$i".getName()}") - } -} - -// Upgrade one node of the old cluster to new OpenSearch version with upgraded plugin version. -// This results in a mixed cluster with 2 nodes on the old version and 1 upgraded node. -// This is also used as a one third upgraded cluster for a rolling upgrade. -task "${baseName}#mixedClusterTask"(type: StandaloneRestIntegTestTask) { - useCluster testClusters."${baseName}0" - dependsOn "${baseName}#oldVersionClusterTask0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'first' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade the second node to new OpenSearch version with upgraded plugin version after the first node is upgraded. -// This results in a mixed cluster with 1 node on the old version and 2 upgraded nodes. -// This is used for rolling upgrade. -task "${baseName}#twoThirdsUpgradedClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#mixedClusterTask" - useCluster testClusters."${baseName}0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'second' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade the third node to new OpenSearch version with upgraded plugin version after the second node is upgraded. -// This results in a fully upgraded cluster. -// This is used for rolling upgrade. -task "${baseName}#rollingUpgradeClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#twoThirdsUpgradedClusterTask" - useCluster testClusters."${baseName}0" - doFirst { - testClusters."${baseName}0".upgradeNodeAndPluginToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - mustRunAfter "${baseName}#mixedClusterTask" - systemProperty 'tests.rest.bwcsuite', 'mixed_cluster' - systemProperty 'tests.rest.bwcsuite_round', 'third' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}0".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}0".getName()}") -} - -// Upgrade all the nodes of the old cluster to new OpenSearch version with upgraded plugin version -// at the same time resulting in a fully upgraded cluster. -task "${baseName}#fullRestartClusterTask"(type: StandaloneRestIntegTestTask) { - dependsOn "${baseName}#oldVersionClusterTask1" - useCluster testClusters."${baseName}1" - doFirst { - testClusters."${baseName}1".upgradeAllNodesAndPluginsToNextVersion(plugins) - } - filter { - includeTestsMatching "org.opensearch.integTest.bwc.*IT" - } - systemProperty 'tests.rest.bwcsuite', 'upgraded_cluster' - systemProperty 'tests.plugin_bwc_version', bwcVersion - nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}1".allHttpSocketURI.join(",")}") - nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}1".getName()}") -} - -// A bwc test suite which runs all the bwc tasks combined -task bwcTestSuite(type: StandaloneRestIntegTestTask) { - exclude '**/*Test*' - exclude '**/*IT*' - dependsOn tasks.named("${baseName}#mixedClusterTask") - dependsOn tasks.named("${baseName}#rollingUpgradeClusterTask") - dependsOn tasks.named("${baseName}#fullRestartClusterTask") -} - task integTestRemote(type: RestIntegTestTask) { testClassesDirs = sourceSets.test.output.classesDirs classpath = sourceSets.test.runtimeClasspath From c91534a67503e6c61ef6e1f53e852bb937f9fc14 Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Fri, 5 Aug 2022 16:40:26 -0700 Subject: [PATCH 03/38] Bump version 2.2.0 Signed-off-by: vamsi-amazon --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 3d5ee688..5bb574fd 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.1.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.2.0.0 jobs: build: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index bdb4dd7d..126ff0b3 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.1.0.0 + version: 2.2.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index a1d41172..ee5aeee6 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.1.0.0", - "opensearchDashboardsVersion": "2.1.0", + "version": "2.2.0.0", + "opensearchDashboardsVersion": "2.2.0", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index e3a86862..f78b5601 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.1.0.0", + "version": "2.2.0.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index df277e1d..36fa1984 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.1.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.2.0-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From 51567f2ad4e717ebf282271cbf62934c14d98a90 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 5 Aug 2022 18:14:39 -0700 Subject: [PATCH 04/38] Bump version 2.2.0 (#413) Signed-off-by: vamsi-amazon (cherry picked from commit c91534a67503e6c61ef6e1f53e852bb937f9fc14) Co-authored-by: vamsi-amazon --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 3d5ee688..5bb574fd 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.1.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.2.0.0 jobs: build: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index bdb4dd7d..126ff0b3 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.1.0.0 + version: 2.2.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index a1d41172..ee5aeee6 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.1.0.0", - "opensearchDashboardsVersion": "2.1.0", + "version": "2.2.0.0", + "opensearchDashboardsVersion": "2.2.0", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index e3a86862..f78b5601 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.1.0.0", + "version": "2.2.0.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index df277e1d..36fa1984 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.1.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.2.0-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From 1d3980ab2d93a89acd0a5716f575a222389b9e8d Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Fri, 5 Aug 2022 18:19:24 -0700 Subject: [PATCH 05/38] Release notes for 2.2.0 Signed-off-by: vamsi-amazon (cherry picked from commit f43f7de6eea93f8749eb08ce6cb248275ef78c85) --- .../opensearch-dashboards-reports.release-notes-2.2.0.0.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md new file mode 100644 index 00000000..98ab9da9 --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md @@ -0,0 +1,5 @@ +## Version 2.2.0.0 Release Notes +Compatible with OpenSearch 2.2.0.0 + +### Maintenance +* Bump version to 2.0.0 ([#412](https://github.com/opensearch-project/dashboards-reports/pull/412)) \ No newline at end of file From 1b25f940bb8b890050420d20a1811fe174f6ff31 Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Fri, 5 Aug 2022 18:19:24 -0700 Subject: [PATCH 06/38] Release notes for 2.2.0 Signed-off-by: vamsi-amazon (cherry picked from commit f43f7de6eea93f8749eb08ce6cb248275ef78c85) --- .../opensearch-dashboards-reports.release-notes-2.2.0.0.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md new file mode 100644 index 00000000..98ab9da9 --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.2.0.0.md @@ -0,0 +1,5 @@ +## Version 2.2.0.0 Release Notes +Compatible with OpenSearch 2.2.0.0 + +### Maintenance +* Bump version to 2.0.0 ([#412](https://github.com/opensearch-project/dashboards-reports/pull/412)) \ No newline at end of file From 8d6e1abbba54c055b25b541ca1528a70d87e522b Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Thu, 18 Aug 2022 16:48:08 -0700 Subject: [PATCH 07/38] [2.x] Restrict chromium requests (#435) * Fix regex validation, detect iframe, embed, object tags Signed-off-by: Joshua Li * Disallow redirection to non-localhost urls Signed-off-by: Joshua Li * Disallow connection to non-allowlisted urls Signed-off-by: Joshua Li * Disable JIT Signed-off-by: Joshua Li * Fix workflow Signed-off-by: Joshua Li * Try to fix CI Signed-off-by: Joshua Li * Fix localstorage logic Signed-off-by: Joshua Li Signed-off-by: Joshua Li --- ...boards-reports-test-and-build-workflow.yml | 22 +++--- .../__tests__/visualReportHelper.test.ts | 8 +- .../server/routes/utils/constants.ts | 2 + .../routes/utils/visual_report/style.css | 4 + .../utils/visual_report/visualReportHelper.ts | 75 ++++++++++++++++--- .../utils/__tests__/validationHelper.test.ts | 36 ++++++++- .../server/utils/validationHelper.ts | 2 +- 7 files changed, 125 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 5bb574fd..8f4cd6b3 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -20,12 +20,12 @@ jobs: with: repository: opensearch-project/Opensearch-Dashboards ref: ${{ env.OPENSEARCH_VERSION }} - path: dashboards-reports/OpenSearch-Dashboards + path: OpenSearch-Dashboards - name: Get node version id: versions_step run: - echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - name: Setup Node uses: actions/setup-node@v1 @@ -35,13 +35,13 @@ jobs: - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - name: Add Chromium Binary to Reporting for Testing run: | sudo apt update sudo apt install -y libnss3-dev fonts-liberation libfontconfig1 - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip unzip chromium-linux-x64.zip rm chromium-linux-x64.zip @@ -51,25 +51,25 @@ jobs: with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - name: Test uses: nick-invision/retry@v1 with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test --coverage + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test --coverage - name: Upload coverage uses: codecov/codecov-action@v1 with: flags: dashboards-reports - directory: OpenSearch-Dashboards/plugins/ + directory: ../OpenSearch-Dashboards/plugins/ token: ${{ secrets.CODECOV_TOKEN }} - name: Build Artifact run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build cd build @@ -103,16 +103,16 @@ jobs: uses: actions/upload-artifact@v1 with: name: dashboards-reports-linux-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip - name: Upload Artifact For Linux arm64 uses: actions/upload-artifact@v1 with: name: dashboards-reports-linux-arm64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip - name: Upload Artifact For Windows uses: actions/upload-artifact@v1 with: name: dashboards-reports-windows-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip diff --git a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts index 81595979..4bf3cd0b 100644 --- a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts +++ b/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts @@ -55,7 +55,9 @@ describe('test create visual report', () => { reportParams as ReportParamsSchemaType, mockHtmlPath, mockLogger, - mockHeader + mockHeader, + undefined, + /^(data:image|file:\/\/)/ ); expect(fileName).toContain(`${reportParams.report_name}`); expect(fileName).toContain('.png'); @@ -71,7 +73,9 @@ describe('test create visual report', () => { reportParams as ReportParamsSchemaType, mockHtmlPath, mockLogger, - mockHeader + mockHeader, + undefined, + /^(data:image|file:\/\/)/ ); expect(fileName).toContain(`${reportParams.report_name}`); expect(fileName).toContain('.pdf'); diff --git a/dashboards-reports/server/routes/utils/constants.ts b/dashboards-reports/server/routes/utils/constants.ts index dffb0cd1..6af81fd2 100644 --- a/dashboards-reports/server/routes/utils/constants.ts +++ b/dashboards-reports/server/routes/utils/constants.ts @@ -93,6 +93,8 @@ const ipv6Regex = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:) const localhostRegex = /localhost:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])/g; const iframeRegex = /iframe/g; +export const ALLOWED_HOSTS = /^(0|0.0.0.0|127.0.0.1|localhost|(.*\.)?(opensearch.org|aws.a2z.com))$/; + export const replaceBlockedKeywords = (htmlString: string) => { // replace : htmlString = htmlString.replace(ipv4Regex, BLOCKED_KEYWORD); diff --git a/dashboards-reports/server/routes/utils/visual_report/style.css b/dashboards-reports/server/routes/utils/visual_report/style.css index 58628427..c329e281 100644 --- a/dashboards-reports/server/routes/utils/visual_report/style.css +++ b/dashboards-reports/server/routes/utils/visual_report/style.css @@ -4,6 +4,10 @@ body { padding: 0; } +iframe, embed, object { + display: none !important; +} + /* nice padding + matches Kibana default UI colors you could also set this to inherit if the wrapper gets inserted inside a kibana section. I might also remove the manual text color here as well, potentially */ .reportWrapper { diff --git a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts index d98d1824..21b52c20 100644 --- a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts +++ b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts @@ -14,6 +14,7 @@ import { SELECTOR, CHROMIUM_PATH, SECURITY_CONSTANTS, + ALLOWED_HOSTS, } from '../constants'; import { getFileName } from '../helpers'; import { CreateReportResultType } from '../types'; @@ -27,7 +28,8 @@ export const createVisualReport = async ( queryUrl: string, logger: Logger, extraHeaders: Headers, - timezone?: string + timezone?: string, + validRequestProtocol = /^(data:image)/, ): Promise => { const { core_params, @@ -76,6 +78,8 @@ export const createVisualReport = async ( '--no-zygote', '--single-process', '--font-render-hinting=none', + '--js-flags="--jitless --no-opt"', + '--disable-features=V8OptimizeJavascript', ], executablePath: CHROMIUM_PATH, ignoreHTTPSErrors: true, @@ -84,6 +88,32 @@ export const createVisualReport = async ( }, }); const page = await browser.newPage(); + + await page.setRequestInterception(true); + let localStorageAvailable = true; + page.on('request', (req) => { + // disallow non-allowlisted connections. urls with valid protocols do not need ALLOWED_HOSTS check + if ( + !validRequestProtocol.test(req.url()) && + !ALLOWED_HOSTS.test(new URL(req.url()).hostname) + ) { + if (req.isNavigationRequest() && req.redirectChain().length > 0) { + localStorageAvailable = false; + logger.error( + 'Reporting does not allow redirections to outside of localhost, aborting. URL received: ' + + req.url() + ); + } else { + logger.warn( + 'Disabled connection to non-allowlist domains: ' + req.url() + ); + } + req.abort(); + } else { + req.continue(); + } + }); + page.setDefaultNavigationTimeout(0); page.setDefaultTimeout(100000); // use 100s timeout instead of default 30s // Set extra headers that are needed @@ -93,13 +123,25 @@ export const createVisualReport = async ( logger.info(`original queryUrl ${queryUrl}`); await page.goto(queryUrl, { waitUntil: 'networkidle0' }); // should add to local storage after page.goto, then access the page again - browser must have an url to register local storage item on it - await page.evaluate( - /* istanbul ignore next */ - (key) => { - localStorage.setItem(key, 'false'); - }, - SECURITY_CONSTANTS.TENANT_LOCAL_STORAGE_KEY - ); + try { + await page.evaluate( + /* istanbul ignore next */ + (key) => { + try { + if ( + localStorageAvailable && + typeof localStorage !== 'undefined' && + localStorage !== null + ) { + localStorage.setItem(key, 'false'); + } + } catch (err) {} + }, + SECURITY_CONSTANTS.TENANT_LOCAL_STORAGE_KEY + ); + } catch (err) { + logger.error(err); + } await page.goto(queryUrl, { waitUntil: 'networkidle0' }); logger.info(`page url ${page.url()}`); @@ -162,9 +204,24 @@ export const createVisualReport = async ( // wait for dynamic page content to render await waitForDynamicContent(page); - await addReportStyle(page); await addReportHeader(page, keywordFilteredHeader); await addReportFooter(page, keywordFilteredFooter); + await addReportStyle(page); + + // this causes UT to fail in github CI but works locally + try { + const numDisallowedTags = await page.evaluate( + () => + document.getElementsByTagName('iframe').length + + document.getElementsByTagName('embed').length + + document.getElementsByTagName('object').length + ); + if (numDisallowedTags > 0) { + throw Error('Reporting does not support "iframe", "embed", or "object" tags, aborting'); + } + } catch (error) { + logger.error(error); + } // create pdf or png accordingly if (reportFormat === FORMAT.pdf) { diff --git a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts index bc3ca73d..9bdb4fe0 100644 --- a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts +++ b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts @@ -10,7 +10,7 @@ import { REPORT_TYPE, TRIGGER_TYPE, } from '../../routes/utils/constants'; -import { validateReport, validateReportDefinition } from '../validationHelper'; +import { isValidRelativeUrl, validateReport, validateReportDefinition } from '../validationHelper'; const SAMPLE_SAVED_OBJECT_ID = '3ba638e0-b894-11e8-a6d9-e546fe2bba5f'; const createReportDefinitionInput: ReportDefinitionSchemaType = { @@ -152,7 +152,41 @@ describe('test input validation', () => { `saved object with id dashboard:${SAMPLE_SAVED_OBJECT_ID} does not exist` ); }); + + test('validation against query_url', async () => { + const urls: [string, boolean][] = [ + ['/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', true], + [ + '/_plugin/kibana/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/_dashboards/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/_dashboards/app/dashboards#/edit/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/app/observability-dashboards?security_tenant=private#/notebooks/NYdlPIIB0-fJ8Bh1nLdW?view=output_only', + true, + ], + [ + '/app/notebooks-dashboards?view=output_only&security_tenant=private#/M4dlPIIB0-fJ8Bh1nLc7?security_tenant=private', + true, + ], + [ + '/_dashboards/app/visualize&security_tenant=/.%2e/.%2e/.%2e/.%2e/_dashboards?#/view/id', + false, + ], + ]; + expect(urls.map((url) => isValidRelativeUrl(url[0]))).toEqual( + urls.map((url) => url[1]) + ); + }); }); + // TODO: merge this with other mock clients used in testing, to create some mock helpers file const mockOpenSearchClient = (mockSavedObjectIds: string[]) => { const client = { diff --git a/dashboards-reports/server/utils/validationHelper.ts b/dashboards-reports/server/utils/validationHelper.ts index aff53d41..2597ee4b 100644 --- a/dashboards-reports/server/utils/validationHelper.ts +++ b/dashboards-reports/server/utils/validationHelper.ts @@ -37,7 +37,7 @@ export const isValidRelativeUrl = (relativeUrl: string) => { export const regexDuration = /^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; export const regexEmailAddress = /\S+@\S+\.\S+/; export const regexReportName = /^[\w\-\s\(\)\[\]\,\_\-+]+$/; -export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability-dashboards|notebooks-dashboards\?view=output_only)([?&]security_tenant=.+|)#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; +export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability-dashboards|notebooks-dashboards\?view=output_only(&security_tenant=.+)?)(\?security_tenant=.+)?#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; export const validateReport = async ( client: ILegacyScopedClusterClient, From 88084466936d2cebbbbe3db37eb5eb80923af7a8 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Thu, 18 Aug 2022 16:49:29 -0700 Subject: [PATCH 08/38] [2.2] Restrict chromium requests (#431) * Fix regex validation, detect iframe, embed, object tags Signed-off-by: Joshua Li * Disallow redirection to non-localhost urls Signed-off-by: Joshua Li * Disallow connection to non-allowlisted urls Signed-off-by: Joshua Li * Disable JIT Signed-off-by: Joshua Li * Fix workflow Signed-off-by: Joshua Li * Try to fix CI Signed-off-by: Joshua Li * Fix localstorage logic Signed-off-by: Joshua Li Signed-off-by: Joshua Li --- ...boards-reports-test-and-build-workflow.yml | 22 +++--- .../__tests__/visualReportHelper.test.ts | 8 +- .../server/routes/utils/constants.ts | 2 + .../routes/utils/visual_report/style.css | 4 + .../utils/visual_report/visualReportHelper.ts | 75 ++++++++++++++++--- .../utils/__tests__/validationHelper.test.ts | 36 ++++++++- .../server/utils/validationHelper.ts | 2 +- 7 files changed, 125 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 5bb574fd..8f4cd6b3 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -20,12 +20,12 @@ jobs: with: repository: opensearch-project/Opensearch-Dashboards ref: ${{ env.OPENSEARCH_VERSION }} - path: dashboards-reports/OpenSearch-Dashboards + path: OpenSearch-Dashboards - name: Get node version id: versions_step run: - echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - name: Setup Node uses: actions/setup-node@v1 @@ -35,13 +35,13 @@ jobs: - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - name: Add Chromium Binary to Reporting for Testing run: | sudo apt update sudo apt install -y libnss3-dev fonts-liberation libfontconfig1 - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip unzip chromium-linux-x64.zip rm chromium-linux-x64.zip @@ -51,25 +51,25 @@ jobs: with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - name: Test uses: nick-invision/retry@v1 with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test --coverage + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test --coverage - name: Upload coverage uses: codecov/codecov-action@v1 with: flags: dashboards-reports - directory: OpenSearch-Dashboards/plugins/ + directory: ../OpenSearch-Dashboards/plugins/ token: ${{ secrets.CODECOV_TOKEN }} - name: Build Artifact run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build cd build @@ -103,16 +103,16 @@ jobs: uses: actions/upload-artifact@v1 with: name: dashboards-reports-linux-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip - name: Upload Artifact For Linux arm64 uses: actions/upload-artifact@v1 with: name: dashboards-reports-linux-arm64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip - name: Upload Artifact For Windows uses: actions/upload-artifact@v1 with: name: dashboards-reports-windows-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip diff --git a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts index 81595979..4bf3cd0b 100644 --- a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts +++ b/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts @@ -55,7 +55,9 @@ describe('test create visual report', () => { reportParams as ReportParamsSchemaType, mockHtmlPath, mockLogger, - mockHeader + mockHeader, + undefined, + /^(data:image|file:\/\/)/ ); expect(fileName).toContain(`${reportParams.report_name}`); expect(fileName).toContain('.png'); @@ -71,7 +73,9 @@ describe('test create visual report', () => { reportParams as ReportParamsSchemaType, mockHtmlPath, mockLogger, - mockHeader + mockHeader, + undefined, + /^(data:image|file:\/\/)/ ); expect(fileName).toContain(`${reportParams.report_name}`); expect(fileName).toContain('.pdf'); diff --git a/dashboards-reports/server/routes/utils/constants.ts b/dashboards-reports/server/routes/utils/constants.ts index dffb0cd1..6af81fd2 100644 --- a/dashboards-reports/server/routes/utils/constants.ts +++ b/dashboards-reports/server/routes/utils/constants.ts @@ -93,6 +93,8 @@ const ipv6Regex = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:) const localhostRegex = /localhost:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])/g; const iframeRegex = /iframe/g; +export const ALLOWED_HOSTS = /^(0|0.0.0.0|127.0.0.1|localhost|(.*\.)?(opensearch.org|aws.a2z.com))$/; + export const replaceBlockedKeywords = (htmlString: string) => { // replace : htmlString = htmlString.replace(ipv4Regex, BLOCKED_KEYWORD); diff --git a/dashboards-reports/server/routes/utils/visual_report/style.css b/dashboards-reports/server/routes/utils/visual_report/style.css index 58628427..c329e281 100644 --- a/dashboards-reports/server/routes/utils/visual_report/style.css +++ b/dashboards-reports/server/routes/utils/visual_report/style.css @@ -4,6 +4,10 @@ body { padding: 0; } +iframe, embed, object { + display: none !important; +} + /* nice padding + matches Kibana default UI colors you could also set this to inherit if the wrapper gets inserted inside a kibana section. I might also remove the manual text color here as well, potentially */ .reportWrapper { diff --git a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts index d98d1824..21b52c20 100644 --- a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts +++ b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts @@ -14,6 +14,7 @@ import { SELECTOR, CHROMIUM_PATH, SECURITY_CONSTANTS, + ALLOWED_HOSTS, } from '../constants'; import { getFileName } from '../helpers'; import { CreateReportResultType } from '../types'; @@ -27,7 +28,8 @@ export const createVisualReport = async ( queryUrl: string, logger: Logger, extraHeaders: Headers, - timezone?: string + timezone?: string, + validRequestProtocol = /^(data:image)/, ): Promise => { const { core_params, @@ -76,6 +78,8 @@ export const createVisualReport = async ( '--no-zygote', '--single-process', '--font-render-hinting=none', + '--js-flags="--jitless --no-opt"', + '--disable-features=V8OptimizeJavascript', ], executablePath: CHROMIUM_PATH, ignoreHTTPSErrors: true, @@ -84,6 +88,32 @@ export const createVisualReport = async ( }, }); const page = await browser.newPage(); + + await page.setRequestInterception(true); + let localStorageAvailable = true; + page.on('request', (req) => { + // disallow non-allowlisted connections. urls with valid protocols do not need ALLOWED_HOSTS check + if ( + !validRequestProtocol.test(req.url()) && + !ALLOWED_HOSTS.test(new URL(req.url()).hostname) + ) { + if (req.isNavigationRequest() && req.redirectChain().length > 0) { + localStorageAvailable = false; + logger.error( + 'Reporting does not allow redirections to outside of localhost, aborting. URL received: ' + + req.url() + ); + } else { + logger.warn( + 'Disabled connection to non-allowlist domains: ' + req.url() + ); + } + req.abort(); + } else { + req.continue(); + } + }); + page.setDefaultNavigationTimeout(0); page.setDefaultTimeout(100000); // use 100s timeout instead of default 30s // Set extra headers that are needed @@ -93,13 +123,25 @@ export const createVisualReport = async ( logger.info(`original queryUrl ${queryUrl}`); await page.goto(queryUrl, { waitUntil: 'networkidle0' }); // should add to local storage after page.goto, then access the page again - browser must have an url to register local storage item on it - await page.evaluate( - /* istanbul ignore next */ - (key) => { - localStorage.setItem(key, 'false'); - }, - SECURITY_CONSTANTS.TENANT_LOCAL_STORAGE_KEY - ); + try { + await page.evaluate( + /* istanbul ignore next */ + (key) => { + try { + if ( + localStorageAvailable && + typeof localStorage !== 'undefined' && + localStorage !== null + ) { + localStorage.setItem(key, 'false'); + } + } catch (err) {} + }, + SECURITY_CONSTANTS.TENANT_LOCAL_STORAGE_KEY + ); + } catch (err) { + logger.error(err); + } await page.goto(queryUrl, { waitUntil: 'networkidle0' }); logger.info(`page url ${page.url()}`); @@ -162,9 +204,24 @@ export const createVisualReport = async ( // wait for dynamic page content to render await waitForDynamicContent(page); - await addReportStyle(page); await addReportHeader(page, keywordFilteredHeader); await addReportFooter(page, keywordFilteredFooter); + await addReportStyle(page); + + // this causes UT to fail in github CI but works locally + try { + const numDisallowedTags = await page.evaluate( + () => + document.getElementsByTagName('iframe').length + + document.getElementsByTagName('embed').length + + document.getElementsByTagName('object').length + ); + if (numDisallowedTags > 0) { + throw Error('Reporting does not support "iframe", "embed", or "object" tags, aborting'); + } + } catch (error) { + logger.error(error); + } // create pdf or png accordingly if (reportFormat === FORMAT.pdf) { diff --git a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts index bc3ca73d..9bdb4fe0 100644 --- a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts +++ b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts @@ -10,7 +10,7 @@ import { REPORT_TYPE, TRIGGER_TYPE, } from '../../routes/utils/constants'; -import { validateReport, validateReportDefinition } from '../validationHelper'; +import { isValidRelativeUrl, validateReport, validateReportDefinition } from '../validationHelper'; const SAMPLE_SAVED_OBJECT_ID = '3ba638e0-b894-11e8-a6d9-e546fe2bba5f'; const createReportDefinitionInput: ReportDefinitionSchemaType = { @@ -152,7 +152,41 @@ describe('test input validation', () => { `saved object with id dashboard:${SAMPLE_SAVED_OBJECT_ID} does not exist` ); }); + + test('validation against query_url', async () => { + const urls: [string, boolean][] = [ + ['/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', true], + [ + '/_plugin/kibana/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/_dashboards/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/_dashboards/app/dashboards#/edit/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', + true, + ], + [ + '/app/observability-dashboards?security_tenant=private#/notebooks/NYdlPIIB0-fJ8Bh1nLdW?view=output_only', + true, + ], + [ + '/app/notebooks-dashboards?view=output_only&security_tenant=private#/M4dlPIIB0-fJ8Bh1nLc7?security_tenant=private', + true, + ], + [ + '/_dashboards/app/visualize&security_tenant=/.%2e/.%2e/.%2e/.%2e/_dashboards?#/view/id', + false, + ], + ]; + expect(urls.map((url) => isValidRelativeUrl(url[0]))).toEqual( + urls.map((url) => url[1]) + ); + }); }); + // TODO: merge this with other mock clients used in testing, to create some mock helpers file const mockOpenSearchClient = (mockSavedObjectIds: string[]) => { const client = { diff --git a/dashboards-reports/server/utils/validationHelper.ts b/dashboards-reports/server/utils/validationHelper.ts index aff53d41..2597ee4b 100644 --- a/dashboards-reports/server/utils/validationHelper.ts +++ b/dashboards-reports/server/utils/validationHelper.ts @@ -37,7 +37,7 @@ export const isValidRelativeUrl = (relativeUrl: string) => { export const regexDuration = /^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; export const regexEmailAddress = /\S+@\S+\.\S+/; export const regexReportName = /^[\w\-\s\(\)\[\]\,\_\-+]+$/; -export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability-dashboards|notebooks-dashboards\?view=output_only)([?&]security_tenant=.+|)#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; +export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability-dashboards|notebooks-dashboards\?view=output_only(&security_tenant=.+)?)(\?security_tenant=.+)?#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; export const validateReport = async ( client: ILegacyScopedClusterClient, From d19fc7f37ec2c24c57d115a4b9e46a4b30836881 Mon Sep 17 00:00:00 2001 From: opensearch-ci-bot Date: Mon, 22 Aug 2022 21:41:02 +0000 Subject: [PATCH 09/38] Increment version to 2.2.1-SNAPSHOT Signed-off-by: opensearch-ci-bot --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 8f4cd6b3..b49a15bd 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.2.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.2.1.0 jobs: build: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 126ff0b3..901c5f63 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.2.0.0 + version: 2.2.1.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index ee5aeee6..d9a001ac 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.2.0.0", - "opensearchDashboardsVersion": "2.2.0", + "version": "2.2.1.0", + "opensearchDashboardsVersion": "2.2.1", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index f78b5601..7a0c732c 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.2.0.0", + "version": "2.2.1.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index 36fa1984..5536a069 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.2.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.2.1-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From 88d1c681f6ef4d680b97b5ce94ac2dc837f624c3 Mon Sep 17 00:00:00 2001 From: opensearch-ci-bot Date: Wed, 31 Aug 2022 23:37:13 +0000 Subject: [PATCH 10/38] Increment version to 2.3.0-SNAPSHOT Signed-off-by: opensearch-ci-bot --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 8f4cd6b3..65391bf9 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.2.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.3.0.0 jobs: build: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 126ff0b3..7aac5551 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.2.0.0 + version: 2.3.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index ee5aeee6..e93fafbe 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.2.0.0", - "opensearchDashboardsVersion": "2.2.0", + "version": "2.3.0.0", + "opensearchDashboardsVersion": "2.3.0", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index f78b5601..33d4a966 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.2.0.0", + "version": "2.3.0.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index 36fa1984..c59445f1 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.2.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.3.0-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From be6a0e9ee7c2a2b4a4a1aac411acc605b8f1e0f0 Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Thu, 1 Sep 2022 13:17:58 -0700 Subject: [PATCH 11/38] Added release notes for 2.2.1 release Signed-off-by: vamsi-amazon --- .../opensearch-dashboards-reports.release-notes-2.2.1.0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.2.1.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.2.1.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.2.1.0.md new file mode 100644 index 00000000..fbd5e820 --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.2.1.0.md @@ -0,0 +1,7 @@ +## Version 2.2.1.0 Release Notes + +Compatible with OpenSearch and OpenSearch Dashboards Version 2.2.1 + +### Bug Fixes +* Fixed high severity security issue : RCE vector in bundled Headless Chromium -[Issue](https://github.com/opensearch-project/dashboards-reports/security/advisories/GHSA-pm2x-4c64-x8g7) ([#431](https://github.com/opensearch-project/dashboards-reports/pull/431)) + From 383c000b4c18b4ceb5d52d4c9fb2aad9d87f3c90 Mon Sep 17 00:00:00 2001 From: Eric Wei Date: Fri, 9 Sep 2022 15:30:53 -0700 Subject: [PATCH 12/38] Merge pull request #459 from mengweieric/release-notes-2.3.0 Release notes for 2.3.0 (cherry picked from commit b0c564338323056d33fddf30e70a5b0e59b69c6a) --- .../opensearch-dashboards-reports.release-notes-2.3.0.0.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.3.0.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.3.0.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.3.0.0.md new file mode 100644 index 00000000..9e81873e --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.3.0.0.md @@ -0,0 +1,5 @@ +## Version 2.3.0.0 Release Notes +Compatible with OpenSearch 2.3.0.0 + +### Maintenance +* Bump version to 2.3.0 ([#454](https://github.com/opensearch-project/dashboards-reports/pull/454)) \ No newline at end of file From b118a2706f2ab8d3c71986405cade4f2c721e136 Mon Sep 17 00:00:00 2001 From: Rupal Date: Wed, 5 Oct 2022 13:05:18 -0700 Subject: [PATCH 13/38] [2.x] Upgrade puppeteer (#489) * upgrade puppeteer & change report timeout Signed-off-by: Rupal Mahajan * Change timeout Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- dashboards-reports/package.json | 4 +- dashboards-reports/server/plugin.ts | 2 +- .../utils/visual_report/visualReportHelper.ts | 8 +- dashboards-reports/yarn.lock | 213 ++++++++++++------ 4 files changed, 156 insertions(+), 71 deletions(-) diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index 33d4a966..c53a4385 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -26,7 +26,7 @@ "jquery": "^3.5.0", "jsdom": "13.1.0", "json-2-csv": "^3.7.6", - "puppeteer-core": "^1.19.0", + "puppeteer-core": "^13.7.0", "react-addons-test-utils": "^15.6.2", "react-id-generator": "^3.0.1", "react-markdown": "^4.3.1", @@ -44,7 +44,7 @@ "@types/dompurify": "^2.3.3", "@types/enzyme-adapter-react-16": "^1.0.6", "@types/jsdom": "^16.2.3", - "@types/puppeteer-core": "^2.0.0", + "@types/puppeteer-core": "^5.4.0", "@types/react": "^16.14.23", "@types/react-addons-test-utils": "^0.14.25", "@types/react-dom": "^16.9.8", diff --git a/dashboards-reports/server/plugin.ts b/dashboards-reports/server/plugin.ts index ac2ed152..dd461296 100644 --- a/dashboards-reports/server/plugin.ts +++ b/dashboards-reports/server/plugin.ts @@ -48,7 +48,7 @@ export class ReportsDashboardsPlugin this.initializerContext = context; const timeoutError = new Error('Server busy'); timeoutError.statusCode = 503; - this.semaphore = withTimeout(new Semaphore(1), 180000, timeoutError); + this.semaphore = withTimeout(new Semaphore(1), 300000, timeoutError); } public async setup(core: CoreSetup) { diff --git a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts index 21b52c20..ad836b8f 100644 --- a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts +++ b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts @@ -76,7 +76,6 @@ export const createVisualReport = async ( '--disable-setuid-sandbox', '--disable-gpu', '--no-zygote', - '--single-process', '--font-render-hinting=none', '--js-flags="--jitless --no-opt"', '--disable-features=V8OptimizeJavascript', @@ -86,6 +85,7 @@ export const createVisualReport = async ( env: { TZ: timezone || 'UTC', }, + pipe: true, }); const page = await browser.newPage(); @@ -115,7 +115,7 @@ export const createVisualReport = async ( }); page.setDefaultNavigationTimeout(0); - page.setDefaultTimeout(100000); // use 100s timeout instead of default 30s + page.setDefaultTimeout(300000); // use 300s timeout instead of default 30s // Set extra headers that are needed if (!_.isEmpty(extraHeaders)) { await page.setExtraHTTPHeaders(extraHeaders); @@ -177,7 +177,7 @@ export const createVisualReport = async ( ); // force wait for any resize to load after the above DOM modification - await page.waitFor(1000); + await new Promise(resolve => setTimeout(resolve, 1000)); // crop content switch (reportSource) { case REPORT_TYPE.dashboard: @@ -327,6 +327,6 @@ const waitForDynamicContent = async ( } previousLength = currentLength; - await page.waitFor(interval); + await new Promise(resolve => setTimeout(resolve, interval)); } }; diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index d1d28104..0de638cd 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -879,10 +879,10 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/puppeteer-core@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-2.0.0.tgz#3b7fbbac53d56b566f5ef096116e1d60d504aa45" - integrity sha512-JvoEb7KgEkUet009ZDrtpUER3hheXoHgQByuYpJZ5WWT7LWwMH+0NTqGQXGgoOKzs+G5NA1T4DZwXK79Bhnejw== +"@types/puppeteer-core@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-5.4.0.tgz#880a7917b4ede95cbfe2d5e81a558cfcb072c0fb" + integrity sha512-yqRPuv4EFcSkTyin6Yy17pN6Qz2vwVwTCJIDYMXbE3j8vTPhv0nCQlZOl5xfi0WHUkqvQsjAR8hAfjeMCoetwg== dependencies: "@types/puppeteer" "*" @@ -985,6 +985,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -1163,12 +1170,12 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - es6-promisify "^5.0.0" + debug "4" airbnb-prop-types@^2.16.0: version "2.16.0" @@ -1514,7 +1521,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -1561,6 +1568,15 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + blob-util@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -1732,6 +1748,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2177,7 +2201,7 @@ cron-validator@^1.1.1: resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.1.1.tgz#0a27bb75508c7bc03c8b840d2d9f170eeacb5615" integrity sha512-vfZb05w/wezuwPZBDvdIBmJp2BvuJExHeyKRa5oBqD2ZDXR61hb3QgPc/3ZhBEQJlAy8Jlnn5XC/JCT3IDqxwg== -cross-fetch@^3.0.4: +cross-fetch@3.1.5, cross-fetch@^3.0.4: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -2307,6 +2331,13 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +debug@4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2397,6 +2428,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +devtools-protocol@0.0.981744: + version "0.0.981744" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" + integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== + diff-sequences@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" @@ -2542,7 +2578,7 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -2709,18 +2745,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2916,7 +2940,18 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-zip@^1.6.6, extract-zip@^1.7.0: +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +extract-zip@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== @@ -3028,7 +3063,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3078,6 +3113,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -3183,7 +3223,7 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -3474,13 +3514,13 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== +https-proxy-agent@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - agent-base "^4.3.0" - debug "^3.1.0" + agent-base "6" + debug "4" human-signals@^1.1.1: version "1.1.1" @@ -3506,7 +3546,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.4: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -4556,11 +4596,6 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.44.0" -mime@^2.0.3: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== - mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -4632,6 +4667,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@1.x: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -5119,6 +5159,13 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pkg-dir@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -5166,7 +5213,7 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.1: +progress@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -5199,7 +5246,7 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -proxy-from-env@^1.0.0: +proxy-from-env@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -5271,19 +5318,23 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-1.20.0.tgz#cfad0c7cbb6e9bb0d307c6e955e5c924134bbeb5" - integrity sha512-akoSCMDVv6BFd/4+dtW6mVgdaRQhy/cmkGzXcx9HAXZqnY9zXYbsfoXMiMpwt3+53U9zFGSjgvsi0mDKNJLfqg== - dependencies: - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^2.2.1" - mime "^2.0.3" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" +puppeteer-core@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-13.7.0.tgz#3344bee3994163f49120a55ddcd144a40575ba5b" + integrity sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q== + dependencies: + cross-fetch "3.1.5" + debug "4.3.4" + devtools-protocol "0.0.981744" + extract-zip "2.0.1" + https-proxy-agent "5.0.1" + pkg-dir "4.2.0" + progress "2.0.3" + proxy-from-env "1.1.0" + rimraf "3.0.2" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.5.0" qs@~6.5.2: version "6.5.2" @@ -5465,7 +5516,7 @@ react-transition-group@^4.3.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5683,20 +5734,20 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: +rimraf@3.0.2, rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6209,6 +6260,27 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-fs@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" @@ -6255,6 +6327,11 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -6434,6 +6511,14 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +unbzip2-stream@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -6820,7 +6905,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^6.1.0, ws@^6.1.2, ws@^7.4.6: +ws@8.5.0, ws@^6.1.2, ws@^7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== From 20c7f05a3ff7238ae9f0f4ab86aac1d3c8dc9e42 Mon Sep 17 00:00:00 2001 From: Rupal Date: Thu, 6 Oct 2022 10:55:29 -0700 Subject: [PATCH 14/38] Bump verison 2.4.0 (#499) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 65391bf9..45d319bf 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.3.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.4.0.0 jobs: build: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 7aac5551..7dee167c 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.3.0.0 + version: 2.4.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index e93fafbe..bdaf04c2 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.3.0.0", - "opensearchDashboardsVersion": "2.3.0", + "version": "2.4.0.0", + "opensearchDashboardsVersion": "2.4.0", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index c53a4385..ca62cec0 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.3.0.0", + "version": "2.4.0.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index c59445f1..a4c1cf97 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.3.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.4.0-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From 82be16267ee05a414b7eded4187151ba0370726b Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 10:19:18 -0700 Subject: [PATCH 15/38] add group = org.opensearch.plugin (#506) (#507) Signed-off-by: prudhvigodithi Signed-off-by: prudhvigodithi (cherry picked from commit b25984bbd9dad06e331a9b33330d6b31894f8651) Co-authored-by: Prudhvi Godithi --- reports-scheduler/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index a4c1cf97..f2af2968 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -79,6 +79,7 @@ publishing { pom { name = 'opensearch-reports-scheduler' description = 'Scheduler for Dashboards Reports Plugin' + groupId = "org.opensearch.plugin" licenses { license { name = 'The Apache License, Version 2.0' From 3f6641559847406ebeec13ffcdd7f03d34404da9 Mon Sep 17 00:00:00 2001 From: Derek Ho Date: Thu, 20 Oct 2022 16:53:38 -0400 Subject: [PATCH 16/38] feat: enable windows and macos build (#504) (#511) Signed-off-by: Derek Ho --- ...boards-reports-test-and-build-workflow.yml | 160 ++++++++++++++++-- ...orts-scheduler-test-and-build-workflow.yml | 86 +++++++++- .../report_details.test.tsx.snap | 4 +- .../report_settings.test.tsx.snap | 16 +- dashboards-reports/test/jest.config.js | 4 +- 5 files changed, 246 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 45d319bf..61a16ff2 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -8,8 +8,9 @@ env: OPENSEARCH_VERSION: 'main' OPENSEARCH_PLUGIN_VERSION: 2.4.0.0 + jobs: - build: + linux-build: runs-on: ubuntu-latest steps: - name: Checkout Plugin @@ -73,10 +74,9 @@ jobs: yarn build cd build - mkdir -p ./{linux-x64,linux-arm64,windows-x64}/opensearch-dashboards/${{ env.PLUGIN_NAME }} + mkdir -p ./{linux-x64,linux-arm64}/opensearch-dashboards/${{ env.PLUGIN_NAME }} cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-arm64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip - mv ./${{ env.PLUGIN_NAME }}-*.zip ./windows-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip cd linux-x64 wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip @@ -92,13 +92,6 @@ jobs: mv ./${{ env.ARTIFACT_NAME }}-*.zip .. cd .. - cd windows-x64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip - unzip chromium-windows-x64.zip -d ./opensearch-dashboards/${{ env.PLUGIN_NAME }} - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./opensearch-dashboards - mv ./${{ env.ARTIFACT_NAME }}-*.zip .. - cd .. - - name: Upload Artifact For Linux x64 uses: actions/upload-artifact@v1 with: @@ -111,8 +104,153 @@ jobs: name: dashboards-reports-linux-arm64 path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip + windows-build: + runs-on: windows-latest + steps: + - name: Checkout Plugin + uses: actions/checkout@v1 + + # Enable longer filenames for windows + - name: Enable longer filenames + run: git config --system core.longpaths true + + - name: Checkout OpenSearch Dashboards + uses: actions/checkout@v1 + with: + repository: opensearch-project/Opensearch-Dashboards + ref: ${{ env.OPENSEARCH_VERSION }} + path: dashboards-reports/OpenSearch-Dashboards + + - name: Get node version + id: versions_step + run: + echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: ${{ steps.versions_step.outputs.node_version }} + registry-url: 'https://registry.npmjs.org' + + + - name: Move Dashboards Reports to Plugins Dir + run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + + - name: Add Chromium Binary to Reporting for Testing + run: | + cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + curl.exe -LO https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip + Expand-Archive -Path 'chromium-windows-x64.zip' + Move-Item -Path "./chromium-windows-x64/.chromium" -Destination "./.chromium" + rd chromium-windows-x64.zip + rd chromium-windows-x64 + + - name: OpenSearch Dashboards Plugin Bootstrap + uses: nick-invision/retry@v1 + with: + timeout_minutes: 30 + max_attempts: 3 + command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn osd bootstrap + + - name: Test + uses: nick-invision/retry@v1 + with: + timeout_minutes: 30 + max_attempts: 3 + command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn test + + - name: Build Artifact + run: | + cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + yarn build + + cd build + mkdir -p ./windows-x64/opensearch-dashboards/${{ env.PLUGIN_NAME }} + mv ./${{ env.PLUGIN_NAME }}-*.zip ./windows-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + + cd windows-x64 + curl.exe -LO https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip + Expand-Archive -Path 'chromium-windows-x64.zip' + Move-Item -Path "./chromium-windows-x64/.chromium" -Destination "./opensearch-dashboards/${{ env.PLUGIN_NAME }}" + rd chromium-windows-x64.zip + rd chromium-windows-x64 + Compress-Archive -Path "./${{ env.ARTIFACT_NAME }}-*.zip" -Destination "./opensearch-dashboards" + mv ./${{ env.ARTIFACT_NAME }}-*.zip .. + cd .. + - name: Upload Artifact For Windows uses: actions/upload-artifact@v1 with: name: dashboards-reports-windows-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + + macos-build: + runs-on: macos-latest + steps: + - name: Checkout Plugin + uses: actions/checkout@v1 + + - name: Checkout OpenSearch Dashboards + uses: actions/checkout@v1 + with: + repository: opensearch-project/Opensearch-Dashboards + ref: ${{ env.OPENSEARCH_VERSION }} + path: dashboards-reports/OpenSearch-Dashboards + + - name: Get node version + id: versions_step + run: + echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: ${{ steps.versions_step.outputs.node_version }} + registry-url: 'https://registry.npmjs.org' + + + - name: Move Dashboards Reports to Plugins Dir + run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + + - name: Add Chromium Binary to Reporting for Testing + run: | + cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-macos-x64.zip + unzip chromium-macos-x64.zip + rm chromium-macos-x64.zip + + - name: OpenSearch Dashboards Plugin Bootstrap + uses: nick-invision/retry@v1 + with: + timeout_minutes: 30 + max_attempts: 3 + command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap + + - name: Test + uses: nick-invision/retry@v1 + with: + timeout_minutes: 30 + max_attempts: 3 + command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test + + - name: Build Artifact + run: | + cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + yarn build + + cd build + mkdir -p ./macos-x64/opensearch-dashboards/${{ env.PLUGIN_NAME }} + mv ./${{ env.PLUGIN_NAME }}-*.zip ./macos-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip + + cd macos-x64 + wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-macos-x64.zip + unzip chromium-macos-x64.zip -d ./opensearch-dashboards/${{ env.PLUGIN_NAME }} + zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./opensearch-dashboards + mv ./${{ env.ARTIFACT_NAME }}-*.zip .. + cd .. + + - name: Upload Artifact For MacOS x64 + uses: actions/upload-artifact@v1 + with: + name: dashboards-reports-macosx-x64 + path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index eaec60d8..fc2d9780 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -3,7 +3,7 @@ name: Test and Build Reports Scheduler on: [push, pull_request] jobs: - build: + linux-build: strategy: matrix: java: @@ -41,5 +41,87 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v1 with: - name: reports-scheduler + name: reports-scheduler-linux + path: reports-scheduler-builds + + windows-build: + strategy: + matrix: + java: + - 11 + - 17 + runs-on: windows-latest + + steps: + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + # reports-scheduler + - name: Checkout Reports Scheduler + uses: actions/checkout@v2 + + # Disable bwc tests since first release + # - name: RunBackwards Compatibility Tests + # run: | + # cd reports-scheduler + # echo "Running backwards compatibility tests ..." + # ./gradlew.bat bwcTestSuite + + - name: Build with Gradle + run: | + cd reports-scheduler + ./gradlew.bat build -x integTest -x jacocoTestReport + + - name: Create Artifact Path + run: | + mkdir -p reports-scheduler-builds + cp -r ./reports-scheduler/build/distributions/*.zip reports-scheduler-builds/ + + - name: Upload Artifacts + uses: actions/upload-artifact@v1 + with: + name: reports-scheduler-windows + path: reports-scheduler-builds + + macos-build: + strategy: + matrix: + java: + - 11 + - 17 + runs-on: macos-latest + + steps: + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + # reports-scheduler + - name: Checkout Reports Scheduler + uses: actions/checkout@v2 + + # Disable bwc tests since first release + # - name: RunBackwards Compatibility Tests + # run: | + # cd reports-scheduler + # echo "Running backwards compatibility tests ..." + # ./gradlew bwcTestSuite + + - name: Build with Gradle + run: | + cd reports-scheduler + ./gradlew build -x integTest -x jacocoTestReport + + - name: Create Artifact Path + run: | + mkdir -p reports-scheduler-builds + cp -r ./reports-scheduler/build/distributions/*.zip reports-scheduler-builds/ + + - name: Upload Artifacts + uses: actions/upload-artifact@v1 + with: + name: reports-scheduler-macos path: reports-scheduler-builds diff --git a/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap b/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap index a36d7798..7d0b79f6 100644 --- a/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap +++ b/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap @@ -192,7 +192,7 @@ exports[` panel render 5 hours recurring component 1`] = `
- Invalid Date -> 10/23/2020, 1:53:35 PM + Invalid Date -> 10/23/2020, 8:53:35 PM
@@ -599,7 +599,7 @@ exports[` panel render on-demand component 1`] = `
- Invalid Date -> 10/23/2020, 1:53:35 PM + Invalid Date -> 10/23/2020, 8:53:35 PM
diff --git a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap b/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap index 4c923442..d348db59 100644 --- a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap +++ b/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap @@ -402,7 +402,7 @@ exports[` panel dashboard create from in-context 1`] = ` data-test-subj="superDatePickerstartDatePopoverButton" title="2020-10-26T20:52:56.382Z" > - Oct 26, 2020 @ 13:52:56.382 + Oct 26, 2020 @ 20:52:56.382 @@ -426,7 +426,7 @@ exports[` panel dashboard create from in-context 1`] = ` data-test-subj="superDatePickerendDatePopoverButton" title="2020-10-27T20:52:56.384Z" > - Oct 27, 2020 @ 13:52:56.384 + Oct 27, 2020 @ 20:52:56.384 @@ -1585,7 +1585,7 @@ exports[` panel display errors on create 1`] = ` data-test-subj="superDatePickerstartDatePopoverButton" title="2020-10-26T20:52:56.382Z" > - Oct 26, 2020 @ 13:52:56.382 + Oct 26, 2020 @ 20:52:56.382 @@ -1609,7 +1609,7 @@ exports[` panel display errors on create 1`] = ` data-test-subj="superDatePickerendDatePopoverButton" title="2020-10-27T20:52:56.384Z" > - Oct 27, 2020 @ 13:52:56.384 + Oct 27, 2020 @ 20:52:56.384 @@ -6506,7 +6506,7 @@ exports[` panel saved search create from in-context 1`] = ` data-test-subj="superDatePickerstartDatePopoverButton" title="2020-10-26T20:52:56.382Z" > - Oct 26, 2020 @ 13:52:56.382 + Oct 26, 2020 @ 20:52:56.382 @@ -6530,7 +6530,7 @@ exports[` panel saved search create from in-context 1`] = ` data-test-subj="superDatePickerendDatePopoverButton" title="2020-10-27T20:52:56.384Z" > - Oct 27, 2020 @ 13:52:56.384 + Oct 27, 2020 @ 20:52:56.384 @@ -7689,7 +7689,7 @@ exports[` panel visualization create from in-context 1`] = ` data-test-subj="superDatePickerstartDatePopoverButton" title="2020-10-26T20:52:56.382Z" > - Oct 26, 2020 @ 13:52:56.382 + Oct 26, 2020 @ 20:52:56.382 @@ -7713,7 +7713,7 @@ exports[` panel visualization create from in-context 1`] = ` data-test-subj="superDatePickerendDatePopoverButton" title="2020-10-27T20:52:56.384Z" > - Oct 27, 2020 @ 13:52:56.384 + Oct 27, 2020 @ 20:52:56.384 diff --git a/dashboards-reports/test/jest.config.js b/dashboards-reports/test/jest.config.js index ec861b87..a8756693 100644 --- a/dashboards-reports/test/jest.config.js +++ b/dashboards-reports/test/jest.config.js @@ -3,7 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -process.env.TZ = 'America/Los_Angeles'; +//@ts-check + +process.env.TZ = 'UTC'; module.exports = { rootDir: '../', From 6bda432f08b2c7a5caad938756cebbd311fe22d6 Mon Sep 17 00:00:00 2001 From: Rupal Date: Thu, 27 Oct 2022 11:34:51 -0700 Subject: [PATCH 17/38] Update version for jsdom, terser and jsoup (#515) Signed-off-by: Rupal Mahajan --- dashboards-reports/package.json | 5 +- dashboards-reports/yarn.lock | 323 ++++++++++++++++++-------------- reports-scheduler/build.gradle | 2 +- 3 files changed, 191 insertions(+), 139 deletions(-) diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index ca62cec0..8f347648 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -24,7 +24,7 @@ "enzyme-adapter-react-16": "^1.15.5", "jest-fetch-mock": "^3.0.3", "jquery": "^3.5.0", - "jsdom": "13.1.0", + "jsdom": "16.5.0", "json-2-csv": "^3.7.6", "puppeteer-core": "^13.7.0", "react-addons-test-utils": "^15.6.2", @@ -72,6 +72,7 @@ "css-what": "^5.0.1", "ansi-regex": "5.0.1", "json-schema": "0.4.0", - "ws": "^7.4.6" + "ws": "^7.4.6", + "terser": "^4.8.1" } } diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 0de638cd..07691188 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -1147,29 +1147,39 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: +acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.5: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1303,11 +1313,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" @@ -2239,17 +2244,22 @@ css-what@^5.0.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== -cssom@0.3.x, cssom@^0.3.4: +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - cssom "0.3.x" + cssom "~0.3.6" csstype@^2.5.7: version "2.6.13" @@ -2317,14 +2327,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" date-fns@^1.27.2: version "1.30.1" @@ -2371,6 +2381,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.4.2" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2479,12 +2494,12 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" domhandler@^3.0, domhandler@^3.0.0: version "3.0.0" @@ -2755,13 +2770,13 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" - estraverse "^4.2.0" + estraverse "^5.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: @@ -2833,7 +2848,7 @@ esrecurse@^4.1.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -3473,12 +3488,12 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-to-react@^1.3.4: version "1.4.3" @@ -3879,6 +3894,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -4134,36 +4154,36 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.1.0.tgz#fa7356f0cc8111d0f1077cb7800d06f22f1d66c7" - integrity sha512-C2Kp0qNuopw0smXFaHeayvharqF3kkcNqlcIlSX71+3XrsOFwkEPLt/9f5JksMmaul2JZYIQuY+WTpqHpQQcLg== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.0.9" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.4" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.0.1" - webidl-conversions "^4.0.2" +jsdom@16.5.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.0.tgz#9e453505600cc5a70b385750d35256f380730cc4" + integrity sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ== + dependencies: + abab "^2.0.5" + acorn "^8.0.5" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "6.0.1" + request "^2.88.2" + request-promise-native "^1.0.9" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" + whatwg-url "^8.0.0" + ws "^7.4.4" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4407,12 +4427,7 @@ lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4815,10 +4830,10 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.9: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +nwsapi@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== oauth-sign@~0.9.0: version "0.9.0" @@ -5056,10 +5071,10 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== pascalcase@^0.1.1: version "0.1.1" @@ -5173,11 +5188,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -5266,6 +5276,11 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -5360,6 +5375,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + ramda@^0.27: version "0.27.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" @@ -5624,7 +5644,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5: +request-promise-native@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -5633,7 +5653,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -5669,6 +5689,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -5792,12 +5817,12 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^3.1.4: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" scheduler@^0.19.1: version "0.19.1" @@ -6245,7 +6270,7 @@ symbol-observable@^1.1.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -6296,10 +6321,10 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +terser@^4.1.2, terser@^4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -6403,7 +6428,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -6411,12 +6436,22 @@ tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: - punycode "^2.1.0" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" tr46@~0.0.3: version "0.0.3" @@ -6599,6 +6634,11 @@ unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: dependencies: unist-util-visit-parents "^2.0.0" +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -6634,6 +6674,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6712,20 +6760,18 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7: @@ -6758,10 +6804,15 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" @@ -6800,14 +6851,14 @@ webpack@^4.41.5: watchpack "^1.7.4" webpack-sources "^1.4.1" -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== @@ -6820,14 +6871,14 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== +whatwg-url@^8.0.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -6905,7 +6956,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@8.5.0, ws@^6.1.2, ws@^7.4.6: +ws@8.5.0, ws@^7.4.4, ws@^7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== @@ -6920,7 +6971,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index f2af2968..f2015ae3 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -164,7 +164,7 @@ dependencies { implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' implementation "org.json:json:20180813" implementation group: 'com.github.wnameless', name: 'json-flattener', version: '0.1.0' - implementation 'org.jsoup:jsoup:1.14.3' + implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.google.code.gson:gson:2.8.9' implementation "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" From efeb8ec7892084fb8ae9f25de77a7421f1785f58 Mon Sep 17 00:00:00 2001 From: Rupal Date: Thu, 27 Oct 2022 13:01:52 -0700 Subject: [PATCH 18/38] Fix snakeyaml vulnerability issue by disabling detekt (#517) Signed-off-by: Rupal Mahajan --- reports-scheduler/build.gradle | 7 ------- 1 file changed, 7 deletions(-) diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index f2015ae3..9b9332fb 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -40,7 +40,6 @@ buildscript { classpath "${opensearch_group}.gradle:build-tools:${opensearch_version}" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" classpath "org.jetbrains.kotlin:kotlin-allopen:${kotlin_version}" - classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.12.0" classpath "org.jacoco:org.jacoco.agent:0.8.5" } } @@ -57,7 +56,6 @@ apply plugin: 'idea' apply plugin: 'opensearch.opensearchplugin' apply plugin: 'opensearch.pluginzip' apply plugin: 'opensearch.testclusters' -apply plugin: 'io.gitlab.arturbosch.detekt' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'org.jetbrains.kotlin.plugin.allopen' @@ -107,11 +105,6 @@ configurations { testRuntime } -detekt { - config = files("detekt.yml") - buildUponDefaultConfig = true -} - configurations.testCompile { exclude module: "securemock" } From b7c471d481bbb0b5c67f1a7302d48cd2a9ab2b5b Mon Sep 17 00:00:00 2001 From: Rupal Date: Thu, 27 Oct 2022 13:03:02 -0700 Subject: [PATCH 19/38] Update ktlint version (#519) Signed-off-by: Rupal Mahajan --- reports-scheduler/build.gradle | 2 +- .../ReportsSchedulerPlugin.kt | 35 +++++++++---------- .../action/CreateReportDefinitionAction.kt | 12 ++++--- .../action/DeleteReportDefinitionAction.kt | 12 ++++--- .../action/GetAllReportDefinitionsAction.kt | 12 ++++--- .../action/GetAllReportInstancesAction.kt | 12 ++++--- .../action/GetReportDefinitionAction.kt | 12 ++++--- .../action/GetReportInstanceAction.kt | 12 ++++--- .../action/InContextReportCreateAction.kt | 12 ++++--- .../action/OnDemandReportCreateAction.kt | 12 ++++--- .../action/PluginBaseAction.kt | 10 +++--- .../action/ReportDefinitionActions.kt | 20 +++++++---- .../action/ReportInstanceActions.kt | 24 ++++++++----- .../action/UpdateReportDefinitionAction.kt | 12 ++++--- .../UpdateReportInstanceStatusAction.kt | 12 ++++--- .../index/ReportInstancesIndex.kt | 12 ++++--- .../model/CreateReportDefinitionRequest.kt | 10 +++--- .../model/CreateReportDefinitionResponse.kt | 8 ++--- .../model/DeleteReportDefinitionRequest.kt | 8 ++--- .../model/DeleteReportDefinitionResponse.kt | 8 ++--- .../model/GetAllReportDefinitionsRequest.kt | 12 +++---- .../model/GetAllReportDefinitionsResponse.kt | 2 +- .../model/GetAllReportInstancesRequest.kt | 12 +++---- .../model/GetAllReportInstancesResponse.kt | 2 +- .../model/GetReportDefinitionRequest.kt | 8 ++--- .../model/GetReportDefinitionResponse.kt | 8 ++--- .../model/GetReportInstanceRequest.kt | 8 ++--- .../model/GetReportInstanceResponse.kt | 8 ++--- .../model/InContextReportCreateRequest.kt | 22 ++++++------ .../model/InContextReportCreateResponse.kt | 8 ++--- .../model/OnDemandReportCreateRequest.kt | 8 ++--- .../model/OnDemandReportCreateResponse.kt | 8 ++--- .../model/ReportDefinition.kt | 28 +++++++++------ .../model/ReportDefinitionDetails.kt | 26 ++++++++------ .../ReportDefinitionDetailsSearchResults.kt | 2 +- .../reportsscheduler/model/ReportInstance.kt | 18 +++++----- .../model/ReportInstanceSearchResults.kt | 2 +- .../reportsscheduler/model/SearchResults.kt | 12 ++++--- .../model/UpdateReportDefinitionRequest.kt | 12 +++---- .../model/UpdateReportDefinitionResponse.kt | 8 ++--- .../UpdateReportInstanceStatusRequest.kt | 16 ++++----- .../UpdateReportInstanceStatusResponse.kt | 6 ++-- .../resthandler/OnDemandReportRestHandler.kt | 20 +++++++---- .../resthandler/PluginBaseHandler.kt | 2 +- .../ReportDefinitionListRestHandler.kt | 11 +++--- .../ReportDefinitionRestHandler.kt | 25 ++++++++----- .../ReportInstanceListRestHandler.kt | 10 +++--- .../resthandler/ReportInstanceRestHandler.kt | 16 +++++---- .../resthandler/ReportStatsRestHandler.kt | 4 +-- .../RestResponseToXContentListener.kt | 2 +- .../scheduler/ReportDefinitionJobParser.kt | 2 +- .../scheduler/ReportDefinitionJobRunner.kt | 6 ++-- .../security/UserAccessManager.kt | 2 +- .../settings/PluginSettings.kt | 3 +- .../opensearch/integTest/IntegTestHelpers.kt | 6 ++-- .../integTest/ReportsSchedulerPluginIT.kt | 6 ++-- ...eportsSchedulerBackwardsCompatibilityIT.kt | 2 +- .../rest/InContextMenuReportGenerationIT.kt | 6 ++-- .../rest/OnDemandReportGenerationIT.kt | 6 ++-- .../integTest/rest/ReportDefinitionIT.kt | 6 ++-- .../integTest/rest/ReportInstanceIT.kt | 6 ++-- .../DeleteReportDefinitionRequestTests.kt | 2 +- .../DeleteReportDefinitionResponseTests.kt | 2 +- .../reportsscheduler/util/HelpersTests.kt | 2 +- 64 files changed, 359 insertions(+), 281 deletions(-) diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index 9b9332fb..46670b88 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -172,7 +172,7 @@ dependencies { testCompile "org.mockito:mockito-core:3.12.4" testCompile 'com.google.code.gson:gson:2.8.9' - ktlint "com.pinterest:ktlint:0.33.0" + ktlint "com.pinterest:ktlint:0.45.1" } javadoc.enabled = false // turn off javadoc as it barfs on Kotlin code diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt index c0fd258f..e1d68fba 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt @@ -5,9 +5,26 @@ package org.opensearch.reportsscheduler +import org.opensearch.action.ActionRequest +import org.opensearch.action.ActionResponse +import org.opensearch.client.Client +import org.opensearch.cluster.metadata.IndexNameExpressionResolver +import org.opensearch.cluster.node.DiscoveryNodes +import org.opensearch.cluster.service.ClusterService +import org.opensearch.common.io.stream.NamedWriteableRegistry +import org.opensearch.common.settings.ClusterSettings +import org.opensearch.common.settings.IndexScopedSettings +import org.opensearch.common.settings.Setting +import org.opensearch.common.settings.Settings +import org.opensearch.common.settings.SettingsFilter +import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.env.Environment +import org.opensearch.env.NodeEnvironment import org.opensearch.jobscheduler.spi.JobSchedulerExtension import org.opensearch.jobscheduler.spi.ScheduledJobParser import org.opensearch.jobscheduler.spi.ScheduledJobRunner +import org.opensearch.plugins.ActionPlugin +import org.opensearch.plugins.Plugin import org.opensearch.reportsscheduler.action.CreateReportDefinitionAction import org.opensearch.reportsscheduler.action.DeleteReportDefinitionAction import org.opensearch.reportsscheduler.action.GetAllReportDefinitionsAction @@ -30,24 +47,6 @@ import org.opensearch.reportsscheduler.resthandler.ReportStatsRestHandler import org.opensearch.reportsscheduler.scheduler.ReportDefinitionJobParser import org.opensearch.reportsscheduler.scheduler.ReportDefinitionJobRunner import org.opensearch.reportsscheduler.settings.PluginSettings - -import org.opensearch.action.ActionRequest -import org.opensearch.action.ActionResponse -import org.opensearch.client.Client -import org.opensearch.cluster.metadata.IndexNameExpressionResolver -import org.opensearch.cluster.node.DiscoveryNodes -import org.opensearch.cluster.service.ClusterService -import org.opensearch.common.io.stream.NamedWriteableRegistry -import org.opensearch.common.settings.ClusterSettings -import org.opensearch.common.settings.IndexScopedSettings -import org.opensearch.common.settings.Setting -import org.opensearch.common.settings.Settings -import org.opensearch.common.settings.SettingsFilter -import org.opensearch.common.xcontent.NamedXContentRegistry -import org.opensearch.env.Environment -import org.opensearch.env.NodeEnvironment -import org.opensearch.plugins.ActionPlugin -import org.opensearch.plugins.Plugin import org.opensearch.repositories.RepositoriesService import org.opensearch.rest.RestController import org.opensearch.rest.RestHandler diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt index 77306b9c..3c953c16 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.CreateReportDefinitionRequest -import org.opensearch.reportsscheduler.model.CreateReportDefinitionResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.CreateReportDefinitionRequest +import org.opensearch.reportsscheduler.model.CreateReportDefinitionResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class CreateReportDefinitionAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::CreateReportDefinitionRequest) { + ::CreateReportDefinitionRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/create" internal val ACTION_TYPE = ActionType(NAME, ::CreateReportDefinitionResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt index 938ebc22..d80ab47c 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.DeleteReportDefinitionRequest -import org.opensearch.reportsscheduler.model.DeleteReportDefinitionResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.DeleteReportDefinitionRequest +import org.opensearch.reportsscheduler.model.DeleteReportDefinitionResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class DeleteReportDefinitionAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::DeleteReportDefinitionRequest) { + ::DeleteReportDefinitionRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/delete" internal val ACTION_TYPE = ActionType(NAME, ::DeleteReportDefinitionResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt index d8abe4c5..40bd71f5 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.GetAllReportDefinitionsRequest -import org.opensearch.reportsscheduler.model.GetAllReportDefinitionsResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.GetAllReportDefinitionsRequest +import org.opensearch.reportsscheduler.model.GetAllReportDefinitionsResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class GetAllReportDefinitionsAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::GetAllReportDefinitionsRequest) { + ::GetAllReportDefinitionsRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/list" internal val ACTION_TYPE = ActionType(NAME, ::GetAllReportDefinitionsResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt index b85e7a01..5234d920 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.GetAllReportInstancesRequest -import org.opensearch.reportsscheduler.model.GetAllReportInstancesResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.GetAllReportInstancesRequest +import org.opensearch.reportsscheduler.model.GetAllReportInstancesResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class GetAllReportInstancesAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::GetAllReportInstancesRequest) { + ::GetAllReportInstancesRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/instance/list" internal val ACTION_TYPE = ActionType(NAME, ::GetAllReportInstancesResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt index c37d2f5d..f52c6b18 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.GetReportDefinitionRequest -import org.opensearch.reportsscheduler.model.GetReportDefinitionResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.GetReportDefinitionRequest +import org.opensearch.reportsscheduler.model.GetReportDefinitionResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class GetReportDefinitionAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::GetReportDefinitionRequest) { + ::GetReportDefinitionRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/get" internal val ACTION_TYPE = ActionType(NAME, ::GetReportDefinitionResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt index 3e3729a8..49782f5a 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.GetReportInstanceRequest -import org.opensearch.reportsscheduler.model.GetReportInstanceResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.GetReportInstanceRequest +import org.opensearch.reportsscheduler.model.GetReportInstanceResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class GetReportInstanceAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::GetReportInstanceRequest) { + ::GetReportInstanceRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/instance/get" internal val ACTION_TYPE = ActionType(NAME, ::GetReportInstanceResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt index 208b21ff..69f06ad0 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.InContextReportCreateRequest -import org.opensearch.reportsscheduler.model.InContextReportCreateResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.InContextReportCreateRequest +import org.opensearch.reportsscheduler.model.InContextReportCreateResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class InContextReportCreateAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::InContextReportCreateRequest) { + ::InContextReportCreateRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/menu/download" internal val ACTION_TYPE = ActionType(NAME, ::InContextReportCreateResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt index d654cba2..a6d75f68 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.OnDemandReportCreateRequest -import org.opensearch.reportsscheduler.model.OnDemandReportCreateResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.OnDemandReportCreateRequest +import org.opensearch.reportsscheduler.model.OnDemandReportCreateResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class OnDemandReportCreateAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::OnDemandReportCreateRequest) { + ::OnDemandReportCreateRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/on_demand" internal val ACTION_TYPE = ActionType(NAME, ::OnDemandReportCreateResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt index 46aabdb2..1b56c97a 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt @@ -5,11 +5,6 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.ConfigConstants.OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.util.logger import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -23,9 +18,14 @@ import org.opensearch.action.support.HandledTransportAction import org.opensearch.client.Client import org.opensearch.common.io.stream.Writeable import org.opensearch.common.util.concurrent.ThreadContext +import org.opensearch.commons.ConfigConstants.OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT +import org.opensearch.commons.authuser.User import org.opensearch.index.IndexNotFoundException import org.opensearch.index.engine.VersionConflictEngineException import org.opensearch.indices.InvalidIndexNameException +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.util.logger import org.opensearch.rest.RestStatus import org.opensearch.tasks.Task import org.opensearch.transport.TransportService diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt index 34e26ec1..a3c30a1d 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt @@ -5,6 +5,7 @@ package org.opensearch.reportsscheduler.action +import org.opensearch.OpenSearchStatusException import org.opensearch.commons.authuser.User import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX import org.opensearch.reportsscheduler.index.ReportDefinitionsIndex @@ -22,7 +23,6 @@ import org.opensearch.reportsscheduler.model.UpdateReportDefinitionRequest import org.opensearch.reportsscheduler.model.UpdateReportDefinitionResponse import org.opensearch.reportsscheduler.security.UserAccessManager import org.opensearch.reportsscheduler.util.logger -import org.opensearch.OpenSearchStatusException import org.opensearch.rest.RestStatus import java.time.Instant @@ -41,7 +41,8 @@ internal object ReportDefinitionActions { log.info("$LOG_PREFIX:ReportDefinition-create") UserAccessManager.validateUser(user) val currentTime = Instant.now() - val reportDefinitionDetails = ReportDefinitionDetails("ignore", + val reportDefinitionDetails = ReportDefinitionDetails( + "ignore", currentTime, currentTime, UserAccessManager.getUserTenant(user), @@ -49,8 +50,10 @@ internal object ReportDefinitionActions { request.reportDefinition ) val docId = ReportDefinitionsIndex.createReportDefinition(reportDefinitionDetails) - docId ?: throw OpenSearchStatusException("Report Definition Creation failed", - RestStatus.INTERNAL_SERVER_ERROR) + docId ?: throw OpenSearchStatusException( + "Report Definition Creation failed", + RestStatus.INTERNAL_SERVER_ERROR + ) return CreateReportDefinitionResponse(docId) } @@ -74,7 +77,8 @@ internal object ReportDefinitionActions { throw OpenSearchStatusException("Permission denied for Report Definition ${request.reportDefinitionId}", RestStatus.FORBIDDEN) } val currentTime = Instant.now() - val reportDefinitionDetails = ReportDefinitionDetails(request.reportDefinitionId, + val reportDefinitionDetails = ReportDefinitionDetails( + request.reportDefinitionId, currentTime, currentReportDefinitionDetails.createdTime, UserAccessManager.getUserTenant(user), @@ -144,10 +148,12 @@ internal object ReportDefinitionActions { fun getAll(request: GetAllReportDefinitionsRequest, user: User?): GetAllReportDefinitionsResponse { log.info("$LOG_PREFIX:ReportDefinition-getAll fromIndex:${request.fromIndex} maxItems:${request.maxItems}") UserAccessManager.validateUser(user) - val reportDefinitionsList = ReportDefinitionsIndex.getAllReportDefinitions(UserAccessManager.getUserTenant(user), + val reportDefinitionsList = ReportDefinitionsIndex.getAllReportDefinitions( + UserAccessManager.getUserTenant(user), UserAccessManager.getSearchAccessInfo(user), request.fromIndex, - request.maxItems) + request.maxItems + ) return GetAllReportDefinitionsResponse(reportDefinitionsList, true) } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt index d1233741..37f32280 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt @@ -43,7 +43,8 @@ internal object ReportInstanceActions { log.info("$LOG_PREFIX:ReportInstance-createOnDemand") UserAccessManager.validateUser(user) val currentTime = Instant.now() - val reportInstance = ReportInstance("ignore", + val reportInstance = ReportInstance( + "ignore", currentTime, currentTime, request.beginTime, @@ -53,7 +54,8 @@ internal object ReportInstanceActions { request.reportDefinitionDetails, Status.Success, // TODO: Revert to request.status when background job execution supported request.statusText, - request.inContextDownloadUrlPath) + request.inContextDownloadUrlPath + ) val docId = ReportInstancesIndex.createReportInstance(reportInstance) docId ?: run { Metrics.REPORT_FROM_DEFINITION_SYSTEM_ERROR.counter.increment() @@ -86,7 +88,8 @@ internal object ReportInstanceActions { val beginTime: Instant = currentTime.minus(reportDefinitionDetails.reportDefinition.format.duration) val endTime: Instant = currentTime val currentStatus: Status = Status.Success // TODO: Revert to Executing when background job execution supported - val reportInstance = ReportInstance("ignore", + val reportInstance = ReportInstance( + "ignore", currentTime, currentTime, beginTime, @@ -94,7 +97,8 @@ internal object ReportInstanceActions { UserAccessManager.getUserTenant(user), reportDefinitionDetails.access, reportDefinitionDetails, - currentStatus) + currentStatus + ) val docId = ReportInstancesIndex.createReportInstance(reportInstance) docId ?: run { Metrics.REPORT_FROM_DEFINITION_ID_SYSTEM_ERROR.counter.increment() @@ -127,9 +131,11 @@ internal object ReportInstanceActions { throw OpenSearchStatusException("Status cannot be updated to ${Status.Scheduled}", RestStatus.BAD_REQUEST) } val currentTime = Instant.now() - val updatedReportInstance = currentReportInstance.copy(updatedTime = currentTime, + val updatedReportInstance = currentReportInstance.copy( + updatedTime = currentTime, status = request.status, - statusText = request.statusText) + statusText = request.statusText + ) if (!ReportInstancesIndex.updateReportInstance(updatedReportInstance)) { Metrics.REPORT_INSTANCE_UPDATE_SYSTEM_ERROR.counter.increment() throw OpenSearchStatusException("Report Instance state update failed", RestStatus.INTERNAL_SERVER_ERROR) @@ -167,10 +173,12 @@ internal object ReportInstanceActions { fun getAll(request: GetAllReportInstancesRequest, user: User?): GetAllReportInstancesResponse { log.info("$LOG_PREFIX:ReportInstance-getAll fromIndex:${request.fromIndex} maxItems:${request.maxItems}") UserAccessManager.validateUser(user) - val reportInstanceList = ReportInstancesIndex.getAllReportInstances(UserAccessManager.getUserTenant(user), + val reportInstanceList = ReportInstancesIndex.getAllReportInstances( + UserAccessManager.getUserTenant(user), UserAccessManager.getSearchAccessInfo(user), request.fromIndex, - request.maxItems) + request.maxItems + ) return GetAllReportInstancesResponse(reportInstanceList, true) } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt index 395c3a06..43d77d0b 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.UpdateReportDefinitionRequest -import org.opensearch.reportsscheduler.model.UpdateReportDefinitionResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.UpdateReportDefinitionRequest +import org.opensearch.reportsscheduler.model.UpdateReportDefinitionResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class UpdateReportDefinitionAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::UpdateReportDefinitionRequest) { + ::UpdateReportDefinitionRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/definition/update" internal val ACTION_TYPE = ActionType(NAME, ::UpdateReportDefinitionResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt index ae6f5a20..8ef85700 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt @@ -5,14 +5,14 @@ package org.opensearch.reportsscheduler.action -import org.opensearch.commons.authuser.User -import org.opensearch.reportsscheduler.model.UpdateReportInstanceStatusRequest -import org.opensearch.reportsscheduler.model.UpdateReportInstanceStatusResponse import org.opensearch.action.ActionType import org.opensearch.action.support.ActionFilters import org.opensearch.client.Client import org.opensearch.common.inject.Inject import org.opensearch.common.xcontent.NamedXContentRegistry +import org.opensearch.commons.authuser.User +import org.opensearch.reportsscheduler.model.UpdateReportInstanceStatusRequest +import org.opensearch.reportsscheduler.model.UpdateReportInstanceStatusResponse import org.opensearch.transport.TransportService /** @@ -23,11 +23,13 @@ internal class UpdateReportInstanceStatusAction @Inject constructor( client: Client, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry -) : PluginBaseAction(NAME, +) : PluginBaseAction( + NAME, transportService, client, actionFilters, - ::UpdateReportInstanceStatusRequest) { + ::UpdateReportInstanceStatusRequest +) { companion object { private const val NAME = "cluster:admin/opendistro/reports/instance/update_status" internal val ACTION_TYPE = ActionType(NAME, ::UpdateReportInstanceStatusResponse) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt index be7277a5..1291e758 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt @@ -128,9 +128,11 @@ internal object ReportInstancesIndex { log.warn("$LOG_PREFIX:getReportInstance - $id not found; response:$response") null } else { - val parser = XContentType.JSON.xContent().createParser(NamedXContentRegistry.EMPTY, + val parser = XContentType.JSON.xContent().createParser( + NamedXContentRegistry.EMPTY, LoggingDeprecationHandler.INSTANCE, - response.sourceAsString) + response.sourceAsString + ) parser.nextToken() ReportInstance.parse(parser, id) } @@ -167,8 +169,10 @@ internal object ReportInstancesIndex { val actionFuture = client.search(searchRequest) val response = actionFuture.actionGet(PluginSettings.operationTimeoutMs) val result = ReportInstanceSearchResults(from.toLong(), response) - log.info("$LOG_PREFIX:getAllReportInstances from:$from, maxItems:$maxItems," + - " retCount:${result.objectList.size}, totalCount:${result.totalHits}") + log.info( + "$LOG_PREFIX:getAllReportInstances from:$from, maxItems:$maxItems," + + " retCount:${result.objectList.size}, totalCount:${result.totalHits}" + ) return result } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt index cb84d2a5..ad7c0f1b 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt @@ -5,11 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_FIELD -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -21,6 +16,11 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_FIELD +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt index e2d6efc8..03e483cb 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -16,6 +12,10 @@ import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt index 8222ba0b..13578a79 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -20,6 +16,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt index d1838320..898759c3 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -16,6 +12,10 @@ import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt index 809ff8df..7cef7c35 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt @@ -5,12 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD -import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD -import org.opensearch.reportsscheduler.settings.PluginSettings -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -22,6 +16,12 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD +import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD +import org.opensearch.reportsscheduler.settings.PluginSettings +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt index 69a4513b..b8b3cd46 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt @@ -5,13 +5,13 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.util.createJsonParser import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser +import org.opensearch.reportsscheduler.util.createJsonParser import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt index ced680ee..6a3f1dce 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt @@ -5,12 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD -import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD -import org.opensearch.reportsscheduler.settings.PluginSettings -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -22,6 +16,12 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD +import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD +import org.opensearch.reportsscheduler.settings.PluginSettings +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt index 5afbe0f3..de7c5266 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt @@ -5,13 +5,13 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.util.createJsonParser import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser +import org.opensearch.reportsscheduler.util.createJsonParser import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt index f254b18e..725029a3 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -20,6 +16,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt index 518fe565..63ad0baa 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -17,6 +13,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt index abf112ef..edbd2c46 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -20,6 +16,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt index dae9b403..03931aa9 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -17,6 +13,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt index 959c6261..76684362 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt @@ -5,6 +5,17 @@ package org.opensearch.reportsscheduler.model +import org.opensearch.action.ActionRequest +import org.opensearch.action.ActionRequestValidationException +import org.opensearch.common.io.stream.StreamInput +import org.opensearch.common.io.stream.StreamOutput +import org.opensearch.common.xcontent.ToXContent +import org.opensearch.common.xcontent.ToXContentObject +import org.opensearch.common.xcontent.XContentBuilder +import org.opensearch.common.xcontent.XContentFactory +import org.opensearch.common.xcontent.XContentParser +import org.opensearch.common.xcontent.XContentParser.Token +import org.opensearch.common.xcontent.XContentParserUtils import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX import org.opensearch.reportsscheduler.metrics.Metrics import org.opensearch.reportsscheduler.model.ReportInstance.Status @@ -18,17 +29,6 @@ import org.opensearch.reportsscheduler.model.RestTag.STATUS_TEXT_FIELD import org.opensearch.reportsscheduler.util.createJsonParser import org.opensearch.reportsscheduler.util.fieldIfNotNull import org.opensearch.reportsscheduler.util.logger -import org.opensearch.action.ActionRequest -import org.opensearch.action.ActionRequestValidationException -import org.opensearch.common.io.stream.StreamInput -import org.opensearch.common.io.stream.StreamOutput -import org.opensearch.common.xcontent.ToXContent -import org.opensearch.common.xcontent.ToXContentObject -import org.opensearch.common.xcontent.XContentBuilder -import org.opensearch.common.xcontent.XContentFactory -import org.opensearch.common.xcontent.XContentParser -import org.opensearch.common.xcontent.XContentParser.Token -import org.opensearch.common.xcontent.XContentParserUtils import java.io.IOException import java.time.Instant diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt index e895266b..73780e7e 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -17,6 +13,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt index c26e2b47..02d8e9f9 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -20,6 +16,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt index 17493d14..4d1331b8 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -17,6 +13,10 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_FIELD +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt index ec14ff16..6544a284 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt @@ -5,17 +5,17 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.jobscheduler.spi.schedule.Schedule -import org.opensearch.jobscheduler.spi.schedule.ScheduleParser -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.util.logger -import org.opensearch.reportsscheduler.util.stringList import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.ToXContentObject import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.jobscheduler.spi.schedule.Schedule +import org.opensearch.jobscheduler.spi.schedule.ScheduleParser +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.util.logger +import org.opensearch.reportsscheduler.util.stringList import java.time.Duration /** @@ -120,12 +120,14 @@ internal data class ReportDefinition( source ?: throw IllegalArgumentException("$SOURCE_TAG field absent") format ?: throw IllegalArgumentException("$FORMAT_TAG field absent") trigger ?: throw IllegalArgumentException("$TRIGGER_TAG field absent") - return ReportDefinition(name, + return ReportDefinition( + name, isEnabled, source, format, trigger, - delivery) + delivery + ) } } @@ -204,7 +206,8 @@ internal data class ReportDefinition( type ?: throw IllegalArgumentException("$TYPE_TAG field absent") origin ?: throw IllegalArgumentException("$ORIGIN_TAG field absent") id ?: throw IllegalArgumentException("$ID_TAG field absent") - return Source(description, + return Source( + description, type, origin, id @@ -274,11 +277,13 @@ internal data class ReportDefinition( durationSeconds ?: throw IllegalArgumentException("$DURATION_TAG field absent") fileFormat ?: throw IllegalArgumentException("$FILE_FORMAT_TAG field absent") - return Format(durationSeconds, + return Format( + durationSeconds, fileFormat, limit, header, - footer) + footer + ) } } @@ -400,7 +405,8 @@ internal data class ReportDefinition( title, textDescription, htmlDescription, - configIds) + configIds + ) } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt index 1e5067db..82bd1ae3 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt @@ -5,6 +5,12 @@ package org.opensearch.reportsscheduler.model +import org.opensearch.common.xcontent.ToXContent +import org.opensearch.common.xcontent.ToXContent.EMPTY_PARAMS +import org.opensearch.common.xcontent.XContentBuilder +import org.opensearch.common.xcontent.XContentFactory +import org.opensearch.common.xcontent.XContentParser +import org.opensearch.common.xcontent.XContentParserUtils import org.opensearch.jobscheduler.spi.ScheduledJobParameter import org.opensearch.jobscheduler.spi.schedule.Schedule import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX @@ -18,12 +24,6 @@ import org.opensearch.reportsscheduler.model.RestTag.UPDATED_TIME_FIELD import org.opensearch.reportsscheduler.security.UserAccessManager.DEFAULT_TENANT import org.opensearch.reportsscheduler.util.logger import org.opensearch.reportsscheduler.util.stringList -import org.opensearch.common.xcontent.ToXContent -import org.opensearch.common.xcontent.ToXContent.EMPTY_PARAMS -import org.opensearch.common.xcontent.XContentBuilder -import org.opensearch.common.xcontent.XContentFactory -import org.opensearch.common.xcontent.XContentParser -import org.opensearch.common.xcontent.XContentParserUtils import java.time.Instant /** @@ -88,12 +88,14 @@ internal data class ReportDefinitionDetails( createdTime ?: throw IllegalArgumentException("$CREATED_TIME_FIELD field absent") tenant = tenant ?: DEFAULT_TENANT reportDefinition ?: throw IllegalArgumentException("$REPORT_DEFINITION_FIELD field absent") - return ReportDefinitionDetails(id, + return ReportDefinitionDetails( + id, updatedTime, createdTime, tenant, access, - reportDefinition) + reportDefinition + ) } } @@ -154,8 +156,10 @@ internal data class ReportDefinitionDetails( override fun isEnabled(): Boolean { val trigger = reportDefinition.trigger - return (reportDefinition.isEnabled && - (reportDefinition.trigger.schedule != null) && - (trigger.triggerType == TriggerType.IntervalSchedule || trigger.triggerType == TriggerType.CronSchedule)) + return ( + reportDefinition.isEnabled && + (reportDefinition.trigger.schedule != null) && + (trigger.triggerType == TriggerType.IntervalSchedule || trigger.triggerType == TriggerType.CronSchedule) + ) } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt index 129a658e..86e51116 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt @@ -6,9 +6,9 @@ package org.opensearch.reportsscheduler.model import org.apache.lucene.search.TotalHits -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_LIST_FIELD import org.opensearch.action.search.SearchResponse import org.opensearch.common.xcontent.XContentParser +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_LIST_FIELD /** * ReportDefinitions search results diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt index fbcb99ac..c08bd78d 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt @@ -5,6 +5,12 @@ package org.opensearch.reportsscheduler.model +import org.opensearch.common.xcontent.ToXContent +import org.opensearch.common.xcontent.ToXContentObject +import org.opensearch.common.xcontent.XContentBuilder +import org.opensearch.common.xcontent.XContentFactory +import org.opensearch.common.xcontent.XContentParser +import org.opensearch.common.xcontent.XContentParserUtils import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX import org.opensearch.reportsscheduler.model.RestTag.ACCESS_LIST_FIELD import org.opensearch.reportsscheduler.model.RestTag.BEGIN_TIME_FIELD @@ -21,12 +27,6 @@ import org.opensearch.reportsscheduler.model.RestTag.UPDATED_TIME_FIELD import org.opensearch.reportsscheduler.security.UserAccessManager.DEFAULT_TENANT import org.opensearch.reportsscheduler.util.logger import org.opensearch.reportsscheduler.util.stringList -import org.opensearch.common.xcontent.ToXContent -import org.opensearch.common.xcontent.ToXContentObject -import org.opensearch.common.xcontent.XContentBuilder -import org.opensearch.common.xcontent.XContentFactory -import org.opensearch.common.xcontent.XContentParser -import org.opensearch.common.xcontent.XContentParserUtils import java.time.Instant /** @@ -114,7 +114,8 @@ internal data class ReportInstance( endTime ?: throw IllegalArgumentException("$END_TIME_FIELD field absent") tenant = tenant ?: DEFAULT_TENANT status ?: throw IllegalArgumentException("$STATUS_FIELD field absent") - return ReportInstance(id, + return ReportInstance( + id, updatedTime, createdTime, beginTime, @@ -124,7 +125,8 @@ internal data class ReportInstance( reportDefinitionDetails, status, statusText, - inContextDownloadUrlPath) + inContextDownloadUrlPath + ) } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt index 298973c3..84274652 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt @@ -5,10 +5,10 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_LIST_FIELD import org.apache.lucene.search.TotalHits import org.opensearch.action.search.SearchResponse import org.opensearch.common.xcontent.XContentParser +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_LIST_FIELD /** * ReportInstances search results diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt index 95a885b9..6e68a398 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt @@ -5,9 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.model.RestTag.REST_OUTPUT_PARAMS -import org.opensearch.reportsscheduler.util.logger import org.apache.lucene.search.TotalHits import org.apache.lucene.search.TotalHits.Relation import org.apache.lucene.search.TotalHits.Relation.EQUAL_TO @@ -21,6 +18,9 @@ import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParserUtils import org.opensearch.common.xcontent.XContentType +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.model.RestTag.REST_OUTPUT_PARAMS +import org.opensearch.reportsscheduler.util.logger internal abstract class SearchResults : ToXContentObject { val startIndex: Long @@ -68,9 +68,11 @@ internal abstract class SearchResults : ToXContent constructor(from: Long, response: SearchResponse, objectListFieldName: String) { val mutableList: MutableList = mutableListOf() response.hits.forEach { - val parser = XContentType.JSON.xContent().createParser(NamedXContentRegistry.EMPTY, + val parser = XContentType.JSON.xContent().createParser( + NamedXContentRegistry.EMPTY, LoggingDeprecationHandler.INSTANCE, - it.sourceAsString) + it.sourceAsString + ) parser.nextToken() mutableList.add(parseItem(parser, it.id)) } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt index 450a2443..221f710f 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt @@ -5,12 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_FIELD -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.createJsonParser -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -22,6 +16,12 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_FIELD +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.createJsonParser +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt index 3a706f0e..529beeb4 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt @@ -5,10 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -16,6 +12,10 @@ import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt index 29378c51..83053ff7 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt @@ -5,14 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.reportsscheduler.model.ReportInstance.Status -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD -import org.opensearch.reportsscheduler.model.RestTag.STATUS_FIELD -import org.opensearch.reportsscheduler.model.RestTag.STATUS_TEXT_FIELD -import org.opensearch.reportsscheduler.util.fieldIfNotNull -import org.opensearch.reportsscheduler.util.logger import org.opensearch.action.ActionRequest import org.opensearch.action.ActionRequestValidationException import org.opensearch.common.io.stream.StreamInput @@ -24,6 +16,14 @@ import org.opensearch.common.xcontent.XContentFactory import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.metrics.Metrics +import org.opensearch.reportsscheduler.model.ReportInstance.Status +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD +import org.opensearch.reportsscheduler.model.RestTag.STATUS_FIELD +import org.opensearch.reportsscheduler.model.RestTag.STATUS_TEXT_FIELD +import org.opensearch.reportsscheduler.util.fieldIfNotNull +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt index 266d6e69..229bad2c 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt @@ -5,9 +5,6 @@ package org.opensearch.reportsscheduler.model -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX -import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD -import org.opensearch.reportsscheduler.util.logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.io.stream.StreamOutput import org.opensearch.common.xcontent.ToXContent @@ -15,6 +12,9 @@ import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LOG_PREFIX +import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD +import org.opensearch.reportsscheduler.util.logger import java.io.IOException /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt index b9770fca..492aa346 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt @@ -4,6 +4,7 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.action.InContextReportCreateAction @@ -14,11 +15,10 @@ import org.opensearch.reportsscheduler.model.InContextReportCreateRequest import org.opensearch.reportsscheduler.model.OnDemandReportCreateRequest import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD import org.opensearch.reportsscheduler.util.contentParserNextToken -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.POST import org.opensearch.rest.RestRequest.Method.PUT @@ -97,16 +97,22 @@ internal class OnDemandReportRestHandler : PluginBaseHandler() { PUT -> RestChannelConsumer { Metrics.REPORT_FROM_DEFINITION_TOTAL.counter.increment() Metrics.REPORT_FROM_DEFINITION_INTERVAL_COUNT.counter.increment() - client.execute(InContextReportCreateAction.ACTION_TYPE, + client.execute( + InContextReportCreateAction.ACTION_TYPE, InContextReportCreateRequest(request.contentParserNextToken()), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } POST -> RestChannelConsumer { Metrics.REPORT_FROM_DEFINITION_ID_TOTAL.counter.increment() Metrics.REPORT_FROM_DEFINITION_ID_INTERVAL_COUNT.counter.increment() - client.execute(OnDemandReportCreateAction.ACTION_TYPE, - OnDemandReportCreateRequest.parse(request.contentParserNextToken(), request.param(REPORT_DEFINITION_ID_FIELD)), - RestResponseToXContentListener(it)) + client.execute( + OnDemandReportCreateAction.ACTION_TYPE, + OnDemandReportCreateRequest.parse( + request.contentParserNextToken(), request.param(REPORT_DEFINITION_ID_FIELD) + ), + RestResponseToXContentListener(it) + ) } else -> RestChannelConsumer { it.sendResponse(BytesRestResponse(RestStatus.METHOD_NOT_ALLOWED, "${request.method()} is not allowed")) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt index 9fbe64b6..a308c480 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt @@ -5,8 +5,8 @@ package org.opensearch.reportsscheduler.resthandler -import org.opensearch.reportsscheduler.metrics.Metrics import org.opensearch.client.node.NodeClient +import org.opensearch.reportsscheduler.metrics.Metrics import org.opensearch.rest.BaseRestHandler import org.opensearch.rest.RestRequest diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt index 0b159911..3ea8fcd4 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt @@ -4,6 +4,7 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.action.GetAllReportDefinitionsAction @@ -13,12 +14,10 @@ import org.opensearch.reportsscheduler.model.GetAllReportDefinitionsRequest import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD import org.opensearch.reportsscheduler.settings.PluginSettings - -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.GET import org.opensearch.rest.RestStatus @@ -78,9 +77,11 @@ internal class ReportDefinitionListRestHandler : PluginBaseHandler() { GET -> RestChannelConsumer { Metrics.REPORT_DEFINITION_LIST_TOTAL.counter.increment() Metrics.REPORT_DEFINITION_LIST_INTERVAL_COUNT.counter.increment() - client.execute(GetAllReportDefinitionsAction.ACTION_TYPE, + client.execute( + GetAllReportDefinitionsAction.ACTION_TYPE, GetAllReportDefinitionsRequest(from, maxItems), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } else -> RestChannelConsumer { it.sendResponse(BytesRestResponse(RestStatus.METHOD_NOT_ALLOWED, "${request.method()} is not allowed")) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt index 9a89dd54..0a8c9221 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt @@ -4,6 +4,7 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.action.CreateReportDefinitionAction @@ -18,11 +19,10 @@ import org.opensearch.reportsscheduler.model.GetReportDefinitionRequest import org.opensearch.reportsscheduler.model.RestTag.REPORT_DEFINITION_ID_FIELD import org.opensearch.reportsscheduler.model.UpdateReportDefinitionRequest import org.opensearch.reportsscheduler.util.contentParserNextToken -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.DELETE import org.opensearch.rest.RestRequest.Method.GET @@ -126,9 +126,11 @@ internal class ReportDefinitionRestHandler : PluginBaseHandler() { POST -> RestChannelConsumer { Metrics.REPORT_DEFINITION_CREATE_TOTAL.counter.increment() Metrics.REPORT_DEFINITION_CREATE_INTERVAL_COUNT.counter.increment() - client.execute(CreateReportDefinitionAction.ACTION_TYPE, + client.execute( + CreateReportDefinitionAction.ACTION_TYPE, CreateReportDefinitionRequest(request.contentParserNextToken()), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } PUT -> RestChannelConsumer { Metrics.REPORT_DEFINITION_UPDATE_TOTAL.counter.increment() @@ -136,21 +138,26 @@ internal class ReportDefinitionRestHandler : PluginBaseHandler() { client.execute( UpdateReportDefinitionAction.ACTION_TYPE, UpdateReportDefinitionRequest(request.contentParserNextToken(), request.param(REPORT_DEFINITION_ID_FIELD)), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } GET -> RestChannelConsumer { Metrics.REPORT_DEFINITION_INFO_TOTAL.counter.increment() Metrics.REPORT_DEFINITION_INFO_INTERVAL_COUNT.counter.increment() - client.execute(GetReportDefinitionAction.ACTION_TYPE, + client.execute( + GetReportDefinitionAction.ACTION_TYPE, GetReportDefinitionRequest(request.param(REPORT_DEFINITION_ID_FIELD)), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } DELETE -> RestChannelConsumer { Metrics.REPORT_DEFINITION_DELETE_TOTAL.counter.increment() Metrics.REPORT_DEFINITION_DELETE_INTERVAL_COUNT.counter.increment() - client.execute(DeleteReportDefinitionAction.ACTION_TYPE, + client.execute( + DeleteReportDefinitionAction.ACTION_TYPE, DeleteReportDefinitionRequest(request.param(REPORT_DEFINITION_ID_FIELD)), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } else -> RestChannelConsumer { it.sendResponse(BytesRestResponse(RestStatus.METHOD_NOT_ALLOWED, "${request.method()} is not allowed")) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt index 56cb779e..a3eaef1a 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt @@ -4,6 +4,7 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.action.GetAllReportInstancesAction @@ -13,11 +14,10 @@ import org.opensearch.reportsscheduler.model.GetAllReportInstancesRequest import org.opensearch.reportsscheduler.model.RestTag.FROM_INDEX_FIELD import org.opensearch.reportsscheduler.model.RestTag.MAX_ITEMS_FIELD import org.opensearch.reportsscheduler.settings.PluginSettings -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.GET import org.opensearch.rest.RestStatus @@ -84,9 +84,11 @@ internal class ReportInstanceListRestHandler : PluginBaseHandler() { GET -> RestChannelConsumer { Metrics.REPORT_INSTANCE_LIST_TOTAL.counter.increment() Metrics.REPORT_INSTANCE_LIST_INTERVAL_COUNT.counter.increment() - client.execute(GetAllReportInstancesAction.ACTION_TYPE, + client.execute( + GetAllReportInstancesAction.ACTION_TYPE, GetAllReportInstancesRequest(from, maxItems), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } else -> RestChannelConsumer { it.sendResponse(BytesRestResponse(RestStatus.METHOD_NOT_ALLOWED, "${request.method()} is not allowed")) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt index f09da177..5f3a6d99 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt @@ -4,6 +4,7 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.action.GetReportInstanceAction @@ -14,11 +15,10 @@ import org.opensearch.reportsscheduler.model.GetReportInstanceRequest import org.opensearch.reportsscheduler.model.RestTag.REPORT_INSTANCE_ID_FIELD import org.opensearch.reportsscheduler.model.UpdateReportInstanceStatusRequest import org.opensearch.reportsscheduler.util.contentParserNextToken -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.GET import org.opensearch.rest.RestRequest.Method.POST @@ -97,16 +97,20 @@ internal class ReportInstanceRestHandler : PluginBaseHandler() { POST -> RestChannelConsumer { Metrics.REPORT_INSTANCE_UPDATE_TOTAL.counter.increment() Metrics.REPORT_INSTANCE_UPDATE_INTERVAL_COUNT.counter.increment() - client.execute(UpdateReportInstanceStatusAction.ACTION_TYPE, + client.execute( + UpdateReportInstanceStatusAction.ACTION_TYPE, UpdateReportInstanceStatusRequest.parse(request.contentParserNextToken(), reportInstanceId), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } GET -> RestChannelConsumer { Metrics.REPORT_INSTANCE_INFO_TOTAL.counter.increment() Metrics.REPORT_INSTANCE_INFO_INTERVAL_COUNT.counter.increment() - client.execute(GetReportInstanceAction.ACTION_TYPE, + client.execute( + GetReportInstanceAction.ACTION_TYPE, GetReportInstanceRequest(reportInstanceId), - RestResponseToXContentListener(it)) + RestResponseToXContentListener(it) + ) } else -> RestChannelConsumer { it.sendResponse(BytesRestResponse(RestStatus.METHOD_NOT_ALLOWED, "${request.method()} is not allowed")) diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt index ee7ea93b..1900c7b6 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt @@ -4,15 +4,15 @@ */ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.client.node.NodeClient import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.reportsscheduler.metrics.Metrics -import org.opensearch.client.node.NodeClient import org.opensearch.rest.BaseRestHandler import org.opensearch.rest.BaseRestHandler.RestChannelConsumer import org.opensearch.rest.BytesRestResponse -import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestHandler.ReplacedRoute +import org.opensearch.rest.RestHandler.Route import org.opensearch.rest.RestRequest import org.opensearch.rest.RestRequest.Method.GET import org.opensearch.rest.RestStatus diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt index ec36afb7..cb770da3 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt @@ -5,9 +5,9 @@ package org.opensearch.reportsscheduler.resthandler +import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.reportsscheduler.metrics.Metrics import org.opensearch.reportsscheduler.model.BaseResponse -import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.rest.BytesRestResponse import org.opensearch.rest.RestChannel import org.opensearch.rest.RestResponse diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt index 4393b467..cb4b57db 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt @@ -5,11 +5,11 @@ package org.opensearch.reportsscheduler.scheduler +import org.opensearch.common.xcontent.XContentParser import org.opensearch.jobscheduler.spi.JobDocVersion import org.opensearch.jobscheduler.spi.ScheduledJobParameter import org.opensearch.jobscheduler.spi.ScheduledJobParser import org.opensearch.reportsscheduler.model.ReportDefinitionDetails -import org.opensearch.common.xcontent.XContentParser internal object ReportDefinitionJobParser : ScheduledJobParser { /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt index 96e12908..35af1b78 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt @@ -32,7 +32,8 @@ internal object ReportDefinitionJobRunner : ScheduledJobRunner { val currentTime = Instant.now() val endTime = context.expectedExecutionTime val beginTime = endTime.minus(reportDefinitionDetails.reportDefinition.format.duration) - val reportInstance = ReportInstance(context.jobId, + val reportInstance = ReportInstance( + context.jobId, currentTime, currentTime, beginTime, @@ -40,7 +41,8 @@ internal object ReportDefinitionJobRunner : ScheduledJobRunner { job.tenant, job.access, reportDefinitionDetails, - ReportInstance.Status.Success) // TODO: Revert to Scheduled when background job execution supported + ReportInstance.Status.Success + ) // TODO: Revert to Scheduled when background job execution supported val id = ReportInstancesIndex.createReportInstance(reportInstance) if (id == null) { log.warn("$LOG_PREFIX:runJob-job creation failed for $reportInstance") diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt index 6168cd0b..a7ee17c9 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt @@ -5,10 +5,10 @@ package org.opensearch.reportsscheduler.security +import org.opensearch.OpenSearchStatusException import org.opensearch.commons.authuser.User import org.opensearch.reportsscheduler.metrics.Metrics import org.opensearch.reportsscheduler.settings.PluginSettings -import org.opensearch.OpenSearchStatusException import org.opensearch.rest.RestStatus /** diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt index 45e061cb..1521c0a9 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt @@ -156,7 +156,8 @@ internal object PluginSettings { * @return list of settings defined in this plugin */ fun getAllSettings(): List> { - return listOf(OPERATION_TIMEOUT_MS, + return listOf( + OPERATION_TIMEOUT_MS, DEFAULT_ITEMS_QUERY_COUNT ) } diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt index 49a98429..423db1c0 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt @@ -18,7 +18,8 @@ fun constructReportDefinitionRequest( "trigger":{ "triggerType":"OnDemand" }, - """.trimIndent(), + """ + .trimIndent(), name: String = "report_definition", delivery: String = "" ): String { @@ -44,7 +45,8 @@ fun constructReportDefinitionRequest( } } } - """.trimIndent() + """ + .trimIndent() } fun jsonify(text: String): JsonObject { diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt index d35b167a..e8931189 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt @@ -25,9 +25,11 @@ class ReportsSchedulerPluginIT : OpenSearchIntegTestCase() { val pluginInfos = nodesInfoResponse.nodes[0].getInfo(PluginsAndModules::class.java).pluginInfos assertTrue( pluginInfos.stream() - .anyMatch { pluginInfo: PluginInfo -> pluginInfo.name == "opensearch-job-scheduler" }) + .anyMatch { pluginInfo: PluginInfo -> pluginInfo.name == "opensearch-job-scheduler" } + ) assertTrue( pluginInfos.stream() - .anyMatch { pluginInfo: PluginInfo -> pluginInfo.name == "opensearch-reports-scheduler" }) + .anyMatch { pluginInfo: PluginInfo -> pluginInfo.name == "opensearch-reports-scheduler" } + ) } } diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt index c37a396f..e1eb7550 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt @@ -8,9 +8,9 @@ package org.opensearch.integTest.bwc import org.junit.Assert import org.opensearch.common.settings.Settings import org.opensearch.integTest.PluginRestTestCase +import org.opensearch.integTest.constructReportDefinitionRequest import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI -import org.opensearch.integTest.constructReportDefinitionRequest import org.opensearch.rest.RestRequest import org.opensearch.rest.RestStatus import java.time.Instant diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt index 4b445510..07e8c243 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt @@ -5,15 +5,15 @@ package org.opensearch.integTest.rest +import org.junit.Assert import org.opensearch.integTest.PluginRestTestCase -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.integTest.jsonify import org.opensearch.integTest.validateErrorResponse import org.opensearch.integTest.validateTimeRecency +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.rest.RestRequest import org.opensearch.rest.RestStatus -import org.junit.Assert import java.time.Instant class InContextMenuReportGenerationIT : PluginRestTestCase() { diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt index 62709cd9..399d144e 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt @@ -5,16 +5,16 @@ package org.opensearch.integTest.rest +import org.junit.Assert import org.opensearch.integTest.PluginRestTestCase -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.integTest.jsonify import org.opensearch.integTest.validateErrorResponse import org.opensearch.integTest.validateTimeNearRefTime import org.opensearch.integTest.validateTimeRecency +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.rest.RestRequest import org.opensearch.rest.RestStatus -import org.junit.Assert import java.time.Duration import java.time.Instant diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt index 398c66b6..15385396 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt @@ -5,14 +5,14 @@ package org.opensearch.integTest.rest +import org.junit.Assert import org.opensearch.integTest.PluginRestTestCase -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.integTest.constructReportDefinitionRequest import org.opensearch.integTest.validateErrorResponse +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.rest.RestRequest import org.opensearch.rest.RestStatus -import org.junit.Assert class ReportDefinitionIT : PluginRestTestCase() { fun `test create, get, update, delete report definition`() { diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt index cb2160b7..926cd8ff 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt @@ -5,14 +5,14 @@ package org.opensearch.integTest.rest +import org.junit.Assert import org.opensearch.integTest.PluginRestTestCase -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI -import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.integTest.constructReportDefinitionRequest import org.opensearch.integTest.validateErrorResponse +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.BASE_REPORTS_URI +import org.opensearch.reportsscheduler.ReportsSchedulerPlugin.Companion.LEGACY_BASE_REPORTS_URI import org.opensearch.rest.RestRequest import org.opensearch.rest.RestStatus -import org.junit.Assert class ReportInstanceIT : PluginRestTestCase() { fun `test update on-demand report definition status to success after creation`() { diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt index 83120dab..2239c294 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt @@ -6,7 +6,7 @@ package org.opensearch.reportsscheduler.model import com.fasterxml.jackson.core.JsonParseException -import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.opensearch.reportsscheduler.createObjectFromJsonString diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt index 7ea878b8..96f5a7f0 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt @@ -6,7 +6,7 @@ package org.opensearch.reportsscheduler.model import com.fasterxml.jackson.core.JsonParseException -import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.opensearch.commons.utils.recreateObject diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt index e34a3fac..dc78bfa8 100644 --- a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt +++ b/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt @@ -5,8 +5,8 @@ package org.opensearch.reportsscheduler.util -import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test internal class HelpersTests { private val sampleOrigin = "https://localhost:5601/base/path" From c45371fb67cee1e49e5c8c7ccff60372cb8441e9 Mon Sep 17 00:00:00 2001 From: Rupal Date: Thu, 27 Oct 2022 16:33:00 -0700 Subject: [PATCH 20/38] Upgrade minimatch, moment (#513) Signed-off-by: Rupal Mahajan --- dashboards-reports/package.json | 4 +++- dashboards-reports/yarn.lock | 17 +++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index 8f347648..3bef05f6 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -73,6 +73,8 @@ "ansi-regex": "5.0.1", "json-schema": "0.4.0", "ws": "^7.4.6", - "terser": "^4.8.1" + "minimatch": "^3.0.5", + "terser": "^4.8.1", + "moment": "^2.29.4" } } diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 07691188..2a965354 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -4639,14 +4639,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -4706,10 +4699,10 @@ mkdirp@^0.5.4: dependencies: minimist "^1.2.5" -moment@^2.27.0: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== +moment@^2.27.0, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== move-concurrently@^1.0.1: version "1.0.1" From 2c56b2f0f232ef4d62fed86a697a8d35394ccdae Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Mon, 31 Oct 2022 14:17:29 -0700 Subject: [PATCH 21/38] Revert detekt changes with upgraded version 1.21.0 (#527) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- reports-scheduler/build.gradle | 13 +++++++++++++ reports-scheduler/detekt.yml | 5 +++++ .../index/ReportDefinitionsIndex.kt | 7 ++++--- .../reportsscheduler/index/ReportInstancesIndex.kt | 7 ++++--- .../reportsscheduler/model/ReportDefinition.kt | 2 -- .../reportsscheduler/security/SecurityAccess.kt | 2 +- .../reportsscheduler/settings/PluginSettings.kt | 2 +- .../integTest/ReportSchedularPluginTests.kt | 13 ------------- 8 files changed, 28 insertions(+), 23 deletions(-) delete mode 100644 reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportSchedularPluginTests.kt diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index 46670b88..b35c0f2a 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -40,6 +40,7 @@ buildscript { classpath "${opensearch_group}.gradle:build-tools:${opensearch_version}" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" classpath "org.jetbrains.kotlin:kotlin-allopen:${kotlin_version}" + classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.21.0" classpath "org.jacoco:org.jacoco.agent:0.8.5" } } @@ -56,9 +57,16 @@ apply plugin: 'idea' apply plugin: 'opensearch.opensearchplugin' apply plugin: 'opensearch.pluginzip' apply plugin: 'opensearch.testclusters' +apply plugin: 'io.gitlab.arturbosch.detekt' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'org.jetbrains.kotlin.plugin.allopen' +configurations.all { + resolutionStrategy { + force 'org.yaml:snakeyaml:1.32' + } +} + def usingRemoteCluster = System.properties.containsKey('tests.rest.cluster') || System.properties.containsKey('tests.cluster') def usingMultiNode = project.properties.containsKey('numNodes') @@ -105,6 +113,11 @@ configurations { testRuntime } +detekt { + config = files("detekt.yml") + buildUponDefaultConfig = true +} + configurations.testCompile { exclude module: "securemock" } diff --git a/reports-scheduler/detekt.yml b/reports-scheduler/detekt.yml index cad046bd..9b1d91fd 100644 --- a/reports-scheduler/detekt.yml +++ b/reports-scheduler/detekt.yml @@ -15,3 +15,8 @@ style: ReturnCount: active: true max: 10 +complexity: + LongMethod: + threshold: 120 + NestedBlockDepth: + threshold: 5 \ No newline at end of file diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt index 60fb34ce..35d76481 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt @@ -41,7 +41,6 @@ internal object ReportDefinitionsIndex { const val REPORT_DEFINITIONS_INDEX_NAME = ".opendistro-reports-definitions" private const val REPORT_DEFINITIONS_MAPPING_FILE_NAME = "report-definitions-mapping.yml" private const val REPORT_DEFINITIONS_SETTINGS_FILE_NAME = "report-definitions-settings.yml" - private const val MAPPING_TYPE = "_doc" private lateinit var client: Client private lateinit var clusterService: ClusterService @@ -75,10 +74,12 @@ internal object ReportDefinitionsIndex { log.info("$LOG_PREFIX:Index $REPORT_DEFINITIONS_INDEX_NAME creation Acknowledged") } else { Metrics.REPORT_DEFINITION_CREATE_SYSTEM_ERROR.counter.increment() - throw IllegalStateException("$LOG_PREFIX:Index $REPORT_DEFINITIONS_INDEX_NAME creation not Acknowledged") + error("$LOG_PREFIX:Index $REPORT_DEFINITIONS_INDEX_NAME creation not Acknowledged") } + } catch (exception: ResourceAlreadyExistsException) { + log.warn("message: ${exception.message}") } catch (exception: Exception) { - if (exception !is ResourceAlreadyExistsException && exception.cause !is ResourceAlreadyExistsException) { + if (exception.cause !is ResourceAlreadyExistsException) { Metrics.REPORT_DEFINITION_CREATE_SYSTEM_ERROR.counter.increment() throw exception } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt index 1291e758..42e98935 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt @@ -41,7 +41,6 @@ internal object ReportInstancesIndex { private const val REPORT_INSTANCES_INDEX_NAME = ".opendistro-reports-instances" private const val REPORT_INSTANCES_MAPPING_FILE_NAME = "report-instances-mapping.yml" private const val REPORT_INSTANCES_SETTINGS_FILE_NAME = "report-instances-settings.yml" - private const val MAPPING_TYPE = "_doc" private lateinit var client: Client private lateinit var clusterService: ClusterService @@ -74,10 +73,12 @@ internal object ReportInstancesIndex { if (response.isAcknowledged) { log.info("$LOG_PREFIX:Index $REPORT_INSTANCES_INDEX_NAME creation Acknowledged") } else { - throw IllegalStateException("$LOG_PREFIX:Index $REPORT_INSTANCES_INDEX_NAME creation not Acknowledged") + error("$LOG_PREFIX:Index $REPORT_INSTANCES_INDEX_NAME creation not Acknowledged") } + } catch (exception: ResourceAlreadyExistsException) { + log.warn("message: ${exception.message}") } catch (exception: Exception) { - if (exception !is ResourceAlreadyExistsException && exception.cause !is ResourceAlreadyExistsException) { + if (exception.cause !is ResourceAlreadyExistsException) { throw exception } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt index 6544a284..dfa1b5a7 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt @@ -370,7 +370,6 @@ internal data class ReportDefinition( val configIds: List ) : ToXContentObject { internal companion object { - private const val DELIVERY_FORMAT_TAG = "deliveryFormat" private const val TITLE_TAG = "title" private const val TEXT_DESCRIPTION_TAG = "textDescription" private const val HTML_DESCRIPTION_TAG = "htmlDescription" @@ -382,7 +381,6 @@ internal data class ReportDefinition( * @return created Delivery object */ fun parse(parser: XContentParser): Delivery { - var recipients: List = listOf() var title: String? = null var textDescription: String? = null var htmlDescription: String? = null diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt index d18f652d..e08fc735 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt @@ -24,7 +24,7 @@ internal object SecurityAccess { SpecialPermission.check() return try { AccessController.doPrivileged(operation) - } catch (e: PrivilegedActionException) { + } catch (@Suppress("SwallowedException") e: PrivilegedActionException) { throw (e.cause as Exception?)!! } } diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt index 1521c0a9..bb54852c 100644 --- a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt +++ b/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt @@ -99,7 +99,7 @@ internal object PluginSettings { try { settings = Settings.builder().loadFromPath(defaultSettingYmlFile).build() } catch (exception: IOException) { - log.warn("$LOG_PREFIX:Failed to load ${defaultSettingYmlFile.toAbsolutePath()}") + log.warn("$LOG_PREFIX:Failed to load ${defaultSettingYmlFile.toAbsolutePath()} message:${exception.message}") } } // Initialize the settings values to default values diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportSchedularPluginTests.kt b/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportSchedularPluginTests.kt deleted file mode 100644 index d29129cb..00000000 --- a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportSchedularPluginTests.kt +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.opensearch.integTest - -import org.opensearch.test.OpenSearchTestCase - -class ReportSchedularPluginTests : OpenSearchTestCase() { - fun testSample() { - } -} From 2cda237f1c59ce438dc58ea8df52a01c45be0b9a Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Mon, 31 Oct 2022 14:17:44 -0700 Subject: [PATCH 22/38] Add loader-utils to resolutions (#525) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- dashboards-reports/package.json | 3 ++- dashboards-reports/yarn.lock | 19 ++++++------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index 3bef05f6..b696fbbd 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -75,6 +75,7 @@ "ws": "^7.4.6", "minimatch": "^3.0.5", "terser": "^4.8.1", - "moment": "^2.29.4" + "moment": "^2.29.4", + "loader-utils": "^2.0.3" } } diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 2a965354..6b9c41cc 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -4231,13 +4231,6 @@ json5@2.x, json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -4348,14 +4341,14 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== +loader-utils@^1.2.3, loader-utils@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" + integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" - json5 "^1.0.1" + json5 "^2.1.2" locate-path@^3.0.0: version "3.0.0" @@ -4646,7 +4639,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== From 93575b8f514e4898152f3af9baf8361ca18e73ab Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:11:58 -0700 Subject: [PATCH 23/38] Nit: add resolutions at once place (#529) (#530) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan (cherry picked from commit 0dada242c5ab0fcc22e6d330eeaaa71bb6796b23) Co-authored-by: Rupal Mahajan --- reports-scheduler/build.gradle | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index b35c0f2a..d47a350f 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -61,12 +61,6 @@ apply plugin: 'io.gitlab.arturbosch.detekt' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'org.jetbrains.kotlin.plugin.allopen' -configurations.all { - resolutionStrategy { - force 'org.yaml:snakeyaml:1.32' - } -} - def usingRemoteCluster = System.properties.containsKey('tests.rest.cluster') || System.properties.containsKey('tests.cluster') def usingMultiNode = project.properties.containsKey('numNodes') @@ -128,6 +122,7 @@ configurations.all { force "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" force "org.jetbrains.kotlin:kotlin-stdlib-common:${kotlin_version}" force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.11.4" + force "org.yaml:snakeyaml:1.32" } } From ac137c1663700cd584687b457b1f88f49db1a1b0 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 10:43:25 -0700 Subject: [PATCH 24/38] add release notes for 2.4.0.0 (#532) (#533) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan (cherry picked from commit a1c4839c10f5737dd73b6ce3e1781d4356d1de2e) Co-authored-by: Rupal Mahajan --- ...-dashboards-reports.release-notes-2.4.0.0.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.4.0.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.4.0.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.4.0.0.md new file mode 100644 index 00000000..30837086 --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.4.0.0.md @@ -0,0 +1,17 @@ +## Version 2.4.0.0 Release Notes +Compatible with OpenSearch and OpenSearch Dashboards Version 2.4.0 + +### Infrastructure +* Enable windows and macos build ([#504](https://github.com/opensearch-project/dashboards-reports/pull/504)) +* Add group = org.opensearch.plugin ([#506](https://github.com/opensearch-project/dashboards-reports/pull/506)) + +### Bug Fixes +* Upgrade puppeteer ([#483](https://github.com/opensearch-project/dashboards-reports/pull/483)) +* Upgrade jsdom, terser and jsoup ([#515](https://github.com/opensearch-project/dashboards-reports/pull/515)) +* Upgrade ktlint ([#521](https://github.com/opensearch-project/dashboards-reports/pull/521)) +* Upgrade minimatch ([#512](https://github.com/opensearch-project/dashboards-reports/pull/512)) +* Upgrade detekt and snakeyaml ([#527](https://github.com/opensearch-project/dashboards-reports/pull/527)) +* Upgrade loader-utils ([#524](https://github.com/opensearch-project/dashboards-reports/pull/524)) + +### Maintenance +* Bump verison to 2.4.0 ([#499](https://github.com/opensearch-project/dashboards-reports/pull/499)) \ No newline at end of file From 28ea7a0909c769aca87f9f0fc31a109adfb54038 Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Tue, 22 Nov 2022 14:50:50 -0800 Subject: [PATCH 25/38] Bump loader-utils from 2.0.3 to 2.0.4 in /dashboards-reports (#539) (#541) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit f250deb48333bb49a2cc202896eec74c2ee9ea36) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dashboards-reports/yarn.lock | 2095 +--------------------------------- 1 file changed, 37 insertions(+), 2058 deletions(-) diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 6b9c41cc..5ed62c13 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -539,7 +539,6 @@ "@elastic/eslint-import-resolver-kibana@link:../../packages/osd-eslint-import-resolver-opensearch-dashboards": version "0.0.0" - uid "" "@emotion/cache@^10.0.27": version "10.0.29" @@ -992,161 +991,6 @@ dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -1165,11 +1009,6 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" @@ -1202,17 +1041,7 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3: +ajv@^6.12.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1227,7 +1056,7 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0, ansi-regex@^5.0.1: +ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -1257,14 +1086,6 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -1273,19 +1094,6 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" @@ -1298,31 +1106,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-find@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - array.prototype.find@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" @@ -1331,16 +1114,6 @@ array.prototype.find@^2.1.1: define-properties "^1.1.3" es-abstract "^1.17.4" -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1353,24 +1126,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -1393,11 +1148,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1526,24 +1276,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -1556,23 +1293,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -1587,21 +1307,11 @@ blob-util@2.0.2: resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== -bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1610,100 +1320,18 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - browserslist@^4.17.5: version "4.20.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" @@ -1739,20 +1367,6 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -1761,47 +1375,6 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - cachedir@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" @@ -1899,50 +1472,11 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1953,24 +1487,6 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -2012,15 +1528,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2031,14 +1538,6 @@ collapse-white-space@^1.0.2: resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2075,11 +1574,6 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -2090,22 +1584,12 @@ common-tags@^1.8.0: resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.6.2: +concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2115,16 +1599,6 @@ concat-stream@^1.5.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -2132,23 +1606,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - core-js@^2.4.0, core-js@^2.5.0: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" @@ -2170,37 +1627,6 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - cron-validator@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.1.1.tgz#0a27bb75508c7bc03c8b840d2d9f170eeacb5615" @@ -2222,23 +1648,6 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - css-what@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" @@ -2271,11 +1680,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== - cypress@^5.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" @@ -2348,7 +1752,7 @@ debug@4, debug@4.3.4: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2408,41 +1812,11 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - devtools-protocol@0.0.981744: version "0.0.981744" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" @@ -2453,15 +1827,6 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - doc-path@2.0.4, doc-path@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/doc-path/-/doc-path-2.1.2.tgz#08344d188619a6ff7c6631e462362dd720e4e81f" @@ -2484,11 +1849,6 @@ dom-serializer@^1.0.1: domhandler "^3.0.0" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" @@ -2522,16 +1882,6 @@ domutils@^2.0.0: domelementtype "^2.0.1" domhandler "^3.0.0" -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2565,19 +1915,6 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2593,31 +1930,13 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enhanced-resolve@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - entities@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" @@ -2659,13 +1978,6 @@ enzyme-shallow-equal@^1.0.4: has "^1.0.3" object-is "^1.1.2" -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2782,30 +2094,6 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-import-resolver-node@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== - dependencies: - debug "^2.6.9" - resolve "^1.5.0" - -eslint-import-resolver-webpack@0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz#fcf1fd57a775f51e18f442915f85dd6ba45d2f26" - integrity sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg== - dependencies: - array-find "^1.0.0" - debug "^2.6.8" - enhanced-resolve "~0.9.0" - find-root "^1.1.0" - has "^1.0.1" - interpret "^1.0.0" - lodash "^4.17.4" - node-libs-browser "^1.0.0 || ^2.0.0" - resolve "^1.10.0" - semver "^5.3.0" - eslint-plugin-babel@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" @@ -2828,31 +2116,11 @@ eslint-rule-composer@^0.3.0: resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -2868,19 +2136,6 @@ eventemitter2@^6.4.2: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -2908,53 +2163,11 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - extract-zip@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -3015,11 +2228,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -3035,21 +2243,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -3057,15 +2250,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -3086,19 +2270,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3113,21 +2284,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -3143,30 +2299,12 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -3253,11 +2391,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - getos@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" @@ -3272,33 +2405,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-all@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.3.0.tgz#2019896fbaeb37bc451809cf0cb1e5d2b3e345b2" - integrity sha512-30gCh9beSb+YSAh0vsoIlBRm4bSlyMa+5nayax1EJhjwYrCohX0aDxcxvWVe3heOrJikbHgRs75Af6kPLcumew== - dependencies: - glob "^7.1.2" - yargs "^15.3.1" - -glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.1.2: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -3323,11 +2436,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -3400,61 +2508,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -3467,15 +2527,6 @@ history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^2.3.1: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -3524,11 +2575,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - https-proxy-agent@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -3561,16 +2607,11 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -3589,11 +2630,6 @@ indent-string@^3.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3602,21 +2638,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.0, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - ini@1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" @@ -3631,25 +2657,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -3675,20 +2682,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -3697,7 +2690,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -3731,27 +2724,6 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" -is-core-module@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" @@ -3762,36 +2734,6 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3814,13 +2756,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -3858,13 +2793,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3887,13 +2815,6 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -3974,27 +2895,17 @@ is-whitespace-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - is-word-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -4004,18 +2915,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -4199,11 +3098,6 @@ json-2-csv@^3.7.6: deeks "2.2.6" doc-path "2.0.4" -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -4225,11 +3119,9 @@ json-stringify-safe@~5.0.1: integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@2.x, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" @@ -4250,30 +3142,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -4336,15 +3204,10 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.2.3, loader-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" - integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== +loader-utils@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -4420,7 +3283,7 @@ lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4455,29 +3318,6 @@ loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -4490,32 +3330,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdast-add-list-metadata@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" @@ -4523,51 +3342,11 @@ mdast-add-list-metadata@1.0.1: dependencies: unist-util-visit-parents "1.1.2" -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -4584,14 +3363,6 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -4622,52 +3393,18 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.5.5" tiny-warning "^1.0.3" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -4678,13 +3415,6 @@ mkdirp@1.x: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -4697,18 +3427,6 @@ moment@^2.27.0, moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4719,33 +3437,6 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nan@^2.12.1: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" - integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -4758,48 +3449,12 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -"node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-releases@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -4831,15 +3486,6 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -4863,13 +3509,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -4908,13 +3547,6 @@ object.fromentries@^2.0.3: define-properties "^1.1.3" es-abstract "^1.19.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - object.values@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" @@ -4962,11 +3594,6 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -5003,20 +3630,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5024,17 +3637,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-entities@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" @@ -5062,16 +3664,6 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5109,17 +3701,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -5140,7 +3721,7 @@ picomatch@^2.0.4, picomatch@^2.0.5: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -5150,11 +3731,6 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -5167,18 +3743,6 @@ pkg-dir@4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -5204,21 +3768,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - progress@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - promise-polyfill@^8.1.3: version "8.1.3" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" @@ -5247,16 +3801,6 @@ proxy-from-env@1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -5267,26 +3811,6 @@ psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5295,25 +3819,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -5351,11 +3861,6 @@ query-string@^6.13.1: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -5376,21 +3881,6 @@ ramda@~0.26.1: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - react-addons-test-utils@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156" @@ -5509,7 +3999,7 @@ react-transition-group@^4.3.0: loose-envify "^1.4.0" prop-types "^15.6.2" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.2.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5522,7 +4012,7 @@ react-transition-group@^4.3.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5531,22 +4021,6 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" @@ -5567,14 +4041,6 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - remark-parse@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" @@ -5596,17 +4062,7 @@ remark-parse@^5.0.0: vfile-location "^2.0.0" xtend "^4.0.1" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -5695,20 +4151,6 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.10.0, resolve@^1.5.0, resolve@^1.7.1: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@^1.12.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -5740,11 +4182,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - rimraf@3.0.2, rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5752,28 +4189,6 @@ rimraf@3.0.2, rimraf@^3.0.0: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - rxjs@^6.3.3: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" @@ -5781,7 +4196,7 @@ rxjs@^6.3.3: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5791,13 +4206,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -5818,21 +4226,12 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - semver@7.x: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^5.3.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +semver@^5.4.1, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5842,13 +4241,6 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -5861,29 +4253,6 @@ set-interval-async@1.0.33: dependencies: "@babel/runtime" "7.5.0" -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -5927,71 +4296,12 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6001,13 +4311,6 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6028,63 +4331,16 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -6116,15 +4372,6 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -6166,7 +4413,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -6208,13 +4455,6 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -6246,11 +4486,6 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6261,16 +4496,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tar-fs@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -6292,30 +4517,6 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -6330,26 +4531,11 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - tiny-invariant@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" @@ -6372,31 +4558,11 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -6404,16 +4570,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -6486,11 +4642,6 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -6560,30 +4711,6 @@ unified@^6.1.5: vfile "^2.0.0" x-is-string "^0.1.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unist-util-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" @@ -6630,24 +4757,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" @@ -6655,19 +4769,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6676,30 +4777,11 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -6741,11 +4823,6 @@ vfile@^2.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -6767,24 +4844,6 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -6800,43 +4859,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.41.5: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -6894,13 +4916,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -6918,15 +4933,6 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6962,7 +4968,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -6972,22 +4978,12 @@ y18n@^4.0.0, y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yaml@^1.7.2: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@18.x, yargs-parser@^18.1.2: +yargs-parser@18.x: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -7020,23 +5016,6 @@ yargs@^14.2: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 18da18bb93daa8802321e0f00d4957e2a7aa94a3 Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Mon, 28 Nov 2022 16:56:07 -0800 Subject: [PATCH 26/38] update qs 6.5.3 (#545) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- dashboards-reports/yarn.lock | 2090 +++++++++++++++++++++++++++++++++- 1 file changed, 2057 insertions(+), 33 deletions(-) diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 5ed62c13..fd2cd7b4 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -539,6 +539,7 @@ "@elastic/eslint-import-resolver-kibana@link:../../packages/osd-eslint-import-resolver-opensearch-dashboards": version "0.0.0" + uid "" "@emotion/cache@^10.0.27": version "10.0.29" @@ -991,6 +992,161 @@ dependencies: "@types/node" "*" +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -1009,6 +1165,11 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" @@ -1041,7 +1202,17 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv@^6.12.3: +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1056,7 +1227,7 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0: +ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -1086,6 +1257,14 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + anymatch@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -1094,6 +1273,19 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + arch@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" @@ -1106,6 +1298,31 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-find@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" + integrity sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + array.prototype.find@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" @@ -1114,6 +1331,16 @@ array.prototype.find@^2.1.1: define-properties "^1.1.3" es-abstract "^1.17.4" +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1126,6 +1353,24 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -1148,6 +1393,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1276,11 +1526,24 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -1293,6 +1556,23 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -1307,11 +1587,21 @@ blob-util@2.0.2: resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== -bluebird@^3.7.2: +bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1320,18 +1610,100 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@^3.0.2: +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.17.5: version "4.20.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" @@ -1367,6 +1739,20 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -1375,6 +1761,47 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + cachedir@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" @@ -1472,11 +1899,50 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1487,6 +1953,24 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -1528,6 +2012,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1538,6 +2031,14 @@ collapse-white-space@^1.0.2: resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1574,6 +2075,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -1584,12 +2090,22 @@ common-tags@^1.8.0: resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.2: +concat-stream@^1.5.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -1599,6 +2115,16 @@ concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -1606,6 +2132,23 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + core-js@^2.4.0, core-js@^2.5.0: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" @@ -1627,6 +2170,37 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + cron-validator@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.1.1.tgz#0a27bb75508c7bc03c8b840d2d9f170eeacb5615" @@ -1648,6 +2222,23 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + css-what@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" @@ -1680,6 +2271,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== + cypress@^5.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" @@ -1752,7 +2348,7 @@ debug@4, debug@4.3.4: dependencies: ms "2.1.2" -debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1812,11 +2408,41 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + devtools-protocol@0.0.981744: version "0.0.981744" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" @@ -1827,6 +2453,15 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + doc-path@2.0.4, doc-path@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/doc-path/-/doc-path-2.1.2.tgz#08344d188619a6ff7c6631e462362dd720e4e81f" @@ -1849,6 +2484,11 @@ dom-serializer@^1.0.1: domhandler "^3.0.0" entities "^2.0.0" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + domelementtype@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" @@ -1882,6 +2522,16 @@ domutils@^2.0.0: domelementtype "^2.0.1" domhandler "^3.0.0" +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1915,6 +2565,19 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1930,13 +2593,31 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enhanced-resolve@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + entities@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" @@ -1978,6 +2659,13 @@ enzyme-shallow-equal@^1.0.4: has "^1.0.3" object-is "^1.1.2" +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2094,6 +2782,30 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +eslint-import-resolver-node@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-import-resolver-webpack@0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz#fcf1fd57a775f51e18f442915f85dd6ba45d2f26" + integrity sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg== + dependencies: + array-find "^1.0.0" + debug "^2.6.8" + enhanced-resolve "~0.9.0" + find-root "^1.1.0" + has "^1.0.1" + interpret "^1.0.0" + lodash "^4.17.4" + node-libs-browser "^1.0.0 || ^2.0.0" + resolve "^1.10.0" + semver "^5.3.0" + eslint-plugin-babel@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" @@ -2116,11 +2828,31 @@ eslint-rule-composer@^0.3.0: resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -2136,6 +2868,19 @@ eventemitter2@^6.4.2: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -2163,11 +2908,53 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extract-zip@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -2228,6 +3015,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -2243,6 +3035,21 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2250,6 +3057,15 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -2270,6 +3086,19 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2284,6 +3113,21 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -2299,12 +3143,30 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2: +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -2391,6 +3253,11 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + getos@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" @@ -2405,7 +3272,15 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.1.2: +glob-all@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.3.1.tgz#6be2d5d8276902319f640fbf839fbe15b35e7667" + integrity sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q== + dependencies: + glob "^7.2.3" + yargs "^15.3.1" + +glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2424,6 +3299,18 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" @@ -2436,6 +3323,11 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -2508,13 +3400,61 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -2527,6 +3467,15 @@ history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoist-non-react-statics@^2.3.1: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -2575,6 +3524,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + https-proxy-agent@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -2607,11 +3561,16 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -2630,6 +3589,11 @@ indent-string@^3.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2638,11 +3602,21 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.0, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + ini@1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" @@ -2657,6 +3631,25 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -2682,6 +3675,20 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -2690,7 +3697,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.4: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -2724,6 +3731,27 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" @@ -2734,6 +3762,36 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2756,6 +3814,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-glob@^4.0.0, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -2793,6 +3858,13 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -2815,6 +3887,13 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -2895,17 +3974,27 @@ is-whitespace-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + is-word-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -2915,6 +4004,18 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -3098,6 +4199,11 @@ json-2-csv@^3.7.6: deeks "2.2.6" doc-path "2.0.4" +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -3142,6 +4248,30 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -3204,7 +4334,12 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -loader-utils@^2.0.3: +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.2.3, loader-utils@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -3283,7 +4418,7 @@ lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3318,6 +4453,29 @@ loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -3330,11 +4488,32 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdast-add-list-metadata@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" @@ -3342,11 +4521,51 @@ mdast-add-list-metadata@1.0.1: dependencies: unist-util-visit-parents "1.1.2" +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -3363,6 +4582,14 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -3393,7 +4620,17 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.5.5" tiny-warning "^1.0.3" -minimatch@^3.0.4, minimatch@^3.0.5: +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -3405,6 +4642,35 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -3415,6 +4681,13 @@ mkdirp@1.x: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^0.5.1, mkdirp@^0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -3427,6 +4700,18 @@ moment@^2.27.0, moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3437,6 +4722,33 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -3449,12 +4761,48 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= +"node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-releases@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== -normalize-path@^3.0.0: +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -3486,6 +4834,15 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -3509,6 +4866,13 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -3547,6 +4911,13 @@ object.fromentries@^2.0.3: define-properties "^1.1.3" es-abstract "^1.19.1" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + object.values@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" @@ -3594,6 +4965,11 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -3630,6 +5006,20 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -3637,6 +5027,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parse-entities@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" @@ -3664,6 +5065,16 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3701,6 +5112,17 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -3721,7 +5143,7 @@ picomatch@^2.0.4, picomatch@^2.0.5: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -3731,6 +5153,11 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -3743,6 +5170,18 @@ pkg-dir@4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3768,11 +5207,21 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + promise-polyfill@^8.1.3: version "8.1.3" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" @@ -3801,6 +5250,16 @@ proxy-from-env@1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -3811,6 +5270,26 @@ psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3819,11 +5298,25 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -3848,9 +5341,9 @@ puppeteer-core@^13.7.0: ws "8.5.0" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^6.13.1: version "6.13.2" @@ -3861,6 +5354,11 @@ query-string@^6.13.1: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -3881,6 +5379,21 @@ ramda@~0.26.1: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + react-addons-test-utils@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156" @@ -3999,7 +5512,7 @@ react-transition-group@^4.3.0: loose-envify "^1.4.0" prop-types "^15.6.2" -readable-stream@^2.2.2: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -4012,7 +5525,7 @@ readable-stream@^2.2.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -4021,6 +5534,22 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" @@ -4041,6 +5570,14 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + remark-parse@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" @@ -4062,7 +5599,17 @@ remark-parse@^5.0.0: vfile-location "^2.0.0" xtend "^4.0.1" -repeat-string@^1.5.4: +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -4151,6 +5698,20 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.10.0, resolve@^1.5.0, resolve@^1.7.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.12.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -4182,6 +5743,11 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + rimraf@3.0.2, rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -4189,6 +5755,28 @@ rimraf@3.0.2, rimraf@^3.0.0: dependencies: glob "^7.1.3" +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + rxjs@^6.3.3: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" @@ -4196,7 +5784,7 @@ rxjs@^6.3.3: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4206,6 +5794,13 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -4226,12 +5821,21 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + semver@7.x: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^5.4.1, semver@^5.7.0, semver@^5.7.1: +semver@^5.3.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -4241,6 +5845,13 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4253,6 +5864,29 @@ set-interval-async@1.0.33: dependencies: "@babel/runtime" "7.5.0" +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4296,12 +5930,71 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -source-map@^0.5.0, source-map@^0.5.7: +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -4311,6 +6004,13 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4331,16 +6031,63 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -4372,6 +6119,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -4413,7 +6169,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -4455,6 +6211,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -4486,6 +6249,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -4496,6 +6264,16 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tapable@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + tar-fs@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -4517,6 +6295,30 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4531,11 +6333,26 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tiny-invariant@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" @@ -4558,11 +6375,31 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4570,6 +6407,16 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -4642,6 +6489,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -4711,6 +6563,30 @@ unified@^6.1.5: vfile "^2.0.0" x-is-string "^0.1.0" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + unist-util-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" @@ -4757,11 +6633,24 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" @@ -4769,6 +6658,19 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -4777,11 +6679,30 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -4823,6 +6744,11 @@ vfile@^2.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -4844,6 +6770,24 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -4859,6 +6803,43 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.41.5: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -4916,6 +6897,13 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -4933,6 +6921,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4968,7 +6965,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -4978,12 +6975,22 @@ y18n@^4.0.0, y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^1.7.2: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@18.x: +yargs-parser@18.x, yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -5016,6 +7023,23 @@ yargs@^14.2: y18n "^4.0.0" yargs-parser "^15.0.1" +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 926dc7f2359f492f3046159930be13f667ced951 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 28 Nov 2022 17:54:17 -0800 Subject: [PATCH 27/38] Fix metrics tests and ClassNotFoundException when calling stats API (#546) Signed-off-by: Joshua Li --- reports-scheduler/build.gradle | 18 ++++++++++++------ ...CounterTest.java => BasicCounterTests.java} | 6 +++--- ...unterTest.java => RollingCounterTests.java} | 15 ++++++++------- 3 files changed, 23 insertions(+), 16 deletions(-) rename reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/{BasicCounterTest.java => BasicCounterTests.java} (85%) rename reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/{RollingCounterTest.java => RollingCounterTests.java} (87%) diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index d47a350f..a7f8d13d 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -25,8 +25,9 @@ buildscript { } common_utils_version = System.getProperty("common_utils.version", opensearch_build) - job_scheduler_version = System.getProperty("job_scheduler.version", opensearch_build) + job_scheduler_version = System.getProperty("job_scheduler.version", opensearch_build) kotlin_version = System.getProperty("kotlin.version", "1.6.0") + jackson_version = "2.14.1" } repositories { @@ -164,7 +165,11 @@ dependencies { compileOnly "${group}:opensearch-job-scheduler-spi:${job_scheduler_version}" implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' implementation "org.json:json:20180813" - implementation group: 'com.github.wnameless', name: 'json-flattener', version: '0.1.0' + implementation group: 'com.github.wnameless.json', name: 'json-flattener', version: '0.15.1' + // json-base, jackson-databind, jackson-annotations are transitive dependencies by json-flattener + implementation group: 'com.github.wnameless.json', name: 'json-base', version: '2.2.1' + implementation "com.fasterxml.jackson.core:jackson-databind:${jackson_version}" + implementation "com.fasterxml.jackson.core:jackson-annotations:${jackson_version}" implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.google.code.gson:gson:2.8.9' implementation "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" @@ -174,11 +179,12 @@ dependencies { 'org.junit.jupiter:junit-jupiter-api:5.6.2' ) testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.6.2') - testCompile "org.opensearch.test:framework:${opensearch_version}" - testCompile "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" + testImplementation "org.opensearch.test:framework:${opensearch_version}" + testImplementation "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0" - testCompile "org.mockito:mockito-core:3.12.4" - testCompile 'com.google.code.gson:gson:2.8.9' + testImplementation "org.mockito:mockito-core:4.7.0" + testImplementation "org.mockito:mockito-junit-jupiter:4.7.0" + testImplementation 'com.google.code.gson:gson:2.8.9' ktlint "com.pinterest:ktlint:0.45.1" } diff --git a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTest.java b/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java similarity index 85% rename from reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTest.java rename to reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java index eaaac923..6742f09f 100644 --- a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTest.java +++ b/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java @@ -5,17 +5,17 @@ package org.opensearch.reportsscheduler.metrics; -import org.junit.Test; +import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -public class BasicCounterTest { +public class BasicCounterTests { @Test public void increment() { BasicCounter counter = new BasicCounter(); - for (int i=0; i<5; ++i) { + for (int i = 0; i < 5; ++i) { counter.increment(); } diff --git a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTest.java b/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java similarity index 87% rename from reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTest.java rename to reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java index b4ae065f..f3c1ccbb 100644 --- a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTest.java +++ b/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java @@ -4,10 +4,11 @@ */ package org.opensearch.reportsscheduler.metrics; -import org.junit.Test; -import org.junit.runner.RunWith; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; import java.time.Clock; @@ -16,8 +17,8 @@ import static org.hamcrest.Matchers.lessThanOrEqualTo; import static org.mockito.Mockito.when; -@RunWith(MockitoJUnitRunner.class) -public class RollingCounterTest { +@ExtendWith(MockitoExtension.class) +public class RollingCounterTests { @Mock Clock clock; @@ -25,7 +26,7 @@ public class RollingCounterTest { @Test public void increment() { RollingCounter counter = new RollingCounter(3, 1, clock); - for (int i=0; i<5; ++i) { + for (int i = 0; i < 5; ++i) { counter.increment(); } @@ -67,7 +68,7 @@ public void add() { public void trim() { RollingCounter counter = new RollingCounter(2, 1, clock); - for (int i=1; i<6; ++i) { + for (int i = 1; i < 6; ++i) { counter.increment(); assertThat(counter.size(), equalTo(i)); when(clock.millis()).thenReturn(i * 1000L); // i seconds passed From 5b9e73b7501601bc7caaa83f5b49463329ff51ea Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Wed, 30 Nov 2022 13:38:57 -0800 Subject: [PATCH 28/38] Use advanced settings for leading wildcards in query for csv reports (#549) * Fetch allowLeadingWildcards from config Signed-off-by: Rupal Mahajan * Fix tests Signed-off-by: Rupal Mahajan * nit Signed-off-by: Rupal Mahajan * add default value for allowLeadingWildCards Co-authored-by: Joshua Li Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan Co-authored-by: Joshua Li --- .../public/components/utils/settings_service.ts | 2 ++ .../server/routes/lib/createReport.ts | 4 ++++ dashboards-reports/server/routes/report.ts | 3 +++ .../__tests__/savedSearchReportHelper.test.ts | 17 +++++++++++++++++ .../server/routes/utils/dataReportHelpers.ts | 12 +++++++++--- .../routes/utils/savedSearchReportHelper.ts | 7 +++++-- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/dashboards-reports/public/components/utils/settings_service.ts b/dashboards-reports/public/components/utils/settings_service.ts index 197e5e4e..e752a7f6 100644 --- a/dashboards-reports/public/components/utils/settings_service.ts +++ b/dashboards-reports/public/components/utils/settings_service.ts @@ -22,10 +22,12 @@ export const uiSettingsService = { : rawTimeZone; const dateFormat = this.get('dateFormat'); const csvSeparator = this.get('csv:separator'); + const allowLeadingWildcards = this.get('query:allowLeadingWildcards'); return { timezone, dateFormat, csvSeparator, + allowLeadingWildcards, }; }, }; diff --git a/dashboards-reports/server/routes/lib/createReport.ts b/dashboards-reports/server/routes/lib/createReport.ts index 57f2c5cd..857775c5 100644 --- a/dashboards-reports/server/routes/lib/createReport.ts +++ b/dashboards-reports/server/routes/lib/createReport.ts @@ -48,6 +48,9 @@ export const createReport = async ( request.query.dateFormat || DATA_REPORT_CONFIG.excelDateFormat; // @ts-ignore const csvSeparator = request.query.csvSeparator || ','; + // @ts-ignore + const allowLeadingWildcards = !!request.query.allowLeadingWildcards; + const protocol = config.get('osd_server', 'protocol'); const hostname = config.get('osd_server', 'hostname'); const port = config.get('osd_server', 'port'); @@ -76,6 +79,7 @@ export const createReport = async ( opensearchClient, dateFormat, csvSeparator, + allowLeadingWildcards, isScheduledTask, logger ); diff --git a/dashboards-reports/server/routes/report.ts b/dashboards-reports/server/routes/report.ts index 4c443a57..b071b10a 100644 --- a/dashboards-reports/server/routes/report.ts +++ b/dashboards-reports/server/routes/report.ts @@ -38,6 +38,7 @@ export default function (router: IRouter, config: ReportingConfig) { timezone: schema.maybe(schema.string()), dateFormat: schema.maybe(schema.string()), csvSeparator: schema.maybe(schema.string()), + allowLeadingWildcards: schema.maybe(schema.string()), }), }, }, @@ -98,6 +99,7 @@ export default function (router: IRouter, config: ReportingConfig) { timezone: schema.string(), dateFormat: schema.string(), csvSeparator: schema.string(), + allowLeadingWildcards: schema.string(), }), }, }, @@ -164,6 +166,7 @@ export default function (router: IRouter, config: ReportingConfig) { timezone: schema.string(), dateFormat: schema.string(), csvSeparator: schema.string(), + allowLeadingWildcards: schema.string(), }), }, }, diff --git a/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts index 7009dda3..b1dd44c1 100644 --- a/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts +++ b/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts @@ -64,6 +64,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -76,6 +77,7 @@ describe('test create saved search report', () => { mockOpenSearchClient([]), mockDateFormat, ',', + true, undefined, mockLogger ); @@ -87,6 +89,7 @@ describe('test create saved search report', () => { mockOpenSearchClient([]), mockDateFormat, ',', + true, undefined, mockLogger ); @@ -101,6 +104,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -121,6 +125,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -155,6 +160,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -192,6 +198,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -221,6 +228,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -254,6 +262,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -281,6 +290,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -305,6 +315,7 @@ describe('test create saved search report', () => { client, mockDateFormat, '|', + true, undefined, mockLogger ); @@ -338,6 +349,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -363,6 +375,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -394,6 +407,7 @@ describe('test create saved search report', () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -421,6 +435,7 @@ test('create report for data set contains null field value', async () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -452,6 +467,7 @@ test('create report for data set with metadata fields', async () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); @@ -506,6 +522,7 @@ test('create report with empty/one/multiple(list) date values', async () => { client, mockDateFormat, ',', + true, undefined, mockLogger ); diff --git a/dashboards-reports/server/routes/utils/dataReportHelpers.ts b/dashboards-reports/server/routes/utils/dataReportHelpers.ts index bc108832..a7bee2b9 100644 --- a/dashboards-reports/server/routes/utils/dataReportHelpers.ts +++ b/dashboards-reports/server/routes/utils/dataReportHelpers.ts @@ -12,6 +12,7 @@ import { buildOpenSearchQuery, Filter, Query, + OpenSearchQueryConfig, } from '../../../../../src/plugins/data/common'; export var metaData = { @@ -49,16 +50,21 @@ export const getSelectedFields = async (columns) => { // Build the OpenSearch query from the meta data // is_count is set to 1 if we building the count query but 0 if we building the fetch data query -export const buildRequestBody = (report: any, is_count: number) => { +export const buildRequestBody = (report: any, allowLeadingWildcards: boolean, is_count: number) => { let esbBoolQuery = esb.boolQuery(); const searchSourceJSON = report._source.searchSourceJSON; - const savedObjectQuery: Query = JSON.parse(searchSourceJSON).query; const savedObjectFilter: Filter = JSON.parse(searchSourceJSON).filter; + const savedObjectConfig: OpenSearchQueryConfig = { + allowLeadingWildcards: allowLeadingWildcards, + queryStringOptions: {}, + ignoreFilterIfFieldNotInIndex: false, + } const QueryFromSavedObject = buildOpenSearchQuery( undefined, savedObjectQuery, - savedObjectFilter + savedObjectFilter, + savedObjectConfig, ); // Add time range if (report._source.timeFieldName && report._source.timeFieldName.length > 0) { diff --git a/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts b/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts index ce05b412..b5c58bea 100644 --- a/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts +++ b/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts @@ -30,6 +30,7 @@ export async function createSavedSearchReport( client: ILegacyClusterClient | ILegacyScopedClusterClient, dateFormat: string, csvSeparator: string, + allowLeadingWildcards: boolean, isScheduledTask: boolean = true, logger: Logger ): Promise { @@ -43,6 +44,7 @@ export async function createSavedSearchReport( params.core_params, dateFormat, csvSeparator, + allowLeadingWildcards, isScheduledTask, logger ); @@ -130,6 +132,7 @@ async function generateReportData( params: any, dateFormat: string, csvSeparator: string, + allowLeadingWildcards: boolean, isScheduledTask: boolean, logger: Logger ) { @@ -145,7 +148,7 @@ async function generateReportData( return ''; } - const reqBody = buildRequestBody(report, 0); + const reqBody = buildRequestBody(report, allowLeadingWildcards, 0); logger.info( `[Reporting csv module] DSL request body: ${JSON.stringify(reqBody)}` ); @@ -182,7 +185,7 @@ async function generateReportData( // Build the OpenSearch Count query to count the size of result async function getOpenSearchDataSize() { - const countReq = buildRequestBody(report, 1); + const countReq = buildRequestBody(report, allowLeadingWildcards, 1); return await callCluster( client, 'count', From c4ac89f64acf6d52058a69decb2426d67ba927c6 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Thu, 1 Dec 2022 11:52:56 -0800 Subject: [PATCH 29/38] Increment version to 2.5.0-SNAPSHOT (#528) Signed-off-by: opensearch-ci-bot Signed-off-by: opensearch-ci-bot Co-authored-by: opensearch-ci-bot --- .../workflows/dashboards-reports-test-and-build-workflow.yml | 2 +- .github/workflows/draft-release-notes-workflow.yml | 2 +- dashboards-reports/opensearch_dashboards.json | 4 ++-- dashboards-reports/package.json | 2 +- reports-scheduler/build.gradle | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 61a16ff2..a39d9c8f 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -6,7 +6,7 @@ env: PLUGIN_NAME: reportsDashboards ARTIFACT_NAME: reports-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.4.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.5.0.0 jobs: diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 7dee167c..d000de15 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -16,6 +16,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.4.0.0 + version: 2.5.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json index bdaf04c2..f593bb7f 100644 --- a/dashboards-reports/opensearch_dashboards.json +++ b/dashboards-reports/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "reportsDashboards", - "version": "2.4.0.0", - "opensearchDashboardsVersion": "2.4.0", + "version": "2.5.0.0", + "opensearchDashboardsVersion": "2.5.0", "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], "optionalPlugins": ["share"], "server": true, diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index b696fbbd..f515e313 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -1,6 +1,6 @@ { "name": "reports-dashboards", - "version": "2.4.0.0", + "version": "2.5.0.0", "description": "OpenSearch Dashboards Reports Plugin", "license": "Apache-2.0", "main": "index.ts", diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index a7f8d13d..068089a8 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -12,7 +12,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") - opensearch_version = System.getProperty("opensearch.version", "2.4.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.5.0-SNAPSHOT") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') From 993f80de2a185e17c6cc2807fba6abfc719f153a Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Thu, 1 Dec 2022 14:00:32 -0800 Subject: [PATCH 30/38] [1.x] Upgrade decode-uri-component (#558) (#560) * upgrade loader-utils for CVE-2022-37601 Signed-off-by: Rupal Mahajan * Update async for CVE-2021-43138 Signed-off-by: Rupal Mahajan * Fix cross-fetch for CVE-2022-1365 Signed-off-by: Rupal Mahajan * Fix for CVE-2022-37599, CVE-2022-37603 Signed-off-by: Rupal Mahajan * Update terser for CVE-2022-25858 Signed-off-by: Rupal Mahajan * Update minimatch for CVE-2022-3517 Signed-off-by: Rupal Mahajan * Update moment for CVE-2022-24785 Signed-off-by: Rupal Mahajan * Update jsdom for CVE-2021-20066 Signed-off-by: Rupal Mahajan * Update execa for GMS-2020-2 Signed-off-by: Rupal Mahajan * Update qs for CVE-2022-24999 Signed-off-by: Rupal Mahajan * Update moment for CVE-2022-31129 Signed-off-by: Rupal Mahajan * Update decode-uri-component for CVE-2022-38900 Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan (cherry picked from commit d3f36b512fe2982a2bab4d4086ad4ba6a597631a) Co-authored-by: Rupal Mahajan --- dashboards-reports/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index fd2cd7b4..f035eb12 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -2387,9 +2387,9 @@ decimal.js@^10.2.1: integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== deeks@2.2.6: version "2.2.6" From 5ceee02fd1f1740c2204f7fed08fd65186b127a0 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Tue, 6 Dec 2022 16:03:39 -0800 Subject: [PATCH 31/38] Fix windows and macos CI (#569) (#571) * Update windows & mac CI for reo name change Signed-off-by: Rupal Mahajan * Fix linux build Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan (cherry picked from commit 9ce868480beff4cf21746609a5415efa225e18b8) Co-authored-by: Rupal Mahajan --- ...boards-reports-test-and-build-workflow.yml | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index a39d9c8f..4c3cf6e5 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -119,12 +119,12 @@ jobs: with: repository: opensearch-project/Opensearch-Dashboards ref: ${{ env.OPENSEARCH_VERSION }} - path: dashboards-reports/OpenSearch-Dashboards + path: OpenSearch-Dashboards - name: Get node version id: versions_step run: - echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - name: Setup Node uses: actions/setup-node@v1 @@ -134,11 +134,11 @@ jobs: - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - name: Add Chromium Binary to Reporting for Testing run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} curl.exe -LO https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip Expand-Archive -Path 'chromium-windows-x64.zip' Move-Item -Path "./chromium-windows-x64/.chromium" -Destination "./.chromium" @@ -150,18 +150,18 @@ jobs: with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn osd bootstrap + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn osd bootstrap - name: Test uses: nick-invision/retry@v1 with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn test + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn test - name: Build Artifact run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build cd build @@ -182,7 +182,7 @@ jobs: uses: actions/upload-artifact@v1 with: name: dashboards-reports-windows-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip macos-build: runs-on: macos-latest @@ -195,12 +195,12 @@ jobs: with: repository: opensearch-project/Opensearch-Dashboards ref: ${{ env.OPENSEARCH_VERSION }} - path: dashboards-reports/OpenSearch-Dashboards + path: OpenSearch-Dashboards - name: Get node version id: versions_step run: - echo "::set-output name=node_version::$(node -p "(require('./OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" + echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - name: Setup Node uses: actions/setup-node@v1 @@ -210,11 +210,11 @@ jobs: - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - name: Add Chromium Binary to Reporting for Testing run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-macos-x64.zip unzip chromium-macos-x64.zip rm chromium-macos-x64.zip @@ -224,18 +224,18 @@ jobs: with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - name: Test uses: nick-invision/retry@v1 with: timeout_minutes: 30 max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test + command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test - name: Build Artifact run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} + cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build cd build @@ -253,4 +253,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: dashboards-reports-macosx-x64 - path: OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip From c5bb86acbe38e2d4946b71ca287253a9cf4d853e Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Mon, 12 Dec 2022 20:43:57 +0000 Subject: [PATCH 32/38] Add ERR_ADDRESS_INVALID in Troubleshooting (#574) * Add workaround for ERR_ADDRESS_INVALID in doc Signed-off-by: Rupal Mahajan * nit Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 9c1cca06..20043a05 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,13 @@ If you are using a Ubuntu/Debian system, install the following packages: The installation command for both systems can be found [here](./dashboards-reports/rendering-engine/headless-chrome/README.md). +### Download Error: + +If you see Error: net::ERR_ADDRESS_INVALID in the logs while downlaoding report, add the following configurations in opensearch_dashboards.yml +``` +opensearch_reporting.osd_server.hostname: '127.0.0.1' +``` + ## Code of Conduct This project has adopted the [Amazon Open Source Code of Conduct](CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. From 9613cba863974e804313a98881438d963528ffda Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Tue, 13 Dec 2022 00:41:15 +0000 Subject: [PATCH 33/38] Add release notes for 2.4.1 (#580) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- ...pensearch-dashboards-reports.release-notes-2.4.1.0.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 release-notes/opensearch-dashboards-reports.release-notes-2.4.1.0.md diff --git a/release-notes/opensearch-dashboards-reports.release-notes-2.4.1.0.md b/release-notes/opensearch-dashboards-reports.release-notes-2.4.1.0.md new file mode 100644 index 00000000..06687071 --- /dev/null +++ b/release-notes/opensearch-dashboards-reports.release-notes-2.4.1.0.md @@ -0,0 +1,9 @@ +## Version 2.4.1.0 Release Notes +Compatible with OpenSearch and OpenSearch Dashboards Version 2.4.1 + +### Bug Fixes +* Upgrade loader-utils ([#542](https://github.com/opensearch-project/dashboards-reports/pull/542)) +* Upgrade decode-uri-component and qs ([#567](https://github.com/opensearch-project/dashboards-reports/pull/567)) + +### Maintenance +* Bump verison to 2.4.1 ([#540](https://github.com/opensearch-project/dashboards-reports/pull/540)) \ No newline at end of file From fb301e2d276b31489ce4e4ec48e4a482557d4a95 Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Thu, 15 Dec 2022 18:56:56 +0000 Subject: [PATCH 34/38] Remove jackson-databind and jackson-annotations (#587) * Remove jackson-databind and jackson-annotations dependencies Signed-off-by: Rupal Mahajan * resolve dompurify conflicting dependencies Signed-off-by: Rupal Mahajan * fix build Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- dashboards-reports/package.json | 2 +- dashboards-reports/yarn.lock | 8 ++++---- reports-scheduler/build.gradle | 5 +---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index f515e313..8cd23733 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -19,7 +19,7 @@ "async-mutex": "^0.2.6", "babel-polyfill": "^6.26.0", "cron-validator": "^1.1.1", - "dompurify": "^2.3.8", + "dompurify": "^2.4.1", "elastic-builder": "^2.7.1", "enzyme-adapter-react-16": "^1.15.5", "jest-fetch-mock": "^3.0.3", diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index f035eb12..1b2fea00 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -2508,10 +2508,10 @@ domhandler@^3.0, domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -dompurify@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.8.tgz#224fe9ae57d7ebd9a1ae1ac18c1c1ca3f532226f" - integrity sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw== +dompurify@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631" + integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA== domutils@^2.0.0: version "2.2.0" diff --git a/reports-scheduler/build.gradle b/reports-scheduler/build.gradle index 068089a8..bf4cf9ba 100644 --- a/reports-scheduler/build.gradle +++ b/reports-scheduler/build.gradle @@ -27,7 +27,6 @@ buildscript { common_utils_version = System.getProperty("common_utils.version", opensearch_build) job_scheduler_version = System.getProperty("job_scheduler.version", opensearch_build) kotlin_version = System.getProperty("kotlin.version", "1.6.0") - jackson_version = "2.14.1" } repositories { @@ -166,10 +165,8 @@ dependencies { implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' implementation "org.json:json:20180813" implementation group: 'com.github.wnameless.json', name: 'json-flattener', version: '0.15.1' - // json-base, jackson-databind, jackson-annotations are transitive dependencies by json-flattener + // json-base is transitive dependencies by json-flattener implementation group: 'com.github.wnameless.json', name: 'json-base', version: '2.2.1' - implementation "com.fasterxml.jackson.core:jackson-databind:${jackson_version}" - implementation "com.fasterxml.jackson.core:jackson-annotations:${jackson_version}" implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.google.code.gson:gson:2.8.9' implementation "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" From faf8c19dd05fa2cd442886da6f68fe220b17cebe Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Thu, 22 Dec 2022 12:50:06 -0800 Subject: [PATCH 35/38] Use front-end report generation instead of chromium (#586) * Increment version to 2.4.1-SNAPSHOT (#540) Signed-off-by: opensearch-ci-bot Signed-off-by: opensearch-ci-bot Co-authored-by: opensearch-ci-bot * --wip-- Signed-off-by: Joshua Li * Add initial implementation of client reporting generation Signed-off-by: Joshua Li * Fix url with basepath Signed-off-by: Joshua Li * Update header footer height Signed-off-by: Joshua Li * Update dialog text to not close dialog Signed-off-by: Joshua Li * Remove console.log Signed-off-by: Joshua Li * Remove unused components Signed-off-by: Joshua Li * Remove chromium references Signed-off-by: Joshua Li * Add report generation error handling Signed-off-by: Joshua Li * Minor refactors Signed-off-by: Joshua Li * Add postinstall patch to support safari for html2canvas Signed-off-by: Joshua Li * Add dompurify Signed-off-by: Joshua Li * Fix build error Signed-off-by: Joshua Li * Remove chromium from CI Signed-off-by: Joshua Li * Update CI artifact name Signed-off-by: Joshua Li Signed-off-by: opensearch-ci-bot Signed-off-by: Joshua Li Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: opensearch-ci-bot --- ...boards-reports-test-and-build-workflow.yml | 84 +--- README.md | 42 -- dashboards-reports/.gitignore | 1 - ....opensearch_dashboards-plugin-helpers.json | 1 + dashboards-reports/package.json | 9 +- .../components/context_menu/context_menu.js | 72 +++- .../context_menu/context_menu_ui.js | 13 +- .../main/loading_modal/loading_modal.tsx | 11 +- .../public/components/main/main_utils.tsx | 50 ++- .../components/utils/settings_service.ts | 9 +- .../visual_report/assets/report_styles.ts} | 7 + .../components/visual_report/constants.ts | 34 ++ .../visual_report/generate_report.ts | 207 ++++++++++ dashboards-reports/public/plugin.ts | 2 +- .../headless-chrome/README.md | 56 --- .../headless-chrome/build_headless_chrome.sh | 176 --------- .../scripts/patch-html2canvas.js | 33 ++ dashboards-reports/server/plugin.ts | 6 - .../server/routes/lib/createReport.ts | 37 +- dashboards-reports/server/routes/report.ts | 6 + .../__tests__/visualReportHelper.test.ts | 84 ---- .../server/routes/utils/constants.ts | 18 - .../server/routes/utils/types.ts | 2 + .../utils/visual_report/footer_template.html | 5 - .../utils/visual_report/header_template.html | 5 - .../utils/visual_report/visualReportHelper.ts | 332 ---------------- dashboards-reports/translations/pl.json | 4 +- dashboards-reports/yarn.lock | 371 +++++++++--------- 28 files changed, 614 insertions(+), 1063 deletions(-) rename dashboards-reports/{server/routes/utils/visual_report/style.css => public/components/visual_report/assets/report_styles.ts} (97%) create mode 100644 dashboards-reports/public/components/visual_report/constants.ts create mode 100644 dashboards-reports/public/components/visual_report/generate_report.ts delete mode 100644 dashboards-reports/rendering-engine/headless-chrome/README.md delete mode 100644 dashboards-reports/rendering-engine/headless-chrome/build_headless_chrome.sh create mode 100644 dashboards-reports/scripts/patch-html2canvas.js delete mode 100644 dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts delete mode 100644 dashboards-reports/server/routes/utils/visual_report/footer_template.html delete mode 100644 dashboards-reports/server/routes/utils/visual_report/header_template.html delete mode 100644 dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml index 4c3cf6e5..08348aec 100644 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ b/.github/workflows/dashboards-reports-test-and-build-workflow.yml @@ -38,15 +38,6 @@ jobs: - name: Move Dashboards Reports to Plugins Dir run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - name: Add Chromium Binary to Reporting for Testing - run: | - sudo apt update - sudo apt install -y libnss3-dev fonts-liberation libfontconfig1 - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip - unzip chromium-linux-x64.zip - rm chromium-linux-x64.zip - - name: OpenSearch Dashboards Plugin Bootstrap uses: nick-invision/retry@v1 with: @@ -72,37 +63,13 @@ jobs: run: | cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build - - cd build - mkdir -p ./{linux-x64,linux-arm64}/opensearch-dashboards/${{ env.PLUGIN_NAME }} - cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip - cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-arm64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip - - cd linux-x64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip - unzip chromium-linux-x64.zip -d ./opensearch-dashboards/${{ env.PLUGIN_NAME }} - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./opensearch-dashboards - mv ./${{ env.ARTIFACT_NAME }}-*.zip .. - cd .. - - cd linux-arm64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-linux-arm64.zip - unzip chromium-linux-arm64.zip -d ./opensearch-dashboards/${{ env.PLUGIN_NAME }} - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./opensearch-dashboards - mv ./${{ env.ARTIFACT_NAME }}-*.zip .. - cd .. + mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - name: Upload Artifact For Linux x64 uses: actions/upload-artifact@v1 with: name: dashboards-reports-linux-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip - - - name: Upload Artifact For Linux arm64 - uses: actions/upload-artifact@v1 - with: - name: dashboards-reports-linux-arm64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip windows-build: runs-on: windows-latest @@ -136,15 +103,6 @@ jobs: - name: Move Dashboards Reports to Plugins Dir run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - name: Add Chromium Binary to Reporting for Testing - run: | - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - curl.exe -LO https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip - Expand-Archive -Path 'chromium-windows-x64.zip' - Move-Item -Path "./chromium-windows-x64/.chromium" -Destination "./.chromium" - rd chromium-windows-x64.zip - rd chromium-windows-x64 - - name: OpenSearch Dashboards Plugin Bootstrap uses: nick-invision/retry@v1 with: @@ -163,26 +121,13 @@ jobs: run: | cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build - - cd build - mkdir -p ./windows-x64/opensearch-dashboards/${{ env.PLUGIN_NAME }} - mv ./${{ env.PLUGIN_NAME }}-*.zip ./windows-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip - - cd windows-x64 - curl.exe -LO https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip - Expand-Archive -Path 'chromium-windows-x64.zip' - Move-Item -Path "./chromium-windows-x64/.chromium" -Destination "./opensearch-dashboards/${{ env.PLUGIN_NAME }}" - rd chromium-windows-x64.zip - rd chromium-windows-x64 - Compress-Archive -Path "./${{ env.ARTIFACT_NAME }}-*.zip" -Destination "./opensearch-dashboards" - mv ./${{ env.ARTIFACT_NAME }}-*.zip .. - cd .. + mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - name: Upload Artifact For Windows uses: actions/upload-artifact@v1 with: name: dashboards-reports-windows-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip macos-build: runs-on: macos-latest @@ -212,13 +157,6 @@ jobs: - name: Move Dashboards Reports to Plugins Dir run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - name: Add Chromium Binary to Reporting for Testing - run: | - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-macos-x64.zip - unzip chromium-macos-x64.zip - rm chromium-macos-x64.zip - - name: OpenSearch Dashboards Plugin Bootstrap uses: nick-invision/retry@v1 with: @@ -237,20 +175,10 @@ jobs: run: | cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} yarn build - - cd build - mkdir -p ./macos-x64/opensearch-dashboards/${{ env.PLUGIN_NAME }} - mv ./${{ env.PLUGIN_NAME }}-*.zip ./macos-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip - - cd macos-x64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-macos-x64.zip - unzip chromium-macos-x64.zip -d ./opensearch-dashboards/${{ env.PLUGIN_NAME }} - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./opensearch-dashboards - mv ./${{ env.ARTIFACT_NAME }}-*.zip .. - cd .. + mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - name: Upload Artifact For MacOS x64 uses: actions/upload-artifact@v1 with: name: dashboards-reports-macosx-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-macos-x64.zip + path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip diff --git a/README.md b/README.md index 20043a05..b79cff8c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ - [Contributing](#contributing) - [Setup](#setup-&-build) - [Notifications Integration](#notifications-integration) -- [Troubleshooting](#troubleshooting) - [Code of Conduct](#code-of-conduct) - [Security](#security) - [License](#license) @@ -106,46 +105,6 @@ Complete OpenSearch Dashboards Report feature is composed of 2 plugins. OpenSearch Dashboards Reports integration with [Notifications](https://github.com/opensearch-project/notifications) is currently in progress. Tracking [here](https://github.com/opensearch-project/dashboards-reports/issues/72) -## Troubleshooting - -### Fail to launch Chromium - -There could be two reasons for this problem - -1. You are not having the correct version of headless-chrome matching to the OS that your OpenSearch Dashboards is running. Different versions of headless-chrome can be found [here](https://github.com/opensearch-project/dashboards-reports/releases/tag/chromium-1.12.0.0) - -2. Missing additional dependencies. Please refer to [additional dependencies section](./dashboards-reports/rendering-engine/headless-chrome/README.md#additional-libaries) to install required dependencies according to your operating system. - -### Missing Font Dependencies - -Chromium may not have all of the dependencies you may require to be able to view all of the content of your reports. - -If you are using a CentOS/RHEL system, install the following packages: - -- [`ipa-gothic-fonts`](https://centos.pkgs.org/7/centos-x86_64/ipa-gothic-fonts-003.03-5.el7.noarch.rpm.html) -- [`xorg-x11-fonts-100dpi`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-fonts-100dpi-7.5-9.el7.noarch.rpm.html) -- [`xorg-x11-fonts-75dpi`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-fonts-75dpi-7.5-9.el7.noarch.rpm.html) -- [`xorg-x11-utils`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-utils-7.5-23.el7.x86_64.rpm.html) -- [`xorg-x11-fonts-cyrillic`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-fonts-cyrillic-7.5-9.el7.noarch.rpm.html) -- [`xorg-x11-fonts-Type1`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-fonts-Type1-7.5-9.el7.noarch.rpm.html) -- [`xorg-x11-fonts-misc`](https://centos.pkgs.org/7/centos-x86_64/xorg-x11-fonts-misc-7.5-9.el7.noarch.rpm.html) -- [`fontconfig`](https://www.freedesktop.org/wiki/Software/fontconfig/) -- [`freetype`](https://freetype.org/) - -If you are using a Ubuntu/Debian system, install the following packages: - -- [`fonts-liberation`](https://packages.debian.org/search?keywords=fonts-liberation) -- [`libfontconfig1`](https://packages.debian.org/sid/libfontconfig1) - -The installation command for both systems can be found [here](./dashboards-reports/rendering-engine/headless-chrome/README.md). - -### Download Error: - -If you see Error: net::ERR_ADDRESS_INVALID in the logs while downlaoding report, add the following configurations in opensearch_dashboards.yml -``` -opensearch_reporting.osd_server.hostname: '127.0.0.1' -``` - ## Code of Conduct This project has adopted the [Amazon Open Source Code of Conduct](CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. @@ -160,4 +119,3 @@ See the [LICENSE](./LICENSE) file for our project's licensing. We will ask you t ## Copyright -Copyright OpenSearch Contributors. See [NOTICE](NOTICE.txt) for details. diff --git a/dashboards-reports/.gitignore b/dashboards-reports/.gitignore index 9e1fedcc..16b7cd30 100644 --- a/dashboards-reports/.gitignore +++ b/dashboards-reports/.gitignore @@ -10,4 +10,3 @@ yarn-error.log .eslintcache package-lock.json /target/ -.chromium/ \ No newline at end of file diff --git a/dashboards-reports/.opensearch_dashboards-plugin-helpers.json b/dashboards-reports/.opensearch_dashboards-plugin-helpers.json index 05b7d7e4..eee5a7ea 100644 --- a/dashboards-reports/.opensearch_dashboards-plugin-helpers.json +++ b/dashboards-reports/.opensearch_dashboards-plugin-helpers.json @@ -5,6 +5,7 @@ "yarn.lock", ".i18nrc.json", "common/**/*", + "scripts/**/*", "public/**/*", "server/**/*", "translations/**/*" diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json index 8cd23733..c266a1d1 100644 --- a/dashboards-reports/package.json +++ b/dashboards-reports/package.json @@ -13,20 +13,21 @@ "test": "../../node_modules/.bin/jest --config ./test/jest.config.js", "cypress:run": "cypress run", "cypress:open": "cypress open", - "plugin_helpers": "node ../../scripts/plugin_helpers" + "plugin_helpers": "node ../../scripts/plugin_helpers", + "postinstall": "node ./scripts/patch-html2canvas.js" }, "dependencies": { - "async-mutex": "^0.2.6", "babel-polyfill": "^6.26.0", "cron-validator": "^1.1.1", "dompurify": "^2.4.1", "elastic-builder": "^2.7.1", "enzyme-adapter-react-16": "^1.15.5", + "html2canvas": "1.4.1", "jest-fetch-mock": "^3.0.3", "jquery": "^3.5.0", "jsdom": "16.5.0", "json-2-csv": "^3.7.6", - "puppeteer-core": "^13.7.0", + "jspdf": "^2.5.1", "react-addons-test-utils": "^15.6.2", "react-id-generator": "^3.0.1", "react-markdown": "^4.3.1", @@ -44,7 +45,6 @@ "@types/dompurify": "^2.3.3", "@types/enzyme-adapter-react-16": "^1.0.6", "@types/jsdom": "^16.2.3", - "@types/puppeteer-core": "^5.4.0", "@types/react": "^16.14.23", "@types/react-addons-test-utils": "^0.14.25", "@types/react-dom": "^16.9.8", @@ -60,6 +60,7 @@ "identity-obj-proxy": "^3.0.0", "jest-dom": "^4.0.0", "react-test-renderer": "^16.12.0", + "replace-in-file": "^6.3.5", "ts-jest": "^26.1.0" }, "resolutions": { diff --git a/dashboards-reports/public/components/context_menu/context_menu.js b/dashboards-reports/public/components/context_menu/context_menu.js index f30e336d..0b7485ab 100644 --- a/dashboards-reports/public/components/context_menu/context_menu.js +++ b/dashboards-reports/public/components/context_menu/context_menu.js @@ -4,24 +4,30 @@ */ /* eslint-disable no-restricted-globals */ -import $ from 'jquery'; +//@ts-check import { i18n } from '@osd/i18n'; +import $ from 'jquery'; +import { parse } from 'url'; import { readStreamToFile } from '../main/main_utils'; +import { uiSettingsService } from '../utils/settings_service'; +import { + GENERATE_REPORT_PARAM, + GENERATE_REPORT_PARAM_REGEX, +} from '../visual_report/constants'; +import { generateReport } from '../visual_report/generate_report'; import { - contextMenuCreateReportDefinition, - getTimeFieldsFromUrl, - displayLoadingModal, addSuccessOrFailureToast, + contextMenuCreateReportDefinition, contextMenuViewReports, + displayLoadingModal, + getTimeFieldsFromUrl, replaceQueryURL, } from './context_menu_helpers'; import { + getMenuItem, popoverMenu, popoverMenuDiscover, - getMenuItem, } from './context_menu_ui'; -import { parse } from 'url'; -import { uiSettingsService } from '../utils/settings_service'; const generateInContextReport = async ( timeRanges, @@ -102,23 +108,28 @@ const generateInContextReport = async ( credentials: 'include', } ) - .then((response) => { - if (response.status === 200) { - $('#reportGenerationProgressModal').remove(); - addSuccessOrFailureToast('success'); - } else { - if (response.status === 403) { + .then(async (response) => [response.status, await response.json()]) + .then(async ([status, data]) => { + if (status !== 200) { + if (status === 403) { addSuccessOrFailureToast('permissionsFailure'); - } else if (response.status === 503) { + } else if (status === 503) { addSuccessOrFailureToast('timeoutFailure', reportSource); } else { addSuccessOrFailureToast('failure'); } + } else if (fileFormat === 'pdf' || fileFormat === 'png') { + try { + await generateReport(data.reportId); + addSuccessOrFailureToast('success'); + } catch (error) { + console.error(error); + addSuccessOrFailureToast('failure'); + } + } else if (data.data) { + await readStreamToFile(data.data, fileFormat, data.filename); } - return response.json(); - }) - .then(async (data) => { - await readStreamToFile(data.data, fileFormat, data.filename); + $('#reportGenerationProgressModal').remove(); }); }; @@ -213,9 +224,34 @@ $(function () { }); }); + checkURLParams(); locationHashChanged(); }); +/* generate a report if flagged in URL params */ +const checkURLParams = async () => { + const [hash, query] = location.href.split('#')[1].split('?'); + const params = new URLSearchParams(query); + const id = params.get(GENERATE_REPORT_PARAM); + if (!id) return; + await new Promise((resolve) => setTimeout(resolve, 1000)); + displayLoadingModal(); + try { + await generateReport(id, 30000); + window.history.replaceState( + {}, + '', + `#${hash}?${query.replace(GENERATE_REPORT_PARAM_REGEX, '')}` + ); + addSuccessOrFailureToast('success'); + } catch (error) { + console.error(error); + addSuccessOrFailureToast('failure'); + } finally { + $('#reportGenerationProgressModal').remove(); + } +}; + const isDiscoverNavMenu = (navMenu) => { return ( navMenu[0].children.length === 5 && diff --git a/dashboards-reports/public/components/context_menu/context_menu_ui.js b/dashboards-reports/public/components/context_menu/context_menu_ui.js index 0c99641f..119b7bae 100644 --- a/dashboards-reports/public/components/context_menu/context_menu_ui.js +++ b/dashboards-reports/public/components/context_menu/context_menu_ui.js @@ -246,7 +246,7 @@ export const popoverMenuDiscover = (savedObjectAvailable) => { export const permissionsMissingOnGeneration = () => { return ` -
+

${i18n.translate( 'opensearch.reports.menu.newNotificationAppears', { defaultMessage: 'A new notification appears' } @@ -277,7 +277,7 @@ export const permissionsMissingOnGeneration = () => { export const reportGenerationSuccess = () => { return ` -

+

A new notification appears

@@ -319,7 +319,7 @@ export const reportGenerationFailure = ( }) ) => { return ` -
+

A new notification appears

@@ -346,7 +346,7 @@ export const reportGenerationFailure = ( export const reportGenerationInProgressModal = () => { return ` -
+
@@ -377,7 +377,7 @@ export const reportGenerationInProgressModal = () => { 'opensearch.reports.menu.progress.youCanClose', { defaultMessage: - 'You can close this dialog while we continue in the background.', + 'Please keep this dialog open while report is being generated.', } )}
@@ -385,9 +385,6 @@ export const reportGenerationInProgressModal = () => {
-
-
-
diff --git a/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx b/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx index ff3f70c2..61c53968 100644 --- a/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx +++ b/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx @@ -59,7 +59,7 @@ export function GenerateReportLoadingModal(props: { setShowLoading: any }) { {i18n.translate('opensearch.reports.loading.youCanClose', { defaultMessage: - 'You can close this dialog while we continue in the background.', + 'Please keep this dialog open while report is being generated.', })} @@ -72,15 +72,6 @@ export function GenerateReportLoadingModal(props: { setShowLoading: any }) { - - - - {i18n.translate('opensearch.reports.loading.close', { - defaultMessage: 'Close', - })} - - - diff --git a/dashboards-reports/public/components/main/main_utils.tsx b/dashboards-reports/public/components/main/main_utils.tsx index 44066c02..f4b32bbf 100644 --- a/dashboards-reports/public/components/main/main_utils.tsx +++ b/dashboards-reports/public/components/main/main_utils.tsx @@ -3,10 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import 'babel-polyfill'; import { i18n } from '@osd/i18n'; -import { HttpFetchOptions, HttpSetup } from '../../../../../src/core/public'; +import 'babel-polyfill'; +import { HttpSetup } from '../../../../../src/core/public'; import { uiSettingsService } from '../utils/settings_service'; +import { GENERATE_REPORT_PARAM } from '../visual_report/constants'; export const getAvailableNotificationsChannels = (configList: any) => { let availableChannels = []; @@ -14,16 +15,16 @@ export const getAvailableNotificationsChannels = (configList: any) => { let channelEntry = {}; channelEntry = { label: configList[i].config.name, - id: configList[i].config_id - } + id: configList[i].config_id, + }; availableChannels.push(channelEntry); } return availableChannels; -} +}; type fileFormatsOptions = { - [key: string]: string -} + [key: string]: string; +}; export const fileFormatsUpper: fileFormatsOptions = { csv: 'CSV', @@ -164,11 +165,23 @@ export const generateReportFromDefinitionId = async ( }) .then(async (response: any) => { // for emailing a report, this API response doesn't have response body - if (response) { - const fileFormat = extractFileFormat(response['filename']); - const fileName = response['filename']; + if (!response) return; + const fileFormat = extractFileFormat(response['filename']); + const fileName = response['filename']; + if (fileFormat === 'csv') { await readStreamToFile(await response['data'], fileFormat, fileName); + status = true; + return; } + + // generate reports in browser is memory intensive, do it in a new process by removing referrer + const a = document.createElement('a'); + a.href = + window.location.origin + + `${response.queryUrl}&${GENERATE_REPORT_PARAM}=${response.reportId}`; + a.target = '_blank'; + a.rel = 'noreferrer'; + a.click(); status = true; }) .catch((error) => { @@ -199,9 +212,20 @@ export const generateReportById = async ( //TODO: duplicate code, extract to be a function that can reuse. e.g. handleResponse(response) const fileFormat = extractFileFormat(response['filename']); const fileName = response['filename']; - await readStreamToFile(await response['data'], fileFormat, fileName); - handleSuccessToast(); - return response; + if (fileFormat === 'csv') { + await readStreamToFile(await response['data'], fileFormat, fileName); + handleSuccessToast(); + return response; + } + + // generate reports in browser is memory intensive, do it in a new process by removing referrer + const a = document.createElement('a'); + a.href = + window.location.origin + + `${response.queryUrl}&${GENERATE_REPORT_PARAM}=${reportId}`; + a.target = '_blank'; + a.rel = 'noreferrer'; + a.click(); }) .catch((error) => { console.log('error on generating report by id:', error); diff --git a/dashboards-reports/public/components/utils/settings_service.ts b/dashboards-reports/public/components/utils/settings_service.ts index e752a7f6..4a15e831 100644 --- a/dashboards-reports/public/components/utils/settings_service.ts +++ b/dashboards-reports/public/components/utils/settings_service.ts @@ -3,13 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { IUiSettingsClient } from '../../../../../src/core/public'; +import { HttpStart, IUiSettingsClient } from '../../../../../src/core/public'; let uiSettings: IUiSettingsClient; +let http: HttpStart; export const uiSettingsService = { - init: (client: IUiSettingsClient) => { - uiSettings = client; + init: (uiSettingsClient: IUiSettingsClient, httpClient: HttpStart) => { + uiSettings = uiSettingsClient; + http = httpClient; }, get: (key: string, defaultOverride?: any) => { return uiSettings?.get(key, defaultOverride) || ''; @@ -30,4 +32,5 @@ export const uiSettingsService = { allowLeadingWildcards, }; }, + getHttpClient: () => http, }; diff --git a/dashboards-reports/server/routes/utils/visual_report/style.css b/dashboards-reports/public/components/visual_report/assets/report_styles.ts similarity index 97% rename from dashboards-reports/server/routes/utils/visual_report/style.css rename to dashboards-reports/public/components/visual_report/assets/report_styles.ts index c329e281..a78ee8a8 100644 --- a/dashboards-reports/server/routes/utils/visual_report/style.css +++ b/dashboards-reports/public/components/visual_report/assets/report_styles.ts @@ -1,3 +1,9 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +export const reportingStyle = ` html, body { margin: 0; @@ -213,3 +219,4 @@ iframe, embed, object { padding: 6px 13px; border: 1px solid #c8ccd0; } +`; diff --git a/dashboards-reports/public/components/visual_report/constants.ts b/dashboards-reports/public/components/visual_report/constants.ts new file mode 100644 index 00000000..c0e6a6d0 --- /dev/null +++ b/dashboards-reports/public/components/visual_report/constants.ts @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import Showdown from 'showdown'; + +// search param key name to trigger report generation, value is a report ID +export const GENERATE_REPORT_PARAM = 'visualReportId'; +export const GENERATE_REPORT_PARAM_REGEX = new RegExp( + '[&?]' + GENERATE_REPORT_PARAM + '=[^&]+', + '' +); + +export enum VISUAL_REPORT_TYPE { + dashboard = 'Dashboard', + visualization = 'Visualization', + notebook = 'Notebook', +} +export enum SELECTOR { + dashboard = '#dashboardViewport', + visualization = '.visEditor__content', + notebook = '.euiPageBody', +} + +export const DEFAULT_REPORT_HEADER = '

OpenSearch Dashboards Reports

'; + +export const converter = new Showdown.Converter({ + tables: true, + simplifiedAutoLink: true, + strikethrough: true, + tasklists: true, + noHeaderId: true, +}); diff --git a/dashboards-reports/public/components/visual_report/generate_report.ts b/dashboards-reports/public/components/visual_report/generate_report.ts new file mode 100644 index 00000000..52e82121 --- /dev/null +++ b/dashboards-reports/public/components/visual_report/generate_report.ts @@ -0,0 +1,207 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import createDOMPurify from 'dompurify'; +import html2canvas from 'html2canvas'; +import jsPDF from 'jspdf'; +import { v1 as uuidv1 } from 'uuid'; +import { ReportSchemaType } from '../../../server/model'; +import { uiSettingsService } from '../utils/settings_service'; +import { reportingStyle } from './assets/report_styles'; +import { + converter, + DEFAULT_REPORT_HEADER, + SELECTOR, + VISUAL_REPORT_TYPE, +} from './constants'; + +const waitForSelector = (selector: string, timeout = 30000) => { + return Promise.race([ + new Promise((resolve) => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + const observer = new MutationObserver((mutations) => { + if (document.querySelector(selector)) { + resolve(document.querySelector(selector)); + observer.disconnect(); + } + }); + observer.observe(document.body, { + childList: true, + subtree: true, + }); + }), + new Promise((resolve, reject) => + setTimeout( + () => + reject( + 'Timed out waiting for selector ' + + selector + + ' while generating report.' + ), + timeout + ) + ), + ]); +}; + +const timeout = (ms: number) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; + +const removeNonReportElements = ( + doc: Document, + reportSource: VISUAL_REPORT_TYPE +) => { + // remove buttons + doc.querySelectorAll("[class^='euiButton']").forEach((e) => e.remove()); + // remove top navBar + doc.querySelectorAll("[class^='euiHeader']").forEach((e) => e.remove()); + // remove visualization editor + if (reportSource === VISUAL_REPORT_TYPE.visualization) { + doc.querySelector('[data-test-subj="splitPanelResizer"]')?.remove(); + doc.querySelector('.visEditor__collapsibleSidebar')?.remove(); + } + doc.body.style.paddingTop = '0px'; +}; + +const addReportHeader = (doc: Document, header: string) => { + const headerHtml = `
+
+
${header}
+
+
`; + const headerContainer = document.createElement('div'); + headerContainer.className = 'reportWrapper'; + headerContainer.innerHTML = headerHtml; + const body = doc.getElementsByTagName('body')[0]; + body.insertBefore(headerContainer, body.children[0]); +}; + +const addReportFooter = (doc: Document, footer: string) => { + const footerHtml = `
+
+
${footer}
+
+
`; + const footerContainer = document.createElement('div'); + footerContainer.className = 'reportWrapper'; + footerContainer.innerHTML = footerHtml; + const body = doc.getElementsByTagName('body')[0]; + body.appendChild(footerContainer); +}; + +const addReportStyle = (doc: Document, style: string) => { + const styleElement = document.createElement('style'); + styleElement.innerHTML = style; + doc.getElementsByTagName('head')[0].appendChild(styleElement); +}; + +const computeHeight = (height: number, header: string, footer: string) => { + let computedHeight = height; + const headerLines = header.split('\n').length; + const footerLines = footer.split('\n').length; + if (headerLines) { + computedHeight += 24 * headerLines; + } + if (footerLines) { + computedHeight += 50 + 24 * footerLines; + } + return computedHeight; +}; + +export const generateReport = async (id: string, forceDelay = 15000) => { + const http = uiSettingsService.getHttpClient(); + const DOMPurify = createDOMPurify(window); + + const report = await http.get( + '../api/reporting/reports/' + id + ); + const format = + report.report_definition.report_params.core_params.report_format; + const reportSource = report.report_definition.report_params + .report_source as unknown as VISUAL_REPORT_TYPE; + const headerInput = report.report_definition.report_params.core_params.header; + const footerInput = report.report_definition.report_params.core_params.footer; + const header = headerInput + ? DOMPurify.sanitize(converter.makeHtml(headerInput)) + : DEFAULT_REPORT_HEADER; + const footer = footerInput + ? DOMPurify.sanitize(converter.makeHtml(footerInput)) + : ''; + const fileName = + report.report_definition.report_params.report_name + + `_${new Date().toISOString()}_${uuidv1()}.${format}`; + + await timeout(1000); + switch (reportSource) { + case VISUAL_REPORT_TYPE.dashboard: + await waitForSelector(SELECTOR.dashboard); + break; + case VISUAL_REPORT_TYPE.visualization: + await waitForSelector(SELECTOR.visualization); + break; + case VISUAL_REPORT_TYPE.notebook: + await waitForSelector(SELECTOR.notebook); + break; + default: + throw Error( + `report source can only be one of [Dashboard, Visualization, Notebook]` + ); + } + await timeout(forceDelay); + + const width = document.documentElement.scrollWidth; + const height = computeHeight( + document.documentElement.scrollHeight, + header, + footer + ); + return html2canvas(document.body, { + windowWidth: width, + windowHeight: height, + width, + height, + imageTimeout: 30000, + useCORS: true, + removeContainer: false, + onclone: function (documentClone) { + removeNonReportElements(documentClone, reportSource); + addReportHeader(documentClone, header); + addReportFooter(documentClone, footer); + addReportStyle(documentClone, reportingStyle); + }, + }).then(function (canvas) { + // TODO remove this and 'removeContainer: false' when https://github.com/niklasvh/html2canvas/pull/2949 is merged + document + .querySelectorAll('.html2canvas-container') + .forEach((e) => { + const iframe = e.contentWindow; + if (e) { + e.src = 'about:blank'; + if (iframe) { + iframe.document.write(''); + iframe.document.clear(); + iframe.close(); + } + e.remove(); + } + }); + + if (format === 'png') { + const link = document.createElement('a'); + link.download = fileName; + link.href = canvas.toDataURL(); + link.click(); + } else { + const orient = canvas.width > canvas.height ? 'landscape' : 'portrait'; + const pdf = new jsPDF(orient, 'px', [canvas.width, canvas.height]); + pdf.addImage(canvas, 'JPEG', 0, 0, canvas.width, canvas.height); + pdf.save(fileName); + } + return true; + }); +}; diff --git a/dashboards-reports/public/plugin.ts b/dashboards-reports/public/plugin.ts index 2c26eb6c..b91b6be1 100644 --- a/dashboards-reports/public/plugin.ts +++ b/dashboards-reports/public/plugin.ts @@ -23,7 +23,7 @@ export class ReportsDashboardsPlugin implements Plugin { public setup(core: CoreSetup): ReportsDashboardsPluginSetup { - uiSettingsService.init(core.uiSettings); + uiSettingsService.init(core.uiSettings, core.http); // Register an application into the side navigation menu core.application.register({ id: PLUGIN_ID, diff --git a/dashboards-reports/rendering-engine/headless-chrome/README.md b/dashboards-reports/rendering-engine/headless-chrome/README.md deleted file mode 100644 index 21cf34a5..00000000 --- a/dashboards-reports/rendering-engine/headless-chrome/README.md +++ /dev/null @@ -1,56 +0,0 @@ -## Chrome Binaries for OpenSearch Dashboards Reports used by Puppeteer -Headless Chrome for Linux and Mac are chrome binaries which are significantly smaller than the standard binaries shipped by Google and Puppeteer. -Chrome binary can be built from shell script build_headless_chrome.sh for Mac, Linux x64 and Linux arm64, -output of script is called headless_shell. - -## Puppeteer's Chrome version - -Find the puppeteer version used in OpenSearch Dashboards node_modules.json and get the associated chrome SHA to build from crrev.com and puppeteer repositories. Puppeteer 1.9 uses rev 674921 with commit sha as 312d84c8ce62810976feda0d3457108a6dfff9e6) - -## headless Chrome folder structure --chromium - |-chromium - |-chromium - |-src - |-out - |-headless - |-headless_shell # output of scripts - -## How to generate the headless_chrome -This is a shell script to set environment variable, download the source code and build the executable. - -## Commands to create headless_chrome -Run below command to create headless_shell for each platform - -headless-chrome.sh chrome-version-SHA (arch_name (arm64)) -. Mac x64: ./build_headless_chrome.sh -. Linux x64: ./build_headless_chrome.sh -. Linux arm64: ./build_headless_chrome.sh arm64 - -# How to call in Command line: -. PNG report: ./headless_shell --headless --disable-gpu --screenshot=test.png https://opensearch.org/docs/ -. PDF report: ./headless_shell --headless --disable-gpu --print-to-pdf=test.pdf https://opensearch.org/docs/ - -## Headless Chromium for MAC -# Files: - headless_shell - libswiftshader_libGLESv2.dylib - -## Headless Chromium for Linux (arm64 and x64) -# Files: - headless_shell - swiftshader - |-libEGL.so - |-libEGL.so.TOC - |-libGLESv2.so - |-libGLESv2.so.TOC -# Additional libaries: -- Ubuntu needs additional dependencies to run chromium -``` -sudo apt install -y libnss3-dev fonts-liberation libfontconfig1 -``` -- RedHat/CentOS/Amazon Linux 2 needs additional dependencies to run chromium -``` -sudo yum install -y libnss3.so xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc fontconfig freetype ipa-gothic-fonts -``` - diff --git a/dashboards-reports/rendering-engine/headless-chrome/build_headless_chrome.sh b/dashboards-reports/rendering-engine/headless-chrome/build_headless_chrome.sh deleted file mode 100644 index 219ba8e8..00000000 --- a/dashboards-reports/rendering-engine/headless-chrome/build_headless_chrome.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/bash - -# Initializes a Linux environment. This need only be done once per -# machine. The OS needs to be a flavor that supports apt get, such as Ubuntu. - -function generateArgs { -if [ $1 == 'linux' ]; then - echo 'import("//build/args/headless.gn") -is_component_build = false -remove_webcore_debug_symbols = true -enable_nacl = false -is_debug = false -symbol_level = 0 -use_kerberos = false' > args.gn -elif [ $1 == 'darwin' ]; then - echo '#args configuration - -icu_use_data_file = false -v8_use_external_startup_data = false -remove_webcore_debug_symbols = true -use_kerberos = false -use_libpci = false -use_pulseaudio = false -use_udev = false -is_debug = false -symbol_level = 0 -is_component_build = false -enable_nacl = false -enable_print_preview = false -enable_basic_printing = false -enable_remoting = false -use_alsa = false -use_cups = false -use_dbus = false -use_gio = false -' > args.gn -fi -} - -ARGC=("$#") - -if [ $ARGC -lt 1 ]; -then - echo "format: build_headless_chrome.sh {chrome_source_version} (arch_name)" - echo "Mac x64: ./build_headless_chrome.sh 312d84c8ce62810976feda0d3457108a6dfff9e6" - echo "Linux x64: ./build_headless_chrome.sh 312d84c8ce62810976feda0d3457108a6dfff9e6" - echo "Linux arm64: ./build_headless_chrome.sh 312d84c8ce62810976feda0d3457108a6dfff9e6 arm64" - exit -fi - -source_version=$1 - -if [ $ARGC -lt 2 ]; -then - arch_name="x64" -else - arch_name=$2 -fi - -if ! [ -x "$(command -v python)" ]; then - echo "Python is not found, please install python or setup python environment properly" - exit -fi - -# Launch the cross-platform init script using a relative path -# from this script's location. -mkdir -p ~/chromium - -if [ "$#" -eq 2 ]; then - arch_name=$2 -fi - -current_folder=$(pwd) - -# find the current platform -platform_name='unknown' -if [[ "$OSTYPE" == "linux-gnu"* ]]; then - platform_name='linux' -elif [[ "$OSTYPE" == "darwin"* ]]; then - platform_name='darwin' -elif [[ "$OSTYPE" == "win32" ]]; then - platform_name='windows' -fi - -if [[ "$platform_name" == "unknown" ]]; then - echo "platform is" $platform_name - exit -fi - -echo "source_version = " $source_version -echo "platform_name = " $platform_name -echo "arch_name = " $arch_name -generateArgs $platform_name - -# Configure git -git config --global core.autocrlf false -git config --global core.filemode false -git config --global branch.autosetuprebase always -cd chromium - -# Grab Chromium's custom build tools, if they aren't already installed -# (On Windows, they are installed before this Python script is run) -if ! [ -d "depot_tools" ] -then - git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git -fi - -# Put depot_tools on the path so we can properly run the fetch command -export PATH="$PATH:${HOME}/chromium/depot_tools" -echo ${HOME}/chromium/depot_tools - -# Fetch the Chromium source code - -if [ -d 'chromium' ]; then - echo "chromium src aready exists, please delete it and retry..." - exit -fi - -mkdir -p chromium -cd chromium -pwd - -# Build Linux deps -echo "fetching chromium..." -fetch chromium - - -# Build Linux deps - -cd src -if [[ arch_name -eq "arm64" ]]; then - ./build/linux/sysroot_scripts/install-sysroot.py --arch=$arch_name -fi - -if [[ platform_name -eq "linux" ]]; then - ./build/install-build-deps.sh -fi - - -# Set to "arm" to build for ARM on Linux -echo 'Building Chromium ' $source_version ' for ' $arch_name - -# Sync the codebase to the correct version, syncing master first -# to ensure that we actually have all the versions we may refer to -echo 'Syncing source code' - - -git checkout -f master -git fetch -f origin -gclient sync --with_branch_heads --with_tags --jobs 16 -git checkout $source_version -gclient sync --with_branch_heads --with_tags --jobs 16 -gclient runhooks -echo "current_folder :" $current_folder - -platform_build_args=$current_folder'/args.gn' -#platform_build_args=$current_folder/chromium/build_chromium/$platform_name/args.gn - -outputDir='headless' -mkdir -p 'out/headless' - -echo "platform_build_args :" $platform_build_args - -cp $platform_build_args 'out/headless/args.gn' -echo "platform_build_args :" $platform_build_args -echo 'target_cpu = '\"$arch_name\" >> 'out/headless/args.gn' - -gn gen out/headless - -autoninja -C out/headless headless_shell - -if [[ ($platform_name != "Windows" && $arch_name != 'arm64') ]]; then - echo 'Optimizing headless_shell' - mv out/headless/headless_shell out/headless/headless_shell_raw - strip -o out/headless/headless_shell out/headless/headless_shell_raw -fi diff --git a/dashboards-reports/scripts/patch-html2canvas.js b/dashboards-reports/scripts/patch-html2canvas.js new file mode 100644 index 00000000..c01f5bf4 --- /dev/null +++ b/dashboards-reports/scripts/patch-html2canvas.js @@ -0,0 +1,33 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +// @ts-check +// workaround for Safari support before https://github.com/niklasvh/html2canvas/pull/2911 is merged +const replace = require('replace-in-file'); + +const options = { + files: [ + __dirname + '/../node_modules/html2canvas/**/*.js', + __dirname + '/../node_modules/html2canvas/**/*.js.map', + ], + from: 'if (image.width === width && image.height === height) {', + to: 'if (false && image.width === width && image.height === height) {', +}; + +try { + const changedFiles = replace.sync(options); + console.log( + 'Modified files for html2canvas Safari support:\n', + changedFiles + .filter((file) => file.hasChanged) + .map((file) => file.file) + .join('\n') + ); +} catch (error) { + console.error( + 'Error occurred when modifiying files for html2canvas Safari support:', + error + ); +} diff --git a/dashboards-reports/server/plugin.ts b/dashboards-reports/server/plugin.ts index dd461296..d7e43ede 100644 --- a/dashboards-reports/server/plugin.ts +++ b/dashboards-reports/server/plugin.ts @@ -11,7 +11,6 @@ import { Logger, ILegacyClusterClient, } from '../../../src/core/server'; -import { Semaphore, SemaphoreInterface, withTimeout } from 'async-mutex'; import opensearchReportsPlugin from './backend/opensearch-reports-plugin'; import { ReportsDashboardsPluginSetup, @@ -37,7 +36,6 @@ export class ReportsDashboardsPlugin implements Plugin { private readonly logger: Logger; - private readonly semaphore: SemaphoreInterface; private readonly initializerContext: PluginInitializerContext< ReportingConfigType >; @@ -46,9 +44,6 @@ export class ReportsDashboardsPlugin constructor(context: PluginInitializerContext) { this.logger = context.logger.get(); this.initializerContext = context; - const timeoutError = new Error('Server busy'); - timeoutError.statusCode = 503; - this.semaphore = withTimeout(new Semaphore(1), 300000, timeoutError); } public async setup(core: CoreSetup) { @@ -99,7 +94,6 @@ export class ReportsDashboardsPlugin (context, request) => { return { logger: this.logger, - semaphore: this.semaphore, opensearchReportsClient, notificationsClient, }; diff --git a/dashboards-reports/server/routes/lib/createReport.ts b/dashboards-reports/server/routes/lib/createReport.ts index 857775c5..336da84b 100644 --- a/dashboards-reports/server/routes/lib/createReport.ts +++ b/dashboards-reports/server/routes/lib/createReport.ts @@ -16,13 +16,12 @@ import { RequestHandlerContext, } from '../../../../../src/core/server'; import { createSavedSearchReport } from '../utils/savedSearchReportHelper'; -import { ReportSchemaType } from '../../model'; +import { ReportSchemaType, VisualReportSchemaType } from '../../model'; import { CreateReportResultType } from '../utils/types'; -import { createVisualReport } from '../utils/visual_report/visualReportHelper'; import { saveReport } from './saveReport'; -import { SemaphoreInterface } from 'async-mutex'; import { ReportingConfig } from 'server'; import _ from 'lodash'; +import { getFileName } from '../utils/helpers'; export const createReport = async ( request: OpenSearchDashboardsRequest, @@ -34,8 +33,6 @@ export const createReport = async ( const isScheduledTask = false; //@ts-ignore const logger: Logger = context.reporting_plugin.logger; - //@ts-ignore - const semaphore: SemaphoreInterface = context.reporting_plugin.semaphore; // @ts-ignore const opensearchReportsClient: ILegacyScopedClusterClient = context.reporting_plugin.opensearchReportsClient.asScoped( request @@ -92,18 +89,24 @@ export const createReport = async ( const completeQueryUrl = `${protocol}://${hostname}:${port}${relativeUrl}`; const extraHeaders = _.pick(request.headers, EXTRA_HEADERS); - const [value, release] = await semaphore.acquire(); - try { - createReportResult = await createVisualReport( - reportParams, - completeQueryUrl, - logger, - extraHeaders, - timezone - ); - } finally { - release(); - } + const { + core_params, + report_name: reportName, + report_source: reportSource, + } = reportParams; + const coreParams = core_params as VisualReportSchemaType; + const { + header, + footer, + window_height: windowHeight, + window_width: windowWidth, + report_format: reportFormat, + } = coreParams; + const curTime = new Date(); + const timeCreated = curTime.valueOf(); + const fileName = `${getFileName(reportName, curTime)}.${reportFormat}`; + + return { timeCreated, dataUrl: '', fileName, reportId, queryUrl: relativeUrl }; } // update report state to "created" // TODO: temporarily remove the following diff --git a/dashboards-reports/server/routes/report.ts b/dashboards-reports/server/routes/report.ts index b071b10a..153cf96f 100644 --- a/dashboards-reports/server/routes/report.ts +++ b/dashboards-reports/server/routes/report.ts @@ -75,6 +75,8 @@ export default function (router: IRouter, config: ReportingConfig) { body: { data: reportData.dataUrl, filename: reportData.fileName, + reportId: reportData.reportId, + queryUrl: reportData.queryUrl, }, }); } catch (error) { @@ -143,6 +145,8 @@ export default function (router: IRouter, config: ReportingConfig) { body: { data: reportData.dataUrl, filename: reportData.fileName, + reportId: reportData.reportId, + queryUrl: reportData.queryUrl, }, }); } catch (error) { @@ -215,6 +219,8 @@ export default function (router: IRouter, config: ReportingConfig) { body: { data: reportData.dataUrl, filename: reportData.fileName, + reportId: reportData.reportId, + queryUrl: reportData.queryUrl, }, }); } catch (error) { diff --git a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts deleted file mode 100644 index 4bf3cd0b..00000000 --- a/dashboards-reports/server/routes/utils/__tests__/visualReportHelper.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import 'regenerator-runtime/runtime'; -import { createVisualReport } from '../visual_report/visualReportHelper'; -import { Logger } from '../../../../../../src/core/server'; -import { ReportParamsSchemaType, reportSchema } from '../../../model'; -import { mockLogger } from '../../../../test/__mocks__/loggerMock'; - -const mockHeader = { mockKey: 'mockValue' }; -const input = { - query_url: '/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d', - time_from: 1343576635300, - time_to: 1596037435301, - report_definition: { - report_params: { - report_name: 'test visual report', - report_source: 'Dashboard', - description: 'Hi this is your Dashboard on demand', - core_params: { - base_url: '/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d', - window_width: 1300, - window_height: 900, - report_format: 'png', - time_duration: 'PT5M', - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: 'title', - textDescription: 'text description', - htmlDescription: 'html description', - }, - trigger: { - trigger_type: 'On demand', - }, - }, -}; - -const mockHtmlPath = `file://${__dirname}/demo_dashboard.html`; - -describe('test create visual report', () => { - test('create report with valid input', async () => { - // Check if the assumption of input is up-to-date - reportSchema.validate(input); - }, 20000); - - test('create png report', async () => { - expect.assertions(3); - const reportParams = input.report_definition.report_params; - const { dataUrl, fileName } = await createVisualReport( - reportParams as ReportParamsSchemaType, - mockHtmlPath, - mockLogger, - mockHeader, - undefined, - /^(data:image|file:\/\/)/ - ); - expect(fileName).toContain(`${reportParams.report_name}`); - expect(fileName).toContain('.png'); - expect(dataUrl).toBeDefined(); - }, 60000); - - test('create pdf report', async () => { - expect.assertions(3); - const reportParams = input.report_definition.report_params; - reportParams.core_params.report_format = 'pdf'; - - const { dataUrl, fileName } = await createVisualReport( - reportParams as ReportParamsSchemaType, - mockHtmlPath, - mockLogger, - mockHeader, - undefined, - /^(data:image|file:\/\/)/ - ); - expect(fileName).toContain(`${reportParams.report_name}`); - expect(fileName).toContain('.pdf'); - expect(dataUrl).toBeDefined(); - }, 60000); -}); diff --git a/dashboards-reports/server/routes/utils/constants.ts b/dashboards-reports/server/routes/utils/constants.ts index 6af81fd2..b8b970d6 100644 --- a/dashboards-reports/server/routes/utils/constants.ts +++ b/dashboards-reports/server/routes/utils/constants.ts @@ -57,17 +57,9 @@ export enum DELIVERY_TYPE { channel = 'Channel', } -export enum SELECTOR { - dashboard = '#dashboardViewport', - visualization = '.visEditor__content', - notebook = '.euiPageBody', -} - // https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-request-from-size.html export const DEFAULT_MAX_SIZE = 10000; -export const DEFAULT_REPORT_HEADER = '

OpenSearch Dashboards Reports

'; - export const SECURITY_CONSTANTS = { TENANT_LOCAL_STORAGE_KEY: 'opendistro::security::tenant::show_popup', }; @@ -79,14 +71,6 @@ export const EXTRA_HEADERS = [ 'x-forwarded-for', ]; -export const converter = new Showdown.Converter({ - tables: true, - simplifiedAutoLink: true, - strikethrough: true, - tasklists: true, - noHeaderId: true, -}); - const BLOCKED_KEYWORD = 'BLOCKED_KEYWORD'; const ipv4Regex = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])/g const ipv6Regex = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/g; @@ -107,8 +91,6 @@ export const replaceBlockedKeywords = (htmlString: string) => { return htmlString; } -export const CHROMIUM_PATH = `${__dirname}/../../../.chromium/headless_shell`; - /** * Metric constants diff --git a/dashboards-reports/server/routes/utils/types.ts b/dashboards-reports/server/routes/utils/types.ts index 3c589466..3f0f21b9 100644 --- a/dashboards-reports/server/routes/utils/types.ts +++ b/dashboards-reports/server/routes/utils/types.ts @@ -7,6 +7,8 @@ export interface CreateReportResultType { timeCreated: number; dataUrl: string; fileName: string; + reportId: string; + queryUrl: string; } type ReportSourceType = 'dashboard' | 'visualization' | 'saved_search' | 'notebook'; diff --git a/dashboards-reports/server/routes/utils/visual_report/footer_template.html b/dashboards-reports/server/routes/utils/visual_report/footer_template.html deleted file mode 100644 index 6fc56f8c..00000000 --- a/dashboards-reports/server/routes/utils/visual_report/footer_template.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
-
-
-
diff --git a/dashboards-reports/server/routes/utils/visual_report/header_template.html b/dashboards-reports/server/routes/utils/visual_report/header_template.html deleted file mode 100644 index 9796c499..00000000 --- a/dashboards-reports/server/routes/utils/visual_report/header_template.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
-
-
-
diff --git a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts b/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts deleted file mode 100644 index ad836b8f..00000000 --- a/dashboards-reports/server/routes/utils/visual_report/visualReportHelper.ts +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import puppeteer, { Headers } from 'puppeteer-core'; -import createDOMPurify from 'dompurify'; -import { JSDOM } from 'jsdom'; -import { Logger } from '../../../../../../src/core/server'; -import { - DEFAULT_REPORT_HEADER, - REPORT_TYPE, - FORMAT, - SELECTOR, - CHROMIUM_PATH, - SECURITY_CONSTANTS, - ALLOWED_HOSTS, -} from '../constants'; -import { getFileName } from '../helpers'; -import { CreateReportResultType } from '../types'; -import { ReportParamsSchemaType, VisualReportSchemaType } from 'server/model'; -import { converter, replaceBlockedKeywords } from '../constants'; -import fs from 'fs'; -import _ from 'lodash'; - -export const createVisualReport = async ( - reportParams: ReportParamsSchemaType, - queryUrl: string, - logger: Logger, - extraHeaders: Headers, - timezone?: string, - validRequestProtocol = /^(data:image)/, -): Promise => { - const { - core_params, - report_name: reportName, - report_source: reportSource, - } = reportParams; - const coreParams = core_params as VisualReportSchemaType; - const { - header, - footer, - window_height: windowHeight, - window_width: windowWidth, - report_format: reportFormat, - } = coreParams; - - const window = new JSDOM('').window; - const DOMPurify = createDOMPurify(window); - - let keywordFilteredHeader = header - ? converter.makeHtml(header) - : DEFAULT_REPORT_HEADER; - let keywordFilteredFooter = footer ? converter.makeHtml(footer) : ''; - - keywordFilteredHeader = DOMPurify.sanitize(keywordFilteredHeader); - keywordFilteredFooter = DOMPurify.sanitize(keywordFilteredFooter); - - // filter blocked keywords in header and footer - if (keywordFilteredHeader !== '') { - keywordFilteredHeader = replaceBlockedKeywords(keywordFilteredHeader); - } - if (keywordFilteredFooter !== '') { - keywordFilteredFooter = replaceBlockedKeywords(keywordFilteredFooter); - } - - // set up puppeteer - const browser = await puppeteer.launch({ - headless: true, - /** - * TODO: temp fix to disable sandbox when launching chromium on Linux instance - * https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox - */ - args: [ - '--no-sandbox', - '--disable-setuid-sandbox', - '--disable-gpu', - '--no-zygote', - '--font-render-hinting=none', - '--js-flags="--jitless --no-opt"', - '--disable-features=V8OptimizeJavascript', - ], - executablePath: CHROMIUM_PATH, - ignoreHTTPSErrors: true, - env: { - TZ: timezone || 'UTC', - }, - pipe: true, - }); - const page = await browser.newPage(); - - await page.setRequestInterception(true); - let localStorageAvailable = true; - page.on('request', (req) => { - // disallow non-allowlisted connections. urls with valid protocols do not need ALLOWED_HOSTS check - if ( - !validRequestProtocol.test(req.url()) && - !ALLOWED_HOSTS.test(new URL(req.url()).hostname) - ) { - if (req.isNavigationRequest() && req.redirectChain().length > 0) { - localStorageAvailable = false; - logger.error( - 'Reporting does not allow redirections to outside of localhost, aborting. URL received: ' + - req.url() - ); - } else { - logger.warn( - 'Disabled connection to non-allowlist domains: ' + req.url() - ); - } - req.abort(); - } else { - req.continue(); - } - }); - - page.setDefaultNavigationTimeout(0); - page.setDefaultTimeout(300000); // use 300s timeout instead of default 30s - // Set extra headers that are needed - if (!_.isEmpty(extraHeaders)) { - await page.setExtraHTTPHeaders(extraHeaders); - } - logger.info(`original queryUrl ${queryUrl}`); - await page.goto(queryUrl, { waitUntil: 'networkidle0' }); - // should add to local storage after page.goto, then access the page again - browser must have an url to register local storage item on it - try { - await page.evaluate( - /* istanbul ignore next */ - (key) => { - try { - if ( - localStorageAvailable && - typeof localStorage !== 'undefined' && - localStorage !== null - ) { - localStorage.setItem(key, 'false'); - } - } catch (err) {} - }, - SECURITY_CONSTANTS.TENANT_LOCAL_STORAGE_KEY - ); - } catch (err) { - logger.error(err); - } - await page.goto(queryUrl, { waitUntil: 'networkidle0' }); - logger.info(`page url ${page.url()}`); - - await page.setViewport({ - width: windowWidth, - height: windowHeight, - }); - - let buffer: Buffer; - // remove unwanted elements - await page.evaluate( - /* istanbul ignore next */ - (reportSource, REPORT_TYPE) => { - // remove buttons - document - .querySelectorAll("[class^='euiButton']") - .forEach((e) => e.remove()); - // remove top navBar - document - .querySelectorAll("[class^='euiHeader']") - .forEach((e) => e.remove()); - // remove visualization editor - if (reportSource === REPORT_TYPE.visualization) { - document - .querySelector('[data-test-subj="splitPanelResizer"]') - ?.remove(); - document.querySelector('.visEditor__collapsibleSidebar')?.remove(); - } - document.body.style.paddingTop = '0px'; - }, - reportSource, - REPORT_TYPE - ); - - // force wait for any resize to load after the above DOM modification - await new Promise(resolve => setTimeout(resolve, 1000)); - // crop content - switch (reportSource) { - case REPORT_TYPE.dashboard: - await page.waitForSelector(SELECTOR.dashboard, { - visible: true, - }); - break; - case REPORT_TYPE.visualization: - await page.waitForSelector(SELECTOR.visualization, { - visible: true, - }); - break; - case REPORT_TYPE.notebook: - await page.waitForSelector(SELECTOR.notebook, { - visible: true, - }); - break; - default: - throw Error( - `report source can only be one of [Dashboard, Visualization]` - ); - } - - // wait for dynamic page content to render - await waitForDynamicContent(page); - - await addReportHeader(page, keywordFilteredHeader); - await addReportFooter(page, keywordFilteredFooter); - await addReportStyle(page); - - // this causes UT to fail in github CI but works locally - try { - const numDisallowedTags = await page.evaluate( - () => - document.getElementsByTagName('iframe').length + - document.getElementsByTagName('embed').length + - document.getElementsByTagName('object').length - ); - if (numDisallowedTags > 0) { - throw Error('Reporting does not support "iframe", "embed", or "object" tags, aborting'); - } - } catch (error) { - logger.error(error); - } - - // create pdf or png accordingly - if (reportFormat === FORMAT.pdf) { - const scrollHeight = await page.evaluate( - /* istanbul ignore next */ - () => document.documentElement.scrollHeight - ); - - buffer = await page.pdf({ - margin: undefined, - width: windowWidth, - height: scrollHeight + 'px', - printBackground: true, - pageRanges: '1', - }); - } else if (reportFormat === FORMAT.png) { - buffer = await page.screenshot({ - fullPage: true, - }); - } - - const curTime = new Date(); - const timeCreated = curTime.valueOf(); - const fileName = `${getFileName(reportName, curTime)}.${reportFormat}`; - await browser.close(); - - return { timeCreated, dataUrl: buffer.toString('base64'), fileName }; -}; - -const addReportStyle = async (page: puppeteer.Page) => { - const css = fs.readFileSync(`${__dirname}/style.css`).toString(); - - await page.evaluate( - /* istanbul ignore next */ - (style: string) => { - const styleElement = document.createElement('style'); - styleElement.innerHTML = style; - document.getElementsByTagName('head')[0].appendChild(styleElement); - }, - css - ); -}; - -const addReportHeader = async (page: puppeteer.Page, header: string) => { - const headerHtml = fs - .readFileSync(`${__dirname}/header_template.html`) - .toString() - .replace('', header); - - await page.evaluate( - /* istanbul ignore next */ - (headerHtml: string) => { - const content = document.body.firstChild; - const headerContainer = document.createElement('div'); - headerContainer.className = 'reportWrapper'; - headerContainer.innerHTML = headerHtml; - content?.parentNode?.insertBefore(headerContainer, content); - }, - headerHtml - ); -}; - -const addReportFooter = async (page: puppeteer.Page, footer: string) => { - const headerHtml = fs - .readFileSync(`${__dirname}/footer_template.html`) - .toString() - .replace('', footer); - - await page.evaluate( - /* istanbul ignore next */ - (headerHtml: string) => { - const content = document.body.firstChild; - const headerContainer = document.createElement('div'); - headerContainer.className = 'reportWrapper'; - headerContainer.innerHTML = headerHtml; - content?.parentNode?.insertBefore(headerContainer, null); - }, - headerHtml - ); -}; - -// add waitForDynamicContent function -const waitForDynamicContent = async ( - page, - timeout = 30000, - interval = 1000, - checks = 5 -) => { - const maxChecks = timeout / interval; - let passedChecks = 0; - let previousLength = 0; - - let i = 0; - while (i++ <= maxChecks) { - let pageContent = await page.content(); - let currentLength = pageContent.length; - - previousLength === 0 || previousLength != currentLength - ? (passedChecks = 0) - : passedChecks++; - if (passedChecks >= checks) { - break; - } - - previousLength = currentLength; - await new Promise(resolve => setTimeout(resolve, interval)); - } -}; diff --git a/dashboards-reports/translations/pl.json b/dashboards-reports/translations/pl.json index 6f377e5a..f2d770f0 100644 --- a/dashboards-reports/translations/pl.json +++ b/dashboards-reports/translations/pl.json @@ -124,7 +124,7 @@ "opensearch.reports.loading.close": "Zamknij", "opensearch.reports.loading.generatingReport": "Generowanie raportu.", "opensearch.reports.loading.preparingYourFile": "Przygotowanie pliku do pobrania.", - "opensearch.reports.loading.youCanClose": "Możesz zamknąć to okno dialogowe, raport jest generowany w tle.", + "opensearch.reports.loading.youCanClose": "Nie zamykaj tego okna dialogowego podczas generowania raportu.", "opensearch.reports.main.errorDownloadingReport": "Błąd przy pobieraniu raportu", "opensearch.reports.main.errorGeneratingReportDefinitionsTable.": "Błąd generowania listy definicji raportów.", "opensearch.reports.main.errorGeneratingReportsTable.": "Błąd generowania listy raportów.", @@ -154,7 +154,7 @@ "opensearch.reports.menu.newNotificationAppears": "Pojawiło się nowe powiadomienie", "opensearch.reports.menu.progress.generatingReport": "Generowanie raportu", "opensearch.reports.menu.progress.preparingYourFile": "Przygotowanie pliku do pobrania", - "opensearch.reports.menu.progress.youCanClose": "Możesz zamknąć to okno dialogowe, raport jest generowany w tle.", + "opensearch.reports.menu.progress.youCanClose": "Nie zamykaj tego okna dialogowego podczas generowania raportu.", "opensearch.reports.menu.scheduleAndShare": "Wygeneruj i udostępnij", "opensearch.reports.menu.successfullyGenerated": "Pomyślnie wygenerowano raport.", "opensearch.reports.menu.visual.createReportDefinition": "Utwórz definicję raportu.", diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock index 1b2fea00..1974c64d 100644 --- a/dashboards-reports/yarn.lock +++ b/dashboards-reports/yarn.lock @@ -418,6 +418,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" + integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.10.4", "@babel/template@^7.3.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -879,19 +886,10 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/puppeteer-core@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-5.4.0.tgz#880a7917b4ede95cbfe2d5e81a558cfcb072c0fb" - integrity sha512-yqRPuv4EFcSkTyin6Yy17pN6Qz2vwVwTCJIDYMXbE3j8vTPhv0nCQlZOl5xfi0WHUkqvQsjAR8hAfjeMCoetwg== - dependencies: - "@types/puppeteer" "*" - -"@types/puppeteer@*": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.0.tgz#1ef860bd7a9dcf0c4633aac8c0ec21f75b431868" - integrity sha512-zTYDLjnHjgzokrwKt7N0rgn7oZPYo1J0m8Ghu+gXqzLCEn8RWbELa2uprE2UFJ0jU/Sk0x9jXXdOH/5QQLFHhQ== - dependencies: - "@types/node" "*" +"@types/raf@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@types/raf/-/raf-3.4.0.tgz#2b72cbd55405e071f1c4d29992638e022b20acc2" + integrity sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw== "@types/react-addons-test-utils@^0.14.25": version "0.14.25" @@ -985,13 +983,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -1180,13 +1171,6 @@ acorn@^8.0.5: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - airbnb-prop-types@^2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" @@ -1371,13 +1355,6 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - async@^3.2.0: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" @@ -1526,7 +1503,12 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2, base64-js@^1.3.1: +base64-arraybuffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + +base64-js@^1.0.2: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -1573,15 +1555,6 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blob-util@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -1729,6 +1702,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1753,14 +1731,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -1838,6 +1808,20 @@ caniuse-lite@^1.0.30001317: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== +canvg@^3.0.6: + version "3.0.10" + resolved "https://registry.yarnpkg.com/canvg/-/canvg-3.0.10.tgz#8e52a2d088b6ffa23ac78970b2a9eebfae0ef4b3" + integrity sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q== + dependencies: + "@babel/runtime" "^7.12.5" + "@types/raf" "^3.4.0" + core-js "^3.8.3" + raf "^3.4.1" + regenerator-runtime "^0.13.7" + rgbcolor "^1.0.1" + stackblur-canvas "^2.0.0" + svg-pathdata "^6.0.3" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1879,6 +1863,14 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -2021,6 +2013,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2154,6 +2155,11 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-js@^3.6.0, core-js@^3.8.3: + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e" + integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2206,7 +2212,7 @@ cron-validator@^1.1.1: resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.1.1.tgz#0a27bb75508c7bc03c8b840d2d9f170eeacb5615" integrity sha512-vfZb05w/wezuwPZBDvdIBmJp2BvuJExHeyKRa5oBqD2ZDXR61hb3QgPc/3ZhBEQJlAy8Jlnn5XC/JCT3IDqxwg== -cross-fetch@3.1.5, cross-fetch@^3.0.4: +cross-fetch@^3.0.4: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -2239,6 +2245,13 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-line-break@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0" + integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w== + dependencies: + utrie "^1.0.2" + css-what@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" @@ -2341,13 +2354,6 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -debug@4, debug@4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2443,11 +2449,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -devtools-protocol@0.0.981744: - version "0.0.981744" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" - integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== - diff-sequences@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" @@ -2508,7 +2509,7 @@ domhandler@^3.0, domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -dompurify@^2.4.1: +dompurify@^2.2.0, dompurify@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631" integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA== @@ -2593,7 +2594,7 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -2955,17 +2956,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - extract-zip@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" @@ -3015,6 +3005,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fflate@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae" + integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA== + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -3078,7 +3073,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3128,11 +3123,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -3210,7 +3200,7 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -3238,7 +3228,7 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -3299,7 +3289,7 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.2.3: +glob@^7.2.0, glob@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -3505,6 +3495,14 @@ html-to-react@^1.3.4: lodash.camelcase "^4.3.0" ramda "^0.27" +html2canvas@1.4.1, html2canvas@^1.0.0-rc.5: + version "1.4.1" + resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" + integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA== + dependencies: + css-line-break "^2.1.0" + text-segmentation "^1.0.3" + htmlparser2@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" @@ -3529,14 +3527,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -3561,7 +3551,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -4238,6 +4228,21 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jspdf@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-2.5.1.tgz#00c85250abf5447a05f3b32ab9935ab4a56592cc" + integrity sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA== + dependencies: + "@babel/runtime" "^7.14.0" + atob "^2.1.2" + btoa "^1.2.1" + fflate "^0.4.8" + optionalDependencies: + canvg "^3.0.6" + core-js "^3.6.0" + dompurify "^2.2.0" + html2canvas "^1.0.0-rc.5" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4671,11 +4676,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@1.x: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -5163,13 +5163,6 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -5212,11 +5205,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -5245,11 +5233,6 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -5322,24 +5305,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@^13.7.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-13.7.0.tgz#3344bee3994163f49120a55ddcd144a40575ba5b" - integrity sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q== - dependencies: - cross-fetch "3.1.5" - debug "4.3.4" - devtools-protocol "0.0.981744" - extract-zip "2.0.1" - https-proxy-agent "5.0.1" - pkg-dir "4.2.0" - progress "2.0.3" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.1.1" - unbzip2-stream "1.4.3" - ws "8.5.0" - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -5369,6 +5334,13 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + ramda@^0.27: version "0.27.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" @@ -5525,7 +5497,7 @@ react-transition-group@^4.3.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5565,6 +5537,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -5619,6 +5596,15 @@ replace-ext@1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= +replace-in-file@^6.3.5: + version "6.3.5" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-6.3.5.tgz#ff956b0ab5bc96613207d603d197cd209400a654" + integrity sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg== + dependencies: + chalk "^4.1.2" + glob "^7.2.0" + yargs "^17.2.1" + request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" @@ -5748,12 +5734,10 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@3.0.2, rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" +rgbcolor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d" + integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw== rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" @@ -5762,6 +5746,13 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6038,6 +6029,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stackblur-canvas@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz#aa87bbed1560fdcd3138fff344fc6a1c413ebac4" + integrity sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -6119,7 +6115,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6254,6 +6250,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-pathdata@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac" + integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw== + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6274,27 +6275,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" @@ -6328,6 +6308,13 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-segmentation@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" + integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== + dependencies: + utrie "^1.0.2" + throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" @@ -6341,11 +6328,6 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -6484,11 +6466,6 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -6535,14 +6512,6 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -unbzip2-stream@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -6703,6 +6672,13 @@ util@^0.11.0: dependencies: inherits "2.0.3" +utrie@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" + integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw== + dependencies: + base64-arraybuffer "^1.0.2" + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -6930,6 +6906,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6945,7 +6930,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@8.5.0, ws@^7.4.4, ws@^7.4.6: +ws@^7.4.4, ws@^7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== @@ -7006,6 +6991,11 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs@^14.2: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" @@ -7040,6 +7030,19 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^17.2.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 7b584ac84a0411de5a5dacd798cd2c4d2bf63762 Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Fri, 6 Jan 2023 22:11:31 +0000 Subject: [PATCH 36/38] Remove front end code (#620) * Remove frontend code Signed-off-by: Rupal Mahajan * Move one level up Signed-off-by: Rupal Mahajan * Update workflow file Signed-off-by: Rupal Mahajan * nit: remove dashboard setup from readme Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- reports-scheduler/.classpath => .classpath | 0 .../.codecov.yml => .codecov.yml | 0 .../.editorconfig => .editorconfig | 0 .../dashboards-reports-release-workflow.yml | 115 - ...boards-reports-test-and-build-workflow.yml | 184 - ...orts-scheduler-test-and-build-workflow.yml | 25 +- .gitignore | 312 +- {reports-scheduler/.idea => .idea}/.name | 0 .../.idea => .idea}/codeStyles/Project.xml | 0 .../codeStyles/codeStyleConfig.xml | 0 .../.idea => .idea}/kotlinc.xml | 0 {reports-scheduler/.idea => .idea}/misc.xml | 0 {reports-scheduler/.idea => .idea}/vcs.xml | 0 reports-scheduler/.project => .project | 0 README.md | 17 - .../esplugin-coverage.gradle | 0 .../pkgbuild.gradle | 0 .../build.gradle => build.gradle | 0 .../checkstyle/checkstyle.xml | 0 .../checkstyle/google_checks.xml | 0 .../checkstyle/suppressions.xml | 0 .../.cypress/integration/01-create.spec.ts | 248 - .../.cypress/integration/02-edit.spec.ts | 97 - .../.cypress/integration/03-details.spec.ts | 111 - .../.cypress/integration/04-download.spec.ts | 94 - dashboards-reports/.cypress/plugins/index.js | 26 - .../.cypress/support/commands.js | 72 - .../.cypress/support/constants.js | 9 - dashboards-reports/.cypress/support/index.js | 30 - dashboards-reports/.cypress/support/utils.js | 12 - dashboards-reports/.cypress/tsconfig.json | 8 - dashboards-reports/.eslintrc | 9 - dashboards-reports/.gitignore | 12 - dashboards-reports/.i18nrc.json | 7 - dashboards-reports/.lintstagedrc | 3 - ....opensearch_dashboards-plugin-helpers.json | 13 - dashboards-reports/.prettierignore | 8 - dashboards-reports/.prettierrc | 6 - dashboards-reports/DEVELOPER_GUIDE.md | 67 - dashboards-reports/README.md | 23 - dashboards-reports/THIRD-PARTY | 203 - dashboards-reports/babel.config.js | 20 - dashboards-reports/common/index.ts | 33 - dashboards-reports/cypress.json | 17 - dashboards-reports/opensearch_dashboards.json | 10 - dashboards-reports/package.json | 82 - dashboards-reports/public/app.scss | 0 dashboards-reports/public/application.tsx | 29 - dashboards-reports/public/components/app.tsx | 150 - .../components/context_menu/context_menu.js | 397 - .../context_menu/context_menu_helpers.js | 140 - .../context_menu/context_menu_ui.js | 396 - .../__snapshots__/main.test.tsx.snap | 3908 ------- .../report_definitions_table.test.tsx.snap | 954 -- .../__snapshots__/reports_table.test.tsx.snap | 1025 -- .../__utils__/main_utils_test_utils.tsx | 122 - .../components/main/__tests__/main.test.tsx | 214 - .../main/__tests__/main_utils.test.tsx | 146 - .../report_definitions_table.test.tsx | 99 - .../main/__tests__/reports_table.test.tsx | 85 - .../public/components/main/index.ts | 7 - .../components/main/loading_modal/index.ts | 6 - .../main/loading_modal/loading_modal.tsx | 80 - .../public/components/main/main.tsx | 367 - .../public/components/main/main_utils.tsx | 250 - .../report_definition_details.test.tsx.snap | 1233 --- .../report_definition_details.test.tsx | 420 - .../report_definition_details.tsx | 837 -- .../main/report_definitions_table.tsx | 214 - .../report_details.test.tsx.snap | 760 -- .../__tests__/report_details.test.tsx | 124 - .../main/report_details/report_details.tsx | 490 - .../public/components/main/reports_table.tsx | 272 - .../create/create_report_definition.tsx | 365 - .../report_definitions/create/index.ts | 6 - .../__snapshots__/delivery.test.tsx.snap | 83 - .../delivery/__tests__/delivery.test.tsx | 106 - .../report_definitions/delivery/delivery.tsx | 358 - .../delivery/delivery_constants.tsx | 34 - .../report_definitions/delivery/index.ts | 6 - .../edit/edit_report_definition.tsx | 352 - .../report_definitions/edit/index.ts | 6 - .../report_settings.test.tsx.snap | 8471 -------------- .../__tests__/report_settings.test.tsx | 837 -- .../report_settings_helpers.test.tsx | 177 - .../report_settings/index.ts | 6 - .../report_settings/report_settings.tsx | 926 -- .../report_settings_constants.tsx | 114 - .../report_settings_helpers.tsx | 182 - .../report_settings/time_range.tsx | 229 - .../report_trigger.test.tsx.snap | 421 - .../__tests__/report_trigger.test.tsx | 380 - .../report_trigger/index.ts | 6 - .../report_trigger/report_trigger.tsx | 720 -- .../report_trigger_constants.tsx | 157 - .../report_trigger/timezone.tsx | 70 - .../report_definitions/utils/index.ts | 14 - .../report_definitions/utils/utils.tsx | 81 - .../components/utils/settings_service.ts | 36 - .../public/components/utils/utils.tsx | 31 - .../visual_report/assets/report_styles.ts | 222 - .../components/visual_report/constants.ts | 34 - .../visual_report/generate_report.ts | 207 - dashboards-reports/public/hack.js | 4 - dashboards-reports/public/index.scss | 32 - dashboards-reports/public/index.ts | 17 - dashboards-reports/public/plugin.ts | 64 - dashboards-reports/public/types.ts | 15 - .../scripts/patch-html2canvas.js | 33 - .../backend/opensearch-reports-plugin.ts | 146 - .../server/clusters/notificationsPlugin.ts | 46 - dashboards-reports/server/config/config.ts | 63 - .../server/config/createConfig.ts | 47 - dashboards-reports/server/config/index.ts | 13 - dashboards-reports/server/config/schema.ts | 35 - dashboards-reports/server/index.ts | 25 - .../server/model/backendModel.ts | 149 - dashboards-reports/server/model/index.ts | 246 - dashboards-reports/server/plugin.ts | 112 - dashboards-reports/server/routes/index.ts | 20 - .../server/routes/lib/createReport.ts | 127 - .../routes/lib/createReportDefinition.ts | 36 - .../server/routes/lib/saveReport.ts | 52 - .../routes/lib/updateReportDefinition.ts | 40 - .../server/routes/lib/updateReportState.ts | 35 - dashboards-reports/server/routes/metric.ts | 39 - .../server/routes/notifications.ts | 142 - dashboards-reports/server/routes/report.ts | 340 - .../server/routes/reportDefinition.ts | 291 - .../server/routes/reportSource.ts | 78 - .../utils/__tests__/demo_dashboard.html | 9699 ----------------- .../utils/__tests__/metricHelper.test.ts | 28 - .../__tests__/savedSearchReportHelper.test.ts | 666 -- .../server/routes/utils/constants.ts | 292 - .../converters/__tests__/backendToUi.test.ts | 117 - .../converters/__tests__/uiToBackend.test.ts | 86 - .../routes/utils/converters/backendToUi.ts | 391 - .../routes/utils/converters/uiToBackend.ts | 155 - .../server/routes/utils/dataReportHelpers.ts | 244 - .../server/routes/utils/helpers.ts | 94 - .../server/routes/utils/metricHelper.ts | 154 - .../routes/utils/savedSearchReportHelper.ts | 267 - .../server/routes/utils/types.ts | 51 - dashboards-reports/server/types.ts | 9 - .../utils/__tests__/validationHelper.test.ts | 206 - .../server/utils/validationHelper.ts | 130 - dashboards-reports/test/__mocks__/fileMock.js | 1 - .../test/__mocks__/loggerMock.ts | 17 - .../test/__mocks__/styleMock.js | 1 - dashboards-reports/test/httpMockClient.js | 39 - dashboards-reports/test/jest.config.js | 25 - dashboards-reports/test/propsMock.js | 13 - dashboards-reports/test/setup.jest.ts | 19 - dashboards-reports/test/setupTests.ts | 7 - dashboards-reports/translations/pl.json | 299 - dashboards-reports/translations/zh-CN.json | 80 - dashboards-reports/tsconfig.json | 32 - dashboards-reports/yarn.lock | 7052 ------------ reports-scheduler/detekt.yml => detekt.yml | 0 .../wrapper/gradle-wrapper.jar | Bin .../wrapper/gradle-wrapper.properties | 0 reports-scheduler/gradlew => gradlew | 0 reports-scheduler/gradlew.bat => gradlew.bat | 0 .../create_release_notes.py | 0 reports-scheduler/.gitignore | 301 - .../scripts => scripts}/build.sh | 0 .../settings.gradle => settings.gradle | 0 .../main/config/reports-scheduler.yml | 0 .../metrics/BasicCounter.java | 0 .../reportsscheduler/metrics/Counter.java | 0 .../reportsscheduler/metrics/Metrics.java | 0 .../metrics/RollingCounter.java | 0 .../ReportsSchedulerPlugin.kt | 0 .../action/CreateReportDefinitionAction.kt | 0 .../action/DeleteReportDefinitionAction.kt | 0 .../action/GetAllReportDefinitionsAction.kt | 0 .../action/GetAllReportInstancesAction.kt | 0 .../action/GetReportDefinitionAction.kt | 0 .../action/GetReportInstanceAction.kt | 0 .../action/InContextReportCreateAction.kt | 0 .../action/OnDemandReportCreateAction.kt | 0 .../action/PluginBaseAction.kt | 0 .../action/ReportDefinitionActions.kt | 0 .../action/ReportInstanceActions.kt | 0 .../action/UpdateReportDefinitionAction.kt | 0 .../UpdateReportInstanceStatusAction.kt | 0 .../index/ReportDefinitionsIndex.kt | 0 .../index/ReportInstancesIndex.kt | 0 .../reportsscheduler/model/BaseResponse.kt | 0 .../model/CreateReportDefinitionRequest.kt | 0 .../model/CreateReportDefinitionResponse.kt | 0 .../model/DeleteReportDefinitionRequest.kt | 0 .../model/DeleteReportDefinitionResponse.kt | 0 .../model/GetAllReportDefinitionsRequest.kt | 0 .../model/GetAllReportDefinitionsResponse.kt | 0 .../model/GetAllReportInstancesRequest.kt | 0 .../model/GetAllReportInstancesResponse.kt | 0 .../model/GetReportDefinitionRequest.kt | 0 .../model/GetReportDefinitionResponse.kt | 0 .../model/GetReportInstanceRequest.kt | 0 .../model/GetReportInstanceResponse.kt | 0 .../model/InContextReportCreateRequest.kt | 0 .../model/InContextReportCreateResponse.kt | 0 .../model/OnDemandReportCreateRequest.kt | 0 .../model/OnDemandReportCreateResponse.kt | 0 .../model/ReportDefinition.kt | 0 .../model/ReportDefinitionDetails.kt | 0 .../model/ReportDefinitionDetailsDoc.kt | 0 .../ReportDefinitionDetailsSearchResults.kt | 0 .../reportsscheduler/model/ReportInstance.kt | 0 .../model/ReportInstanceDoc.kt | 0 .../model/ReportInstanceSearchResults.kt | 0 .../reportsscheduler/model/RestTag.kt | 0 .../reportsscheduler/model/SearchResults.kt | 0 .../model/UpdateReportDefinitionRequest.kt | 0 .../model/UpdateReportDefinitionResponse.kt | 0 .../UpdateReportInstanceStatusRequest.kt | 0 .../UpdateReportInstanceStatusResponse.kt | 0 .../resthandler/OnDemandReportRestHandler.kt | 0 .../resthandler/PluginBaseHandler.kt | 0 .../ReportDefinitionListRestHandler.kt | 0 .../ReportDefinitionRestHandler.kt | 0 .../ReportInstanceListRestHandler.kt | 0 .../resthandler/ReportInstanceRestHandler.kt | 0 .../resthandler/ReportStatsRestHandler.kt | 0 .../RestResponseToXContentListener.kt | 0 .../scheduler/ReportDefinitionJobParser.kt | 0 .../scheduler/ReportDefinitionJobRunner.kt | 0 .../security/SecurityAccess.kt | 0 .../security/UserAccessManager.kt | 0 .../settings/PluginSettings.kt | 0 .../reportsscheduler/util/Helpers.kt | 0 .../reportsscheduler/util/OpenForTesting.kt | 0 .../util/SecureIndexClient.kt | 0 .../plugin-metadata/plugin-security.policy | 0 ...rch.jobscheduler.spi.JobSchedulerExtension | 0 .../template/email_content_template.html | 0 .../resources/notifications/template/logo.png | Bin .../resources/report-definitions-mapping.yml | 0 .../resources/report-definitions-settings.yml | 0 .../resources/report-instances-mapping.yml | 0 .../resources/report-instances-settings.yml | 0 .../metrics/BasicCounterTests.java | 0 .../metrics/RollingCounterTests.java | 0 .../opensearch/integTest/IntegTestHelpers.kt | 0 .../integTest/PluginRestTestCase.kt | 0 .../integTest/ReportsSchedulerPluginIT.kt | 0 ...eportsSchedulerBackwardsCompatibilityIT.kt | 0 .../rest/InContextMenuReportGenerationIT.kt | 0 .../rest/OnDemandReportGenerationIT.kt | 0 .../integTest/rest/ReportDefinitionIT.kt | 0 .../integTest/rest/ReportInstanceIT.kt | 0 .../reportsscheduler/TestHelpers.kt | 0 .../CreateReportDefinitionRequestTests.kt | 0 .../CreateReportDefinitionResponseTests.kt | 0 .../DeleteReportDefinitionRequestTests.kt | 0 .../DeleteReportDefinitionResponseTests.kt | 0 .../GetAllReportDefinitionsRequestTests.kt | 0 .../GetAllReportDefinitionsResponseTests.kt | 0 .../GetAllReportInstancesRequestTests.kt | 0 .../GetAllReportInstancesResponseTests.kt | 0 .../model/GetReportDefinitionRequestTests.kt | 0 .../model/GetReportDefinitionResponseTests.kt | 0 .../model/GetReportInstanceRequestTests.kt | 0 .../model/GetReportInstanceResponseTests.kt | 0 .../InContextReportCreateRequestTests.kt | 0 .../InContextReportCreateResponseTests.kt | 0 .../model/OnDemandReportCreateRequestTests.kt | 0 .../OnDemandReportCreateResponseTests.kt | 0 .../UpdateReportDefinitionRequestTests.kt | 0 .../UpdateReportDefinitionResponseTests.kt | 0 .../UpdateReportInstanceStatusRequestTests.kt | 0 ...UpdateReportInstanceStatusResponseTests.kt | 0 .../reportsscheduler/util/HelpersTests.kt | 0 .../resources/bwc/job-scheduler/.gitignore | 0 .../bwc/reports-scheduler/.gitignore | 0 .../test/resources/job-scheduler/.gitignore | 0 .../test/resources/security/sample.pem | 0 .../test/resources/security/test-kirk.jks | Bin 279 files changed, 306 insertions(+), 51651 deletions(-) rename reports-scheduler/.classpath => .classpath (100%) rename reports-scheduler/.codecov.yml => .codecov.yml (100%) rename reports-scheduler/.editorconfig => .editorconfig (100%) delete mode 100644 .github/workflows/dashboards-reports-release-workflow.yml delete mode 100644 .github/workflows/dashboards-reports-test-and-build-workflow.yml rename {reports-scheduler/.idea => .idea}/.name (100%) rename {reports-scheduler/.idea => .idea}/codeStyles/Project.xml (100%) rename {reports-scheduler/.idea => .idea}/codeStyles/codeStyleConfig.xml (100%) rename {reports-scheduler/.idea => .idea}/kotlinc.xml (100%) rename {reports-scheduler/.idea => .idea}/misc.xml (100%) rename {reports-scheduler/.idea => .idea}/vcs.xml (100%) rename reports-scheduler/.project => .project (100%) rename {reports-scheduler/build-tools => build-tools}/esplugin-coverage.gradle (100%) rename {reports-scheduler/build-tools => build-tools}/pkgbuild.gradle (100%) rename reports-scheduler/build.gradle => build.gradle (100%) rename {reports-scheduler/config => config}/checkstyle/checkstyle.xml (100%) rename {reports-scheduler/config => config}/checkstyle/google_checks.xml (100%) rename {reports-scheduler/config => config}/checkstyle/suppressions.xml (100%) delete mode 100644 dashboards-reports/.cypress/integration/01-create.spec.ts delete mode 100644 dashboards-reports/.cypress/integration/02-edit.spec.ts delete mode 100644 dashboards-reports/.cypress/integration/03-details.spec.ts delete mode 100644 dashboards-reports/.cypress/integration/04-download.spec.ts delete mode 100644 dashboards-reports/.cypress/plugins/index.js delete mode 100644 dashboards-reports/.cypress/support/commands.js delete mode 100644 dashboards-reports/.cypress/support/constants.js delete mode 100644 dashboards-reports/.cypress/support/index.js delete mode 100644 dashboards-reports/.cypress/support/utils.js delete mode 100644 dashboards-reports/.cypress/tsconfig.json delete mode 100644 dashboards-reports/.eslintrc delete mode 100644 dashboards-reports/.gitignore delete mode 100644 dashboards-reports/.i18nrc.json delete mode 100644 dashboards-reports/.lintstagedrc delete mode 100644 dashboards-reports/.opensearch_dashboards-plugin-helpers.json delete mode 100644 dashboards-reports/.prettierignore delete mode 100644 dashboards-reports/.prettierrc delete mode 100644 dashboards-reports/DEVELOPER_GUIDE.md delete mode 100644 dashboards-reports/README.md delete mode 100644 dashboards-reports/THIRD-PARTY delete mode 100644 dashboards-reports/babel.config.js delete mode 100644 dashboards-reports/common/index.ts delete mode 100644 dashboards-reports/cypress.json delete mode 100644 dashboards-reports/opensearch_dashboards.json delete mode 100644 dashboards-reports/package.json delete mode 100644 dashboards-reports/public/app.scss delete mode 100644 dashboards-reports/public/application.tsx delete mode 100644 dashboards-reports/public/components/app.tsx delete mode 100644 dashboards-reports/public/components/context_menu/context_menu.js delete mode 100644 dashboards-reports/public/components/context_menu/context_menu_helpers.js delete mode 100644 dashboards-reports/public/components/context_menu/context_menu_ui.js delete mode 100644 dashboards-reports/public/components/main/__tests__/__snapshots__/main.test.tsx.snap delete mode 100644 dashboards-reports/public/components/main/__tests__/__snapshots__/report_definitions_table.test.tsx.snap delete mode 100644 dashboards-reports/public/components/main/__tests__/__snapshots__/reports_table.test.tsx.snap delete mode 100644 dashboards-reports/public/components/main/__tests__/__utils__/main_utils_test_utils.tsx delete mode 100644 dashboards-reports/public/components/main/__tests__/main.test.tsx delete mode 100644 dashboards-reports/public/components/main/__tests__/main_utils.test.tsx delete mode 100644 dashboards-reports/public/components/main/__tests__/report_definitions_table.test.tsx delete mode 100644 dashboards-reports/public/components/main/__tests__/reports_table.test.tsx delete mode 100644 dashboards-reports/public/components/main/index.ts delete mode 100644 dashboards-reports/public/components/main/loading_modal/index.ts delete mode 100644 dashboards-reports/public/components/main/loading_modal/loading_modal.tsx delete mode 100644 dashboards-reports/public/components/main/main.tsx delete mode 100644 dashboards-reports/public/components/main/main_utils.tsx delete mode 100644 dashboards-reports/public/components/main/report_definition_details/__tests__/__snapshots__/report_definition_details.test.tsx.snap delete mode 100644 dashboards-reports/public/components/main/report_definition_details/__tests__/report_definition_details.test.tsx delete mode 100644 dashboards-reports/public/components/main/report_definition_details/report_definition_details.tsx delete mode 100644 dashboards-reports/public/components/main/report_definitions_table.tsx delete mode 100644 dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap delete mode 100644 dashboards-reports/public/components/main/report_details/__tests__/report_details.test.tsx delete mode 100644 dashboards-reports/public/components/main/report_details/report_details.tsx delete mode 100644 dashboards-reports/public/components/main/reports_table.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/create/create_report_definition.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/create/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/delivery/__tests__/__snapshots__/delivery.test.tsx.snap delete mode 100644 dashboards-reports/public/components/report_definitions/delivery/__tests__/delivery.test.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/delivery/delivery.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/delivery/delivery_constants.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/delivery/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/edit/edit_report_definition.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/edit/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings.test.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings_helpers.test.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/report_settings.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/report_settings_constants.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/report_settings_helpers.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_settings/time_range.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/__tests__/__snapshots__/report_trigger.test.tsx.snap delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/__tests__/report_trigger.test.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/report_trigger.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/report_trigger_constants.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/report_trigger/timezone.tsx delete mode 100644 dashboards-reports/public/components/report_definitions/utils/index.ts delete mode 100644 dashboards-reports/public/components/report_definitions/utils/utils.tsx delete mode 100644 dashboards-reports/public/components/utils/settings_service.ts delete mode 100644 dashboards-reports/public/components/utils/utils.tsx delete mode 100644 dashboards-reports/public/components/visual_report/assets/report_styles.ts delete mode 100644 dashboards-reports/public/components/visual_report/constants.ts delete mode 100644 dashboards-reports/public/components/visual_report/generate_report.ts delete mode 100644 dashboards-reports/public/hack.js delete mode 100644 dashboards-reports/public/index.scss delete mode 100644 dashboards-reports/public/index.ts delete mode 100644 dashboards-reports/public/plugin.ts delete mode 100644 dashboards-reports/public/types.ts delete mode 100644 dashboards-reports/scripts/patch-html2canvas.js delete mode 100644 dashboards-reports/server/backend/opensearch-reports-plugin.ts delete mode 100644 dashboards-reports/server/clusters/notificationsPlugin.ts delete mode 100644 dashboards-reports/server/config/config.ts delete mode 100644 dashboards-reports/server/config/createConfig.ts delete mode 100644 dashboards-reports/server/config/index.ts delete mode 100644 dashboards-reports/server/config/schema.ts delete mode 100644 dashboards-reports/server/index.ts delete mode 100644 dashboards-reports/server/model/backendModel.ts delete mode 100644 dashboards-reports/server/model/index.ts delete mode 100644 dashboards-reports/server/plugin.ts delete mode 100644 dashboards-reports/server/routes/index.ts delete mode 100644 dashboards-reports/server/routes/lib/createReport.ts delete mode 100644 dashboards-reports/server/routes/lib/createReportDefinition.ts delete mode 100644 dashboards-reports/server/routes/lib/saveReport.ts delete mode 100644 dashboards-reports/server/routes/lib/updateReportDefinition.ts delete mode 100644 dashboards-reports/server/routes/lib/updateReportState.ts delete mode 100644 dashboards-reports/server/routes/metric.ts delete mode 100644 dashboards-reports/server/routes/notifications.ts delete mode 100644 dashboards-reports/server/routes/report.ts delete mode 100644 dashboards-reports/server/routes/reportDefinition.ts delete mode 100644 dashboards-reports/server/routes/reportSource.ts delete mode 100644 dashboards-reports/server/routes/utils/__tests__/demo_dashboard.html delete mode 100644 dashboards-reports/server/routes/utils/__tests__/metricHelper.test.ts delete mode 100644 dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts delete mode 100644 dashboards-reports/server/routes/utils/constants.ts delete mode 100644 dashboards-reports/server/routes/utils/converters/__tests__/backendToUi.test.ts delete mode 100644 dashboards-reports/server/routes/utils/converters/__tests__/uiToBackend.test.ts delete mode 100644 dashboards-reports/server/routes/utils/converters/backendToUi.ts delete mode 100644 dashboards-reports/server/routes/utils/converters/uiToBackend.ts delete mode 100644 dashboards-reports/server/routes/utils/dataReportHelpers.ts delete mode 100644 dashboards-reports/server/routes/utils/helpers.ts delete mode 100644 dashboards-reports/server/routes/utils/metricHelper.ts delete mode 100644 dashboards-reports/server/routes/utils/savedSearchReportHelper.ts delete mode 100644 dashboards-reports/server/routes/utils/types.ts delete mode 100644 dashboards-reports/server/types.ts delete mode 100644 dashboards-reports/server/utils/__tests__/validationHelper.test.ts delete mode 100644 dashboards-reports/server/utils/validationHelper.ts delete mode 100644 dashboards-reports/test/__mocks__/fileMock.js delete mode 100644 dashboards-reports/test/__mocks__/loggerMock.ts delete mode 100644 dashboards-reports/test/__mocks__/styleMock.js delete mode 100644 dashboards-reports/test/httpMockClient.js delete mode 100644 dashboards-reports/test/jest.config.js delete mode 100644 dashboards-reports/test/propsMock.js delete mode 100644 dashboards-reports/test/setup.jest.ts delete mode 100644 dashboards-reports/test/setupTests.ts delete mode 100644 dashboards-reports/translations/pl.json delete mode 100644 dashboards-reports/translations/zh-CN.json delete mode 100644 dashboards-reports/tsconfig.json delete mode 100644 dashboards-reports/yarn.lock rename reports-scheduler/detekt.yml => detekt.yml (100%) rename {reports-scheduler/gradle => gradle}/wrapper/gradle-wrapper.jar (100%) rename {reports-scheduler/gradle => gradle}/wrapper/gradle-wrapper.properties (100%) rename reports-scheduler/gradlew => gradlew (100%) rename reports-scheduler/gradlew.bat => gradlew.bat (100%) rename {reports-scheduler/release-notes => release-notes}/create_release_notes.py (100%) delete mode 100644 reports-scheduler/.gitignore rename {reports-scheduler/scripts => scripts}/build.sh (100%) rename reports-scheduler/settings.gradle => settings.gradle (100%) rename {reports-scheduler/src => src}/main/config/reports-scheduler.yml (100%) rename {reports-scheduler/src => src}/main/java/org/opensearch/reportsscheduler/metrics/BasicCounter.java (100%) rename {reports-scheduler/src => src}/main/java/org/opensearch/reportsscheduler/metrics/Counter.java (100%) rename {reports-scheduler/src => src}/main/java/org/opensearch/reportsscheduler/metrics/Metrics.java (100%) rename {reports-scheduler/src => src}/main/java/org/opensearch/reportsscheduler/metrics/RollingCounter.java (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/BaseResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsDoc.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceDoc.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/RestTag.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/util/Helpers.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/util/OpenForTesting.kt (100%) rename {reports-scheduler/src => src}/main/kotlin/org/opensearch/reportsscheduler/util/SecureIndexClient.kt (100%) rename {reports-scheduler/src => src}/main/plugin-metadata/plugin-security.policy (100%) rename {reports-scheduler/src => src}/main/resources/META-INF/services/org.opensearch.jobscheduler.spi.JobSchedulerExtension (100%) rename {reports-scheduler/src => src}/main/resources/notifications/template/email_content_template.html (100%) rename {reports-scheduler/src => src}/main/resources/notifications/template/logo.png (100%) rename {reports-scheduler/src => src}/main/resources/report-definitions-mapping.yml (100%) rename {reports-scheduler/src => src}/main/resources/report-definitions-settings.yml (100%) rename {reports-scheduler/src => src}/main/resources/report-instances-mapping.yml (100%) rename {reports-scheduler/src => src}/main/resources/report-instances-settings.yml (100%) rename {reports-scheduler/src => src}/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java (100%) rename {reports-scheduler/src => src}/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/TestHelpers.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequestTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponseTests.kt (100%) rename {reports-scheduler/src => src}/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt (100%) rename {reports-scheduler/src => src}/test/resources/bwc/job-scheduler/.gitignore (100%) rename {reports-scheduler/src => src}/test/resources/bwc/reports-scheduler/.gitignore (100%) rename {reports-scheduler/src => src}/test/resources/job-scheduler/.gitignore (100%) rename {reports-scheduler/src => src}/test/resources/security/sample.pem (100%) rename {reports-scheduler/src => src}/test/resources/security/test-kirk.jks (100%) diff --git a/reports-scheduler/.classpath b/.classpath similarity index 100% rename from reports-scheduler/.classpath rename to .classpath diff --git a/reports-scheduler/.codecov.yml b/.codecov.yml similarity index 100% rename from reports-scheduler/.codecov.yml rename to .codecov.yml diff --git a/reports-scheduler/.editorconfig b/.editorconfig similarity index 100% rename from reports-scheduler/.editorconfig rename to .editorconfig diff --git a/.github/workflows/dashboards-reports-release-workflow.yml b/.github/workflows/dashboards-reports-release-workflow.yml deleted file mode 100644 index bceefb9d..00000000 --- a/.github/workflows/dashboards-reports-release-workflow.yml +++ /dev/null @@ -1,115 +0,0 @@ -name: Release OpenSearch Dashboards Reports Artifacts - -on: - push: - tags: - - "v*" - -env: - PLUGIN_NAME: reportsDashboards - ARTIFACT_NAME: reports-dashboards - OPENSEARCH_VERSION: '1.0' - OPENSEARCH_PLUGIN_VERSION: 1.0.0.0 - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Checkout Plugin - uses: actions/checkout@v1 - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: dashboards-reports/OpenSearch-Dashboards - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: "10.24.1" - - - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - - name: Add Chromium Binary to Reporting for Testing - run: | - sudo apt install -y libnss3-dev fonts-liberation libfontconfig1 - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - wget https://github.com/opendistro-for-elasticsearch/kibana-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip - unzip chromium-linux-x64.zip - rm chromium-linux-x64.zip - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - - - name: Test - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test - - - name: Build Artifact and upload to S3 - run: | - cd OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - yarn build - - cd build - mkdir -p ./{linux-x64,linux-arm64,windows-x64}/OpenSearch-Dashboards/${{ env.PLUGIN_NAME }} - cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip - cp ./${{ env.PLUGIN_NAME }}-*.zip ./linux-arm64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip - mv ./${{ env.PLUGIN_NAME }}-*.zip ./windows-x64/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/kibana-plugins/reports/" - - cd linux-x64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-linux-x64.zip - unzip chromium-linux-x64.zip -d ./OpenSearch-Dashboards/${{ env.PLUGIN_NAME }} - rm chromium-linux-x64.zip - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./OpenSearch-Dashboards - linux_x64_artifact=`ls ./${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-x64.zip` - - #Inject build number before the suffix and upload to S3 - linux_x64_artifact_outfile=`basename ${linux_x64_artifact%.zip}-build-${GITHUB_RUN_NUMBER}.zip` - echo "Copying $linux_x64_artifact to ${s3_prefix}${linux_x64_artifact_outfile}" - aws s3 cp --quiet $linux_x64_artifact ${s3_prefix}${linux_x64_artifact_outfile} - cd .. - - cd linux-arm64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-linux-arm64.zip - unzip chromium-linux-arm64.zip -d ./OpenSearch-Dashboards/${{ env.PLUGIN_NAME }} - rm chromium-linux-arm64.zip - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./OpenSearch-Dashboards - linux_arm64_artifact=`ls ./${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-linux-arm64.zip` - - #Inject build number before the suffix and upload to S3 - linux_arm64_artifact_outfile=`basename ${linux_arm64_artifact%.zip}-build-${GITHUB_RUN_NUMBER}.zip` - echo "Copying $linux_arm64_artifact to ${s3_prefix}${linux_arm64_artifact_outfile}" - aws s3 cp --quiet $linux_arm64_artifact ${s3_prefix}${linux_arm64_artifact_outfile} - cd .. - - cd windows-x64 - wget https://github.com/opensearch-project/dashboards-reports/releases/download/chromium-1.12.0.0/chromium-windows-x64.zip - unzip chromium-windows-x64.zip -d ./OpenSearch-Dashboards/${{ env.PLUGIN_NAME }} - rm chromium-windows-x64.zip - zip -ur ./${{ env.ARTIFACT_NAME }}-*.zip ./OpenSearch-Dashboards - windows_x64_artifact=`ls ./${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}-windows-x64.zip` - - #Inject build number before the suffix and upload to S3 - windows_x64_artifact_outfile=`basename ${windows_x64_artifact%.zip}-build-${GITHUB_RUN_NUMBER}.zip` - echo "Copying $windows_x64_artifact to ${s3_prefix}${windows_x64_artifact_outfile}" - aws s3 cp --quiet $windows_x64_artifact ${s3_prefix}${windows_x64_artifact_outfile} diff --git a/.github/workflows/dashboards-reports-test-and-build-workflow.yml b/.github/workflows/dashboards-reports-test-and-build-workflow.yml deleted file mode 100644 index 08348aec..00000000 --- a/.github/workflows/dashboards-reports-test-and-build-workflow.yml +++ /dev/null @@ -1,184 +0,0 @@ -name: Test and Build OpenSearch Dashboards Reports - -on: [pull_request, push] - -env: - PLUGIN_NAME: reportsDashboards - ARTIFACT_NAME: reports-dashboards - OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.5.0.0 - - -jobs: - linux-build: - runs-on: ubuntu-latest - steps: - - name: Checkout Plugin - uses: actions/checkout@v1 - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: OpenSearch-Dashboards - - - name: Get node version - id: versions_step - run: - echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: ${{ steps.versions_step.outputs.node_version }} - registry-url: 'https://registry.npmjs.org' - - - - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - - - name: Test - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test --coverage - - - name: Upload coverage - uses: codecov/codecov-action@v1 - with: - flags: dashboards-reports - directory: ../OpenSearch-Dashboards/plugins/ - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Build Artifact - run: | - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - yarn build - mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - - name: Upload Artifact For Linux x64 - uses: actions/upload-artifact@v1 - with: - name: dashboards-reports-linux-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - windows-build: - runs-on: windows-latest - steps: - - name: Checkout Plugin - uses: actions/checkout@v1 - - # Enable longer filenames for windows - - name: Enable longer filenames - run: git config --system core.longpaths true - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: OpenSearch-Dashboards - - - name: Get node version - id: versions_step - run: - echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: ${{ steps.versions_step.outputs.node_version }} - registry-url: 'https://registry.npmjs.org' - - - - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn osd bootstrap - - - name: Test - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} && yarn test - - - name: Build Artifact - run: | - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - yarn build - mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - - name: Upload Artifact For Windows - uses: actions/upload-artifact@v1 - with: - name: dashboards-reports-windows-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - macos-build: - runs-on: macos-latest - steps: - - name: Checkout Plugin - uses: actions/checkout@v1 - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: OpenSearch-Dashboards - - - name: Get node version - id: versions_step - run: - echo "::set-output name=node_version::$(node -p "(require('../OpenSearch-Dashboards/package.json').engines.node).match(/[.0-9]+/)[0]")" - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: ${{ steps.versions_step.outputs.node_version }} - registry-url: 'https://registry.npmjs.org' - - - - name: Move Dashboards Reports to Plugins Dir - run: mv dashboards-reports ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn osd bootstrap - - - name: Test - uses: nick-invision/retry@v1 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}; yarn test - - - name: Build Artifact - run: | - cd ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }} - yarn build - mv ./build/*.zip ./build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - - name: Upload Artifact For MacOS x64 - uses: actions/upload-artifact@v1 - with: - name: dashboards-reports-macosx-x64 - path: ../OpenSearch-Dashboards/plugins/${{ env.PLUGIN_NAME }}/build/${{ env.ARTIFACT_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index fc2d9780..0e3f6b12 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -17,13 +17,11 @@ jobs: with: java-version: ${{ matrix.java }} - # reports-scheduler - name: Checkout Reports Scheduler uses: actions/checkout@v2 - name: Build with Gradle run: | - cd reports-scheduler ./gradlew build - name: Upload coverage @@ -36,7 +34,7 @@ jobs: - name: Create Artifact Path run: | mkdir -p reports-scheduler-builds - cp -r ./reports-scheduler/build/distributions/*.zip reports-scheduler-builds/ + cp -r ./build/distributions/*.zip reports-scheduler-builds/ - name: Upload Artifacts uses: actions/upload-artifact@v1 @@ -58,26 +56,17 @@ jobs: with: java-version: ${{ matrix.java }} - # reports-scheduler - name: Checkout Reports Scheduler uses: actions/checkout@v2 - # Disable bwc tests since first release - # - name: RunBackwards Compatibility Tests - # run: | - # cd reports-scheduler - # echo "Running backwards compatibility tests ..." - # ./gradlew.bat bwcTestSuite - - name: Build with Gradle run: | - cd reports-scheduler ./gradlew.bat build -x integTest -x jacocoTestReport - name: Create Artifact Path run: | mkdir -p reports-scheduler-builds - cp -r ./reports-scheduler/build/distributions/*.zip reports-scheduler-builds/ + cp -r ./build/distributions/*.zip reports-scheduler-builds/ - name: Upload Artifacts uses: actions/upload-artifact@v1 @@ -103,22 +92,14 @@ jobs: - name: Checkout Reports Scheduler uses: actions/checkout@v2 - # Disable bwc tests since first release - # - name: RunBackwards Compatibility Tests - # run: | - # cd reports-scheduler - # echo "Running backwards compatibility tests ..." - # ./gradlew bwcTestSuite - - name: Build with Gradle run: | - cd reports-scheduler ./gradlew build -x integTest -x jacocoTestReport - name: Create Artifact Path run: | mkdir -p reports-scheduler-builds - cp -r ./reports-scheduler/build/distributions/*.zip reports-scheduler-builds/ + cp -r ./build/distributions/*.zip reports-scheduler-builds/ - name: Upload Artifacts uses: actions/upload-artifact@v1 diff --git a/.gitignore b/.gitignore index 77852916..8c03270c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,19 +3,313 @@ *.iml .gradle out -local-test -.local-* - -npm-debug.log* -node_modules /build/ /public/app.css -.idea/ -.vscode/ -yarn-error.log /coverage/ .history/ .eslintcache # Kibana -.empty \ No newline at end of file +.empty + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Kotlin ### +# Compiled class file + +# Log file + +# BlueJ files + +# Mobile Tools for Java (J2ME) + +# Package Files # + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### Gradle Patch ### +**/build/ + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +.idea/artifacts +.idea/compiler.xml +.idea/jarRepositories.xml +.idea/modules.xml +.idea/*.iml +.idea/modules +*.iml +*.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# AWS plugin +.idea/aws.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +local-test +.local-* + +/artifacts/ diff --git a/reports-scheduler/.idea/.name b/.idea/.name similarity index 100% rename from reports-scheduler/.idea/.name rename to .idea/.name diff --git a/reports-scheduler/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml similarity index 100% rename from reports-scheduler/.idea/codeStyles/Project.xml rename to .idea/codeStyles/Project.xml diff --git a/reports-scheduler/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml similarity index 100% rename from reports-scheduler/.idea/codeStyles/codeStyleConfig.xml rename to .idea/codeStyles/codeStyleConfig.xml diff --git a/reports-scheduler/.idea/kotlinc.xml b/.idea/kotlinc.xml similarity index 100% rename from reports-scheduler/.idea/kotlinc.xml rename to .idea/kotlinc.xml diff --git a/reports-scheduler/.idea/misc.xml b/.idea/misc.xml similarity index 100% rename from reports-scheduler/.idea/misc.xml rename to .idea/misc.xml diff --git a/reports-scheduler/.idea/vcs.xml b/.idea/vcs.xml similarity index 100% rename from reports-scheduler/.idea/vcs.xml rename to .idea/vcs.xml diff --git a/reports-scheduler/.project b/.project similarity index 100% rename from reports-scheduler/.project rename to .project diff --git a/README.md b/README.md index b79cff8c..2354c0bb 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,6 @@ OpenSearch Dashboards Reports allows ‘Report Owner’ (engineers, including bu | Distribution build tests | [![OpenSearch IT tests][reports-scheduler-it-badge]][reports-scheduler-it-link] [![OpenSearch IT code][reports-scheduler-it-code-badge]][reports-scheduler-it-code-link] | | Backward compatibility tests | [![BWC tests][bwc-tests-badge]][bwc-tests-link] | -### Dashboard-Reports - -| | | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| Test and build | [![Observability Dashboards CI][dashboard-reports-build-badge]][dashboard-reports-build-link] | -| Code coverage | [![codecov][dashboard-reports-codecov-badge]][codecov-link] | -| Distribution build tests | [![cypress tests][cypress-test-badge]][cypress-test-link] [![cypress code][cypress-code-badge]][cypress-code-link] | ### Repository Checks @@ -56,11 +49,8 @@ OpenSearch Dashboards Reports allows ‘Report Owner’ (engineers, including bu [dco-badge-link]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/dco.yml [link-check-badge]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/link-checker.yml/badge.svg [link-check-link]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/link-checker.yml -[dashboard-reports-build-badge]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/dashboards-reports-test-and-build-workflow.yml/badge.svg -[dashboard-reports-build-link]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/dashboards-reports-test-and-build-workflow.yml [reports-scheduler-build-badge]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/reports-scheduler-test-and-build-workflow.yml/badge.svg [reports-scheduler-build-link]: https://github.com/opensearch-project/dashboards-reports/actions/workflows/reports-scheduler-test-and-build-workflow.yml -[dashboard-reports-codecov-badge]: https://codecov.io/gh/opensearch-project/dashboards-reports/branch/main/graphs/badge.svg?flag=dashboards-reports [reports-scheduler-codecov-badge]: https://codecov.io/gh/opensearch-project/dashboards-reports/branch/main/graphs/badge.svg?flag=reports-scheduler [codecov-link]: https://codecov.io/gh/opensearch-project/dashboards-reports [cypress-test-badge]: https://img.shields.io/badge/Cypress%20tests-in%20progress-yellow @@ -94,13 +84,6 @@ Please see our technical [documentation](https://opensearch.org/docs/dashboards/ We welcome you to get involved in development, documentation, testing the OpenSearch Dashboards reports plugin. See our [CONTRIBUTING.md](./CONTRIBUTING.md) and join in. -## Setup & Build - -Complete OpenSearch Dashboards Report feature is composed of 2 plugins. - -- [OpenSearch Dashboards reports plugin](./dashboards-reports/README.md) -- OpenSearch Reports scheduler plugin - ## Notifications Integration OpenSearch Dashboards Reports integration with [Notifications](https://github.com/opensearch-project/notifications) is currently in progress. Tracking [here](https://github.com/opensearch-project/dashboards-reports/issues/72) diff --git a/reports-scheduler/build-tools/esplugin-coverage.gradle b/build-tools/esplugin-coverage.gradle similarity index 100% rename from reports-scheduler/build-tools/esplugin-coverage.gradle rename to build-tools/esplugin-coverage.gradle diff --git a/reports-scheduler/build-tools/pkgbuild.gradle b/build-tools/pkgbuild.gradle similarity index 100% rename from reports-scheduler/build-tools/pkgbuild.gradle rename to build-tools/pkgbuild.gradle diff --git a/reports-scheduler/build.gradle b/build.gradle similarity index 100% rename from reports-scheduler/build.gradle rename to build.gradle diff --git a/reports-scheduler/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml similarity index 100% rename from reports-scheduler/config/checkstyle/checkstyle.xml rename to config/checkstyle/checkstyle.xml diff --git a/reports-scheduler/config/checkstyle/google_checks.xml b/config/checkstyle/google_checks.xml similarity index 100% rename from reports-scheduler/config/checkstyle/google_checks.xml rename to config/checkstyle/google_checks.xml diff --git a/reports-scheduler/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml similarity index 100% rename from reports-scheduler/config/checkstyle/suppressions.xml rename to config/checkstyle/suppressions.xml diff --git a/dashboards-reports/.cypress/integration/01-create.spec.ts b/dashboards-reports/.cypress/integration/01-create.spec.ts deleted file mode 100644 index d047aeff..00000000 --- a/dashboards-reports/.cypress/integration/01-create.spec.ts +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { visitReportingLandingPage } from "../support/utils"; - -describe('Adding sample data', () => { - it('Adds sample data', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/home#/tutorial_directory/sampleData`); - cy.get('div[data-test-subj="sampleDataSetCardflights"]').contains(/(Add|View) data/).click(); - cy.wait(3000); - cy.visit(`${Cypress.env('opensearchDashboards')}/app/home#/tutorial_directory/sampleData`); - cy.get('div[data-test-subj="sampleDataSetCardecommerce"]').contains(/(Add|View) data/).click(); - cy.wait(3000); - cy.visit(`${Cypress.env('opensearchDashboards')}/app/home#/tutorial_directory/sampleData`); - cy.get('div[data-test-subj="sampleDataSetCardlogs"]').contains(/(Add|View) data/).click(); - cy.wait(3000); - }); -}); - -describe('Cypress', () => { - it('Visits Reporting homepage', () => { - visitReportingLandingPage(); - }); - - it('Visit Create page', () => { - visitCreateReportDefinitionPage(); - }); - - it('Create a new on-demand dashboard report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress dashboard on-demand report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSourceComboBox(); - - // // select drop-down option in report source list - cy.contains('[Logs] Web Traffic').click(); - - cy.wait(500); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new on-demand visualization report definition', ()=> { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress vis on-demand report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSource('#visualizationReportSource'); - selectReportSourceComboBox(); - cy.wait(500); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new on-demand saved search report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress saved search on-demand report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSource('#savedSearchReportSource'); - selectReportSourceComboBox(); - cy.wait(500); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new dashboard daily recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress dashboard daily scheduled report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSourceComboBox(); - - // select drop-down option in report source list - cy.contains('[Logs] Web Traffic').click(); - - cy.wait(500); - setReportTriggerToSchedule(); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new visualization daily recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress vis daily scheduled report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSource('#visualizationReportSource'); - selectReportSourceComboBox(); - cy.wait(500); - setReportTriggerToSchedule(); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new saved search daily recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress search daily scheduled report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSource('#savedSearchReportSource'); - selectReportSourceComboBox(); - setReportTriggerToSchedule(); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new dashboard interval recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress dashboard recurring report'); - setReportDefinitionDescription('Description for cypress test'); - selectReportSourceComboBox(); - - // select drop-down option in report source list - cy.contains('[Logs] Web Traffic').click(); - - cy.wait(500); - setReportTriggerToSchedule(); - selectIntervalScheduleFrequency(); - inputTextIntoField('#recurringByIntervalNumber', '5'); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new visualization interval recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress vis interval recurring report'); - selectReportSource('#visualizationReportSource'); - selectReportSourceComboBox(); - setReportTriggerToSchedule(); - selectIntervalScheduleFrequency(); - inputTextIntoField('#recurringByIntervalNumber', '5'); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a new saved search interval recurring report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress saved search interval recurring report'); - selectReportSource('#savedSearchReportSource'); - selectReportSourceComboBox(); - setReportTriggerToSchedule(); - selectIntervalScheduleFrequency(); - inputTextIntoField('#recurringByIntervalNumber', '5'); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a dashboard cron-based report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress dashboard cron definition'); - selectReportSourceComboBox(); - - // select drop-down option in report source list - cy.contains('[Logs] Web Traffic').click(); - cy.wait(500); - setReportTriggerToSchedule(); - selectCronBasedRequestTime(); - inputTextIntoField('#cronExpressionFieldText', '0 12 * * *'); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a visualization cron-based report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress vis cron definition'); - selectReportSource('#visualizationReportSource'); - selectReportSourceComboBox(); - setReportTriggerToSchedule(); - selectCronBasedRequestTime(); - inputTextIntoField('#cronExpressionFieldText', '0 12 * * *'); - cy.wait(500); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); - - it('Create a saved search cron-based report definition', () => { - visitCreateReportDefinitionPage(); - setReportDefinitionName('Cypress search cron definition'); - selectReportSource('#savedSearchReportSource'); - selectReportSourceComboBox(); - setReportTriggerToSchedule(); - selectCronBasedRequestTime(); - inputTextIntoField('#cronExpressionFieldText', '0 12 * * *'); - cy.wait(500); - clickCreateReportDefinitionButton(); - cy.wait(3000); - verifyOnReportingLandingPage(); - }); -}); - -function visitCreateReportDefinitionPage() { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - cy.wait(3000); - cy.get('#createReportHomepageButton').click(); -} - -function setReportDefinitionName(name: string) { - cy.get('#reportSettingsName').type(name); -} - -function setReportDefinitionDescription(description: string) { - cy.get('#reportSettingsDescription').type(description); -} - -function selectReportSource(name: string) { - cy.get(name).click({force: true}); -} - -function selectReportSourceComboBox() { - cy.get('[data-test-subj="comboBoxInput"]').eq(0).click({ force: true }); -} - -function setReportTriggerToSchedule() { - cy.get('#Schedule').check({ force: true }); -} - -function selectIntervalScheduleFrequency() { - cy.get('#recurringFrequencySelect').select('By interval'); -} - -function selectCronBasedRequestTime() { - cy.contains('Cron based').click({ force: true }); -} - -function inputTextIntoField(selector: string, text: string) { - cy.get(selector).type(text); -} - -function clickCreateReportDefinitionButton() { - cy.get('#createNewReportDefinition').click({ force: true }); -} - -function verifyOnReportingLandingPage() { - cy.get('#reportDefinitionDetailsLink').should('exist'); -} \ No newline at end of file diff --git a/dashboards-reports/.cypress/integration/02-edit.spec.ts b/dashboards-reports/.cypress/integration/02-edit.spec.ts deleted file mode 100644 index a87e77d4..00000000 --- a/dashboards-reports/.cypress/integration/02-edit.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -describe('Cypress', () => { - it('Visit edit page, update name and description', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - - cy.wait(12500); - - cy.get('#reportDefinitionDetailsLink').first().click(); - - cy.get('#editReportDefinitionButton').should('exist'); - - cy.get('#editReportDefinitionButton').click(); - - cy.url().should('include', 'edit'); - - cy.wait(1000); - - // update the report name - cy.get('#reportSettingsName').type(' update name'); - - // update report description - cy.get('#reportSettingsDescription').type(' update description'); - - cy.get('#editReportDefinitionButton').click({ force: true }); - - cy.wait(12500); - - // check that re-direct to home page - cy.get('#reportDefinitionDetailsLink').should('exist'); - }); - - it('Visit edit page, change report trigger', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - - cy.wait(12500); - - cy.get('#reportDefinitionDetailsLink').first().click(); - - cy.get('#editReportDefinitionButton').should('exist'); - - cy.get('#editReportDefinitionButton').click(); - - cy.url().should('include', 'edit'); - - cy.wait(1000); - cy.get('#reportDefinitionTriggerTypes > div:nth-child(2)').click({ force: true }); - - cy.get('#Schedule').check({ force: true }); - cy.get('#editReportDefinitionButton').click({ force: true }); - - cy.wait(12500); - - // check that re-direct to home page - cy.get('#reportDefinitionDetailsLink').should('exist'); - }); - - it('Visit edit page, change report trigger back', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - - cy.wait(12500); - - cy.get('#reportDefinitionDetailsLink').first().click(); - - cy.get('#editReportDefinitionButton').should('exist'); - - cy.get('#editReportDefinitionButton').click(); - - cy.url().should('include', 'edit'); - - cy.wait(1000); - - cy.get('#reportDefinitionTriggerTypes > div:nth-child(1)').click({ force: true }); - - cy.get('#editReportDefinitionButton').click({ force: true }); - - cy.wait(12500); - - // check that re-direct to home page - cy.get('#reportDefinitionDetailsLink').should('exist'); - }); -}); diff --git a/dashboards-reports/.cypress/integration/03-details.spec.ts b/dashboards-reports/.cypress/integration/03-details.spec.ts deleted file mode 100644 index 166da435..00000000 --- a/dashboards-reports/.cypress/integration/03-details.spec.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { visitReportingLandingPage } from "../support/utils"; - -describe('Cypress', () => { - it('Visit report definition details page', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDefinitionDetailsPage(); - verifyReportDefinitionDetailsURL(); - verifyDeleteDefinitionButtonExists(); - verifyGenerateReportFromFileFormatExists(); - }); - - it('Go to edit report definition from report definition details', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDefinitionDetailsPage(); - verifyEditDefinitionButtonExists(); - clickEditReportDefinitionButton(); - verifyEditReportDefinitionURL(); - }); - - it('Verify report source URL on report definition details', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDefinitionDetailsPage(); - verifyReportDefinitionSourceURLExists(); - - }); - - it('Delete report definition from details page', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDefinitionDetailsPage(); - verifyDeleteDefinitionButtonExists(); - deleteReportDefinition(); - verifyDeleteSuccess(); - }); - - it('Visit report details page', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDetailsPage(); - verifyReportDetailsURL(); - }); - - it('Verify report source URL on report details', () => { - visitReportingLandingPage(); - cy.wait(5000); - visitReportDetailsPage(); - verifyReportDetailsSourceURLExists(); - }); -}); - -function visitReportDefinitionDetailsPage() { - cy.get('#reportDefinitionDetailsLink').first().click(); -} - -function verifyReportDefinitionDetailsURL() { - cy.url().should('include', 'report_definition_details'); -} - -function verifyDeleteDefinitionButtonExists() { - cy.get('#deleteReportDefinitionButton').should('exist'); -} - -function verifyEditDefinitionButtonExists() { - cy.get('#editReportDefinitionButton').should('exist'); -} - -function clickEditReportDefinitionButton() { - cy.get('#editReportDefinitionButton').click({ force: true }); -} - -function verifyEditReportDefinitionURL() { - cy.url().should('include', 'edit'); -} - -function verifyReportDefinitionSourceURLExists() { - cy.get('#reportDefinitionSourceURL').should('exist'); -} - -function verifyReportDetailsSourceURLExists() { - cy.get('#reportDetailsSourceURL').should('exist'); -} - -function verifyGenerateReportFromFileFormatExists() { - cy.get('#generateReportFromDetailsFileFormat').should('exist'); -} - -function deleteReportDefinition() { - cy.get('#deleteReportDefinitionButton').click(); - cy.wait(500); - cy.get('button.euiButton:nth-child(2)').click({ force: true }); -} - -function verifyDeleteSuccess() { - cy.get('#deleteReportDefinitionSuccessToast').should('exist'); -} - -function visitReportDetailsPage() { - cy.get('#reportDetailsLink').first().click(); -} - -function verifyReportDetailsURL() { - cy.url().should('include', 'report_details'); -} diff --git a/dashboards-reports/.cypress/integration/04-download.spec.ts b/dashboards-reports/.cypress/integration/04-download.spec.ts deleted file mode 100644 index af7e6409..00000000 --- a/dashboards-reports/.cypress/integration/04-download.spec.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -describe('Cypress', () => { - it('Download from reporting homepage', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - - cy.wait(12500); - cy.get('#landingPageOnDemandDownload').click({ force: true }); - cy.get('body').then($body => { - if ($body.find('#downloadInProgressLoadingModal').length > 0) { - return; - } - else { - assert(false); - } - }) - }); - - it('Download pdf from in-context menu', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/dashboards#`); - cy.wait(5000); - - // click first entry in dashboards page - cy.get('tr.euiTableRow:nth-child(1) > td:nth-child(2) > div:nth-child(2) > a:nth-child(1)').click({ force: true }); - - // click Reporting in-context menu - cy.get('#downloadReport > span:nth-child(1) > span:nth-child(1)').click({ force: true }); - - // download PDF - cy.get('#generatePDF > span:nth-child(1) > span:nth-child(2)').click({ force: true }); - - cy.get('#reportGenerationProgressModal'); - }); - - it('Download png from in-context menu', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/dashboards#`); - cy.wait(5000); - - // click first entry in dashboards page - cy.get('tr.euiTableRow:nth-child(1) > td:nth-child(2) > div:nth-child(2) > a:nth-child(1)').click({ force: true }); - - // click Reporting in-context menu - cy.get('#downloadReport > span:nth-child(1) > span:nth-child(1)').click({ force: true }); - - cy.get('#generatePNG').click({ force: true }); - - cy.get('#reportGenerationProgressModal'); - }); - - it('Download csv from saved search in-context menu', () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/discover#`); - cy.wait(5000); - - // open saved search list - cy.get('button.euiButtonEmpty:nth-child(3) > span:nth-child(1) > span:nth-child(1)').click({ force: true }); - cy.wait(5000); - - // click first entry - cy.get('li.euiListGroupItem:nth-child(1) > button:nth-child(1)').click({ force: true }); - - // open reporting menu - cy.get('#downloadReport').click({ force: true }); - - cy.get('#generateCSV').click({ force: true }); - }); - - it('Download from Report definition details page', () => { - // create an on-demand report definition - - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - cy.wait(10000); - - cy.get('tr.euiTableRow-isSelectable:nth-child(1) > td:nth-child(1) > div:nth-child(2) > button:nth-child(1)').first().click(); - - cy.url().should('include', 'report_definition_details'); - - cy.get('#generateReportFromDetailsButton').should('exist'); - - cy.get('#generateReportFromDetailsButton').click({ force: true }); - - cy.get('#downloadInProgressLoadingModal'); - }); -}); diff --git a/dashboards-reports/.cypress/plugins/index.js b/dashboards-reports/.cypress/plugins/index.js deleted file mode 100644 index 8ac1f106..00000000 --- a/dashboards-reports/.cypress/plugins/index.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/// -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -} diff --git a/dashboards-reports/.cypress/support/commands.js b/dashboards-reports/.cypress/support/commands.js deleted file mode 100644 index dab9071d..00000000 --- a/dashboards-reports/.cypress/support/commands.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -const { ADMIN_AUTH } = require('./constants'); - -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add("login", (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) - -Cypress.Commands.overwrite('visit', (originalFn, url, options) => { - // Add the basic auth header when security enabled in the OpenSearch cluster - // https://github.com/cypress-io/cypress/issues/1288 - if (Cypress.env('security_enabled')) { - if (options) { - options.auth = ADMIN_AUTH; - } else { - options = { auth: ADMIN_AUTH }; - } - // Add query parameters - select the default OpenSearch Dashboards tenant - options.qs = { security_tenant: 'private' }; - return originalFn(url, options); - } else { - return originalFn(url, options); - } -}); - -// Be able to add default options to cy.request(), https://github.com/cypress-io/cypress/issues/726 -Cypress.Commands.overwrite('request', (originalFn, ...args) => { - let defaults = {}; - // Add the basic authentication header when security enabled in the OpenSearch cluster - if (Cypress.env('security_enabled')) { - defaults.auth = ADMIN_AUTH; - } - - let options = {}; - if (typeof args[0] === 'object' && args[0] !== null) { - options = Object.assign({}, args[0]); - } else if (args.length === 1) { - [options.url] = args; - } else if (args.length === 2) { - [options.method, options.url] = args; - } else if (args.length === 3) { - [options.method, options.url, options.body] = args; - } - - return originalFn(Object.assign({}, defaults, options)); -}); - diff --git a/dashboards-reports/.cypress/support/constants.js b/dashboards-reports/.cypress/support/constants.js deleted file mode 100644 index 1001fd49..00000000 --- a/dashboards-reports/.cypress/support/constants.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const ADMIN_AUTH = { - username: 'admin', - password: 'admin', -}; diff --git a/dashboards-reports/.cypress/support/index.js b/dashboards-reports/.cypress/support/index.js deleted file mode 100644 index c70c2dd5..00000000 --- a/dashboards-reports/.cypress/support/index.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import './commands' - -// Alternatively you can use CommonJS syntax: -// require('./commands') - -// Switch the base URL of OpenSearch when security enabled in the cluster -if (Cypress.env('security_enabled')) { - Cypress.env('opensearch', 'https://localhost:9200'); -} diff --git a/dashboards-reports/.cypress/support/utils.js b/dashboards-reports/.cypress/support/utils.js deleted file mode 100644 index a534be13..00000000 --- a/dashboards-reports/.cypress/support/utils.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export function visitReportingLandingPage() { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/reports-dashboards#/`); - cy.location('pathname', { timeout: 60000 }).should( - 'include', - '/reports-dashboards' - ); - } \ No newline at end of file diff --git a/dashboards-reports/.cypress/tsconfig.json b/dashboards-reports/.cypress/tsconfig.json deleted file mode 100644 index 2d48dc0e..00000000 --- a/dashboards-reports/.cypress/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "baseUrl": "../node_modules", - "types": ["cypress"] - }, - "include": ["**/*.*"] -} \ No newline at end of file diff --git a/dashboards-reports/.eslintrc b/dashboards-reports/.eslintrc deleted file mode 100644 index 52a1c6be..00000000 --- a/dashboards-reports/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ ---- -extends: '@elastic/kibana' - -settings: - import/resolver: - '@osd/eslint-import-resolver-kibana': - rootPackageName: 'reports-dashboards' - pluginPaths: - - . diff --git a/dashboards-reports/.gitignore b/dashboards-reports/.gitignore deleted file mode 100644 index 16b7cd30..00000000 --- a/dashboards-reports/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -npm-debug.log* -node_modules -/build/ -/public/app.css -.idea/ -yarn-error.log -/coverage/ -.DS_Store -.history/ -.eslintcache -package-lock.json -/target/ diff --git a/dashboards-reports/.i18nrc.json b/dashboards-reports/.i18nrc.json deleted file mode 100644 index f60aeca5..00000000 --- a/dashboards-reports/.i18nrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "paths": { - "opensearch.reports": "public" - }, - "exclude": [], - "translations": ["translations/zh-CN.json", "translations/pl.json"] -} diff --git a/dashboards-reports/.lintstagedrc b/dashboards-reports/.lintstagedrc deleted file mode 100644 index e7e7db11..00000000 --- a/dashboards-reports/.lintstagedrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "*.{ts,tsx,js,jsx,json,css,md}": ["prettier --write", "git add"] -} diff --git a/dashboards-reports/.opensearch_dashboards-plugin-helpers.json b/dashboards-reports/.opensearch_dashboards-plugin-helpers.json deleted file mode 100644 index eee5a7ea..00000000 --- a/dashboards-reports/.opensearch_dashboards-plugin-helpers.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "serverSourcePatterns": [ - "package.json", - "tsconfig.json", - "yarn.lock", - ".i18nrc.json", - "common/**/*", - "scripts/**/*", - "public/**/*", - "server/**/*", - "translations/**/*" - ] -} diff --git a/dashboards-reports/.prettierignore b/dashboards-reports/.prettierignore deleted file mode 100644 index 7dc413d2..00000000 --- a/dashboards-reports/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ -.vscode -build -coverage -node_modules -npm-debug.log -yarn.lock -*.md -*.lock \ No newline at end of file diff --git a/dashboards-reports/.prettierrc b/dashboards-reports/.prettierrc deleted file mode 100644 index f443e3cf..00000000 --- a/dashboards-reports/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "es5", - "singleQuote": true, - "printWidth": 80, - "bracketSpacing": true -} diff --git a/dashboards-reports/DEVELOPER_GUIDE.md b/dashboards-reports/DEVELOPER_GUIDE.md deleted file mode 100644 index 39e2ffbc..00000000 --- a/dashboards-reports/DEVELOPER_GUIDE.md +++ /dev/null @@ -1,67 +0,0 @@ -## Developer Guide - -So you want to contribute code to this project? Excellent! We're glad you're here. Here's what you need to do. - -## Install Prerequisites - -### JDK 11 - -OpenSearch builds using Java 11 at a minimum. This means you must have a JDK 11 -installed with the environment variable `JAVA_HOME` referencing the path to Java home -for your JDK 11 installation, e.g. `JAVA_HOME=/usr/lib/jvm/jdk-11`. - -By default, tests use the same runtime as `JAVA_HOME`. However, since OpenSearch -supports JDK 8, the build supports compiling with JDK 11 and testing on a different -version of JDK runtime. To do this, set `RUNTIME_JAVA_HOME` pointing to the Java home of -another JDK installation, e.g. `RUNTIME_JAVA_HOME=/usr/lib/jvm/jdk-8`. - -## Setup - -1. Download OpenSearch for the version that matches the [OpenSearch Dashboards version specified in package.json](./package.json#L7). -1. Download the OpenSearch Dashboards source code for the [version specified in package.json](./package.json#L7) you want to set up. - -1. Change your node version to the version specified in `.node-version` inside the OpenSearch Dashboards root directory. -1. Create a `plugins` directory inside the OpenSearch Dashboards source code directory, if `plugins` directory doesn't exist. -1. Check out this package from version control into the `plugins` directory. - ``` - git clone git@github.com:opensearch-project/dashboards-reports.git plugins --no-checkout - cd plugins - echo 'dashboards-reports/*' >> .git/info/sparse-checkout - git config core.sparseCheckout true - git checkout dev - ``` -1. Run `yarn osd bootstrap` inside `OpenSearch-Dashboards/plugins/dashboards-reports`. - -Ultimately, your directory structure should look like this: - - -```md -. -├── OpenSearch-Dashboards -│ └──plugins -│ └── dashboards-reports -``` - -## Build - -To build the plugin's distributable zip simply run `yarn build`. - -Example output: `./build/reports-dashboards-0.0.1.zip` - -## Run - -- `yarn start` - - Starts OpenSearch Dashboards and includes this plugin. OpenSearch Dashboards will be available on `localhost:5601`. - -- `yarn test:jest` - - Runs the plugin tests. - -### Backports - -The Github workflow in [`backport.yml`](../.github/workflows/backport.yml) creates backport PRs automatically when the original PR -with an appropriate label `backport ` is merged to main with the backport workflow run successfully on the -PR. For example, if a PR on main needs to be backported to `1.x` branch, add a label `backport 1.x` to the PR and make sure the -backport workflow runs on the PR along with other checks. Once this PR is merged to main, the workflow will create a backport PR -to the `1.x` branch. \ No newline at end of file diff --git a/dashboards-reports/README.md b/dashboards-reports/README.md deleted file mode 100644 index 85204bf8..00000000 --- a/dashboards-reports/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# OpenSearch Dashboards Reports - -OpenSearch Dashboards Reports allows ‘Report Owner’ (engineers, including but not limited to developers, DevOps, IT Engineer, and IT admin) export and share reports from OpenSearch Dashboards dashboards, saved search, alerts and visualizations. It helps automate the process of scheduling reports on an on-demand or a periodical basis (on cron schedules as well). Further, it also automates the process of exporting and sharing reports triggered for various alerts. The feature is present in the Dashboard, Discover, and Visualization tabs. We are currently working on integrating Dashboards Reports with Notifications to enable sharing functionality. After the support is introduced, scheduled reports can be sent to (shared with) self or various stakeholders within the organization. These stakeholders include but are not limited to, executives, managers, engineers (developers, DevOps, IT Engineer) in the form of pdf, hyperlinks, csv, excel via various channels such as email, Slack, and Amazon Chime. However, in order to export, schedule and share reports, report owners should have the necessary permissions as defined under Roles and Privileges. - -## Contributing - -See [developer guide](DEVELOPER_GUIDE.md) and [how to contribute to this project](../CONTRIBUTING.md). - -## Code of Conduct - -This project has adopted the [Amazon Open Source Code of Conduct](../CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. - -## Security - -If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public GitHub issue. - -## License - -See the [LICENSE](../LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. - -## Copyright - -Copyright 2020-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/dashboards-reports/THIRD-PARTY b/dashboards-reports/THIRD-PARTY deleted file mode 100644 index 4de447de..00000000 --- a/dashboards-reports/THIRD-PARTY +++ /dev/null @@ -1,203 +0,0 @@ -** @elastic/eui; version 5.1.0 -- https://elastic.github.io/eui/#/ - -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND -DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, and - distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by the - copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all other - entities that control, are controlled by, or are under common control - with that entity. For the purposes of this definition, "control" means - (i) the power, direct or indirect, to cause the direction or management - of such entity, whether by contract or otherwise, or (ii) ownership of - fifty percent (50%) or more of the outstanding shares, or (iii) - beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity exercising - permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation source, - and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not limited - to compiled object code, generated documentation, and conversions to - other media types. - - "Work" shall mean the work of authorship, whether in Source or Object - form, made available under the License, as indicated by a copyright - notice that is included in or attached to the work (an example is - provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object form, - that is based on (or derived from) the Work and for which the editorial - revisions, annotations, elaborations, or other modifications represent, - as a whole, an original work of authorship. For the purposes of this - License, Derivative Works shall not include works that remain separable - from, or merely link (or bind by name) to the interfaces of, the Work and - Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the original - version of the Work and any modifications or additions to that Work or - Derivative Works thereof, that is intentionally submitted to Licensor for - inclusion in the Work by the copyright owner or by an individual or Legal - Entity authorized to submit on behalf of the copyright owner. For the - purposes of this definition, "submitted" means any form of electronic, - verbal, or written communication sent to the Licensor or its - representatives, including but not limited to communication on electronic - mailing lists, source code control systems, and issue tracking systems - that are managed by, or on behalf of, the Licensor for the purpose of - discussing and improving the Work, but excluding communication that is - conspicuously marked or otherwise designated in writing by the copyright - owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity on - behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of this - License, each Contributor hereby grants to You a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable copyright license to - reproduce, prepare Derivative Works of, publicly display, publicly perform, - sublicense, and distribute the Work and such Derivative Works in Source or - Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of this - License, each Contributor hereby grants to You a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable (except as stated in - this section) patent license to make, have made, use, offer to sell, sell, - import, and otherwise transfer the Work, where such license applies only to - those patent claims licensable by such Contributor that are necessarily - infringed by their Contribution(s) alone or by combination of their - Contribution(s) with the Work to which such Contribution(s) was submitted. - If You institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work or a - Contribution incorporated within the Work constitutes direct or contributory - patent infringement, then any patent licenses granted to You under this - License for that Work shall terminate as of the date such litigation is - filed. - - 4. Redistribution. You may reproduce and distribute copies of the Work or - Derivative Works thereof in any medium, with or without modifications, and - in Source or Object form, provided that You meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative Works a - copy of this License; and - - (b) You must cause any modified files to carry prominent notices stating - that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works that You - distribute, all copyright, patent, trademark, and attribution notices - from the Source form of the Work, excluding those notices that do not - pertain to any part of the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must include - a readable copy of the attribution notices contained within such NOTICE - file, excluding those notices that do not pertain to any part of the - Derivative Works, in at least one of the following places: within a - NOTICE text file distributed as part of the Derivative Works; within the - Source form or documentation, if provided along with the Derivative - Works; or, within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents of the - NOTICE file are for informational purposes only and do not modify the - License. You may add Your own attribution notices within Derivative Works - that You distribute, alongside or as an addendum to the NOTICE text from - the Work, provided that such additional attribution notices cannot be - construed as modifying the License. - - You may add Your own copyright statement to Your modifications and may - provide additional or different license terms and conditions for use, - reproduction, or distribution of Your modifications, or for any such - Derivative Works as a whole, provided Your use, reproduction, and - distribution of the Work otherwise complies with the conditions stated in - this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, any - Contribution intentionally submitted for inclusion in the Work by You to the - Licensor shall be under the terms and conditions of this License, without - any additional terms or conditions. Notwithstanding the above, nothing - herein shall supersede or modify the terms of any separate license agreement - you may have executed with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, except - as required for reasonable and customary use in describing the origin of the - Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in - writing, Licensor provides the Work (and each Contributor provides its - Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied, including, without limitation, any - warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or - FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining - the appropriateness of using or redistributing the Work and assume any risks - associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, whether - in tort (including negligence), contract, or otherwise, unless required by - applicable law (such as deliberate and grossly negligent acts) or agreed to - in writing, shall any Contributor be liable to You for damages, including - any direct, indirect, special, incidental, or consequential damages of any - character arising as a result of this License or out of the use or inability - to use the Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all other - commercial damages or losses), even if such Contributor has been advised of - the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing the Work - or Derivative Works thereof, You may choose to offer, and charge a fee for, - acceptance of support, warranty, indemnity, or other liability obligations - and/or rights consistent with this License. However, in accepting such - obligations, You may act only on Your own behalf and on Your sole - responsibility, not on behalf of any other Contributor, and only if You - agree to indemnify, defend, and hold each Contributor harmless for any - liability incurred by, or claims asserted against, such Contributor by - reason of your accepting any such warranty or additional liability. END OF - TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification -within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); - -you may not use this file except in compliance with the License. - -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software - -distributed under the License is distributed on an "AS IS" BASIS, - -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -See the License for the specific language governing permissions and - -limitations under the License. - -* For dashboards-reports see also this required NOTICE: - dashboards-reports - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/dashboards-reports/babel.config.js b/dashboards-reports/babel.config.js deleted file mode 100644 index aab76c8a..00000000 --- a/dashboards-reports/babel.config.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -module.exports = { - presets: [ - require('@babel/preset-env', { - targets: { node: '10' }, - }), - require('@babel/preset-react'), - require('@babel/preset-typescript'), - ], - plugins: [ - require('@babel/plugin-proposal-class-properties'), - require('@babel/plugin-proposal-object-rest-spread'), - ['@babel/plugin-transform-modules-commonjs', { allowTopLevelThis: true }], - [require('@babel/plugin-transform-runtime'), { regenerator: true }], - ], -}; diff --git a/dashboards-reports/common/index.ts b/dashboards-reports/common/index.ts deleted file mode 100644 index ce180a09..00000000 --- a/dashboards-reports/common/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const PLUGIN_NAME = 'Reporting'; -export const PLUGIN_ID = 'reports-dashboards'; - -export const API_PREFIX = '/api/reporting'; - -const BASE_REPORTS_URI = '/_plugins/_reports'; - -export const OPENSEARCH_REPORTS_API = { - ON_DEMAND_REPORT: `${BASE_REPORTS_URI}/on_demand`, - REPORT_INSTANCE: `${BASE_REPORTS_URI}/instance`, - LIST_REPORT_INSTANCES: `${BASE_REPORTS_URI}/instances`, - REPORT_DEFINITION: `${BASE_REPORTS_URI}/definition`, - LIST_REPORT_DEFINITIONS: `${BASE_REPORTS_URI}/definitions`, -}; - -const REPORTING_NOTIFICATIONS_API_PREFIX = '/api/reporting_notifications'; -export const REPORTING_NOTIFICATIONS_DASHBOARDS_API = Object.freeze({ - GET_CONFIGS: `${REPORTING_NOTIFICATIONS_API_PREFIX}/get_configs`, - GET_EVENT: `${REPORTING_NOTIFICATIONS_API_PREFIX}/get_event`, - SEND_TEST_MESSAGE: `${REPORTING_NOTIFICATIONS_API_PREFIX}/test_message`, -}); - -const NOTIFICATIONS_API_BASE_PATH = '/_plugins/_notifications'; -export const NOTIFICATIONS_API = Object.freeze({ - CONFIGS: `${NOTIFICATIONS_API_BASE_PATH}/configs`, - EVENTS: `${NOTIFICATIONS_API_BASE_PATH}/events`, - TEST_MESSAGE: `${NOTIFICATIONS_API_BASE_PATH}/feature/test`, -}); diff --git a/dashboards-reports/cypress.json b/dashboards-reports/cypress.json deleted file mode 100644 index e72b2afa..00000000 --- a/dashboards-reports/cypress.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "video": true, - "fixturesFolder": ".cypress/fixtures", - "integrationFolder": ".cypress/integration", - "pluginsFile": ".cypress/plugins/index.js", - "screenshotsFolder": ".cypress/screenshots", - "supportFile": ".cypress/support/index.js", - "videosFolder": ".cypress/videos", - "requestTimeout": 60000, - "responseTimeout": 60000, - "defaultCommandTimeout": 60000, - "env": { - "opensearch": "localhost:9200", - "opensearchDashboards": "localhost:5601", - "security_enabled": true - } -} diff --git a/dashboards-reports/opensearch_dashboards.json b/dashboards-reports/opensearch_dashboards.json deleted file mode 100644 index f593bb7f..00000000 --- a/dashboards-reports/opensearch_dashboards.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "reportsDashboards", - "version": "2.5.0.0", - "opensearchDashboardsVersion": "2.5.0", - "requiredPlugins": ["navigation", "data", "opensearchDashboardsUtils"], - "optionalPlugins": ["share"], - "server": true, - "ui": true, - "configPath": ["opensearch_reporting"] -} diff --git a/dashboards-reports/package.json b/dashboards-reports/package.json deleted file mode 100644 index c266a1d1..00000000 --- a/dashboards-reports/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "reports-dashboards", - "version": "2.5.0.0", - "description": "OpenSearch Dashboards Reports Plugin", - "license": "Apache-2.0", - "main": "index.ts", - "scripts": { - "osd": "node ../../scripts/osd", - "opensearch": "node ../../scripts/opensearch", - "lint": "eslint .", - "start": "yarn plugin_helpers start", - "build": "yarn plugin_helpers build", - "test": "../../node_modules/.bin/jest --config ./test/jest.config.js", - "cypress:run": "cypress run", - "cypress:open": "cypress open", - "plugin_helpers": "node ../../scripts/plugin_helpers", - "postinstall": "node ./scripts/patch-html2canvas.js" - }, - "dependencies": { - "babel-polyfill": "^6.26.0", - "cron-validator": "^1.1.1", - "dompurify": "^2.4.1", - "elastic-builder": "^2.7.1", - "enzyme-adapter-react-16": "^1.15.5", - "html2canvas": "1.4.1", - "jest-fetch-mock": "^3.0.3", - "jquery": "^3.5.0", - "jsdom": "16.5.0", - "json-2-csv": "^3.7.6", - "jspdf": "^2.5.1", - "react-addons-test-utils": "^15.6.2", - "react-id-generator": "^3.0.1", - "react-markdown": "^4.3.1", - "react-mde": "^10.2.1", - "react-native-base64": "^0.0.2", - "react-native-i18n": "^2.0.15", - "react-navigation": "^4.3.9", - "react-router-dom": "^5.3.0", - "react-toast-notifications": "^2.4.0", - "set-interval-async": "1.0.33", - "showdown": "^1.9.1" - }, - "devDependencies": { - "@elastic/eslint-import-resolver-kibana": "link:../../packages/osd-eslint-import-resolver-opensearch-dashboards", - "@types/dompurify": "^2.3.3", - "@types/enzyme-adapter-react-16": "^1.0.6", - "@types/jsdom": "^16.2.3", - "@types/react": "^16.14.23", - "@types/react-addons-test-utils": "^0.14.25", - "@types/react-dom": "^16.9.8", - "@types/react-test-renderer": "^16.9.1", - "@types/set-interval-async": "^1.0.0", - "@types/showdown": "^1.9.3", - "babel-jest": "^27.5.1", - "cypress": "^5.0.0", - "elastic-builder": "^2.7.1", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-no-unsanitized": "^3.0.2", - "eslint-plugin-prefer-object-spread": "^1.2.1", - "identity-obj-proxy": "^3.0.0", - "jest-dom": "^4.0.0", - "react-test-renderer": "^16.12.0", - "replace-in-file": "^6.3.5", - "ts-jest": "^26.1.0" - }, - "resolutions": { - "trim": "^1.0.0", - "doc-path": "2.1.2", - "y18n": "^5.0.5", - "lodash": "^4.17.21", - "path-parse": "^1.0.7", - "glob-parent": "^5.1.2", - "css-what": "^5.0.1", - "ansi-regex": "5.0.1", - "json-schema": "0.4.0", - "ws": "^7.4.6", - "minimatch": "^3.0.5", - "terser": "^4.8.1", - "moment": "^2.29.4", - "loader-utils": "^2.0.3" - } -} diff --git a/dashboards-reports/public/app.scss b/dashboards-reports/public/app.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/dashboards-reports/public/application.tsx b/dashboards-reports/public/application.tsx deleted file mode 100644 index 5fc2379d..00000000 --- a/dashboards-reports/public/application.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { AppMountParameters, CoreStart } from '../../../src/core/public'; -import { AppPluginStartDependencies } from './types'; -import { ReportsDashboardsApp } from './components/app'; - -export const renderApp = ( - { notifications, http, chrome }: CoreStart, - { navigation }: AppPluginStartDependencies, - { appBasePath, element }: AppMountParameters -) => { - ReactDOM.render( - , - element - ); - - return () => ReactDOM.unmountComponentAtNode(element); -}; diff --git a/dashboards-reports/public/components/app.tsx b/dashboards-reports/public/components/app.tsx deleted file mode 100644 index 4091c0d7..00000000 --- a/dashboards-reports/public/components/app.tsx +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { FormattedMessage, I18nProvider } from '@osd/i18n/react'; -import { HashRouter as Router, Route, Switch } from 'react-router-dom'; - -import { - EuiPage, - EuiPageBody, - EuiPageContentBody, - EuiPageContentHeader, - EuiPageContentHeaderSection, -} from '@elastic/eui'; -import CSS from 'csstype'; -import { - CoreStart, - CoreSystem, - ChromeBreadcrumb, - IUiSettingsClient, -} from '../../../../src/core/public'; -import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; - -import { CreateReport } from './report_definitions/create/create_report_definition'; -import { Main } from './main/main'; -import { ReportDetails } from './main/report_details/report_details'; -import { ReportDefinitionDetails } from './main/report_definition_details/report_definition_details'; -import { EditReportDefinition } from './report_definitions/edit/edit_report_definition'; -import { i18n } from '@osd/i18n'; - -export interface CoreInterface { - http: CoreStart['http']; - uiSettings: IUiSettingsClient; - setBreadcrumbs: (newBreadcrumbs: ChromeBreadcrumb[]) => void; -} - -interface ReportsDashboardsAppDeps { - basename: string; - notifications: CoreStart['notifications']; - http: CoreStart['http']; - navigation: NavigationPublicPluginStart; - chrome: CoreStart['chrome']; -} - -const styles: CSS.Properties = { - float: 'left', - width: '100%', - maxWidth: '1600px', -}; - -export const ReportsDashboardsApp = ({ - basename, - notifications, - http, - navigation, - chrome, -}: ReportsDashboardsAppDeps) => { - // Render the application DOM. - return ( - - -
- - - - - - - - ( - - )} - /> - ( - - )} - /> - ( - - )} - /> - ( - - )} - /> - ( -
- )} - /> - - - - -
-
-
- ); -}; diff --git a/dashboards-reports/public/components/context_menu/context_menu.js b/dashboards-reports/public/components/context_menu/context_menu.js deleted file mode 100644 index 0b7485ab..00000000 --- a/dashboards-reports/public/components/context_menu/context_menu.js +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/* eslint-disable no-restricted-globals */ -//@ts-check -import { i18n } from '@osd/i18n'; -import $ from 'jquery'; -import { parse } from 'url'; -import { readStreamToFile } from '../main/main_utils'; -import { uiSettingsService } from '../utils/settings_service'; -import { - GENERATE_REPORT_PARAM, - GENERATE_REPORT_PARAM_REGEX, -} from '../visual_report/constants'; -import { generateReport } from '../visual_report/generate_report'; -import { - addSuccessOrFailureToast, - contextMenuCreateReportDefinition, - contextMenuViewReports, - displayLoadingModal, - getTimeFieldsFromUrl, - replaceQueryURL, -} from './context_menu_helpers'; -import { - getMenuItem, - popoverMenu, - popoverMenuDiscover, -} from './context_menu_ui'; - -const generateInContextReport = async ( - timeRanges, - queryUrl, - fileFormat, - rest = {} -) => { - displayLoadingModal(); - const baseUrl = queryUrl.substr(0, queryUrl.indexOf('?')); - // Add selected tenant info to url - try { - const tenant = await getTenantInfoIfExists(); - if (tenant) { - queryUrl = addTenantToURL(queryUrl, tenant); - } - } catch (error) { - addSuccessOrFailureToast('failure'); - console.log(`failed to get user tenant: ${error}`); - } - - let reportSource = ''; - if (/\/app\/dashboards/.test(baseUrl)) { - reportSource = 'Dashboard'; - } else if (/\/app\/visualize/.test(baseUrl)) { - reportSource = 'Visualization'; - } else if (/\/app\/discover/.test(baseUrl)) { - reportSource = 'Saved search'; - } - - // create query body - const contextMenuOnDemandReport = { - query_url: queryUrl, - time_from: timeRanges.time_from.valueOf(), - time_to: timeRanges.time_to.valueOf(), - report_definition: { - report_params: { - report_name: 'On_demand_report', - report_source: reportSource, - description: 'In-context report download', - core_params: { - base_url: baseUrl, - report_format: fileFormat, - time_duration: timeRanges.time_duration, - ...rest, - }, - }, - delivery: { - configIds: [''], - title: '', - textDescription: '', - htmlDescription: '', - }, - trigger: { - trigger_type: 'On demand', - }, - }, - }; - - fetch( - `../api/reporting/generateReport?${new URLSearchParams( - uiSettingsService.getSearchParams() - )}`, - { - headers: { - 'Content-Type': 'application/json', - 'osd-xsrf': 'reporting', - accept: '*/*', - 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6', - pragma: 'no-cache', - 'sec-fetch-dest': 'empty', - 'sec-fetch-mode': 'cors', - 'sec-fetch-site': 'same-origin', - }, - method: 'POST', - body: JSON.stringify(contextMenuOnDemandReport), - referrerPolicy: 'strict-origin-when-cross-origin', - mode: 'cors', - credentials: 'include', - } - ) - .then(async (response) => [response.status, await response.json()]) - .then(async ([status, data]) => { - if (status !== 200) { - if (status === 403) { - addSuccessOrFailureToast('permissionsFailure'); - } else if (status === 503) { - addSuccessOrFailureToast('timeoutFailure', reportSource); - } else { - addSuccessOrFailureToast('failure'); - } - } else if (fileFormat === 'pdf' || fileFormat === 'png') { - try { - await generateReport(data.reportId); - addSuccessOrFailureToast('success'); - } catch (error) { - console.error(error); - addSuccessOrFailureToast('failure'); - } - } else if (data.data) { - await readStreamToFile(data.data, fileFormat, data.filename); - } - $('#reportGenerationProgressModal').remove(); - }); -}; - -// try to match uuid and user entered custom-id followed by '?' in URL, which would be the saved search id for discover URL -// custom id example: v1s-f00-b4r1-01, Filebeat-Apache-Dashboard-ecs, -const getUuidFromUrl = () => window.location.href.match(/([0-9a-zA-Z-]+)\?/); -const isDiscover = () => window.location.href.includes('discover'); - -// open Download drop-down -$(function () { - $(document).on('click', '#downloadReport', function () { - const popoverScreen = document.querySelectorAll('body'); - if (popoverScreen) { - try { - const reportPopover = document.createElement('div'); - // eslint-disable-next-line no-unsanitized/property - reportPopover.innerHTML = isDiscover() - ? popoverMenuDiscover(getUuidFromUrl()) - : popoverMenu(getUuidFromUrl()); - popoverScreen[0].appendChild(reportPopover.children[0]); - $('#reportPopover').show(); - } catch (e) { - console.log('error displaying menu:', e); - } - } - }); - - // generate PDF onclick - $(document).on('click', '#generatePDF', function () { - const timeRanges = getTimeFieldsFromUrl(); - const queryUrl = replaceQueryURL(location.href); - generateInContextReport(timeRanges, queryUrl, 'pdf'); - }); - - // generate PNG onclick - $(document).on('click', '#generatePNG', function () { - const timeRanges = getTimeFieldsFromUrl(); - const queryUrl = replaceQueryURL(location.href); - generateInContextReport(timeRanges, queryUrl, 'png'); - }); - - // generate CSV onclick - $(document).on('click', '#generateCSV', function () { - const timeRanges = getTimeFieldsFromUrl(); - const queryUrl = replaceQueryURL(location.href); - const saved_search_id = getUuidFromUrl()[1]; - generateInContextReport(timeRanges, queryUrl, 'csv', { saved_search_id }); - }); - - // navigate to Create report definition page with report source and pre-set time range - $(document).on('click', '#createReportDefinition', function () { - contextMenuCreateReportDefinition(this.baseURI); - }); - - // redirect to Reporting home page - $(document).on('click', '#viewReports', function () { - contextMenuViewReports(); - }); - - // close popover menu on click outside - $('body').on('click', function (e) { - if ($(e.target).data('toggle') !== '#downloadReport') { - $('#reportPopover').remove(); - } - }); - - // close modal/toast - $(function () { - // close modal with 'x' in upper-right modal - $(document).on('click', '#closeReportGenerationModal', function () { - $('#reportGenerationProgressModal').remove(); - }); - - // close modal with the close EuiButton - $(document).on('click', '#closeReportGenerationModalButton', function () { - $('#reportGenerationProgressModal').remove(); - }); - - // close the toast that appears upon successful report generation - $(document).on('click', '#closeReportSuccessToast', function () { - $('#reportSuccessToast').remove(); - }); - - // close the toast that apepars upon failure of report generation - $(document).on('click', '#closeReportFailureToast', function () { - $('#reportFailureToast').remove(); - }); - - // close permissions failure toast - $(document).on('click', '#permissionsMissingErrorToast', function () { - $('#permissionsMissingErrorToast').remove(); - }); - }); - - checkURLParams(); - locationHashChanged(); -}); - -/* generate a report if flagged in URL params */ -const checkURLParams = async () => { - const [hash, query] = location.href.split('#')[1].split('?'); - const params = new URLSearchParams(query); - const id = params.get(GENERATE_REPORT_PARAM); - if (!id) return; - await new Promise((resolve) => setTimeout(resolve, 1000)); - displayLoadingModal(); - try { - await generateReport(id, 30000); - window.history.replaceState( - {}, - '', - `#${hash}?${query.replace(GENERATE_REPORT_PARAM_REGEX, '')}` - ); - addSuccessOrFailureToast('success'); - } catch (error) { - console.error(error); - addSuccessOrFailureToast('failure'); - } finally { - $('#reportGenerationProgressModal').remove(); - } -}; - -const isDiscoverNavMenu = (navMenu) => { - return ( - navMenu[0].children.length === 5 && - ($('[data-test-subj="breadcrumb first"]').prop('title') === 'Discover' || - $('[data-test-subj="breadcrumb first last"]').prop('title') === - 'Discover') - ); -}; - -const isDashboardNavMenu = (navMenu) => { - return ( - (navMenu[0].children.length === 4 || navMenu[0].children.length === 6) && - $('[data-test-subj="breadcrumb first"]').prop('title') === 'Dashboard' - ); -}; - -const isVisualizationNavMenu = (navMenu) => { - return ( - navMenu[0].children.length === 3 && - $('[data-test-subj="breadcrumb first"]').prop('title') === 'Visualize' - ); -}; - -function locationHashChanged() { - const observer = new MutationObserver(function (mutations) { - const navMenu = document.querySelectorAll( - 'span.osdTopNavMenu__wrapper > nav.euiHeaderLinks > div.euiHeaderLinks__list' - ); - if ( - navMenu && - navMenu.length && - (isDiscoverNavMenu(navMenu) || - isDashboardNavMenu(navMenu) || - isVisualizationNavMenu(navMenu)) - ) { - try { - if ($('#downloadReport').length) { - return; - } - const menuItem = document.createElement('div'); - menuItem.innerHTML = getMenuItem( - i18n.translate('opensearch.reports.menu.name', { - defaultMessage: 'Reporting', - }) - ); - navMenu[0].insertBefore(menuItem.children[0], navMenu[0].lastChild); - } catch (e) { - console.log(e); - } finally { - observer.disconnect(); - } - } - }); - - // Start observing - observer.observe(document.body, { - //document.body is node target to observe - childList: true, //This is a must have for the observer with subtree - subtree: true, //Set to true if changes must also be observed in descendants. - }); -} - -$(window).one('hashchange', function (e) { - locationHashChanged(); -}); -/** - * for navigating to tabs from OpenSearch Dashboards sidebar, it uses history.pushState, which doesn't trigger onHashchange. - * https://stackoverflow.com/questions/4570093/how-to-get-notified-about-changes-of-the-history-via-history-pushstate/4585031 - */ -(function (history) { - const pushState = history.pushState; - history.pushState = function (state) { - if (typeof history.onpushstate === 'function') { - history.onpushstate({ state: state }); - } - return pushState.apply(history, arguments); - }; -})(window.history); - -window.onpopstate = history.onpushstate = () => { - locationHashChanged(); -}; - -async function getTenantInfoIfExists() { - const res = await fetch(`../api/v1/multitenancy/tenant`, { - headers: { - 'Content-Type': 'application/json', - 'osd-xsrf': 'reporting', - accept: '*/*', - 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6', - pragma: 'no-cache', - 'sec-fetch-dest': 'empty', - 'sec-fetch-mode': 'cors', - 'sec-fetch-site': 'same-origin', - }, - method: 'GET', - referrerPolicy: 'strict-origin-when-cross-origin', - mode: 'cors', - credentials: 'include', - }) - .then((response) => { - if (response.status === 404) { - // endpoint doesn't exist, security plugin is not enabled. - return undefined; - } else { - return response.text(); - } - }) - .then((tenant) => { - if (tenant === '') { - tenant = 'global'; - } else if (tenant === '__user__') { - tenant = 'private'; - } - return tenant; - }); - - return res; -} - -// helper function to add tenant info to url(if tenant is available) -function addTenantToURL(url, userRequestedTenant) { - // build fake url from relative url - const fakeUrl = `http://opensearch.com${url}`; - const tenantKey = 'security_tenant'; - const tenantKeyAndValue = - tenantKey + '=' + encodeURIComponent(userRequestedTenant); - - const { pathname, search } = parse(fakeUrl); - const queryDelimiter = !search ? '?' : '&'; - // The url parser returns null if the search is empty. Change that to an empty - // string so that we can use it to build the values later - if (search && search.toLowerCase().indexOf(tenantKey) > -1) { - // If we for some reason already have a tenant in the URL we skip any updates - return url; - } - - // A helper for finding the part in the string that we want to extend/replace - const valueToReplace = pathname + (search || ''); - const replaceWith = valueToReplace + queryDelimiter + tenantKeyAndValue; - - return url.replace(valueToReplace, replaceWith); -} diff --git a/dashboards-reports/public/components/context_menu/context_menu_helpers.js b/dashboards-reports/public/components/context_menu/context_menu_helpers.js deleted file mode 100644 index 3ebe5d76..00000000 --- a/dashboards-reports/public/components/context_menu/context_menu_helpers.js +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import dateMath from '@elastic/datemath'; -import moment from 'moment'; -import { - reportGenerationInProgressModal, - reportGenerationSuccess, - reportGenerationFailure, - permissionsMissingOnGeneration, -} from './context_menu_ui'; -import { timeRangeMatcher } from '../utils/utils'; -import { unhashUrl } from '../../../../../src/plugins/opensearch_dashboards_utils/public'; - -const getReportSourceURL = (baseURI) => { - const url = baseURI.substr(0, baseURI.indexOf('?')); - const reportSourceId = url.substr(url.lastIndexOf('/') + 1, url.length); - return reportSourceId; -}; - -export const contextMenuViewReports = () => - window.location.assign('reports-dashboards#/'); - -export const getTimeFieldsFromUrl = () => { - const url = unhashUrl(window.location.href); - - let [, fromDateString, toDateString] = url.match(timeRangeMatcher); - fromDateString = decodeURIComponent(fromDateString.replace(/[']+/g, '')); - // convert time range to from date format in case time range is relative - const fromDateFormat = dateMath.parse(fromDateString); - toDateString = decodeURIComponent(toDateString.replace(/[']+/g, '')); - const toDateFormat = dateMath.parse(toDateString, { roundUp: true }); - - const timeDuration = moment.duration(toDateFormat.diff(fromDateFormat)); - - return { - time_from: fromDateFormat, - time_to: toDateFormat, - time_duration: timeDuration.toISOString(), - }; -}; - -export const contextMenuCreateReportDefinition = (baseURI) => { - const reportSourceId = getReportSourceURL(baseURI); - let reportSource = ''; - const timeRanges = getTimeFieldsFromUrl(); - - // check report source - if (/\/app\/dashboards/.test(baseURI)) { - reportSource = 'dashboard:'; - } else if (/\/app\/visualize/.test(baseURI)) { - reportSource = 'visualize:'; - } else if (/\/app\/discover/.test(baseURI)) { - reportSource = 'discover:'; - } - reportSource += reportSourceId.toString(); - window.location.assign( - `reports-dashboards#/create?previous=${reportSource}?timeFrom=${timeRanges.time_from.toISOString()}?timeTo=${timeRanges.time_to.toISOString()}` - ); -}; - -export const displayLoadingModal = () => { - const opensearchDashboardsBody = document.getElementById( - 'opensearch-dashboards-body' - ); - if (opensearchDashboardsBody) { - try { - const loadingModal = document.createElement('div'); - loadingModal.innerHTML = reportGenerationInProgressModal(); - opensearchDashboardsBody.appendChild(loadingModal.children[0]); - } catch (e) { - console.log('error displaying loading modal:', e); - } - } -}; - -export const addSuccessOrFailureToast = (status, reportSource) => { - const generateToast = document.querySelectorAll('.euiGlobalToastList'); - if (generateToast) { - try { - const generateInProgressToast = document.createElement('div'); - if (status === 'success') { - generateInProgressToast.innerHTML = reportGenerationSuccess(); - setTimeout(function () { - document.getElementById('reportSuccessToast').style.display = 'none'; - }, 6000); // closes toast automatically after 6s - } else if (status === 'failure') { - generateInProgressToast.innerHTML = reportGenerationFailure(); - setTimeout(function () { - document.getElementById('reportFailureToast').style.display = 'none'; - }, 6000); - } else if (status === 'timeoutFailure') { - generateInProgressToast.innerHTML = reportGenerationFailure( - 'Error generating report.', - `Timed out generating on-demand report from ${reportSource}. Try again later.` - ); - setTimeout(function () { - document.getElementById('reportFailureToast').style.display = 'none'; - }, 6000); - } else if (status === 'permissionsFailure') { - generateInProgressToast.innerHTML = permissionsMissingOnGeneration(); - setTimeout(function () { - document.getElementById( - 'permissionsMissingErrorToast' - ).style.display = 'none'; - }, 6000); - } - generateToast[0].appendChild(generateInProgressToast.children[0]); - } catch (e) { - console.log('error displaying toast', e); - } - } -}; - -export const replaceQueryURL = (pageUrl) => { - // we unhash the url in case OpenSearch Dashboards advanced UI setting 'state:storeInSessionStorage' is turned on - const unhashedUrl = new URL(unhashUrl(pageUrl)); - let queryUrl = unhashedUrl.pathname + unhashedUrl.hash; - let [, fromDateStringMatch, toDateStringMatch] = - queryUrl.match(timeRangeMatcher); - const fromDateString = decodeURIComponent(fromDateStringMatch.replace(/[']+/g, '')); - - // convert time range to from date format in case time range is relative - const fromDateFormat = dateMath.parse(fromDateString); - const toDateString = decodeURIComponent(toDateStringMatch.replace(/[']+/g, '')); - const toDateFormat = dateMath.parse(toDateString, { roundUp: true }); - - // replace to and from dates with absolute date - queryUrl = queryUrl.replace( - fromDateStringMatch, - "'" + fromDateFormat.toISOString() + "'" - ); - queryUrl = queryUrl.replace( - toDateStringMatch, - "'" + toDateFormat.toISOString() + "'" - ); - return queryUrl; -}; diff --git a/dashboards-reports/public/components/context_menu/context_menu_ui.js b/dashboards-reports/public/components/context_menu/context_menu_ui.js deleted file mode 100644 index 119b7bae..00000000 --- a/dashboards-reports/public/components/context_menu/context_menu_ui.js +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { i18n } from '@osd/i18n'; - -export const getMenuItem = (name) => { - return ` - - `; -}; - -export const popoverMenu = (savedObjectAvailable) => { - const buttonClass = savedObjectAvailable - ? 'euiContextMenuItem' - : 'euiContextMenuItem euiContextMenuItem-isDisabled'; - const button = savedObjectAvailable ? 'button' : 'button disabled'; - const popoverHeight = savedObjectAvailable ? '395px' : '380px'; - const message = savedObjectAvailable - ? i18n.translate('opensearch.reports.menu.visual.waitPrompt', { - defaultMessage: - 'Files can take a minute or two to generate depending on the size of your source data.', - }) - : i18n.translate('opensearch.reports.menu.visual.savePrompt', { - defaultMessage: - 'Save this Visualization/Dashboard to enable PDF/PNG reports.', - }); - - const arrowRight = '100px'; - const popoverRight = '77px'; - - return ` -
-
-
-
-
-
- -
-
- `; -}; - -// TODO: merge this function and popoverMenu() into one -export const popoverMenuDiscover = (savedObjectAvailable) => { - const buttonClass = savedObjectAvailable - ? 'euiContextMenuItem' - : 'euiContextMenuItem euiContextMenuItem-isDisabled'; - const button = savedObjectAvailable ? 'button' : 'button disabled'; - const popoverHeight = savedObjectAvailable ? '354px' : '322px'; - const message = savedObjectAvailable - ? i18n.translate('opensearch.reports.menu.csv.waitPrompt', { - defaultMessage: - 'Files can take a minute or two to generate depending on the size of your source data.', - }) - : i18n.translate('opensearch.reports.menu.csv.savePrompt', { - defaultMessage: 'Save this search to enable CSV reports.', - }); - const arrowRight = '60px'; - const popoverRight = '77px'; - - return ` -
-
-
-
-
-
- -
-
- `; -}; - -export const permissionsMissingOnGeneration = () => { - return ` -
-

${i18n.translate( - 'opensearch.reports.menu.newNotificationAppears', - { defaultMessage: 'A new notification appears' } - )}

-
- - ${i18n.translate( - 'opensearch.reports.menu.errorGeneratingReport', - { defaultMessage: 'Error generating report.' } - )} -
- -
-

${i18n.translate('opensearch.reports.menu.insufficientPermissions', { - defaultMessage: - 'Insufficient permissions. Reach out to your OpenSearch Dashboards administrator.', - })}

-
-
- `; -}; - -export const reportGenerationSuccess = () => { - return ` -
-

A new notification appears

-
- - ${i18n.translate( - 'opensearch.reports.menu.successfullyGenerated', - { defaultMessage: 'Successfully generated report.' } - )} -
- - -
- `; -}; - -export const reportGenerationFailure = ( - title = i18n.translate('opensearch.reports.menu.downloadError', { - defaultMessage: 'Download error', - }), - text = i18n.translate('opensearch.reports.menu.errorGeneratingThisReport', { - defaultMessage: 'There was an error generating this report.', - }) -) => { - return ` -
-

A new notification appears

-
- - ${title} -
- -
-

${text}

-
-
- `; -}; - -export const reportGenerationInProgressModal = () => { - return ` -
-
-
-
-
- -
-
-
-
-

${i18n.translate( - 'opensearch.reports.menu.progress.generatingReport', - { defaultMessage: 'Generating report' } - )}

-
-
-
-
-
-
${i18n.translate( - 'opensearch.reports.menu.progress.preparingYourFile', - { defaultMessage: 'Preparing your file for download.' } - )}
-
${i18n.translate( - 'opensearch.reports.menu.progress.youCanClose', - { - defaultMessage: - 'Please keep this dialog open while report is being generated.', - } - )}
-
-
-
-
-
-
-
-
-
-
-
-
- `; -}; diff --git a/dashboards-reports/public/components/main/__tests__/__snapshots__/main.test.tsx.snap b/dashboards-reports/public/components/main/__tests__/__snapshots__/main.test.tsx.snap deleted file mode 100644 index 7f552895..00000000 --- a/dashboards-reports/public/components/main/__tests__/__snapshots__/main.test.tsx.snap +++ /dev/null @@ -1,3908 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`
panel render component 1`] = ` -
-
-
-
-

- Reports - -

- ( - 0 - ) -

-

-
- - - -
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- -
-

- No reports to display -

- -
-
-
-
- Create a report definition, or share/download a report from a dashboard, saved search or visualization. -
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-

- Report definitions -

- - ( - 0 - ) -

-

-
-
- -
- - - -
-
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- -
-

- No report definitions to display -

- -
-
-
-
- Create a new report definition to get started -
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-`; - -exports[`
panel render component after create success 1`] = ` -
-
-
-
-

- Reports - -

- ( - 0 - ) -

-

-
- - - -
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- -
-

- No reports to display -

- -
-
-
-
- Create a report definition, or share/download a report from a dashboard, saved search or visualization. -
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-

- Report definitions -

- - ( - 0 - ) -

-

-
-
- -
- - - -
-
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- -
-

- No report definitions to display -

- -
-
-
-
- Create a new report definition to get started -
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-

- A new notification appears -

-
- - - Successfully created report definition. - -
- -
-
-
-`; - -exports[`
panel render component after delete success 1`] = ` -
-
-
-
-

- Reports - -

- ( - 0 - ) -

-

-
- - - -
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- -
-

- No reports to display -

- -
-
-
-
- Create a report definition, or share/download a report from a dashboard, saved search or visualization. -
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-

- Report definitions -

- - ( - 0 - ) -

-

-
-
- -
- - - -
-
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- -
-

- No report definitions to display -

- -
-
-
-
- Create a new report definition to get started -
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-

- A new notification appears -

-
- - - Successfully deleted report definition. - -
- -
-
-
-`; - -exports[`
panel render component after edit success 1`] = ` -
-
-
-
-

- Reports - -

- ( - 0 - ) -

-

-
- - - -
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- -
-

- No reports to display -

- -
-
-
-
- Create a report definition, or share/download a report from a dashboard, saved search or visualization. -
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-

- Report definitions -

- - ( - 0 - ) -

-

-
-
- -
- - - -
-
-
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- -
-

- No report definitions to display -

- -
-
-
-
- Create a new report definition to get started -
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-

- A new notification appears -

-
- - - Successfully updated report definition. - -
- -
-
-
-`; diff --git a/dashboards-reports/public/components/main/__tests__/__snapshots__/report_definitions_table.test.tsx.snap b/dashboards-reports/public/components/main/__tests__/__snapshots__/report_definitions_table.test.tsx.snap deleted file mode 100644 index a2a56bfd..00000000 --- a/dashboards-reports/public/components/main/__tests__/__snapshots__/report_definitions_table.test.tsx.snap +++ /dev/null @@ -1,954 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel render component 1`] = ` -
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- Name -
-
- -
-
-
- Source -
-
- -
-
-
- Type -
-
- - Download - -
-
-
- Schedule details -
-
- -
-
-
- Last Updated -
-
-
- Invalid Date @ Invalid Date -
-
-
-
- Status -
-
- - Created - -
-
-
- Name -
-
- -
-
-
- Source -
-
- -
-
-
- Type -
-
- - Download - -
-
-
- Schedule details -
-
- -
-
-
- Last Updated -
-
-
- Invalid Date @ Invalid Date -
-
-
-
- Status -
-
- - Created - -
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-`; - -exports[` panel render empty table 1`] = ` -
-
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Schedule details - - - - - - Last Updated - - - - -
-
- -
-

- No report definitions to display -

- -
-
-
-
- Create a new report definition to get started -
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/main/__tests__/__snapshots__/reports_table.test.tsx.snap b/dashboards-reports/public/components/main/__tests__/__snapshots__/reports_table.test.tsx.snap deleted file mode 100644 index d2593c6e..00000000 --- a/dashboards-reports/public/components/main/__tests__/__snapshots__/reports_table.test.tsx.snap +++ /dev/null @@ -1,1025 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel render component 1`] = ` -
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- Name -
-
- -
-
-
- Source -
- -
-
- Type -
-
- - Test type - -
-
-
- Creation time -
-
-
- Invalid Date @ Invalid Date -
-
-
-
- State -
-
- - Created - -
-
-
- Generate -
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-`; - -exports[` panel render empty component 1`] = ` -
-
-
-
-
- -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - Name - - - - - - Source - - - - - - - - Creation time - - - - - - - - Generate - - -
-
- -
-

- No reports to display -

- -
-
-
-
- Create a report definition, or share/download a report from a dashboard, saved search or visualization. -
- -
-
- -
-
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/main/__tests__/__utils__/main_utils_test_utils.tsx b/dashboards-reports/public/components/main/__tests__/__utils__/main_utils_test_utils.tsx deleted file mode 100644 index 28e8e36b..00000000 --- a/dashboards-reports/public/components/main/__tests__/__utils__/main_utils_test_utils.tsx +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const reportTableMockResponse = [ - { - _id: '123456', - _index: 'test', - _score: 1, - _source: { - last_updated: 123456789, - query_url: 'test_query_url_value.com', - report_definition: { - delivery: { - delivery_type: 'OpenSearch Dashboards user', - delivery_params: { - opensearch_dashboards_recipients: [], - }, - }, - report_params: { - report_name: 'Test report table response', - description: 'description', - report_source: 'Dashboard', - core_params: { - base_url: 'test_base_url.com', - header: '', - footer: '', - report_format: 'pdf', - time_duration: 'PT30M', - window_height: 800, - window_width: 1200, - }, - }, - trigger: { - trigger_type: 'On demand', - }, - state: 'Created', - time_created: 123456780, - time_from: 123456780, - time_to: 123456799, - }, - }, - _type: 'doc', - }, -]; - -export const mockReportsTableItems = [ - { - id: '123456', - reportName: 'Test report table response', - type: 'On demand', - sender: '—', - opensearchDashboardsRecipients: '—', - emailRecipients: '—', - reportSource: 'Dashboard', - timeCreated: undefined, - state: undefined, - url: 'test_query_url_value.com', - format: 'pdf', - }, -]; - -export const reportDefinitionsTableMockResponse = [ - { - _index: 'report_definition', - _type: '_doc', - _id: '42MmKXUBDW-VXnk7pa6d', - _score: 1, - _source: { - report_definition: { - report_params: { - report_name: 'schedule definition', - report_source: 'Dashboard', - description: 'description', - core_params: { - base_url: 'test_base_url.com', - report_format: 'pdf', - header: '', - footer: '', - time_duration: 'PT30M', - window_width: 1200, - window_height: 800, - }, - }, - delivery: { - delivery_type: 'OpenSearch Dashboards user', - delivery_params: { opensearch_dashboards_recipients: [] }, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - enabled_time: 1602713178321, - schedule: { - period: 1, - interval: 'DAYS', - }, - schedule_type: 'Recurring', - enabled: false, - }, - }, - time_created: 1602713199604, - last_updated: 1602713211007, - status: 'Disabled', - }, - }, - }, -]; - -export const reportDefinitionsTableMockContent = [ - { - id: '42MmKXUBDW-VXnk7pa6d', - reportName: 'schedule definition', - type: 'Schedule', - owner: '—', - source: 'Dashboard', - baseUrl: 'test_base_url.com', - lastUpdated: 1602713211007, - details: 'Recurring', - status: 'Disabled', - }, -]; diff --git a/dashboards-reports/public/components/main/__tests__/main.test.tsx b/dashboards-reports/public/components/main/__tests__/main.test.tsx deleted file mode 100644 index 3142326e..00000000 --- a/dashboards-reports/public/components/main/__tests__/main.test.tsx +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { Main } from '../main'; -import httpClientMock from '../../../../test/httpMockClient'; -import { configure, mount } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; -import { act } from 'react-dom/test-utils'; - -function setBreadcrumbs(array: []) { - jest.fn(); -} - -describe('
panel', () => { - configure({ adapter: new Adapter() }); - test('render component', (done) => { - window = Object.create(window); - Object.defineProperty(window, 'location', { - configurable: true, - value: { - assign: jest.fn(), - href: 'reports-dashboards#/', - }, - }); - - const { container } = render( -
- ); - - expect(container.firstChild).toMatchSnapshot(); - done(); - }); - - test('render component after create success', async () => { - delete window.location; - - Object.defineProperty(window, 'location', { - configurable: true, - value: { - assign: jest.fn(), - href: 'reports-dashboards#/create=success', - }, - }); - - const { container } = render( -
- ); - - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render component after edit success', async () => { - delete window.location; - - Object.defineProperty(window, 'location', { - configurable: true, - value: { - assign: jest.fn(), - href: 'reports-dashboards#/edit=success', - }, - }); - - const { container } = render( -
- ); - - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render component after delete success', async () => { - delete window.location; - - Object.defineProperty(window, 'location', { - configurable: true, - value: { - assign: jest.fn(), - href: 'reports-dashboards#/delete=success', - }, - }); - - const { container } = render( -
- ); - - expect(container.firstChild).toMatchSnapshot(); - }) - - test('test refresh reports definitions button', async () => { - const promise = Promise.resolve(); - const data = [ - { - _id: 'abcdefg', - _source: { - query_url: '/app/visualize/edit/1234567890', - state: 'Created', - time_created: 123456789, - time_from: 123456789, - time_to: 1234567890, - report_definition: { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'png', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: {}, - }, - }, - }, - }, - ]; - - httpClientMock.get = jest.fn().mockResolvedValue({ - data, - }); - - const component = mount( -
- ); - await act(() => promise); - - const generate = component.find('button').at(7); - generate.simulate('click'); - await act(() => promise); - }); - - test('test refresh reports table button', async () => { - const promise = Promise.resolve(); - const data = [ - { - _id: 'abcdefg', - _source: { - query_url: '/app/visualize/edit/1234567890', - state: 'Created', - time_created: 123456789, - time_from: 123456789, - time_to: 1234567890, - report_definition: { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'png', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: {}, - }, - }, - }, - }, - ]; - - httpClientMock.get = jest.fn().mockResolvedValue({ - data, - }); - - const component = mount( -
- ); - await act(() => promise); - - const generate = component.find('button').at(0); - generate.simulate('click'); - await act(() => promise); - }); - - // TODO: mock catch() error response to contain status code - test.skip('test error toasts posted', async () => { - jest.spyOn(console, 'log').mockImplementation(() => {}); // silence console log error from main - const promise = Promise.resolve(); - - httpClientMock.get = jest.fn().mockResolvedValue({ - response: null, - }); - - const component = mount( -
- ); - const generate = component.find('button').at(7); - try { - generate.simulate('click'); - await act(() => promise); - } catch (e) { - await act(() => promise); - } - }); -}); diff --git a/dashboards-reports/public/components/main/__tests__/main_utils.test.tsx b/dashboards-reports/public/components/main/__tests__/main_utils.test.tsx deleted file mode 100644 index 8f852a45..00000000 --- a/dashboards-reports/public/components/main/__tests__/main_utils.test.tsx +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - humanReadableDate, - extractFilename, - extractFileFormat, - getFileFormatPrefix, - addReportsTableContent, - addReportDefinitionsTableContent, - removeDuplicatePdfFileFormat, - readStreamToFile, - generateReportFromDefinitionId, - generateReportById, -} from '../main_utils'; -import { - reportDefinitionsTableMockResponse, - mockReportsTableItems, - reportTableMockResponse, - reportDefinitionsTableMockContent, -} from './__utils__/main_utils_test_utils'; -import sinon from 'sinon'; -import httpClientMock from '../../../../test/httpMockClient'; - -describe('main_utils tests', () => { - global.URL.createObjectURL = jest.fn(); - let mockElement = document.createElement('a'); - mockElement.download = 'string'; - mockElement.click = function name() {}; - sinon.stub(document, 'createElement').returns(mockElement); - - test('test humanReadableDate', () => { - const readableDate = new Date(2018, 11, 24, 10, 33, 30); - const humanReadable = humanReadableDate(readableDate); - - expect(humanReadable).toBe('Mon Dec 24 2018 @ 10:33:30 AM'); - }); - - test('test extractFileName', () => { - const fullFile = 'test_file_name_extracted_correctly.pdf'; - const fileName = extractFilename(fullFile); - - expect(fileName).toBe('test_file_name_extracted_correctly'); - }); - - test('test extractFileFormat', () => { - const fullFile = 'test_file_format_extracted_correctly.png'; - const fileFormat = extractFileFormat(fullFile); - - expect(fileFormat).toBe('png'); - }); - - test('test getFileFormatPrefix', () => { - const fileFormat = 'pdf'; - const fileFormatPrefix = getFileFormatPrefix(fileFormat); - - expect(fileFormatPrefix).toBe('data:pdf;base64,'); - }); - - test('test addReportsTableContent', () => { - const reportsTableItems = addReportsTableContent(reportTableMockResponse); - - expect(reportsTableItems).toStrictEqual(mockReportsTableItems); - }); - - test('test addReportDefinitionsTableContent', () => { - const reportDefinitionsTableItems = addReportDefinitionsTableContent( - reportDefinitionsTableMockResponse - ); - - expect(reportDefinitionsTableItems).toStrictEqual( - reportDefinitionsTableMockContent - ); - }); - - test('test removeDuplicatePdfFileFormat', () => { - const duplicateFormat = 'test_duplicate_remove.pdf.pdf'; - const duplicateRemoved = removeDuplicatePdfFileFormat(duplicateFormat); - - expect(duplicateRemoved).toBe('test_duplicate_remove.pdf'); - }); - - test('test readStreamToFile csv compile', () => { - const stream = - 'category,customer_gender\n' + - 'c1,Male\n' + - 'c2,Male\n' + - 'c3,Male\n' + - 'c4,Male\n' + - 'c5,Male'; - - const fileFormat = 'csv'; - const fileName = 'test_data_report.csv'; - readStreamToFile(stream, fileFormat, fileName); - }); - - test('test readStreamToFile pdf compile', () => { - const stream = 'data:pdf;base64,zxvniaorbguw40absdoanlsdf'; - const fileFormat = 'pdf'; - const fileName = 'test_pdf_report.pdf'; - readStreamToFile(stream, fileFormat, fileName); - }); - - test('test generateReport compile', () => { - const reportDefinitionId = '1'; - generateReportFromDefinitionId(reportDefinitionId, httpClientMock); - }); - - test('test generateReportById compile', () => { - const reportId = '1'; - const handleSuccessToast = jest.fn(); - const handleErrorToast = jest.fn(); - generateReportById( - reportId, - httpClientMock, - handleSuccessToast, - handleErrorToast - ); - }); - - test('test generateReportById timeout error handling', async () => { - expect.assertions(1); - const reportId = '1'; - const handleSuccessToast = jest.fn(); - const handleErrorToast = jest.fn(); - const handlePermissionsMissingToast = jest.fn(); - - httpClientMock.get.mockReturnValue( - Promise.reject({ body: { statusCode: 503 } }) - ); - - await generateReportById( - reportId, - httpClientMock, - handleSuccessToast, - handleErrorToast, - handlePermissionsMissingToast - ); - expect(handleErrorToast).toHaveBeenCalledWith( - 'Error generating report.', - 'Timed out generating report ID 1. Try again later.' - ); - }); -}); diff --git a/dashboards-reports/public/components/main/__tests__/report_definitions_table.test.tsx b/dashboards-reports/public/components/main/__tests__/report_definitions_table.test.tsx deleted file mode 100644 index c6ff2d63..00000000 --- a/dashboards-reports/public/components/main/__tests__/report_definitions_table.test.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { ReportDefinitions } from '../report_definitions_table'; -import { configure, mount } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; - -const pagination = { - initialPageSize: 10, - pageSizeOptions: [8, 10, 13], -}; - -describe(' panel', () => { - configure({ adapter: new Adapter() }); - test('render component', () => { - let reportDefinitionsTableContent = [ - { - reportName: 'test report name', - type: 'Download', - owner: 'davidcui', - source: 'Dashboard', - lastUpdated: 'test updated time', - details: '', - status: 'Created', - }, - { - reportName: 'test report name 2', - type: 'Download', - owner: 'davidcui', - source: 'Dashboard', - lastUpdated: 'test updated time', - details: '', - status: 'Created', - }, - ]; - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render empty table', () => { - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - }); - - test('test click on report definition row', async () => { - window = Object.create(window); - Object.defineProperty(window, 'location', { - configurable: true, - value: { - assign: jest.fn(), - }, - }); - let promise = Promise.resolve(); - let reportDefinitionsTableContent = [ - { - reportName: 'test report name', - type: 'Download', - owner: 'davidcui', - source: 'Dashboard', - lastUpdated: 'test updated time', - details: '', - status: 'Created', - }, - { - reportName: 'test report name 2', - type: 'Download', - owner: 'davidcui', - source: 'Dashboard', - lastUpdated: 'test updated time', - details: '', - status: 'Created', - }, - ]; - - const component = mount( - - ); - - const nameLink = component.find('button').at(3); - nameLink.simulate('click'); - }); -}); diff --git a/dashboards-reports/public/components/main/__tests__/reports_table.test.tsx b/dashboards-reports/public/components/main/__tests__/reports_table.test.tsx deleted file mode 100644 index 0ec69731..00000000 --- a/dashboards-reports/public/components/main/__tests__/reports_table.test.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { ReportsTable } from '../reports_table'; -import httpClientMock from '../../../../test/httpMockClient'; -import { configure, mount } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; -import { act } from 'react-dom/test-utils'; - -const pagination = { - initialPageSize: 10, - pageSizeOptions: [8, 10, 13], -}; - -describe(' panel', () => { - configure({ adapter: new Adapter() }); - test('render component', () => { - let reportsTableItems = [ - { - id: '1', - reportName: 'test report table item', - type: 'Test type', - sender: 'N/A', - recipients: 'N/A', - reportSource: 'Test report source', - lastUpdated: 'test updated time', - state: 'Created', - url: 'Test url', - }, - ]; - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render empty component', async () => { - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - }); - - test('click on generate button', async () => { - const promise = Promise.resolve(); - let reportsTableItems = [ - { - id: '1', - reportName: 'test report table item', - type: 'Test type', - sender: 'N/A', - recipients: 'N/A', - reportSource: 'Test report source', - lastUpdated: 'test updated time', - state: 'Created', - url: 'Test url', - }, - ]; - - const component = mount( - - ); - - const generateClick = component.find('button').at(6); - // console.log(generateClick.debug()); - generateClick.simulate('click'); - await act(() => promise); - }); -}); diff --git a/dashboards-reports/public/components/main/index.ts b/dashboards-reports/public/components/main/index.ts deleted file mode 100644 index 7dd7bc03..00000000 --- a/dashboards-reports/public/components/main/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { Main } from './main'; -export { ReportDetails } from './report_details/report_details'; diff --git a/dashboards-reports/public/components/main/loading_modal/index.ts b/dashboards-reports/public/components/main/loading_modal/index.ts deleted file mode 100644 index 2f6c609b..00000000 --- a/dashboards-reports/public/components/main/loading_modal/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - export { GenerateReportLoadingModal } from './loading_modal'; \ No newline at end of file diff --git a/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx b/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx deleted file mode 100644 index 61c53968..00000000 --- a/dashboards-reports/public/components/main/loading_modal/loading_modal.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - EuiOverlayMask, - EuiModal, - EuiModalHeader, - EuiTitle, - EuiText, - EuiModalBody, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiButton, -} from '@elastic/eui'; -import { i18n } from '@osd/i18n'; -import React, { useState } from 'react'; - -export function GenerateReportLoadingModal(props: { setShowLoading: any }) { - const { setShowLoading } = props; - - const [isModalVisible, setIsModalVisible] = useState(true); - - const closeModal = () => { - setIsModalVisible(false); - setShowLoading(false); - }; - const showModal = () => setIsModalVisible(true); - - return ( -
- - - - - -

- {i18n.translate( - 'opensearch.reports.loading.generatingReport', - { defaultMessage: 'Generating report' } - )} -

-
-
-
- - - {i18n.translate('opensearch.reports.loading.preparingYourFile', { - defaultMessage: 'Preparing your file for download.', - })} - - - {i18n.translate('opensearch.reports.loading.youCanClose', { - defaultMessage: - 'Please keep this dialog open while report is being generated.', - })} - - - - - - - - - -
-
-
- ); -} diff --git a/dashboards-reports/public/components/main/main.tsx b/dashboards-reports/public/components/main/main.tsx deleted file mode 100644 index bfbb8cb9..00000000 --- a/dashboards-reports/public/components/main/main.tsx +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { Fragment, useState, useEffect } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiButton, - EuiTitle, - // @ts-ignore - EuiHorizontalRule, - EuiSpacer, - EuiPanel, - EuiGlobalToastList, -} from '@elastic/eui'; -import { ReportsTable } from './reports_table'; -import { ReportDefinitions } from './report_definitions_table'; -import { - addReportsTableContent, - addReportDefinitionsTableContent, -} from './main_utils'; -import CSS from 'csstype'; -import { - permissionsMissingToast, - permissionsMissingActions, -} from '../utils/utils'; - -const reportCountStyles: CSS.Properties = { - color: 'gray', - display: 'inline', -}; - -export function Main(props) { - const [reportsTableContent, setReportsTableContent] = useState([]); - const [ - reportDefinitionsTableContent, - setReportDefinitionsTableContent, - ] = useState([]); - const [toasts, setToasts] = useState([]); - - const addPermissionsMissingDownloadToastHandler = () => { - const toast = permissionsMissingToast( - permissionsMissingActions.GENERATING_REPORT - ); - setToasts(toasts.concat(toast)); - }; - - const handlePermissionsMissingDownloadToast = () => { - addPermissionsMissingDownloadToastHandler(); - }; - - const addReportsTableContentErrorToastHandler = (errorType: string) => { - let toast = {}; - if (errorType === 'permissions') { - toast = permissionsMissingToast( - permissionsMissingActions.LOADING_REPORTS_TABLE - ); - } else if (errorType === 'API') { - toast = { - title: i18n.translate( - 'opensearch.reports.main.errorGeneratingReportsTable.', - { defaultMessage: 'Error generating reports table.' } - ), - color: 'danger', - iconType: 'alert', - id: 'reportsTableErrorToast', - }; - } - setToasts(toasts.concat(toast)); - }; - - const handleReportsTableErrorToast = (errorType: string) => { - addReportsTableContentErrorToastHandler(errorType); - }; - - const addReportDefinitionsTableErrorToastHandler = (errorType: string) => { - let toast = {}; - if (errorType === 'permissions') { - toast = permissionsMissingToast( - permissionsMissingActions.LOADING_DEFINITIONS_TABLE - ); - } else if (errorType === 'API') { - toast = { - title: i18n.translate( - 'opensearch.reports.main.errorGeneratingReportDefinitionsTable.', - { defaultMessage: 'Error generating report definitions table.' } - ), - color: 'danger', - iconType: 'alert', - id: 'reportDefinitionsTableErrorToast', - }; - } - setToasts(toasts.concat(toast)); - }; - - const handleReportDefinitionsTableErrorToast = (errorType: string) => { - addReportDefinitionsTableErrorToastHandler(errorType); - }; - - const addErrorOnDemandDownloadToastHandler = ( - title = i18n.translate('opensearch.reports.main.errorDownloadingReport', { - defaultMessage: 'Error downloading report.', - }), - text = '' - ) => { - const errorToast = { - title, - text, - color: 'danger', - iconType: 'alert', - id: 'onDemandDownloadErrorToast', - }; - setToasts(toasts.concat(errorToast)); - }; - - const handleOnDemandDownloadErrorToast = (title?: string, text?: string) => { - addErrorOnDemandDownloadToastHandler(title, text); - }; - - const addSuccessOnDemandDownloadToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.main.successfullyDownloadedReport', - { defaultMessage: 'Successfully downloaded report.' } - ), - color: 'success', - iconType: 'check', - id: 'onDemandDownloadSuccessToast', - }; - setToasts(toasts.concat(successToast)); - }; - - const handleOnDemandDownloadSuccessToast = () => { - addSuccessOnDemandDownloadToastHandler(); - }; - - const addCreateReportDefinitionSuccessToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.main.successfullyCreatedReportDefinition', - { defaultMessage: 'Successfully created report definition.' } - ), - color: 'success', - iconType: 'check', - id: 'createReportDefinitionSuccessToast', - }; - setToasts(toasts.concat(successToast)); - }; - - const handleCreateReportDefinitionSuccessToast = () => { - addCreateReportDefinitionSuccessToastHandler(); - }; - - const addEditReportDefinitionSuccessToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.main.successfullyUpdatedReportDefinition', - { defaultMessage: 'Successfully updated report definition.' } - ), - color: 'success', - iconType: 'check', - id: 'editReportDefinitionSuccessToast', - }; - setToasts(toasts.concat(successToast)); - }; - - const handleEditReportDefinitionSuccessToast = () => { - addEditReportDefinitionSuccessToastHandler(); - }; - - const addDeleteReportDefinitionSuccessToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.main.successfullyDeletedReportDefinition', - { defaultMessage: 'Successfully deleted report definition.' } - ), - color: 'success', - iconType: 'check', - id: 'deleteReportDefinitionSuccessToast', - }; - setToasts(toasts.concat(successToast)); - }; - - const handleDeleteReportDefinitionSuccessToast = () => { - addDeleteReportDefinitionSuccessToastHandler(); - }; - - const removeToast = (removedToast) => { - setToasts(toasts.filter((toast) => toast.id !== removedToast.id)); - }; - - const pagination = { - initialPageSize: 10, - pageSizeOptions: [5, 10, 20], - }; - - useEffect(() => { - props.setBreadcrumbs([ - { - text: i18n.translate('opensearch.reports.main.title.reporting', { - defaultMessage: 'Reporting', - }), - href: '#', - }, - ]); - refreshReportsTable(); - refreshReportsDefinitionsTable(); - - if (window.location.href.includes('create=success')) { - handleCreateReportDefinitionSuccessToast(); - // refresh might not fetch the latest changes when coming from create or edit page - // workaround to wait 1 second and refresh again - setTimeout(() => { - refreshReportsTable(); - refreshReportsDefinitionsTable(); - }, 1000); - } else if (window.location.href.includes('edit=success')) { - handleEditReportDefinitionSuccessToast(); - setTimeout(() => { - refreshReportsTable(); - refreshReportsDefinitionsTable(); - }, 1000); - } else if (window.location.href.includes('delete=success')) { - handleDeleteReportDefinitionSuccessToast(); - setTimeout(() => { - refreshReportsTable(); - refreshReportsDefinitionsTable(); - }, 1000); - } - window.location.href = 'reports-dashboards#/'; - }, []); - - const refreshReportsTable = async () => { - const { httpClient } = props; - await httpClient - .get('../api/reporting/reports') - .then((response) => { - setReportsTableContent(addReportsTableContent(response.data)); - }) - .catch((error) => { - console.log('error when fetching all reports: ', error); - // permission denied error - if (error.body.statusCode === 403) { - handleReportsTableErrorToast('permissions'); - } else { - handleReportsTableErrorToast('API'); - } - }); - }; - - const refreshReportsDefinitionsTable = async () => { - const { httpClient } = props; - await httpClient - .get('../api/reporting/reportDefinitions') - .then((response) => { - setReportDefinitionsTableContent( - addReportDefinitionsTableContent(response.data) - ); - }) - .catch((error) => { - console.log('error when fetching all report definitions: ', error); - if (error.body.statusCode === 403) { - handleReportDefinitionsTableErrorToast('permissions'); - } else { - handleReportDefinitionsTableErrorToast('API'); - } - }); - }; - - return ( -
- - - - -

- {i18n.translate('opensearch.reports.main.title.reports', { - defaultMessage: 'Reports', - })}{' '} -

({reportsTableContent.length})

-

-
-
- - - {i18n.translate( - 'opensearch.reports.main.reports.button.refresh', - { defaultMessage: 'Refresh' } - )} - - -
- - -
- - - - - -

- {i18n.translate( - 'opensearch.reports.main.title.reportDefinitions', - { defaultMessage: 'Report definitions' } - )} -

- {' '} - ({reportDefinitionsTableContent.length}) -

-

-
-
- - - {i18n.translate( - 'opensearch.reports.main.reportDefinitions.button.refresh', - { defaultMessage: 'Refresh' } - )} - - - - { - window.location.assign('reports-dashboards#/create'); - }} - id={'createReportHomepageButton'} - > - {i18n.translate( - 'opensearch.reports.main.reportDefinitions.button.create', - { defaultMessage: 'Create' } - )} - - -
- - -
- -
- ); -} diff --git a/dashboards-reports/public/components/main/main_utils.tsx b/dashboards-reports/public/components/main/main_utils.tsx deleted file mode 100644 index f4b32bbf..00000000 --- a/dashboards-reports/public/components/main/main_utils.tsx +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { i18n } from '@osd/i18n'; -import 'babel-polyfill'; -import { HttpSetup } from '../../../../../src/core/public'; -import { uiSettingsService } from '../utils/settings_service'; -import { GENERATE_REPORT_PARAM } from '../visual_report/constants'; - -export const getAvailableNotificationsChannels = (configList: any) => { - let availableChannels = []; - for (let i = 0; i < configList.length; ++i) { - let channelEntry = {}; - channelEntry = { - label: configList[i].config.name, - id: configList[i].config_id, - }; - availableChannels.push(channelEntry); - } - return availableChannels; -}; - -type fileFormatsOptions = { - [key: string]: string; -}; - -export const fileFormatsUpper: fileFormatsOptions = { - csv: 'CSV', - pdf: 'PDF', - png: 'PNG', -}; - -export const humanReadableDate = (date: string | number | Date) => { - let readableDate = new Date(date); - return ( - readableDate.toDateString() + ' @ ' + readableDate.toLocaleTimeString() - ); -}; - -export const extractFilename = (filename: string) => { - return filename.substring(0, filename.length - 4); -}; - -export const extractFileFormat = (filename: string) => { - const fileFormat = filename; - return fileFormat.substring(filename.length - 3, filename.length); -}; - -export const getFileFormatPrefix = (fileFormat: string) => { - var fileFormatPrefix = 'data:' + fileFormat + ';base64,'; - return fileFormatPrefix; -}; - -export const addReportsTableContent = (data: string | any[]) => { - let reportsTableItems = []; - for (let index = 0; index < data.length; ++index) { - let item = data[index]; - let report = item._source; - let reportDefinition = report.report_definition; - let reportParams = reportDefinition.report_params; - let trigger = reportDefinition.trigger; - - let reportsTableEntry = { - id: item._id, - reportName: reportParams.report_name, - type: trigger.trigger_type, - sender: `\u2014`, - opensearchDashboardsRecipients: `\u2014`, - emailRecipients: `\u2014`, - reportSource: reportParams.report_source, - //TODO: wrong name - timeCreated: report.time_created, - state: report.state, - url: report.query_url, - format: reportParams.core_params.report_format, - }; - reportsTableItems.push(reportsTableEntry); - } - return reportsTableItems; -}; - -export const addReportDefinitionsTableContent = (data: any) => { - let reportDefinitionsTableItems = []; - for (let index = 0; index < data.length; ++index) { - let item = data[index]; - let reportDefinition = item._source.report_definition; - let reportParams = reportDefinition.report_params; - let trigger = reportDefinition.trigger; - let triggerParams = trigger.trigger_params; - let reportDefinitionsTableEntry = { - id: item._id, - reportName: reportParams.report_name, - type: trigger.trigger_type, - owner: `\u2014`, // Todo: replace - source: reportParams.report_source, - baseUrl: reportParams.core_params.base_url, - lastUpdated: reportDefinition.last_updated, - details: - trigger.trigger_type === 'On demand' - ? `\u2014` - : triggerParams.schedule_type, // e.g. recurring, cron based - status: reportDefinition.status, - }; - reportDefinitionsTableItems.push(reportDefinitionsTableEntry); - } - return reportDefinitionsTableItems; -}; - -export const removeDuplicatePdfFileFormat = (filename: string) => { - return filename.substring(0, filename.length - 4); -}; - -export const readDataReportToFile = async ( - stream: string, - fileFormat: string, - fileName: string -) => { - const blob = new Blob([stream]); - const url = URL.createObjectURL(blob); - let link = document.createElement('a'); - link.setAttribute('href', url); - link.setAttribute('download', fileName); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); -}; - -export const readStreamToFile = async ( - stream: string, - fileFormat: string, - fileName: string -) => { - let link = document.createElement('a'); - if (fileName.includes('csv')) { - readDataReportToFile(stream, fileFormat, fileName); - return; - } - let fileFormatPrefix = getFileFormatPrefix(fileFormat); - let url = fileFormatPrefix + stream; - if (typeof link.download !== 'string') { - window.open(url, '_blank'); - return; - } - link.download = fileName; - link.href = url; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); -}; - -export const generateReportFromDefinitionId = async ( - reportDefinitionId: string, - httpClient: HttpSetup -) => { - let status = false; - let permissionsError = false; - await httpClient - .post(`../api/reporting/generateReport/${reportDefinitionId}`, { - headers: { - 'Content-Type': 'application/json', - }, - query: uiSettingsService.getSearchParams(), - }) - .then(async (response: any) => { - // for emailing a report, this API response doesn't have response body - if (!response) return; - const fileFormat = extractFileFormat(response['filename']); - const fileName = response['filename']; - if (fileFormat === 'csv') { - await readStreamToFile(await response['data'], fileFormat, fileName); - status = true; - return; - } - - // generate reports in browser is memory intensive, do it in a new process by removing referrer - const a = document.createElement('a'); - a.href = - window.location.origin + - `${response.queryUrl}&${GENERATE_REPORT_PARAM}=${response.reportId}`; - a.target = '_blank'; - a.rel = 'noreferrer'; - a.click(); - status = true; - }) - .catch((error) => { - console.log('error on generating report:', error); - if (error.body.statusCode === 403) { - permissionsError = true; - } - status = false; - }); - return { - status: status, - permissionsError: permissionsError, - }; -}; - -export const generateReportById = async ( - reportId: string, - httpClient: HttpSetup, - handleSuccessToast, - handleErrorToast, - handlePermissionsMissingToast -) => { - await httpClient - .get(`../api/reporting/generateReport/${reportId}`, { - query: uiSettingsService.getSearchParams(), - }) - .then(async (response) => { - //TODO: duplicate code, extract to be a function that can reuse. e.g. handleResponse(response) - const fileFormat = extractFileFormat(response['filename']); - const fileName = response['filename']; - if (fileFormat === 'csv') { - await readStreamToFile(await response['data'], fileFormat, fileName); - handleSuccessToast(); - return response; - } - - // generate reports in browser is memory intensive, do it in a new process by removing referrer - const a = document.createElement('a'); - a.href = - window.location.origin + - `${response.queryUrl}&${GENERATE_REPORT_PARAM}=${reportId}`; - a.target = '_blank'; - a.rel = 'noreferrer'; - a.click(); - }) - .catch((error) => { - console.log('error on generating report by id:', error); - if (error.body.statusCode === 403) { - handlePermissionsMissingToast(); - } else if (error.body.statusCode === 503) { - handleErrorToast( - i18n.translate('opensearch.reports.utils.errorTitle', { - defaultMessage: 'Error generating report.', - }), - i18n.translate('opensearch.reports.utils.errorText', { - defaultMessage: - 'Timed out generating report ID {reportId}. Try again later.', - values: { reportId: reportId }, - description: 'Error number toast', - }) - ); - } else { - handleErrorToast(); - } - }); -}; diff --git a/dashboards-reports/public/components/main/report_definition_details/__tests__/__snapshots__/report_definition_details.test.tsx.snap b/dashboards-reports/public/components/main/report_definition_details/__tests__/__snapshots__/report_definition_details.test.tsx.snap deleted file mode 100644 index e1b1f857..00000000 --- a/dashboards-reports/public/components/main/report_definition_details/__tests__/__snapshots__/report_definition_details.test.tsx.snap +++ /dev/null @@ -1,1233 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel render 5 hours recurring definition details 1`] = ` -
-
-

- Report definition details -

-
-
-
-
-
-
-

-

-
-
-
-
- -
-
- -
-
- -
-
-
-
-

- Report settings -

-
-
-
-
-
- Name -
-
-
-
-
-
-
- Description -
-
-
-
-
-
-
- Created -
-
-
-
-
-
-
- Last updated -
-
-
-
-
-
-
- -
-
-
- Time period -
-
- Last -
-
-
-
-
-
- File format -
-
- -
-
-
-
-
-
-
-
-
-
- Report header -
-
-
-
-
-
-
- Report footer -
-
-
-
-
-
-
-
-
-
-
-
- Report trigger -
-
-
-
-
-
-
- Schedule details -
-
-
-
-
-
-
- Status -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`; - -exports[` panel render disabled daily definition, click 1`] = ` -
-
-

- Report definition details -

-
-
-
-
-
-
-

-

-
-
-
-
- -
-
- -
-
- -
-
-
-
-

- Report settings -

-
-
-
-
-
- Name -
-
-
-
-
-
-
- Description -
-
-
-
-
-
-
- Created -
-
-
-
-
-
-
- Last updated -
-
-
-
-
-
-
- -
-
-
- Time period -
-
- Last -
-
-
-
-
-
- File format -
-
- -
-
-
-
-
-
-
-
-
-
- Report header -
-
-
-
-
-
-
- Report footer -
-
-
-
-
-
-
-
-
-
-
-
- Report trigger -
-
-
-
-
-
-
- Schedule details -
-
-
-
-
-
-
- Status -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`; - -exports[` panel render on demand definition details 1`] = ` -
-
-

- Report definition details -

-
-
-
-
-
-
-

-

-
-
-
-
- -
-
- -
-
- -
-
-
-
-

- Report settings -

-
-
-
-
-
- Name -
-
-
-
-
-
-
- Description -
-
-
-
-
-
-
- Created -
-
-
-
-
-
-
- Last updated -
-
-
-
-
-
-
- -
-
-
- Time period -
-
- Last -
-
-
-
-
-
- File format -
-
- -
-
-
-
-
-
-
-
-
-
- Report header -
-
-
-
-
-
-
- Report footer -
-
-
-
-
-
-
-
-
-
-
-
- Report trigger -
-
-
-
-
-
-
- Schedule details -
-
-
-
-
-
-
- Status -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/main/report_definition_details/__tests__/report_definition_details.test.tsx b/dashboards-reports/public/components/main/report_definition_details/__tests__/report_definition_details.test.tsx deleted file mode 100644 index 7e26cd63..00000000 --- a/dashboards-reports/public/components/main/report_definition_details/__tests__/report_definition_details.test.tsx +++ /dev/null @@ -1,420 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { act, render } from '@testing-library/react'; -import { ReportDefinitionDetails } from '../report_definition_details'; -import httpClientMock from '../../../../../test/httpMockClient'; -import 'babel-polyfill'; -import { configure, mount } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; - -function setBreadcrumbs(array: []) { - jest.fn(); -} - -describe(' panel', () => { - let propsMock = { - match: { - params: { - reportDefinitionId: jest.fn(), - }, - }, - }; - - const match = { - params: { - reportDefinitionId: '1', - }, - }; - beforeEach(() => { - jest.clearAllMocks(); - }); - - configure({ adapter: new Adapter() }); - test('render on demand definition details', async () => { - const promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'On demand', - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render 5 hours recurring definition details', async () => { - const promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 5, - unit: 'HOURS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - const { container } = render( - - ); - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render disabled daily definition, click', async () => { - let promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 1, - unit: 'DAYS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: false, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('simulate click on generateReport', async () => { - let promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: null, - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'On demand', - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - const component = mount( - - ); - await act(() => promise); - component.update(); - const statusButton = component.find('button').at(1); - - statusButton.simulate('click'); - await act(() => promise); - }); - - test('simulate click on delete', async () => { - let promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: null, - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 1, - unit: 'DAYS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: false, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - const component = mount( - - ); - - const statusButton = component.find('button').at(0); - statusButton.update(); - statusButton.simulate('click'); - - await act(() => promise); - }); - - test('simulate click to enable', async () => { - let promise = Promise.resolve(); - const report_definition = { - status: 'Disabled', - report_params: { - report_name: 'test click on enable disable', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 1, - unit: 'DAYS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: false, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - httpClientMock.put = jest.fn().mockResolvedValue({}); - - const component = mount( - - ); - await act(() => promise); - component.update(); - const statusButton = component.find('button').at(1); - - statusButton.simulate('click'); - await act(() => promise); - }); - - test('simulate click to disable', async () => { - let promise = Promise.resolve(); - const report_definition = { - status: 'Active', - report_params: { - report_name: 'test click on enable disable', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 1, - unit: 'DAYS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - config_list: [] - }); - - httpClientMock.put = jest.fn().mockResolvedValue({}); - - const component = mount( - - ); - await act(() => promise); - component.update(); - const statusButton = component.find('button').at(1); - - statusButton.simulate('click'); - await act(() => promise); - }); -}); diff --git a/dashboards-reports/public/components/main/report_definition_details/report_definition_details.tsx b/dashboards-reports/public/components/main/report_definition_details/report_definition_details.tsx deleted file mode 100644 index 2d44dfd2..00000000 --- a/dashboards-reports/public/components/main/report_definition_details/report_definition_details.tsx +++ /dev/null @@ -1,837 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiPage, - EuiPageHeader, - EuiTitle, - EuiPageBody, - EuiPageContent, - EuiHorizontalRule, - EuiSpacer, - EuiPageHeaderSection, - EuiButton, - EuiIcon, - EuiLink, - EuiGlobalToastList, - EuiOverlayMask, - EuiConfirmModal, -} from '@elastic/eui'; -import { - ReportDetailsComponent, - formatEmails, - trimAndRenderAsText, -} from '../report_details/report_details'; -import { - fileFormatsUpper, - generateReportFromDefinitionId, -} from '../main_utils'; -import { ReportDefinitionSchemaType } from '../../../../server/model'; -import moment from 'moment'; -import { - permissionsMissingToast, - permissionsMissingActions, -} from '../../utils/utils'; -import { GenerateReportLoadingModal } from '../loading_modal'; - -const ON_DEMAND = 'On demand'; - -interface ReportDefinitionDetails { - name: string; - description: string; - created: string; - lastUpdated: string; - source: string; - timePeriod: string; - fileFormat: string; - status: string | undefined; - reportHeader: string; - reportFooter: string; - triggerType: string; - scheduleDetails: string; - baseUrl: string; -} - -export function ReportDefinitionDetails(props: { match?: any; setBreadcrumbs?: any; httpClient?: any; }) { - const [reportDefinitionDetails, setReportDefinitionDetails] = useState({ - name: '', - description: '', - created: '', - lastUpdated: '', - source: '', - timePeriod: '', - fileFormat: '', - status: '', - reportHeader: '', - reportFooter: '', - triggerType: '', - scheduleDetails: '', - baseUrl: '' - }); - const [ - reportDefinitionRawResponse, - setReportDefinitionRawResponse, - ] = useState({}); - const [toasts, setToasts] = useState([]); - const [showDeleteModal, setShowDeleteModal] = useState(false); - const [showLoading, setShowLoading] = useState(false); - const reportDefinitionId = props.match['params']['reportDefinitionId']; - - const handleLoading = (e: boolean | ((prevState: boolean) => boolean)) => { - setShowLoading(e); - }; - - const handleShowDeleteModal = (e: boolean | ((prevState: boolean) => boolean)) => { - setShowDeleteModal(e); - }; - - const addPermissionsMissingStatusChangeToastHandler = () => { - const toast = permissionsMissingToast( - permissionsMissingActions.CHANGE_SCHEDULE_STATUS - ); - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const addPermissionsMissingDeleteToastHandler = () => { - const toast = permissionsMissingToast( - permissionsMissingActions.DELETE_REPORT_DEFINITION - ); - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const handlePermissionsMissingDeleteToast = () => { - addPermissionsMissingDeleteToastHandler(); - }; - - const addPermissionsMissingGenerateReportToastHandler = () => { - const toast = permissionsMissingToast( - permissionsMissingActions.GENERATING_REPORT - ); - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const addErrorLoadingDetailsToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.errorLoadingReportDefinitionDetails. ', - { defaultMessage: 'Error loading report definition details.' } - ), - color: 'danger', - iconType: 'alert', - id: 'reportDefinitionDetailsErrorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleDetailsErrorToast = () => { - addErrorLoadingDetailsToastHandler(); - }; - - const addSuccessGeneratingReportToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.successfullyGeneratedReport. ', - { defaultMessage: 'Successfully generated report.' } - ), - color: 'success', - iconType: 'check', - id: 'generateReportSuccessToast', - }; - // @ts-ignore - setToasts(toasts.concat(successToast)); - }; - - const handleSuccessGeneratingReportToast = () => { - addSuccessGeneratingReportToastHandler(); - }; - - const addErrorGeneratingReportToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.errorGeneratingReport. ', - { defaultMessage: 'Error generating report.' } - ), - color: 'danger', - iconType: 'alert', - id: 'generateReportErrorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleErrorGeneratingReportToast = (errorType: string) => { - if (errorType === 'permissions') { - addPermissionsMissingGenerateReportToastHandler(); - } else if (errorType === 'API') { - addErrorGeneratingReportToastHandler(); - } - }; - - const addSuccessEnablingScheduleToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.successfullyEnabledSchedule. ', - { defaultMessage: 'Successfully enabled schedule.' } - ), - color: 'success', - iconType: 'check', - id: 'successEnableToast', - }; - // @ts-ignore - setToasts(toasts.concat(successToast)); - }; - - const addErrorEnablingScheduleToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.errorEnablingSchedule. ', - { defaultMessage: 'Error enabling schedule.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const addSuccessDisablingScheduleToastHandler = () => { - const successToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.successfullyDisabledSchedule. ', - { defaultMessage: 'Successfully disabled schedule.' } - ), - color: 'success', - iconType: 'check', - id: 'successDisableToast', - }; - // @ts-ignore - setToasts(toasts.concat(successToast)); - }; - - const handleSuccessChangingScheduleStatusToast = (statusChange: string) => { - if (statusChange === 'enable') { - addSuccessEnablingScheduleToastHandler(); - } else if (statusChange === 'disable') { - addSuccessDisablingScheduleToastHandler(); - } - }; - - const addErrorDisablingScheduleToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.errorDisablingSchedule. ', - { defaultMessage: 'Error disabling schedule.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorDisableToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleErrorChangingScheduleStatusToast = (statusChange: string) => { - if (statusChange === 'enable') { - addErrorEnablingScheduleToastHandler(); - } else if (statusChange === 'disable') { - addErrorDisablingScheduleToastHandler(); - } else if (statusChange === 'permissions') { - addPermissionsMissingStatusChangeToastHandler(); - } - }; - - const addErrorDeletingReportDefinitionToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.toast.errorDeletingReport definition. ', - { defaultMessage: 'Error deleting report definition.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorDeleteToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleErrorDeletingReportDefinitionToast = () => { - addErrorDeletingReportDefinitionToastHandler(); - }; - - const removeToast = (removedToast: { id: string; }) => { - setToasts(toasts.filter((toast: any) => toast.id !== removedToast.id)); - }; - - const handleReportDefinitionDetails = (e: ReportDefinitionDetails) => { - setReportDefinitionDetails(e); - }; - - const handleReportDefinitionRawResponse = (e: {} ) => { - setReportDefinitionRawResponse(e); - }; - - const DeleteConfirmationModal = () => { - const closeModal = () => { - setShowDeleteModal(false); - }; - - return ( -
- - -

- {i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.button.delete.query', - { - defaultMessage: 'Are you sure you want to delete "{name}"?', - values: { name: reportDefinitionDetails.name }, - } - )} -

-
-
-
- ); - }; - - const humanReadableScheduleDetails = (trigger) => { - let scheduleDetails = ''; - if (trigger.trigger_type === 'Schedule') { - if (trigger.trigger_params.schedule_type === 'Recurring') { - // Daily - if ( - trigger.trigger_params.schedule.interval.unit === 'DAYS' && - trigger.trigger_params.schedule.interval.period === 1 - ) { - const date = new Date( - trigger.trigger_params.schedule.interval.start_time - ); - scheduleDetails = i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.dailyAt', - { - defaultMessage: 'Daily @ {time}', - values: { time: date.toTimeString() }, - } - ); - } - // By interval - else { - const date = new Date( - trigger.trigger_params.schedule.interval.start_time - ); - scheduleDetails = i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.byInterval', - { - defaultMessage: - 'By interval, every {period} {unit}, starting @ {time}', - values: { - period: trigger.trigger_params.schedule.interval.period, - unit: trigger.trigger_params.schedule.interval.unit.toLowerCase(), - time: date.toTimeString(), - }, - } - ); - } - } - // Cron - else if (trigger.trigger_params.schedule_type === 'Cron based') { - scheduleDetails = i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.cronBased', - { - defaultMessage: 'Cron based: {expression} ({timezone})', - values: { - expression: trigger.trigger_params.schedule.cron.expression, - timezone: trigger.trigger_params.schedule.cron.timezone, - }, - } - ); - } - } - return scheduleDetails; - }; - - const getReportDefinitionDetailsMetadata = ( - data: ReportDefinitionSchemaType - ) : ReportDefinitionDetails => { - const reportDefinition: ReportDefinitionSchemaType = data; - const { - report_params: reportParams, - trigger, - delivery, - time_created: timeCreated, - last_updated: lastUpdated, - } = reportDefinition; - const { - trigger_type: triggerType, - trigger_params: triggerParams, - } = trigger; - const { - core_params: { - base_url: baseUrl, - report_format: reportFormat, - time_duration: timeDuration, - }, - } = reportParams; - - let readableDate = new Date(timeCreated); - let displayCreatedDate = - readableDate.toDateString() + ' ' + readableDate.toLocaleTimeString(); - - let readableUpdatedDate = new Date(lastUpdated); - let displayUpdatedDate = - readableUpdatedDate.toDateString() + - ' ' + - readableUpdatedDate.toLocaleTimeString(); - - let reportDefinitionDetails = { - name: reportParams.report_name, - description: - reportParams.description === '' ? `\u2014` : reportParams.description, - created: displayCreatedDate, - lastUpdated: displayUpdatedDate, - source: reportParams.report_source, - baseUrl: baseUrl, - // TODO: need better display - timePeriod: moment.duration(timeDuration).humanize(), - fileFormat: reportFormat, - reportHeader: - reportParams.core_params.hasOwnProperty('header') && - reportParams.core_params.header != '' - ? reportParams.core_params.header - : `\u2014`, - reportFooter: - reportParams.core_params.hasOwnProperty('footer') && - reportParams.core_params.footer != '' - ? reportParams.core_params.footer - : `\u2014`, - triggerType: triggerType, - scheduleDetails: triggerParams - ? humanReadableScheduleDetails(data.trigger) - : `\u2014`, - status: reportDefinition.status, - }; - return reportDefinitionDetails; - }; - - useEffect(() => { - const { httpClient } = props; - httpClient - .get(`../api/reporting/reportDefinitions/${reportDefinitionId}`) - .then((response: {report_definition: ReportDefinitionSchemaType}) => { - handleReportDefinitionRawResponse(response); - handleReportDefinitionDetails(getReportDefinitionDetailsMetadata(response.report_definition)); - props.setBreadcrumbs([ - { - text: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.reporting', - { defaultMessage: 'Reporting' } - ), - href: '#', - }, - { - text: i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.reportDefinitionDetails', - { - defaultMessage: 'Report definition details: {name}', - values: { - name: response.report_definition.report_params.report_name, - }, - } - ), - }, - ]); - }) - .catch((error: any) => { - console.error( - i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.error', - { - defaultMessage: - 'error when getting report definition details: {error}', - values: { error: error }, - } - ) - ); - handleDetailsErrorToast(); - }); - }, []); - - const downloadIconDownload = async () => { - handleLoading(true); - await generateReportFromDetails(); - handleLoading(false); - }; - - const fileFormatDownload = (data: { [x: string]: any; }) => { - let formatUpper = data['fileFormat']; - formatUpper = fileFormatsUpper[formatUpper]; - return ( - - {formatUpper + ' '} - - - ); - }; - - const sourceURL = (data: ReportDefinitionDetails) => { - return ( - - {data['source']} - - ); - }; - - const changeScheduledReportDefinitionStatus = (statusChange: string) => { - let updatedReportDefinition = reportDefinitionRawResponse.report_definition; - if (statusChange === 'Disable') { - updatedReportDefinition.trigger.trigger_params.enabled = false; - updatedReportDefinition.status = 'Disabled'; - } else if (statusChange === 'Enable') { - updatedReportDefinition.trigger.trigger_params.enabled = true; - updatedReportDefinition.status = 'Active'; - } - const { httpClient } = props; - httpClient - .put(`../api/reporting/reportDefinitions/${reportDefinitionId}`, { - body: JSON.stringify(updatedReportDefinition), - params: reportDefinitionId.toString(), - }) - .then(() => { - const updatedRawResponse = { report_definition: {} }; - updatedRawResponse.report_definition = updatedReportDefinition; - handleReportDefinitionRawResponse(updatedRawResponse); - setReportDefinitionDetails( - getReportDefinitionDetailsMetadata(updatedReportDefinition) - ); - if (statusChange === 'Enable') { - handleSuccessChangingScheduleStatusToast('enable'); - } else if (statusChange === 'Disable') { - handleSuccessChangingScheduleStatusToast('disable'); - } - }) - .catch((error: { body: { statusCode: number; }; }) => { - console.error('error in updating report definition status:', error); - if (error.body.statusCode === 403) { - handleErrorChangingScheduleStatusToast('permissions'); - } else { - if (statusChange === 'Enable') { - handleErrorChangingScheduleStatusToast('enable'); - } else if (statusChange === 'Disable') { - handleErrorChangingScheduleStatusToast('disable'); - } - } - }); - }; - - const ScheduledDefinitionStatus = () => { - const status = - reportDefinitionDetails.status === 'Active' ? 'Disable' : 'Enable'; - - return ( - changeScheduledReportDefinitionStatus(status)} - id={'changeStatusFromDetailsButton'} - > - {status} - - ); - }; - - const generateReportFromDetails = async () => { - const { httpClient } = props; - handleLoading(true); - let generateReportSuccess = await generateReportFromDefinitionId( - reportDefinitionId, - httpClient - ); - handleLoading(false); - if (generateReportSuccess.status) { - handleSuccessGeneratingReportToast(); - } else { - if (generateReportSuccess.permissionsError) { - handleErrorGeneratingReportToast('permissions'); - } else { - handleErrorGeneratingReportToast('API'); - } - } - }; - - const deleteReportDefinition = () => { - const { httpClient } = props; - httpClient - .delete(`../api/reporting/reportDefinitions/${reportDefinitionId}`) - .then(() => { - window.location.assign(`reports-dashboards#/delete=success`); - }) - .catch((error: { body: { statusCode: number; }; }) => { - console.log('error when deleting report definition:', error); - if (error.body.statusCode === 403) { - handlePermissionsMissingDeleteToast(); - } else { - handleErrorDeletingReportDefinitionToast(); - } - }); - }; - - const showActionButton = - reportDefinitionDetails.triggerType === ON_DEMAND ? ( - generateReportFromDetails()} - id={'generateReportFromDetailsButton'} - > - Generate report - - ) : ( - - ); - - const triggerSection = - reportDefinitionDetails.triggerType === ON_DEMAND ? ( - - ) : ( - - - - - - - ); - - const showDeleteConfirmationModal = showDeleteModal ? ( - - ) : null; - - const showLoadingModal = showLoading ? ( - - ) : null; - - return ( - - - -

- {i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.title', - { defaultMessage: 'Report definition details' } - )} -

-
- - - - - - - -

{reportDefinitionDetails.name}

-
-
-
-
- - - handleShowDeleteModal(show)} - id={'deleteReportDefinitionButton'} - > - {i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.deleteReportDefinitionButton', - { defaultMessage: 'Delete' } - )} - - - {showActionButton} - - { - window.location.assign( - `reports-dashboards#/edit/${reportDefinitionId}` - ); - }} - id={'editReportDefinitionButton'} - > - {i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.editReportDefinitionButton', - { defaultMessage: 'Edit' } - )} - - - -
- - -

- {i18n.translate( - 'opensearch.reports.reportDefinitionsDetails.reportSettings', - { defaultMessage: 'Report settings' } - )} -

-
- - - - - - - - - - - - - - - - - - - - - - - {triggerSection} -
- - {showDeleteConfirmationModal} - {showLoadingModal} -
-
- ); -} diff --git a/dashboards-reports/public/components/main/report_definitions_table.tsx b/dashboards-reports/public/components/main/report_definitions_table.tsx deleted file mode 100644 index b0d255b3..00000000 --- a/dashboards-reports/public/components/main/report_definitions_table.tsx +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useState } from 'react'; -import { - EuiLink, - EuiInMemoryTable, - EuiButton, - EuiEmptyPrompt, - EuiText, - EuiIcon, -} from '@elastic/eui'; -import { i18n } from '@osd/i18n'; -import { humanReadableDate } from './main_utils'; - -const emptyMessageReportDefinitions = ( - - {i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.noReportDefinitions', - { defaultMessage: 'No report definitions to display' } - )} - - } - titleSize="xs" - body={ -
- - {i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.createANewDefinition', - { defaultMessage: 'Create a new report definition to get started' } - )} - - - {i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.toLearnMore', - { defaultMessage: 'To learn more, see' } - )}{' '} - - {i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.getStarted', - { - defaultMessage: - 'Get started with OpenSearch Dashboards reporting', - } - )} - - - -
- } - actions={ -
- { - window.location.assign('reports-dashboards#/create'); - }} - > - {i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.createReportDefinition', - { defaultMessage: 'Create report definition' } - )} - -
- } - /> -); - -const reportDefinitionsSearch = { - box: { - incremental: true, - }, - filters: [], -}; - -export function ReportDefinitions(props) { - const { pagination, reportDefinitionsTableContent } = props; - - const [sortField, setSortField] = useState('lastUpdated'); - const [sortDirection, setSortDirection] = useState('des'); - - const sorting = { - sort: { - field: sortField, - direction: sortDirection, - }, - }; - - const getDefinitionTableItemId = (name) => { - let index; - for ( - index = 0; - index < props.reportDefinitionsTableContent.length; - ++index - ) { - if (name === reportDefinitionsTableContent[index].reportName) { - return reportDefinitionsTableContent[index].id; - } - } - }; - - const navigateToDefinitionDetails = (name: any) => { - let id = getDefinitionTableItemId(name); - window.location.assign( - `reports-dashboards#/report_definition_details/${id}` - ); - }; - - const reportDefinitionsColumns = [ - { - field: 'reportName', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.name', - { - defaultMessage: 'Name', - } - ), - render: (name) => ( - navigateToDefinitionDetails(name)} - id={'reportDefinitionDetailsLink'} - > - {name} - - ), - }, - { - field: 'source', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.source', - { defaultMessage: 'Source' } - ), - render: (value, item) => ( - - {value} - - ), - }, - { - field: 'type', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.type', - { - defaultMessage: 'Type', - } - ), - sortable: true, - truncateText: false, - }, - { - field: 'details', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.scheduleDetails', - { defaultMessage: 'Schedule details' } - ), - sortable: false, - truncateText: true, - }, - { - field: 'lastUpdated', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.lastUpdated', - { defaultMessage: 'Last Updated' } - ), - render: (date) => { - let readable = humanReadableDate(date); - return {readable}; - }, - }, - { - field: 'status', - name: i18n.translate( - 'opensearch.reports.reportDefinitionsTable.columns.status', - { defaultMessage: 'Status' } - ), - sortable: true, - truncateText: false, - }, - ]; - - const displayMessage = - reportDefinitionsTableContent.length === 0 - ? emptyMessageReportDefinitions - : i18n.translate( - 'opensearch.reports.reportDefinitionsTable.emptyMessageReports.noDefinitionsFound', - { - defaultMessage: - '0 report definitions match the search criteria. Search again.', - } - ); - - return ( -
- -
- ); -} diff --git a/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap b/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap deleted file mode 100644 index 7d0b79f6..00000000 --- a/dashboards-reports/public/components/main/report_details/__tests__/__snapshots__/report_details.test.tsx.snap +++ /dev/null @@ -1,760 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel render 5 hours recurring component 1`] = ` -
-
-

- Report details -

-
-
-
-
-
-
-

- test create report definition trigger -

-
-
-
-
-
-

- Report Settings -

-
-
-
-
-
- Name -
-
- test create report definition trigger -
-
-
-
-
-
- Description -
-
- — -
-
-
-
-
-
- Created -
-
- — -
-
-
-
-
-
- Last updated -
-
- — -
-
-
-
-
-
- -
-
-
- Time period -
-
- Invalid Date -> 10/23/2020, 8:53:35 PM -
-
-
-
-
-
- File format -
-
- -
-
-
-
-
-
- State -
-
-
-
-
-
-
-
-
-
- Report header -
-
-

- — -

-
-
-
-
-
-
- Report footer -
-
-

- — -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Report trigger -
-
- Schedule -
-
-
-
-
-
- Schedule type -
-
- Recurring -
-
-
-
-
-
- Schedule details -
-
- — -
-
-
-
-
-
-
-
-
-
-
-
-
-
-`; - -exports[` panel render on-demand component 1`] = ` -
-
-

- Report details -

-
-
-
-
-
-
-

- test create report definition trigger -

-
-
-
-
-
-

- Report Settings -

-
-
-
-
-
- Name -
-
- test create report definition trigger -
-
-
-
-
-
- Description -
-
- — -
-
-
-
-
-
- Created -
-
- — -
-
-
-
-
-
- Last updated -
-
- — -
-
-
-
-
-
- -
-
-
- Time period -
-
- Invalid Date -> 10/23/2020, 8:53:35 PM -
-
-
-
-
-
- File format -
-
- -
-
-
-
-
-
- State -
-
-
-
-
-
-
-
-
-
- Report header -
-
-

- — -

-
-
-
-
-
-
- Report footer -
-
-

- — -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Report trigger -
-
- On demand -
-
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/main/report_details/__tests__/report_details.test.tsx b/dashboards-reports/public/components/main/report_details/__tests__/report_details.test.tsx deleted file mode 100644 index 4bad6fa7..00000000 --- a/dashboards-reports/public/components/main/report_details/__tests__/report_details.test.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { ReportDetails } from '../report_details'; -import propsMock from '../../../../../test/propsMock'; -import httpClientMock from '../../../../../test/httpMockClient'; -import 'babel-polyfill'; -import { act } from 'react-dom/test-utils'; - -function setBreadcrumbs(array: []) { - jest.fn(); -} - -describe(' panel', () => { - const match = { - params: { - reportId: '1', - }, - }; - - test('render on-demand component', async () => { - const promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'On demand', - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - query_url: `http://localhost:5601/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=(time:(from:'2020-10-23T20:53:35.315Z',to:'2020-10-23T21:23:35.316Z'))`, - config_list: [] - }); - - const { container } = render( - - ); - await act(() => promise); - await expect(container.firstChild).toMatchSnapshot(); - }); - - test('render 5 hours recurring component', async () => { - const promise = Promise.resolve(); - const report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 5, - unit: 'HOURS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - query_url: `http://localhost:5601/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=(time:(from:'2020-10-23T20:53:35.315Z',to:'2020-10-23T21:23:35.316Z'))`, - config_list: [] - }); - - const { container } = render( - - ); - await act(() => promise); - await expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/dashboards-reports/public/components/main/report_details/report_details.tsx b/dashboards-reports/public/components/main/report_details/report_details.tsx deleted file mode 100644 index 65fa02aa..00000000 --- a/dashboards-reports/public/components/main/report_details/report_details.tsx +++ /dev/null @@ -1,490 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiPage, - EuiPageHeader, - EuiTitle, - EuiPageBody, - EuiPageContent, - EuiHorizontalRule, - EuiSpacer, - EuiDescriptionList, - EuiDescriptionListTitle, - EuiDescriptionListDescription, - EuiPageHeaderSection, - EuiLink, - EuiIcon, - EuiGlobalToastList, -} from '@elastic/eui'; -import { fileFormatsUpper, generateReportById } from '../main_utils'; -import { GenerateReportLoadingModal } from '../loading_modal'; -import { ReportSchemaType } from '../../../../server/model'; -import dateMath from '@elastic/datemath'; -import { - permissionsMissingActions, - permissionsMissingToast, - timeRangeMatcher, -} from '../../utils/utils'; -import { TRIGGER_TYPE } from '../../../../server/routes/utils/constants'; - -interface ReportDetails { - reportName: string; - description: string; - created: string; - lastUpdated: string; - source: string; - time_period: string; - defaultFileFormat: string; - state: string | undefined; - reportHeader: string; - reportFooter: string; - triggerType: string; - scheduleType: string; - scheduleDetails: string; - queryUrl: string; -} - -export const ReportDetailsComponent = (props: { reportDetailsComponentTitle: any; reportDetailsComponentContent: any; }) => { - const { reportDetailsComponentTitle, reportDetailsComponentContent } = props; - - return ( - - - - {reportDetailsComponentTitle} - - - {reportDetailsComponentContent} - - - - ); -}; - -// convert markdown to plain text, trim it if it's longer than 3 lines -export const trimAndRenderAsText = (markdown: string) => { - if (!markdown) return markdown; - const lines = markdown.split('\n').filter((line) => line); - const elements = lines.slice(0, 3).map((line, i) =>

{line}

); - return lines.length <= 3 ? elements : elements.concat(

...

); -}; - -export const formatEmails = (emails: string[]) => { - return Array.isArray(emails) ? emails.join(', ') : emails; -}; - -export function ReportDetails(props: { match?: any; setBreadcrumbs?: any; httpClient: any; }) { - const [reportDetails, setReportDetails] = useState({ - reportName: '', - description: '', - created: '', - lastUpdated: '', - source: '', - time_period: '', - defaultFileFormat: '', - state: '', - reportHeader: '', - reportFooter: '', - triggerType: '', - scheduleType: '', - scheduleDetails: '', - queryUrl: '' - }); - const [toasts, setToasts] = useState([]); - const [showLoading, setShowLoading] = useState(false); - - const reportId = props.match['params']['reportId']; - - const handleLoading = (e: boolean | ((prevState: boolean) => boolean)) => { - setShowLoading(e); - }; - - const addPermissionsMissingDownloadToastHandler = () => { - const toast = permissionsMissingToast( - permissionsMissingActions.GENERATING_REPORT - ); - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const handlePermissionsMissingDownloadToast = () => { - addPermissionsMissingDownloadToastHandler(); - }; - - const addErrorToastHandler = ( - title = i18n.translate( - 'opensearch.reports.details.errorLoadingReportDetails', - { defaultMessage: 'Error loading report details.' } - ), - text = '' - ) => { - const errorToast = { - title, - text, - color: 'danger', - iconType: 'alert', - id: 'reportDetailsErrorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleErrorToast = (title?: string, text?: string) => { - addErrorToastHandler(title, text); - }; - - const addSuccessToastHandler = () => { - const successToast = { - title: 'Success', - color: 'success', - text: ( -

- {i18n.translate( - 'opensearch.reports.details.reportSuccessfullyDownloaded', - { defaultMessage: 'Report successfully downloaded!' } - )} -

- ), - id: 'onDemandDownloadSuccessToast', - }; - // @ts-ignore - setToasts(toasts.concat(successToast)); - }; - - const handleSuccessToast = () => { - addSuccessToastHandler(); - }; - - const removeToast = (removedToast: { id: any; }) => { - setToasts(toasts.filter((toast : any) => toast.id !== removedToast.id)); - }; - - const handleReportDetails = (e: React.SetStateAction) => { - setReportDetails(e); - }; - - const convertTimestamp = (timestamp: number | undefined) => { - let displayDate = `\u2014`; - if (timestamp) { - let readableDate = new Date(timestamp); - displayDate = readableDate.toLocaleString(); - } - return displayDate; - }; - - const parseTimePeriod = (queryUrl: string) => { - let [fromDateString, toDateString] : RegExpMatchArray | null = queryUrl.match( - timeRangeMatcher - ); - - fromDateString = decodeURIComponent(fromDateString.replace(/[']+/g, '')); - toDateString = decodeURIComponent(toDateString.replace(/[']+/g, '')); - - let fromDateParsed = dateMath.parse(fromDateString); - let toDateParsed = dateMath.parse(toDateString, { roundUp: true }); - - const fromTimePeriod = fromDateParsed?.toDate(); - const toTimePeriod = toDateParsed?.toDate(); - return ( - fromTimePeriod?.toLocaleString() + ' -> ' + toTimePeriod?.toLocaleString() - ); - }; - - const getReportDetailsData = ( - report: ReportSchemaType - ) : ReportDetails => { - const { - report_definition: reportDefinition, - last_updated: lastUpdated, - state, - query_url: queryUrl, - } = report; - const { report_params: reportParams, trigger } = reportDefinition; - const { - trigger_type: triggerType, - trigger_params: triggerParams, - } = trigger; - const coreParams = reportParams.core_params; - // covert timestamp to local date-time string - let reportDetails = { - reportName: reportParams.report_name, - description: - reportParams.description === '' ? `\u2014` : reportParams.description, - created: convertTimestamp(report.time_created), - lastUpdated: convertTimestamp(report.last_updated), - source: reportParams.report_source, - // TODO: we have all data needed, time_from, time_to, time_duration, - // think of a way to better display - time_period: (reportParams.report_source !== 'Notebook') ? parseTimePeriod(queryUrl) : `\u2014`, - defaultFileFormat: coreParams.report_format, - state: state, - reportHeader: - reportParams.core_params.hasOwnProperty('header') && - reportParams.core_params.header != '' - ? reportParams.core_params.header - : `\u2014`, - reportFooter: - reportParams.core_params.hasOwnProperty('footer') && - reportParams.core_params.footer != '' - ? reportParams.core_params.footer - : `\u2014`, - triggerType: triggerType, - scheduleType: triggerParams ? triggerParams.schedule_type : `\u2014`, - scheduleDetails: `\u2014`, - queryUrl: queryUrl, - }; - return reportDetails; - }; - - useEffect(() => { - const { httpClient } = props; - httpClient - .get('../api/reporting/reports/' + reportId) - .then((response: ReportSchemaType) => { - handleReportDetails(getReportDetailsData(response)); - props.setBreadcrumbs([ - { - text: i18n.translate( - 'opensearch.reports.details.breadcrumb.reporting', - { defaultMessage: 'Reporting' } - ), - href: '#', - }, - { - text: i18n.translate( - 'opensearch.reports.details.breadcrumb.reportDetails', - { - defaultMessage: 'Report details: {name}', - values: { - name: response.report_definition.report_params.report_name, - }, - } - ), - }, - ]); - }) - .catch((error: any) => { - console.log('Error when fetching report details: ', error); - handleErrorToast(); - }); - }, []); - - const downloadIconDownload = async () => { - handleLoading(true); - await generateReportById( - reportId, - props.httpClient, - handleSuccessToast, - handleErrorToast, - handlePermissionsMissingDownloadToast - ); - handleLoading(false); - }; - - const fileFormatDownload = (data: ReportDetails) => { - let formatUpper = data['defaultFileFormat']; - formatUpper = fileFormatsUpper[formatUpper]; - return ( - - {formatUpper + ' '} - - - ); - }; - - const sourceURL = (data: ReportDetails) => { - return ( - - {data['source']} - - ); - }; - - const triggerSection = - reportDetails.triggerType === TRIGGER_TYPE.onDemand ? ( - - ) : ( - - - - - - - ) - - const showLoadingModal = showLoading ? ( - - ) : null; - - return ( - - - -

- {i18n.translate('opensearch.reports.details.title', { - defaultMessage: 'Report details', - })} -

-
- - - - - - - -

{reportDetails.reportName}

-
-
-
-
-
- - -

- {i18n.translate('opensearch.reports.details.reportSettings', { - defaultMessage: 'Report Settings', - })} -

-
- - - - - - - - - - - - - - - - - - - - - - - {triggerSection} -
- - {showLoadingModal} -
-
- ); -} diff --git a/dashboards-reports/public/components/main/reports_table.tsx b/dashboards-reports/public/components/main/reports_table.tsx deleted file mode 100644 index 90b85563..00000000 --- a/dashboards-reports/public/components/main/reports_table.tsx +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { Fragment, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiButton, - // @ts-ignore - EuiLink, - EuiText, - EuiIcon, - EuiEmptyPrompt, - EuiInMemoryTable, -} from '@elastic/eui'; -import { - fileFormatsUpper, - humanReadableDate, - generateReportById, -} from './main_utils'; -import { GenerateReportLoadingModal } from './loading_modal'; - -const reportStatusOptions = [ - 'Created', - 'Error', - 'Pending', - 'Shared', - 'Archived', -]; -const reportTypeOptions = ['Schedule', 'On demand']; - -const emptyMessageReports = ( - - {i18n.translate( - 'opensearch.reports.reportsTable.emptyMessageReports.noReportsToDisplay', - { defaultMessage: 'No reports to display' } - )} - - } - titleSize="xs" - body={ -
- - {i18n.translate( - 'opensearch.reports.reportsTable.emptyMessageReports.createAReportDefinition', - { - defaultMessage: - 'Create a report definition, or share/download a report from a dashboard, saved search or visualization.', - } - )} - - - {i18n.translate( - 'opensearch.reports.reportsTable.emptyMessageReports.toLearnMore', - { defaultMessage: 'To learn more, see' } - )}{' '} - - {i18n.translate( - 'opensearch.reports.reportsTable.emptyMessageReports.getStarted', - { - defaultMessage: - 'Get started with OpenSearch Dashboards reporting', - } - )} - - - -
- } - /> -); - -export function ReportsTable(props) { - const { - pagination, - reportsTableItems, - httpClient, - handleSuccessToast, - handleErrorToast, - handlePermissionsMissingToast, - } = props; - - const [sortField, setSortField] = useState('timeCreated'); - const [sortDirection, setSortDirection] = useState('des'); - const [showLoading, setShowLoading] = useState(false); - const [message, setMessage] = useState(''); - - const handleLoading = (e) => { - setShowLoading(e); - }; - - const onDemandDownload = async (id: any) => { - handleLoading(true); - await generateReportById( - id, - httpClient, - handleSuccessToast, - handleErrorToast, - handlePermissionsMissingToast - ); - handleLoading(false); - }; - - const reportsTableColumns = [ - { - field: 'reportName', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.Name', - { defaultMessage: 'Name' } - ), - render: (reportName, item) => ( - { - window.location.assign( - `reports-dashboards#/report_details/${item.id}` - ); - }} - id={'reportDetailsLink'} - > - {reportName} - - ), - }, - { - // TODO: link to dashboard/visualization snapshot, use "queryUrl" field. Display dashboard name? - field: 'reportSource', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.Source', - { defaultMessage: 'Source' } - ), - render: (source, item) => - item.state === 'Pending' ? ( - {source} - ) : ( - - {source} - - ), - }, - { - field: 'type', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.Type', - { defaultMessage: 'Type' } - ), - sortable: true, - truncateText: false, - }, - { - field: 'timeCreated', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.creationTime', - { defaultMessage: 'Creation time' } - ), - render: (date) => { - let readable = humanReadableDate(date); - return {readable}; - }, - }, - { - field: 'state', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.State', - { defaultMessage: 'State' } - ), - sortable: true, - truncateText: false, - }, - { - field: 'id', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsTableColumns.Generate', - { defaultMessage: 'Generate' } - ), - render: (id, item) => - item.state === 'Pending' ? ( - - {fileFormatsUpper[item.format]} - - ) : ( - onDemandDownload(id)} - id="landingPageOnDemandDownload" - > - {fileFormatsUpper[item.format]} - - ), - }, - ]; - - const sorting = { - sort: { - field: sortField, - direction: sortDirection, - }, - }; - - const reportsListSearch = { - box: { - incremental: true, - }, - filters: [ - { - type: 'field_value_selection', - field: 'type', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsListSearch.Type', - { defaultMessage: 'Type' } - ), - multiSelect: 'or', - options: reportTypeOptions.map((type) => ({ - value: type, - name: type, - view: type, - })), - }, - { - type: 'field_value_selection', - field: 'state', - name: i18n.translate( - 'opensearch.reports.reportsTable.reportsListSearch.State', - { defaultMessage: 'State' } - ), - multiSelect: 'or', - options: reportStatusOptions.map((state) => ({ - value: state, - name: state, - view: state, - })), - }, - ], - }; - - const displayMessage = - reportsTableItems.length === 0 - ? emptyMessageReports - : i18n.translate( - 'opensearch.reports.reportsTable.reportsListSearch.noRreportsMatch', - { - defaultMessage: '0 reports match the search criteria. Search again', - } - ); - - const showLoadingModal = showLoading ? ( - - ) : null; - - return ( - - - {showLoadingModal} - - ); -} diff --git a/dashboards-reports/public/components/report_definitions/create/create_report_definition.tsx b/dashboards-reports/public/components/report_definitions/create/create_report_definition.tsx deleted file mode 100644 index eed7015a..00000000 --- a/dashboards-reports/public/components/report_definitions/create/create_report_definition.tsx +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiGlobalToastList, - EuiButton, - EuiTitle, - EuiPageBody, - EuiSpacer, -} from '@elastic/eui'; -import { ReportSettings } from '../report_settings'; -import { generateReportFromDefinitionId } from '../../main/main_utils'; -import { converter } from '../utils'; -import { - permissionsMissingToast, - permissionsMissingActions, -} from '../../utils/utils'; -import { definitionInputValidation } from '../utils/utils'; - -interface reportParamsType { - report_name: string; - report_source: string; - description: string; - core_params: visualReportParams | dataReportParams; -} -interface visualReportParams { - base_url: string; - report_format: string; - header: string; - footer: string; - time_duration: string; -} - -interface dataReportParams { - saved_search_id: number; - base_url: string; - report_format: string; - time_duration: string; -} -interface triggerType { - trigger_type: string; - trigger_params?: any; -} - -interface deliveryType { - configIds: Array; - title: string; - textDescription: string; - htmlDescription: string; -} - -export interface TriggerParamsType { - schedule_type: string; - schedule: Recurring | Cron; - enabled_time: number; - enabled: boolean; -} - -interface Recurring { - interval: { - period: number; - unit: string; - start_time: number; - }; -} - -interface Cron { - cron: { - cron_expression: string; - time_zone: string; - }; -} - -export interface reportDefinitionParams { - report_params: reportParamsType; - delivery: deliveryType; - trigger: triggerType; -} - -export interface timeRangeParams { - timeFrom: Date; - timeTo: Date; -} - -export function CreateReport(props: { [x: string]: any; setBreadcrumbs?: any; httpClient?: any; }) { - let createReportDefinitionRequest: reportDefinitionParams = { - report_params: { - report_name: '', - report_source: '', - description: '', - core_params: { - base_url: '', - report_format: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: '', - }, - }; - - const [toasts, setToasts] = useState([]); - const [comingFromError, setComingFromError] = useState(false); - const [preErrorData, setPreErrorData] = useState({}); - - const [ - showSettingsReportNameError, - setShowSettingsReportNameError, - ] = useState(false); - const [ - settingsReportNameErrorMessage, - setSettingsReportNameErrorMessage, - ] = useState(''); - const [ - showSettingsReportSourceError, - setShowSettingsReportSourceError, - ] = useState(false); - const [ - settingsReportSourceErrorMessage, - setSettingsReportSourceErrorMessage, - ] = useState(''); - const [ - showTriggerIntervalNaNError, - setShowTriggerIntervalNaNError, - ] = useState(false); - const [showCronError, setShowCronError] = useState(false); - const [showTimeRangeError, setShowTimeRangeError] = useState(false); - - // preserve the state of the request after an invalid create report definition request - if (comingFromError) { - createReportDefinitionRequest = preErrorData; - } - - const addInputValidationErrorToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.createReportDefinition.error.fieldsHaveAnError', - { - defaultMessage: - 'One or more fields have an error. Please check and try again.', - } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleInputValidationErrorToast = () => { - addInputValidationErrorToastHandler(); - }; - - const addErrorOnCreateToastHandler = (errorType: string) => { - let toast = {}; - if (errorType === 'permissions') { - toast = permissionsMissingToast( - permissionsMissingActions.CREATING_REPORT_DEFINITION - ); - } else if (errorType === 'API') { - toast = { - title: i18n.translate( - 'opensearch.reports.createReportDefinition.error.errorCreating', - { defaultMessage: 'Error creating report definition.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - } - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const handleErrorOnCreateToast = (errorType: string) => { - addErrorOnCreateToastHandler(errorType); - }; - - const addInvalidTimeRangeToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.createReportDefinition.error.invalidTimeRange', - { defaultMessage: 'Invalid time range selected.' } - ), - color: 'danger', - iconType: 'alert', - id: 'timeRangeErrorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleInvalidTimeRangeToast = () => { - addInvalidTimeRangeToastHandler(); - }; - - const removeToast = (removedToast: { id: string; }) => { - setToasts(toasts.filter((toast: any) => toast.id !== removedToast.id)); - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - const createNewReportDefinition = async ( - metadata: reportDefinitionParams, - timeRange: timeRangeParams - ) => { - const { httpClient } = props; - //TODO: need better handle - if ( - metadata.trigger.trigger_type === 'On demand' && - metadata.trigger.trigger_params !== undefined - ) { - delete metadata.trigger.trigger_params; - } - - let error = false; - await definitionInputValidation( - metadata, - error, - setShowSettingsReportNameError, - setSettingsReportNameErrorMessage, - setShowSettingsReportSourceError, - setSettingsReportSourceErrorMessage, - setShowTriggerIntervalNaNError, - timeRange, - setShowTimeRangeError, - setShowCronError, - ).then((response) => { - error = response; - }); - if (error) { - handleInputValidationErrorToast(); - setPreErrorData(metadata); - setComingFromError(true); - } else { - httpClient - .post('../api/reporting/reportDefinition', { - body: JSON.stringify(metadata), - headers: { - 'Content-Type': 'application/json', - }, - }) - .then(async (resp: { scheduler_response: { reportDefinitionId: string; }; }) => { - //TODO: consider handle the on demand report generation from server side instead - if (metadata.trigger.trigger_type === 'On demand') { - const reportDefinitionId = - resp.scheduler_response.reportDefinitionId; - generateReportFromDefinitionId(reportDefinitionId, httpClient); - } - window.location.assign(`reports-dashboards#/create=success`); - }) - .catch((error: {body: { statusCode: number; }; }) => { - console.log('error in creating report definition: ' + error); - if (error.body.statusCode === 403) { - handleErrorOnCreateToast('permissions'); - } else { - handleErrorOnCreateToast('API'); - } - }); - } - }; - - useEffect(() => { - window.scrollTo(0, 0); - props.setBreadcrumbs([ - { - text: i18n.translate( - 'opensearch.reports.createReportDefinition.breadcrumb.reporting', - { defaultMessage: 'Reporting' } - ), - href: '#', - }, - { - text: i18n.translate( - 'opensearch.reports.createReportDefinition.breadcrumb.createReportDefinition', - { defaultMessage: 'Create report definition' } - ), - href: '#/create', - }, - ]); - }, []); - - return ( -
- - -

- {i18n.translate('opensearch.reports.createReportDefinition.title', { - defaultMessage: 'Create report definition', - })} -

-
- - - - - - { - window.location.assign(`reports-dashboards#/`); - }} - > - {i18n.translate( - 'opensearch.reports.createReportDefinition.cancel', - { defaultMessage: 'Cancel' } - )} - - - - - createNewReportDefinition( - createReportDefinitionRequest, - timeRange - ) - } - id={'createNewReportDefinition'} - > - {i18n.translate( - 'opensearch.reports.createReportDefinition.create', - { defaultMessage: 'Create' } - )} - - - - -
-
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/create/index.ts b/dashboards-reports/public/components/report_definitions/create/index.ts deleted file mode 100644 index 4f247918..00000000 --- a/dashboards-reports/public/components/report_definitions/create/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { CreateReport } from './create_report_definition'; diff --git a/dashboards-reports/public/components/report_definitions/delivery/__tests__/__snapshots__/delivery.test.tsx.snap b/dashboards-reports/public/components/report_definitions/delivery/__tests__/__snapshots__/delivery.test.tsx.snap deleted file mode 100644 index 3df27334..00000000 --- a/dashboards-reports/public/components/report_definitions/delivery/__tests__/__snapshots__/delivery.test.tsx.snap +++ /dev/null @@ -1,83 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel render create component 1`] = ` -
-
-

- Notification settings -

-
-
-
-
- -
- -
-
-
-`; - -exports[` panel render edit component 1`] = ` -
-
-

- Notification settings -

-
-
-
-
- -
- -
-
-
-`; diff --git a/dashboards-reports/public/components/report_definitions/delivery/__tests__/delivery.test.tsx b/dashboards-reports/public/components/report_definitions/delivery/__tests__/delivery.test.tsx deleted file mode 100644 index fed5f8a8..00000000 --- a/dashboards-reports/public/components/report_definitions/delivery/__tests__/delivery.test.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { ReportDelivery } from '../delivery'; -import httpClientMock from '../../../../../test/httpMockClient'; -import { act } from 'react-dom/test-utils'; - -const emptyRequest = { - report_params: { - report_name: '', - report_source: '', - description: '', - core_params: { - base_url: '', - report_format: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: '', - trigger_params: {}, - }, - time_created: 0, - last_updated: 0, - status: '', -}; - -const timeRange = { - timeFrom: new Date(1234567800), - timeTo: new Date(1234567890), -}; - -global.fetch = jest.fn(() => ({ - then: jest.fn(() => ({ - then: jest.fn() - })) -})); - -describe(' panel', () => { - test('render create component', () => { - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render edit component', async () => { - const promise = Promise.resolve(); - let editReportDefinitionRequest = { - report_params: { - report_name: 'edit cron schedule component', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'On demand', - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition: editReportDefinitionRequest, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); -}); diff --git a/dashboards-reports/public/components/report_definitions/delivery/delivery.tsx b/dashboards-reports/public/components/report_definitions/delivery/delivery.tsx deleted file mode 100644 index b3ab50f3..00000000 --- a/dashboards-reports/public/components/report_definitions/delivery/delivery.tsx +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { - EuiFormRow, - EuiPageHeader, - EuiTitle, - EuiPageContent, - EuiPageContentBody, - EuiHorizontalRule, - EuiSpacer, - EuiCheckbox, - EuiComboBox, - EuiFieldText, - EuiButton, -} from '@elastic/eui'; -import CSS from 'csstype'; -import { - getChannelsQueryObject, - noDeliveryChannelsSelectedMessage, - testMessageConfirmationMessage, - testMessageFailureMessage, -} from './delivery_constants'; -import 'react-mde/lib/styles/css/react-mde-all.css'; -import { reportDefinitionParams } from '../create/create_report_definition'; -import ReactMDE from 'react-mde'; -import { converter } from '../utils'; -import { getAvailableNotificationsChannels } from '../../main/main_utils'; -import { REPORTING_NOTIFICATIONS_DASHBOARDS_API } from '../../../../common'; - -const styles: CSS.Properties = { - maxWidth: '800px', -}; - -// TODO: add to schema to avoid need for export -export let includeDelivery = false; - -export type ReportDeliveryProps = { - edit: boolean; - editDefinitionId: string; - reportDefinitionRequest: reportDefinitionParams; - httpClientProps: any; - showDeliveryChannelError: boolean; - deliveryChannelError: string; - showDeliverySubjectError: boolean; - deliverySubjectError: string; - showDeliveryTextError: boolean; - deliveryTextError: string; -}; - -export function ReportDelivery(props: ReportDeliveryProps) { - const { - edit, - editDefinitionId, - reportDefinitionRequest, - httpClientProps, - showDeliveryChannelError, - deliveryChannelError, - showDeliverySubjectError, - deliverySubjectError, - showDeliveryTextError, - deliveryTextError, - } = props; - - const [isDeliveryHidden, setIsHidden] = useState(false); - const [sendNotification, setSendNotification] = useState(false); - const [channels, setChannels] = useState([]); - const [selectedChannels, setSelectedChannels] = useState([]); - const [notificationSubject, setNotificationSubject] = useState('New report'); - const [notificationMessage, setNotificationMessage] = useState( - 'New report available to view' - ); - const [selectedTab, setSelectedTab] = React.useState<'write' | 'preview'>( - 'write' - ); - const [testMessageConfirmation, setTestMessageConfirmation] = useState(''); - - const handleSendNotification = (e: { target: { checked: boolean } }) => { - setSendNotification(e.target.checked); - includeDelivery = e.target.checked; - if (includeDelivery) { - reportDefinitionRequest.delivery.title = 'New report'; - reportDefinitionRequest.delivery.textDescription = - 'New report available to view'; - reportDefinitionRequest.delivery.htmlDescription = converter.makeHtml( - 'New report available to view' - ); - } else { - reportDefinitionRequest.delivery.title = `\u2014`; - reportDefinitionRequest.delivery.textDescription = `\u2014`; - } - }; - - const handleSelectedChannels = (e: Array<{ label: string; id: string }>) => { - setSelectedChannels(e); - reportDefinitionRequest.delivery.configIds = []; - for (let i = 0; i < e.length; ++i) { - reportDefinitionRequest.delivery.configIds.push(e[i].id); - } - }; - - const handleNotificationSubject = (e: { target: { value: string } }) => { - setNotificationSubject(e.target.value); - reportDefinitionRequest.delivery.title = e.target.value; - }; - - const handleNotificationMessage = (e: string) => { - setNotificationMessage(e); - reportDefinitionRequest.delivery.textDescription = e.toString(); - reportDefinitionRequest.delivery.htmlDescription = converter.makeHtml( - e.toString() - ); - }; - - const handleTestMessageConfirmation = (e: JSX.Element) => { - setTestMessageConfirmation(e); - }; - - const defaultCreateDeliveryParams = () => { - includeDelivery = false; - reportDefinitionRequest.delivery = { - configIds: [], - title: `\u2014`, // default values before any Notifications settings are configured - textDescription: `\u2014`, - htmlDescription: '', - }; - }; - - const isStatusCodeSuccess = (statusCode: string) => { - if (!statusCode) return true; - return /^2\d\d/.test(statusCode); - }; - - const eventToNotification = (event: any) => { - const success = event.event.status_list.every((status: any) => - isStatusCodeSuccess(status.delivery_status.status_code) - ); - return { - event_source: event.event.event_source, - status_list: event.event.status_list, - event_id: event.event_id, - created_time_ms: event.created_time_ms, - last_updated_time_ms: event.last_updated_time_ms, - success, - }; - }; - - const getNotification = async (id: string) => { - const response = await httpClientProps.get( - `${REPORTING_NOTIFICATIONS_DASHBOARDS_API.GET_EVENT}/${id}` - ); - return eventToNotification(response.event_list[0]); - }; - - const sendTestNotificationsMessage = async () => { - if (selectedChannels.length === 0) { - handleTestMessageConfirmation(noDeliveryChannelsSelectedMessage); - } - let testMessageFailures = false; - let failedChannels: string[] = []; - // for each config ID in the current channels list - for (let i = 0; i < selectedChannels.length; ++i) { - try { - const eventId = await httpClientProps - .get( - `${REPORTING_NOTIFICATIONS_DASHBOARDS_API.SEND_TEST_MESSAGE}/${selectedChannels[i].id}`, - { - query: { - feature: 'reports', - }, - } - ) - .then((response) => response.event_id); - - await getNotification(eventId).then((response) => { - if (!response.success) { - const error = new Error('Failed to send the test message.'); - failedChannels.push(response.status_list[0].config_name); - error.stack = JSON.stringify(response.status_list, null, 2); - throw error; - } - }); - } catch (error) { - testMessageFailures = true; - } - } - if (testMessageFailures) { - handleTestMessageConfirmation(testMessageFailureMessage(failedChannels)); - } else { - handleTestMessageConfirmation(testMessageConfirmationMessage); - } - }; - - const checkIfNotificationsPluginIsInstalled = () => { - fetch( - '../api/console/proxy?path=%2F_cat%2Fplugins%3Fv%3Dtrue%26s%3Dcomponent%26h%3Dcomponent&method=GET', - { - credentials: 'include', - headers: { - Accept: 'text/plain, */*; q=0.01', - 'Accept-Language': 'en-US,en;q=0.5', - 'osd-xsrf': 'true', - }, - method: 'POST', - mode: 'cors', - } - ) - .then((response) => { - return response.text(); - }) - .then(function (data) { - if (data.includes('opensearch-notifications')) { - setIsHidden(false); - return; - } - setIsHidden(true); - }); - }; - - useEffect(() => { - checkIfNotificationsPluginIsInstalled(); - httpClientProps - .get(`${REPORTING_NOTIFICATIONS_DASHBOARDS_API.GET_CONFIGS}`, { - query: getChannelsQueryObject, - }) - .then(async (response: any) => { - let availableChannels = getAvailableNotificationsChannels( - response.config_list - ); - setChannels(availableChannels); - return availableChannels; - }) - .then((availableChannels: any) => { - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response: any) => { - if (response.report_definition.delivery.configIds.length > 0) { - // add config IDs - handleSendNotification({ target: { checked: true } }); - let delivery = response.report_definition.delivery; - let editChannelOptions = []; - for (let i = 0; i < delivery.configIds.length; ++i) { - for (let j = 0; j < availableChannels.length; ++j) { - if (delivery.configIds[i] === availableChannels[j].id) { - let editChannelOption = { - label: availableChannels[j].label, - id: availableChannels[j].id, - }; - editChannelOptions.push(editChannelOption); - break; - } - } - } - setSelectedChannels(editChannelOptions); - setNotificationSubject(delivery.title); - setNotificationMessage(delivery.textDescription); - reportDefinitionRequest.delivery = delivery; - } - }); - } else { - defaultCreateDeliveryParams(); - } - }) - .catch((error: string) => { - console.log( - 'error: cannot get available channels from Notifications plugin:', - error - ); - }); - }, []); - - const showNotificationsBody = sendNotification ? ( -
- - - - - - - - - - - - Promise.resolve(converter.makeHtml(markdown)) - } - /> - - - - - Send test message - - -
- ) : null; - - return ( - - ); -} diff --git a/dashboards-reports/public/components/report_definitions/delivery/delivery_constants.tsx b/dashboards-reports/public/components/report_definitions/delivery/delivery_constants.tsx deleted file mode 100644 index 3e049470..00000000 --- a/dashboards-reports/public/components/report_definitions/delivery/delivery_constants.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from "react"; -import { EuiIcon, EuiText } from '@elastic/eui' - -export const noDeliveryChannelsSelectedMessage = ( - - Please select a channel. - -) - -export const testMessageConfirmationMessage = ( - - Test message sent to selected channels. If no test message is received, try again or check your channel settings in Notifications. - -); - -export const testMessageFailureMessage = (failedChannels: Array) => ( - - Failed to send test message for some channels. Please adjust channel settings for {failedChannels.toString()} - -) - -export const getChannelsQueryObject = { - config_type: ['slack', 'email', 'chime', 'webhook', 'sns', 'ses'], - from_index: 0, - max_items: 1000, - sort_field: 'name', - sort_order: 'asc', - feature_list: ['reports'] -} diff --git a/dashboards-reports/public/components/report_definitions/delivery/index.ts b/dashboards-reports/public/components/report_definitions/delivery/index.ts deleted file mode 100644 index 91d85f4a..00000000 --- a/dashboards-reports/public/components/report_definitions/delivery/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { ReportDelivery } from './delivery'; diff --git a/dashboards-reports/public/components/report_definitions/edit/edit_report_definition.tsx b/dashboards-reports/public/components/report_definitions/edit/edit_report_definition.tsx deleted file mode 100644 index 3e876931..00000000 --- a/dashboards-reports/public/components/report_definitions/edit/edit_report_definition.tsx +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiButton, - EuiPage, - EuiTitle, - EuiPageBody, - EuiSpacer, - EuiGlobalToastList, -} from '@elastic/eui'; -import { ReportSettings } from '../report_settings'; -import { ReportTrigger } from '../report_trigger'; -import { ReportDefinitionSchemaType } from 'server/model'; -import { converter } from '../utils'; -import { - permissionsMissingToast, - permissionsMissingActions, -} from '../../utils/utils'; -import { definitionInputValidation } from '../utils/utils'; - -export function EditReportDefinition(props: { [x: string]: any; setBreadcrumbs?: any; httpClient?: any; }) { - const [toasts, setToasts] = useState([]); - const [comingFromError, setComingFromError] = useState(false); - const [preErrorData, setPreErrorData] = useState({}); - - const [ - showSettingsReportNameError, - setShowSettingsReportNameError, - ] = useState(false); - const [ - settingsReportNameErrorMessage, - setSettingsReportNameErrorMessage, - ] = useState(''); - const [ - showSettingsReportSourceError, - setShowSettingsReportSourceError, - ] = useState(false); - const [ - settingsReportSourceErrorMessage, - setSettingsReportSourceErrorMessage, - ] = useState(''); - const [ - showTriggerIntervalNaNError, - setShowTriggerIntervalNaNError, - ] = useState(false); - const [showCronError, setShowCronError] = useState(false); - const [showTimeRangeError, setShowTimeRangeError] = useState(false); - - const addPermissionsMissingViewEditPageToastHandler = (errorType: string) => { - let toast = {}; - if (errorType === 'permissions') { - toast = permissionsMissingToast( - permissionsMissingActions.VIEWING_EDIT_PAGE - ); - } else if (errorType === 'API') { - toast = { - title: i18n.translate( - 'opensearch.reports.editReportDefinition.errorLoading', - { defaultMessage: 'Error loading report definition values.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - } - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const handleViewEditPageErrorToast = (errorType: string) => { - addPermissionsMissingViewEditPageToastHandler(errorType); - }; - - const addInputValidationErrorToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.editReportDefinition.fieldsHaveAnError', - { - defaultMessage: - 'One or more fields have an error. Please check and try again.', - } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleInputValidationErrorToast = () => { - addInputValidationErrorToastHandler(); - }; - - const addErrorUpdatingReportDefinitionToastHandler = (errorType: string) => { - let toast = {}; - if (errorType === 'permissions') { - toast = permissionsMissingToast( - permissionsMissingActions.UPDATING_DEFINITION - ); - } else if (errorType === 'API') { - toast = { - title: i18n.translate( - 'opensearch.reports.editReportDefinition.errorUpdating', - { defaultMessage: 'Error updating report definition.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorToast', - }; - } - // @ts-ignore - setToasts(toasts.concat(toast)); - }; - - const handleErrorUpdatingReportDefinitionToast = (errorType: string) => { - addErrorUpdatingReportDefinitionToastHandler(errorType); - }; - - const addErrorDeletingReportDefinitionToastHandler = () => { - const errorToast = { - title: i18n.translate( - 'opensearch.reports.editReportDefinition.errorDeleting', - { defaultMessage: 'Error deleting old scheduled report definition.' } - ), - color: 'danger', - iconType: 'alert', - id: 'errorDeleteToast', - }; - // @ts-ignore - setToasts(toasts.concat(errorToast)); - }; - - const handleErrorDeletingReportDefinitionToast = () => { - addErrorDeletingReportDefinitionToastHandler(); - }; - - const removeToast = (removedToast: { id: any; }) => { - setToasts(toasts.filter((toast: any) => toast.id !== removedToast.id)); - }; - - const reportDefinitionId = props['match']['params']['reportDefinitionId']; - let reportDefinition: ReportDefinitionSchemaType; - let editReportDefinitionRequest = { - report_params: { - report_name: '', - report_source: '', - description: '', - core_params: { - base_url: '', - report_format: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: '', - }, - time_created: 0, - last_updated: 0, - status: '', - }; - reportDefinition = editReportDefinitionRequest; // initialize reportDefinition object - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - if (comingFromError) { - editReportDefinitionRequest = preErrorData; - } - - const callUpdateAPI = async (metadata) => { - const { httpClient } = props; - httpClient - .put(`../api/reporting/reportDefinitions/${reportDefinitionId}`, { - body: JSON.stringify(metadata), - params: reportDefinitionId.toString(), - }) - .then(async () => { - window.location.assign(`reports-dashboards#/edit=success`); - }) - .catch((error: { body: { statusCode: number; }; }) => { - console.log('error in updating report definition:', error); - if (error.body.statusCode === 400) { - handleInputValidationErrorToast(); - } else if (error.body.statusCode === 403) { - handleErrorUpdatingReportDefinitionToast('permissions'); - } else { - handleErrorUpdatingReportDefinitionToast('API'); - } - setPreErrorData(metadata); - setComingFromError(true); - }); - }; - - const editReportDefinition = async (metadata: { report_params: {core_params: {header: string, footer: string}}}) => { - if ('header' in metadata.report_params.core_params) { - metadata.report_params.core_params.header = converter.makeHtml( - metadata.report_params.core_params.header - ); - } - if ('footer' in metadata.report_params.core_params) { - metadata.report_params.core_params.footer = converter.makeHtml( - metadata.report_params.core_params.footer - ); - } - - // client-side input validation - let error = false; - await definitionInputValidation( - metadata, - error, - setShowSettingsReportNameError, - setSettingsReportNameErrorMessage, - setShowSettingsReportSourceError, - setSettingsReportSourceErrorMessage, - setShowTriggerIntervalNaNError, - timeRange, - setShowTimeRangeError, - setShowCronError, - ).then((response) => { - error = response; - }); - if (error) { - handleInputValidationErrorToast(); - setPreErrorData(metadata); - setComingFromError(true); - } else { - await callUpdateAPI(metadata); - } - }; - - useEffect(() => { - window.scrollTo(0, 0); - const { httpClient } = props; - httpClient - .get(`../api/reporting/reportDefinitions/${reportDefinitionId}`) - .then((response) => { - reportDefinition = response.report_definition; - const { - time_created: timeCreated, - status, - last_updated: lastUpdated, - report_params: { report_name: reportName }, - } = reportDefinition; - // configure non-editable fields - editReportDefinitionRequest.time_created = timeCreated; - editReportDefinitionRequest.last_updated = lastUpdated; - editReportDefinitionRequest.status = status; - - props.setBreadcrumbs([ - { - text: 'Reporting', - href: '#', - }, - { - text: `Report definition details: ${reportName}`, - href: `#/report_definition_details/${reportDefinitionId}`, - }, - { - text: `Edit report definition: ${reportName}`, - }, - ]); - }) - .catch((error: { body: { statusCode: number; }; }) => { - console.error( - 'error when loading edit report definition page: ', - error - ); - if (error.body.statusCode === 403) { - handleViewEditPageErrorToast('permissions'); - } else { - handleViewEditPageErrorToast('API'); - } - }); - }, []); - - return ( - - - -

- {i18n.translate('opensearch.reports.editReportDefinition.title', { - defaultMessage: 'Edit report definition', - })} -

-
- - - - - - { - window.location.assign('reports-dashboards#/'); - }} - > - {i18n.translate( - 'opensearch.reports.editReportDefinition.cancel', - { defaultMessage: 'Cancel' } - )} - - - - editReportDefinition(editReportDefinitionRequest)} - id={'editReportDefinitionButton'} - > - {i18n.translate('opensearch.reports.editReportDefinition.save', { - defaultMessage: 'Save Changes', - })} - - - - -
-
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/edit/index.ts b/dashboards-reports/public/components/report_definitions/edit/index.ts deleted file mode 100644 index bcba3740..00000000 --- a/dashboards-reports/public/components/report_definitions/edit/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { EditReportDefinition } from './edit_report'; diff --git a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap b/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap deleted file mode 100644 index d348db59..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/__snapshots__/report_settings.test.tsx.snap +++ /dev/null @@ -1,8471 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel dashboard create from in-context 1`] = ` -
-
-

- Report settings -

-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
- Valid characters are a-z, A-Z, 0-9, (), [], _ (underscore), - (hyphen) and (space). -
-
-
-
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
- -
-
-
-
-
- - -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-
-
-`; - -exports[` panel display errors on create 1`] = ` -
-
-

- Report settings -

-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
- Valid characters are a-z, A-Z, 0-9, (), [], _ (underscore), - (hyphen) and (space). -
-
-
-
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
- -
-
-
-
-
- - -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-
-
-`; - -exports[` panel render component 1`] = ` -
-
-

- Report settings -

-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
- Valid characters are a-z, A-Z, 0-9, (), [], _ (underscore), - (hyphen) and (space). -
-
-
-
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
- -
-
-
-
-
- - -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-
-
-`; - -exports[` panel visualization create from in-context 1`] = ` -
-
-

- Report settings -

-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
- Valid characters are a-z, A-Z, 0-9, (), [], _ (underscore), - (hyphen) and (space). -
-
-
-
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
- -
-
-
-
-
- - -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings.test.tsx b/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings.test.tsx deleted file mode 100644 index 0f7ead8f..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings.test.tsx +++ /dev/null @@ -1,837 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { ReportSettings } from '../report_settings'; -import 'babel-polyfill'; -import 'regenerator-runtime'; -import httpClientMock from '../../../../../test/httpMockClient'; -import { configure, mount, shallow } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; -import { act } from 'react-dom/test-utils'; - -const emptyRequest = { - report_params: { - report_name: '', - report_source: '', - description: '', - core_params: { - base_url: '', - report_format: '', - time_duration: '', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: '', - trigger_params: {}, - }, - time_created: 0, - last_updated: 0, - status: '', -}; - -let timeRange = { - timeFrom: new Date(123456789), - timeTo: new Date(1234567890), -}; - -const dashboardHits = { - hits: [ - { - _id: 'dashboard:abcdefghijklmnop12345', - _source: { - dashboard: { - description: 'mock dashboard value', - hits: 0, - timeFrom: 'now-24h', - timeTo: 'now', - title: 'Mock Dashboard', - }, - notebook: { - name: 'mock notebook name' - } - }, - }, - ], -}; - -const visualizationHits = { - hits: [ - { - _id: 'visualization:abcdefghijklmnop12345', - _source: { - visualization: { - description: 'mock visualization value', - title: 'Mock Visualization', - }, - notebook: { - name: 'mock notebook name' - }, - }, - }, - ], -}; - -const savedSearchHits = { - hits: [ - { - _id: 'search:abcdefghijklmnop12345', - _source: { - search: { - title: 'Mock saved search value', - }, - notebook: { - name: 'mock notebook name' - }, - }, - }, - ], -}; - -describe(' panel', () => { - jest.spyOn(console, 'log').mockImplementation(() => {}); - configure({ adapter: new Adapter() }); - test('render component', () => { - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - }); - - test('render edit, dashboard source', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601/dashboard/abcdefghijklmnop12345', - report_format: 'pdf', - header: 'header content', - footer: 'footer content', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: dashboardHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit, visualization source', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Visualization', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601/edit/abcdefghijklmnop12345', - report_format: 'png', - header: 'header content', - footer: 'footer content', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: visualizationHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit, saved search source', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601/discover/abcdefghijklmnop12345', - report_format: 'csv', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - saved_search_id: 'abcdefghijk', - limit: 10000, - excel: true, - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: savedSearchHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit, dashboard source', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'csv', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - saved_search_id: 'abcdefghijk', - limit: 10000, - excel: true, - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: dashboardHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit, visualization source', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'csv', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - saved_search_id: 'abcdefghijk', - limit: 10000, - excel: true, - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: visualizationHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - - test('dashboard create from in-context', async () => { - window = Object.create(window); - Object.defineProperty(window, 'location', { - configurable: true, - value: { - href: - 'http://localhost:5601/app/reports-dashboards#/create?previous=dashboard:abcdefghijklmnop12345?timeFrom=2020-10-26T20:52:56.382Z?timeTo=2020-10-27T20:52:56.384Z', - }, - }); - - const promise = Promise.resolve(); - - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: 'http://localhost:5601/dashboard/abcdefghijklmnop12345', - report_format: 'png', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: dashboardHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('visualization create from in-context', async () => { - // @ts-ignore - delete window.location; // reset window.location.href for in-context testing - - window = Object.create(window); - Object.defineProperty(window, 'location', { - configurable: true, - value: { - href: - 'http://localhost:5601/app/reports-dashboards#/create?previous=visualize:abcdefghijklmnop12345?timeFrom=2020-10-26T20:52:56.382Z?timeTo=2020-10-27T20:52:56.384Z', - }, - }); - - const promise = Promise.resolve(); - - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Visualization', - description: '', - core_params: { - base_url: 'http://localhost:5601/edit/abcdefghijklmnop12345', - report_format: 'pdf', - header: '', - footer: '', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: visualizationHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('saved search create from in-context', async () => { - // @ts-ignore - delete window.location; // reset window.location.href for in-context testing - - window = Object.create(window); - Object.defineProperty(window, 'location', { - value: { - href: - 'http://localhost:5601/app/reports-dashboards#/create?previous=discover:abcdefghijklmnop12345?timeFrom=2020-10-26T20:52:56.382Z?timeTo=2020-10-27T20:52:56.384Z', - }, - }); - - const promise = Promise.resolve(); - - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: '', - core_params: { - base_url: 'http://localhost:5601/discover/abcdefghijklmnop12345', - report_format: 'csv', - header: '', - footer: '', - time_duration: 'PT30M', - saved_search_id: 'abcdefghijk', - limit: 10000, - excel: true, - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: {}, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: savedSearchHits, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('simulate click on dashboard combo box', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'csv', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - saved_search_id: 'abcdefghijk', - limit: 10000, - excel: true, - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: dashboardHits, - }); - - const component = shallow( - - , {disableLifecycleMethods: true}); - await act(() => promise); - - const comboBox = component.find('EuiComboBox').at(0); - comboBox.simulate('change', [{value: 'test', label: 'test'}]); - - await act(() => promise); - }); - - test('simulate click on visualization combo box', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Visualization', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'pdf', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: visualizationHits, - }); - - const component = mount( - - ); - await act(() => promise); - - const reportSourceRadio = component.find('EuiRadioGroup').at(0); - const visualizationRadio = reportSourceRadio.find('EuiRadio').at(1); - - visualizationRadio.find('input').simulate('change', 'visualizationReportSource'); - await act(() => promise); - const comboBox = component.find('EuiComboBox').at(0); - - act(() => { - comboBox.props().onChange([{ value: 'test', label: 'test' }]); - }); - component.update(); - - await act(() => promise); - }); - - test('simulate click on saved search combo box', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Saved search', - description: 'test description', - core_params: { - base_url: 'http://localhost:5601', - report_format: 'pdf', - header: 'test header content', - footer: 'test footer content', - time_duration: 'PT30M', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - enabled: false, - enabled_time: 1234567890, - schedule: { - interval: { - period: 1, - start_time: 123456789, - unit: 'Days' - } - } - }, - }, - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - hits: savedSearchHits, - }); - - const component = mount( - - ); - await act(() => promise); - - const reportSourceRadio = component.find('EuiRadioGroup').at(0); - const visualizationRadio = reportSourceRadio.find('EuiRadio').at(2); - - visualizationRadio.find('input').simulate('change', 'savedSearchReportSource'); - await act(() => promise); - const comboBox = component.find('EuiComboBox').at(0); - - act(() => { - comboBox.props().onChange([{ value: 'test', label: 'test' }]); - }) - component.update(); - - await act(() => promise); - }); - - test('display errors on create', async () => { - const promise = Promise.resolve(); - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); -}); diff --git a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings_helpers.test.tsx b/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings_helpers.test.tsx deleted file mode 100644 index 9a5b3367..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/__tests__/report_settings_helpers.test.tsx +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - getDashboardBaseUrlCreate, - getDashboardOptions, - getSavedSearchBaseUrlCreate, - getSavedSearchOptions, - getVisualizationBaseUrlCreate, - getVisualizationOptions, - handleDataToVisualReportSourceChange, - parseInContextUrl, -} from '../report_settings_helpers'; - -const TEST_DEFINITION_ID = '12345'; - -describe('report_settings_helpers tests', () => { - test('parseInContextUrl', () => { - const urlString = - 'http://localhost:5601/app/reports-dashboards#/create?previous=dashboard:7adfa750-4c81-11e8-b3d7-01146121b73d?timeFrom=2020-10-26T20:52:56.382Z?timeTo=2020-10-27T20:52:56.384Z'; - - const id = parseInContextUrl(urlString, 'id'); - expect(id).toBe('7adfa750-4c81-11e8-b3d7-01146121b73d'); - - const timeFrom = parseInContextUrl(urlString, 'timeFrom'); - expect(timeFrom).toBe('2020-10-26T20:52:56.382Z'); - - const timeTo = parseInContextUrl(urlString, 'timeTo'); - expect(timeTo).toBe('2020-10-27T20:52:56.384Z'); - - const error = parseInContextUrl(urlString, 'invalid'); - expect(error).toBe('error: invalid parameter'); - }); - - test('getDashboardBaseUrlCreate', () => { - const baseUrl = getDashboardBaseUrlCreate(true, TEST_DEFINITION_ID, true); - expect(baseUrl).toBe('/app/dashboards#/view/'); - - const baseUrlNotFromEdit = getDashboardBaseUrlCreate( - false, - TEST_DEFINITION_ID, - true - ); - expect(baseUrlNotFromEdit).toBe('/app/dashboards#/view/'); - }); - - test('getDashboardBaseUrlCreate not from in-context', () => { - const baseUrl = getDashboardBaseUrlCreate(false, TEST_DEFINITION_ID, false); - expect(baseUrl).toBe('/'); - }) - - test('getVisualizationBaseUrlCreate', () => { - const baseUrl = getVisualizationBaseUrlCreate( - true, - TEST_DEFINITION_ID, - true - ); - expect(baseUrl).toBe('/app/visualize#/edit/'); - - const baseUrlNotFromEdit = getVisualizationBaseUrlCreate( - false, - TEST_DEFINITION_ID, - true - ); - expect(baseUrlNotFromEdit).toBe('/app/visualize#/edit/'); - }); - - test('getVisualizationBaseUrlCreate not from in-context', () => { - const baseUrl = getVisualizationBaseUrlCreate( - false, - TEST_DEFINITION_ID, - false - ); - expect(baseUrl).toBe('/'); - }) - - test('getSavedSearchBaseUrlCreate', () => { - const baseUrl = getSavedSearchBaseUrlCreate(true, TEST_DEFINITION_ID, true); - expect(baseUrl).toBe('/app/discover#/view/'); - - const baseUrlNotFromEdit = getSavedSearchBaseUrlCreate( - false, - TEST_DEFINITION_ID, - true - ); - expect(baseUrlNotFromEdit).toBe('/app/discover#/view/'); - }); - - test('getSavedSearchBaseUrlCreate not from in-context', () => { - const baseUrl = getSavedSearchBaseUrlCreate(false, TEST_DEFINITION_ID, false); - expect(baseUrl).toBe('/'); - }) - - test('getDashboardOptions', () => { - const mockData = [ - { - _id: 'dashboard:1234567890abcdefghijk', - _source: { - dashboard: { - title: 'Mock dashboard title', - }, - }, - }, - ]; - - const options = getDashboardOptions(mockData); - expect(options[0].value).toBe('1234567890abcdefghijk'); - expect(options[0].label).toBe('Mock dashboard title'); - }); - - test('getVisualizationOptions', () => { - const mockData = [ - { - _id: 'visualization:1234567890abcdefghijk', - _source: { - visualization: { - title: 'Mock visualization title', - }, - }, - }, - ]; - - const options = getVisualizationOptions(mockData); - expect(options[0].value).toBe('1234567890abcdefghijk'); - expect(options[0].label).toBe('Mock visualization title'); - }); - - test('getSavedSearchOptions', () => { - const mockData = [ - { - _id: 'search:1234567890abcdefghijk', - _source: { - search: { - title: 'Mock saved search title', - }, - }, - }, - ]; - const options = getSavedSearchOptions(mockData); - expect(options[0].value).toBe('1234567890abcdefghijk'); - expect(options[0].label).toBe('Mock saved search title'); - }); - - test('handleDataToVisualReportSourceChange', () => { - let reportDefinitionRequest = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - report_format: '', - saved_search_id: '', - limit: 10, - excel: true, - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: {}, - }, - }; - - handleDataToVisualReportSourceChange(reportDefinitionRequest); - expect( - reportDefinitionRequest.report_params.core_params.report_format - ).toBe('pdf'); - expect(reportDefinitionRequest.report_params.core_params).toMatchObject({ - report_format: 'pdf', - }); - }); -}); diff --git a/dashboards-reports/public/components/report_definitions/report_settings/index.ts b/dashboards-reports/public/components/report_definitions/report_settings/index.ts deleted file mode 100644 index 2b410f03..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { ReportSettings } from './report_settings'; diff --git a/dashboards-reports/public/components/report_definitions/report_settings/report_settings.tsx b/dashboards-reports/public/components/report_definitions/report_settings/report_settings.tsx deleted file mode 100644 index 0db86cfd..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/report_settings.tsx +++ /dev/null @@ -1,926 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiPageHeader, - EuiTitle, - EuiPageContent, - EuiPageContentBody, - EuiHorizontalRule, - EuiText, - EuiSpacer, - EuiRadioGroup, - EuiSelect, - EuiTextArea, - EuiCheckboxGroup, - EuiComboBox, -} from '@elastic/eui'; -import { - REPORT_SOURCE_RADIOS, - PDF_PNG_FILE_FORMAT_OPTIONS, - HEADER_FOOTER_CHECKBOX, - REPORT_SOURCE_TYPES, -} from './report_settings_constants'; -import Showdown from 'showdown'; -import ReactMde from 'react-mde'; -import 'react-mde/lib/styles/css/react-mde-all.css'; -import { - reportDefinitionParams, - timeRangeParams, -} from '../create/create_report_definition'; -import { - parseInContextUrl, - getSavedSearchBaseUrlCreate, - getVisualizationBaseUrlCreate, - getSavedSearchOptions, - getVisualizationOptions, - getDashboardBaseUrlCreate, - getDashboardOptions, - handleDataToVisualReportSourceChange, - getNotebooksOptions, - getNotebooksBaseUrlCreate, - getReportSourceFromURL, -} from './report_settings_helpers'; -import { TimeRangeSelect } from './time_range'; -import { converter } from '../utils'; -import { ReportDefinitionSchemaType } from 'server/model'; -import { ReportTrigger } from '../report_trigger'; - -type ReportSettingProps = { - edit: boolean; - editDefinitionId: string; - reportDefinitionRequest: reportDefinitionParams; - httpClientProps: any; - timeRange: timeRangeParams; - showSettingsReportNameError: boolean; - settingsReportNameErrorMessage: string; - showSettingsReportSourceError: boolean; - settingsReportSourceErrorMessage: string; - showTimeRangeError: boolean; - showTriggerIntervalNaNError: boolean; - showCronError: boolean; -}; - -export function ReportSettings(props: ReportSettingProps) { - const { - edit, - editDefinitionId, - reportDefinitionRequest, - httpClientProps, - timeRange, - showSettingsReportNameError, - settingsReportNameErrorMessage, - showSettingsReportSourceError, - settingsReportSourceErrorMessage, - showTimeRangeError, - showTriggerIntervalNaNError, - showCronError - } = props; - - const [reportName, setReportName] = useState(''); - const [reportDescription, setReportDescription] = useState(''); - const [reportSourceId, setReportSourceId] = useState('dashboardReportSource'); - - const [dashboardSourceSelect, setDashboardSourceSelect] = useState([] as any); - const [dashboards, setDashboards] = useState([] as any); - - const [visualizationSourceSelect, setVisualizationSourceSelect] = useState( - [] as any - ); - const [visualizations, setVisualizations] = useState([] as any); - - const [savedSearchSourceSelect, setSavedSearchSourceSelect] = useState( - [] as any - ); - const [savedSearches, setSavedSearches] = useState([] as any); - - const [notebooksSourceSelect, setNotebooksSourceSelect] = useState([] as any); - const [notebooks, setNotebooks] = useState([] as any); - - const [fileFormat, setFileFormat] = useState('pdf'); - - const handleDashboards = (e) => { - setDashboards(e); - }; - - const handleVisualizations = (e) => { - setVisualizations(e); - }; - - const handleSavedSearches = (e) => { - setSavedSearches(e); - }; - - const handleNotebooks = (e) => { - setNotebooks(e); - }; - - const handleReportName = (e: { - target: { value: React.SetStateAction }; - }) => { - setReportName(e.target.value); - reportDefinitionRequest.report_params.report_name = e.target.value.toString(); - }; - - const handleReportDescription = (e: { - target: { value: React.SetStateAction }; - }) => { - setReportDescription(e.target.value); - reportDefinitionRequest.report_params.description = e.target.value.toString(); - }; - - const handleReportSource = (e: React.SetStateAction) => { - setReportSourceId(e); - let fromInContext = false; - if (window.location.href.includes('?')) { - fromInContext = true; - } - if (e === 'dashboardReportSource') { - reportDefinitionRequest.report_params.report_source = 'Dashboard'; - reportDefinitionRequest.report_params.core_params.base_url = - getDashboardBaseUrlCreate(edit, editDefinitionId, fromInContext) + - dashboards[0]?.value; - - // set params to visual report params after switch from saved search - handleDataToVisualReportSourceChange(reportDefinitionRequest); - setFileFormat('pdf'); - } else if (e === 'visualizationReportSource') { - reportDefinitionRequest.report_params.report_source = 'Visualization'; - reportDefinitionRequest.report_params.core_params.base_url = - getVisualizationBaseUrlCreate(edit, editDefinitionId, fromInContext) + - visualizations[0]?.value; - - // set params to visual report params after switch from saved search - handleDataToVisualReportSourceChange(reportDefinitionRequest); - setFileFormat('pdf'); - } else if (e === 'savedSearchReportSource') { - reportDefinitionRequest.report_params.report_source = 'Saved search'; - reportDefinitionRequest.report_params.core_params.base_url = - getSavedSearchBaseUrlCreate(edit, editDefinitionId, fromInContext) + - savedSearches[0]?.value; - reportDefinitionRequest.report_params.core_params.saved_search_id = - savedSearches[0]?.value; - reportDefinitionRequest.report_params.core_params.report_format = 'csv'; - reportDefinitionRequest.report_params.core_params.limit = 10000; - reportDefinitionRequest.report_params.core_params.excel = true; - } else if (e === 'notebooksReportSource') { - reportDefinitionRequest.report_params.report_source = 'Notebook'; - reportDefinitionRequest.report_params.core_params.base_url = - getNotebooksBaseUrlCreate(edit, editDefinitionId, fromInContext) + - notebooks[0]?.value; - - // set params to visual report params after switch from saved search - handleDataToVisualReportSourceChange(reportDefinitionRequest); - setFileFormat('pdf'); - } - }; - - const handleDashboardSelect = (e: string | any[]) => { - setDashboardSourceSelect(e); - - let fromInContext = false; - if (window.location.href.includes('?')) { - fromInContext = true; - } - - if (e.length > 0) { - reportDefinitionRequest.report_params.core_params.base_url = - getDashboardBaseUrlCreate(edit, editDefinitionId, fromInContext) + - e[0].value; - } else { - reportDefinitionRequest.report_params.core_params.base_url = ''; - } - }; - - const handleVisualizationSelect = (e) => { - setVisualizationSourceSelect(e); - let fromInContext = false; - if (window.location.href.includes('?')) { - fromInContext = true; - } - - if (e.length > 0) { - reportDefinitionRequest.report_params.core_params.base_url = - getVisualizationBaseUrlCreate(edit, editDefinitionId, fromInContext) + - e[0].value; - } else { - reportDefinitionRequest.report_params.core_params.base_url = ''; - } - }; - - const handleSavedSearchSelect = (e) => { - setSavedSearchSourceSelect(e); - let fromInContext = false; - if (window.location.href.includes('?')) { - fromInContext = true; - } - if (e.length > 0) { - reportDefinitionRequest.report_params.core_params.saved_search_id = - e[0].value; - - reportDefinitionRequest.report_params.core_params.base_url = - getSavedSearchBaseUrlCreate(edit, editDefinitionId, fromInContext) + - e[0].value; - } else { - reportDefinitionRequest.report_params.core_params.base_url = ''; - } - }; - - const handleNotebooksSelect = (e) => { - setNotebooksSourceSelect(e); - let fromInContext = false; - if (window.location.href.includes('?')) { - fromInContext = true; - } - if (e.length > 0) { - reportDefinitionRequest.report_params.core_params.base_url = - getNotebooksBaseUrlCreate(edit, editDefinitionId, fromInContext) + - e[0].value; - } else { - reportDefinitionRequest.report_params.core_params.base_url = ''; - } - }; - - const handleFileFormat = (e: React.SetStateAction) => { - setFileFormat(e); - reportDefinitionRequest.report_params.core_params.report_format = e.toString(); - }; - - const PDFandPNGFileFormats = () => { - return ( -
- - - -
- ); - }; - - const SettingsMarkdown = () => { - const [ - checkboxIdSelectHeaderFooter, - setCheckboxIdSelectHeaderFooter, - ] = useState({ ['header']: false, ['footer']: false }); - - const [footer, setFooter] = useState(''); - const [selectedTabFooter, setSelectedTabFooter] = React.useState< - 'write' | 'preview' - >('write'); - - const [header, setHeader] = useState(''); - const [selectedTabHeader, setSelectedTabHeader] = React.useState< - 'write' | 'preview' - >('write'); - - const handleHeader = (e) => { - setHeader(e); - reportDefinitionRequest.report_params.core_params.header = e; - }; - - const handleFooter = (e) => { - setFooter(e); - reportDefinitionRequest.report_params.core_params.footer = e; - }; - - const handleCheckboxHeaderFooter = (optionId) => { - const newCheckboxIdToSelectedMap = { - ...checkboxIdSelectHeaderFooter, - ...{ - [optionId]: !checkboxIdSelectHeaderFooter[optionId], - }, - }; - setCheckboxIdSelectHeaderFooter(newCheckboxIdToSelectedMap); - }; - - const showFooter = checkboxIdSelectHeaderFooter.footer ? ( - - - Promise.resolve(converter.makeHtml(markdown)) - } - /> - - ) : null; - - const showHeader = checkboxIdSelectHeaderFooter.header ? ( - - - Promise.resolve(converter.makeHtml(markdown)) - } - /> - - ) : null; - - useEffect(() => { - let unmounted = false; - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response: {}) => { - const reportDefinition: ReportDefinitionSchemaType = - response.report_definition; - const { - report_params: { - core_params: { header, footer }, - }, - } = reportDefinition; - // set header/footer default - if (header) { - checkboxIdSelectHeaderFooter.header = true; - if (!unmounted) { - setHeader(header); - } - } - if (footer) { - checkboxIdSelectHeaderFooter.footer = true; - if (!unmounted) { - setFooter(footer); - } - } - }) - .catch((error: any) => { - console.error( - 'error in fetching report definition details:', - error - ); - }); - } else { - // keeps header/footer from re-rendering empty when other fields in Report Settings are changed - checkboxIdSelectHeaderFooter.header = - 'header' in reportDefinitionRequest.report_params.core_params; - checkboxIdSelectHeaderFooter.footer = - 'footer' in reportDefinitionRequest.report_params.core_params; - if (checkboxIdSelectHeaderFooter.header) { - setHeader(reportDefinitionRequest.report_params.core_params.header); - } - if (checkboxIdSelectHeaderFooter.footer) { - setFooter(reportDefinitionRequest.report_params.core_params.footer); - } - } - return () => { - unmounted = true; - }; - }, []); - - return ( -
- - - {showHeader} - {showFooter} -
- ); - }; - - const VisualReportFormatAndMarkdown = () => { - return ( -
- - -
- ); - }; - - const setReportSourceDropdownOption = (options, reportSource, url) => { - let index = 0; - if (reportSource === REPORT_SOURCE_TYPES.dashboard) { - for (index = 0; index < options.dashboard.length; ++index) { - if (url.includes(options.dashboard[index].value)) { - setDashboardSourceSelect([options.dashboard[index]]); - } - } - } else if (reportSource === REPORT_SOURCE_TYPES.visualization) { - for (index = 0; index < options.visualizations.length; ++index) { - if (url.includes(options.visualizations[index].value)) { - setVisualizationSourceSelect([options.visualizations[index]]); - } - } - } else if (reportSource === REPORT_SOURCE_TYPES.savedSearch) { - for (index = 0; index < options.savedSearch.length; ++index) { - if (url.includes(options.savedSearch[index].value)) { - setSavedSearchSourceSelect([options.savedSearch[index]]); - } - } - } - }; - - const setDefaultFileFormat = (fileFormat) => { - let index = 0; - for (index = 0; index < PDF_PNG_FILE_FORMAT_OPTIONS.length; ++index) { - if ( - fileFormat.toUpperCase() === PDF_PNG_FILE_FORMAT_OPTIONS[index].label - ) { - setFileFormat(PDF_PNG_FILE_FORMAT_OPTIONS[index].id); - } - } - }; - - const setDashboardFromInContextMenu = (response, id) => { - let index; - for (index = 0; index < response.dashboard.length; ++index) { - if (id === response.dashboard[index].value) { - setDashboardSourceSelect([response.dashboard[index]]); - } - } - }; - - const setVisualizationFromInContextMenu = (response, id) => { - let index; - for (index = 0; index < response.visualizations.length; ++index) { - if (id === response.visualizations[index].value) { - setVisualizationSourceSelect([response.visualizations[index]]); - } - } - }; - - const setSavedSearchFromInContextMenu = (response, id) => { - let index; - for (index = 0; index < response.savedSearch.length; ++index) { - if (id === response.savedSearch[index].value) { - setSavedSearchSourceSelect([response.savedSearch[index]]); - } - } - }; - - const setNotebookFromInContextMenu = (response, id) => { - for (let index = 0; index < response.notebooks.length; ++index) { - if (id === response.notebooks[index].value) { - setNotebooksSourceSelect([response.notebooks[index]]); - } - } - }; - - const setInContextDefaultConfiguration = (response) => { - const url = window.location.href; - const source = getReportSourceFromURL(url); - const id = parseInContextUrl(url, 'id'); - if (source === 'dashboard') { - setReportSourceId('dashboardReportSource'); - reportDefinitionRequest.report_params.report_source = - REPORT_SOURCE_RADIOS[0].label; - - setDashboardFromInContextMenu(response, id); - reportDefinitionRequest.report_params.core_params.base_url = - getDashboardBaseUrlCreate(edit, id, true) + id; - } else if (source === 'visualize') { - setReportSourceId('visualizationReportSource'); - reportDefinitionRequest.report_params.report_source = - REPORT_SOURCE_RADIOS[1].label; - - setVisualizationFromInContextMenu(response, id); - reportDefinitionRequest.report_params.core_params.base_url = - getVisualizationBaseUrlCreate(edit, editDefinitionId, true) + id; - } else if (source === 'discover') { - setReportSourceId('savedSearchReportSource'); - reportDefinitionRequest.report_params.core_params.report_format = 'csv'; - reportDefinitionRequest.report_params.core_params.saved_search_id = id; - reportDefinitionRequest.report_params.report_source = - REPORT_SOURCE_RADIOS[2].label; - - setSavedSearchFromInContextMenu(response, id); - reportDefinitionRequest.report_params.core_params.base_url = - getSavedSearchBaseUrlCreate(edit, editDefinitionId, true) + id; - } else if (source === 'notebook') { - setReportSourceId('notebooksReportSource'); - reportDefinitionRequest.report_params.report_source = - REPORT_SOURCE_RADIOS[3].label; - - setNotebookFromInContextMenu(response, id); - reportDefinitionRequest.report_params.core_params.base_url = - getNotebooksBaseUrlCreate(edit, id, true) + id; - // set placeholder time range since notebooks doesn't use it - reportDefinitionRequest.report_params.core_params.time_duration = 'PT30M'; - } - }; - - const setDefaultEditValues = async (response, reportSourceOptions) => { - setReportName(response.report_definition.report_params.report_name); - setReportDescription(response.report_definition.report_params.description); - reportDefinitionRequest.report_params.report_name = - response.report_definition.report_params.report_name; - reportDefinitionRequest.report_params.description = - response.report_definition.report_params.description; - reportDefinitionRequest.report_params = - response.report_definition.report_params; - const reportSource = response.report_definition.report_params.report_source; - REPORT_SOURCE_RADIOS.map((radio) => { - if (radio.label === reportSource) { - setReportSourceId(radio.id); - reportDefinitionRequest.report_params.report_source = reportSource; - } - }); - setDefaultFileFormat( - response.report_definition.report_params.core_params.report_format - ); - setReportSourceDropdownOption( - reportSourceOptions, - reportSource, - response.report_definition.report_params.core_params.base_url - ); - }; - - const defaultConfigurationEdit = async (httpClientProps) => { - let editData = {}; - await httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response: {}) => { - editData = response; - }) - .catch((error: any) => { - console.error('error in fetching report definition details:', error); - }); - return editData; - }; - - const defaultConfigurationCreate = async (httpClientProps) => { - let reportSourceOptions = { - dashboard: [], - visualizations: [], - savedSearch: [], - notebooks: [], - }; - reportDefinitionRequest.report_params.core_params.report_format = fileFormat; - await httpClientProps - .get('../api/reporting/getReportSource/dashboard') - .then(async (response) => { - let dashboardOptions = getDashboardOptions(response['hits']['hits']); - reportSourceOptions.dashboard = dashboardOptions; - handleDashboards(dashboardOptions); - if (!edit) { - reportDefinitionRequest.report_params.report_source = 'Dashboard'; - } - }) - .catch((error) => { - console.log('error when fetching dashboards:', error); - }); - - await httpClientProps - .get('../api/reporting/getReportSource/visualization') - .then(async (response) => { - let visualizationOptions = getVisualizationOptions( - response['hits']['hits'] - ); - reportSourceOptions.visualizations = visualizationOptions; - await handleVisualizations(visualizationOptions); - }) - .catch((error) => { - console.log('error when fetching visualizations:', error); - }); - - await httpClientProps - .get('../api/reporting/getReportSource/search') - .then(async (response) => { - let savedSearchOptions = getSavedSearchOptions( - response['hits']['hits'] - ); - reportSourceOptions.savedSearch = savedSearchOptions; - await handleSavedSearches(savedSearchOptions); - }) - .catch((error) => { - console.log('error when fetching saved searches:', error); - }); - - await httpClientProps - .get('../api/observability/notebooks/') - .catch((error: any) => { - console.error('error fetching notebooks, retrying with legacy api', error) - return httpClientProps.get('../api/notebooks/') - }) - .then(async (response: any) => { - let notebooksOptions = getNotebooksOptions(response.data); - reportSourceOptions.notebooks = notebooksOptions; - await handleNotebooks(notebooksOptions); - }) - .catch((error) => { - console.log('error when fetching notebooks:', error); - }); - return reportSourceOptions; - }; - - useEffect(() => { - let reportSourceOptions = {}; - let editData = {}; - if (edit) { - defaultConfigurationEdit(httpClientProps).then(async (response) => { - editData = response; - }); - } - defaultConfigurationCreate(httpClientProps).then(async (response) => { - reportSourceOptions = response; - // if coming from in-context menu - if (window.location.href.indexOf('?') > -1) { - setInContextDefaultConfiguration(response); - } - if (edit) { - setDefaultEditValues(editData, reportSourceOptions); - } - }); - }, []); - - const displayDashboardSelect = - reportSourceId === 'dashboardReportSource' ? ( -
- - - - -
- ) : null; - - const displayVisualizationSelect = - reportSourceId === 'visualizationReportSource' ? ( -
- - - - -
- ) : null; - - const displaySavedSearchSelect = - reportSourceId === 'savedSearchReportSource' ? ( -
- - - - -
- ) : null; - - const displayVisualReportsFormatAndMarkdown = - reportSourceId != 'savedSearchReportSource' ? ( -
- - -
- ) : ( -
- - -

CSV

-
-
-
- ); - - const displayNotebooksSelect = - reportSourceId === 'notebooksReportSource' ? ( -
- - - - -
- ) : null; - - const displayTimeRangeSelect = - reportSourceId != 'notebooksReportSource' ? ( -
- - -
- ) : null; - - return ( - - - -

- {i18n.translate( - 'opensearch.reports.reportSettingProps.form.reportSettings', - { defaultMessage: 'Report settings' } - )} -

-
-
- - - - - - - - - - - - - - - - - - - - - - {displayDashboardSelect} - {displayVisualizationSelect} - {displaySavedSearchSelect} - {/* - */} - {displayNotebooksSelect} - {displayTimeRangeSelect} - {displayVisualReportsFormatAndMarkdown} - - - -
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/report_settings/report_settings_constants.tsx b/dashboards-reports/public/components/report_definitions/report_settings/report_settings_constants.tsx deleted file mode 100644 index 824892f1..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/report_settings_constants.tsx +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { i18n } from '@osd/i18n'; - -export const REPORT_SOURCE_RADIOS = [ - { - id: 'dashboardReportSource', - label: i18n.translate( - 'opensearch.reports.settings.constants.reportSourceRadios.dashboard', - { defaultMessage: 'Dashboard' } - ), - }, - { - id: 'visualizationReportSource', - label: i18n.translate( - 'opensearch.reports.settings.constants.reportSourceRadios.visualization', - { defaultMessage: 'Visualization' } - ), - }, - { - id: 'savedSearchReportSource', - label: i18n.translate( - 'opensearch.reports.settings.constants.reportSourceRadios.savedSearch', - { defaultMessage: 'Saved search' } - ), - }, - { - id: 'notebooksReportSource', - label: 'Notebook', - }, -]; - -export const PDF_PNG_FILE_FORMAT_OPTIONS = [ - { - id: 'pdf', - label: 'PDF', - }, - { - id: 'png', - label: 'PNG', - }, -]; - -export const SAVED_SEARCH_FORMAT_OPTIONS = [ - { - id: 'csvFormat', - label: 'CSV', - }, - { - id: 'xlsFormat', - label: 'XLS', - }, -]; - -export const HEADER_FOOTER_CHECKBOX = [ - { - id: 'header', - label: i18n.translate( - 'opensearch.reports.settings.constants.headerFooterCheckbox.addHeader', - { defaultMessage: 'Add header' } - ), - }, - { - id: 'footer', - label: i18n.translate( - 'opensearch.reports.settings.constants.headerFooterCheckbox.addFooter', - { defaultMessage: 'Add footer' } - ), - }, -]; -export const REPORT_SOURCE_TYPES = { - dashboard: 'Dashboard', - visualization: 'Visualization', - savedSearch: 'Saved search', - notebook: 'Notebook', -}; - -export const commonTimeRanges = [ - { - start: 'now/d', - end: 'now', - label: i18n.translate( - 'opensearch.reports.settings.constants.commonTimeRanges.todaySoFar', - { defaultMessage: 'Today so far' } - ), - }, - { - start: 'now/w', - end: 'now', - label: i18n.translate( - 'opensearch.reports.settings.constants.commonTimeRanges.weekToDate', - { defaultMessage: 'Week to date' } - ), - }, - { - start: 'now/M', - end: 'now', - label: i18n.translate( - 'opensearch.reports.settings.constants.commonTimeRanges.monthToDate', - { defaultMessage: 'Month to date' } - ), - }, - { - start: 'now/y', - end: 'now', - label: i18n.translate( - 'opensearch.reports.settings.constants.commonTimeRanges.yearToDate', - { defaultMessage: 'Year to date' } - ), - }, -]; diff --git a/dashboards-reports/public/components/report_definitions/report_settings/report_settings_helpers.tsx b/dashboards-reports/public/components/report_definitions/report_settings/report_settings_helpers.tsx deleted file mode 100644 index cc4ef232..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/report_settings_helpers.tsx +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const parseInContextUrl = (url: string, parameter: string) => { - const info = url.split('?'); - if (parameter === 'id') { - return info[1].substring(info[1].indexOf(':') + 1, info[1].length); - } else if (parameter === 'timeFrom') { - return info[2].substring(info[2].indexOf('=') + 1, info[2].length); - } else if (parameter === 'timeTo') { - return info[3].substring(info[3].indexOf('=') + 1, info[3].length); - } - return 'error: invalid parameter'; -}; - -export const getDashboardBaseUrlCreate = ( - edit: boolean, - editDefinitionId: string, - fromInContext: boolean -) => { - let baseUrl; - if (!fromInContext) { - baseUrl = location.pathname + location.hash; - } else { - baseUrl = '/app/dashboards#/view/'; - } - if (edit) { - return baseUrl.replace( - `reports-dashboards#/edit/${editDefinitionId}`, - 'dashboards#/view/' - ); - } else if (fromInContext) { - return baseUrl; - } - return baseUrl.replace( - 'reports-dashboards#/create', - 'dashboards#/view/' - ); -}; - -export const getVisualizationBaseUrlCreate = ( - edit: boolean, - editDefinitionId: string, - fromInContext: boolean -) => { - let baseUrl; - if (!fromInContext) { - baseUrl = location.pathname + location.hash; - } else { - baseUrl = '/app/visualize#/edit/'; - } - if (edit) { - return baseUrl.replace( - `reports-dashboards#/edit/${editDefinitionId}`, - 'visualize#/edit/' - ); - } else if (fromInContext) { - return baseUrl; - } - return baseUrl.replace( - 'reports-dashboards#/create', - 'visualize#/edit/' - ); -}; - -export const getSavedSearchBaseUrlCreate = ( - edit: boolean, - editDefinitionId: string, - fromInContext: boolean -) => { - let baseUrl; - if (!fromInContext) { - baseUrl = location.pathname + location.hash; - } else { - baseUrl = '/app/discover#/view/'; - } - if (edit) { - return baseUrl.replace( - `reports-dashboards#/edit/${editDefinitionId}`, - 'discover#/view/' - ); - } else if (fromInContext) { - return baseUrl; - } - return baseUrl.replace( - 'reports-dashboards#/create', - 'discover#/view/' - ); -}; - -export const getNotebooksBaseUrlCreate = ( - edit: boolean, - editDefinitionId: string, - fromInContext: boolean -) => { - let baseUrl; - if (!fromInContext) { - baseUrl = location.pathname + location.hash; - } else { - baseUrl = '/app/notebooks-dashboards?view=output_only#/'; - } - if (edit) { - return baseUrl.replace( - `reports-dashboards#/edit/${editDefinitionId}`, - 'notebooks-dashboards?view=output_only#/' - ); - } else if (fromInContext) { - return baseUrl; - } - return baseUrl.replace( - 'reports-dashboards#/create', - 'notebooks-dashboards?view=output_only#/' - ); -} - -export const getDashboardOptions = (data: string | any[]) => { - let index; - let dashboard_options = []; - for (index = 0; index < data.length; ++index) { - let entry = { - value: data[index]['_id'].substring(10), - label: data[index]['_source']['dashboard']['title'], - }; - dashboard_options.push(entry); - } - return dashboard_options; -}; - -export const getVisualizationOptions = (data: string | any[]) => { - let index; - let options = []; - for (index = 0; index < data.length; ++index) { - let entry = { - value: data[index]['_id'].substring(14), - label: data[index]['_source']['visualization']['title'], - }; - options.push(entry); - } - return options; -}; - -export const getSavedSearchOptions = (data: string | any[]) => { - let index; - let options = []; - for (index = 0; index < data.length; ++index) { - let entry = { - value: data[index]['_id'].substring(7), - label: data[index]['_source']['search']['title'], - }; - options.push(entry); - } - return options; -}; - -export const getNotebooksOptions = (data: any) => { - let index; - let options = []; - for (index = 0; index < data.length; ++index) { - let entry = { - value: data[index]['id'], - label: data[index]['path'] - } - options.push(entry); - } - return options; -} - -export const handleDataToVisualReportSourceChange = ( - reportDefinitionRequest -) => { - delete reportDefinitionRequest.report_params.core_params.saved_search_id; - delete reportDefinitionRequest.report_params.core_params.limit; - delete reportDefinitionRequest.report_params.core_params.excel; - reportDefinitionRequest.report_params.core_params.report_format = 'pdf'; -}; - -export const getReportSourceFromURL = (url: string) => { - const source = url.split('?')[1].match(/previous=(.*):/); - return source![1]; -} \ No newline at end of file diff --git a/dashboards-reports/public/components/report_definitions/report_settings/time_range.tsx b/dashboards-reports/public/components/report_definitions/report_settings/time_range.tsx deleted file mode 100644 index f27630c6..00000000 --- a/dashboards-reports/public/components/report_definitions/report_settings/time_range.tsx +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import moment from 'moment'; -import React, { useState, useEffect } from 'react'; -import { i18n } from '@osd/i18n'; -import { parseInContextUrl } from './report_settings_helpers'; -import dateMath from '@elastic/datemath'; -import { - EuiFormRow, - EuiGlobalToastList, - EuiSuperDatePicker, -} from '@elastic/eui'; -import { commonTimeRanges } from './report_settings_constants'; - -export function TimeRangeSelect(props) { - const { - reportDefinitionRequest, - timeRange, - edit, - id, - httpClientProps, - showTimeRangeError, - } = props; - - const [recentlyUsedRanges, setRecentlyUsedRanges] = useState([]); - const [isLoading, setIsLoading] = useState(false); - const [start, setStart] = useState('now-30m'); - const [end, setEnd] = useState('now'); - - const [toasts, setToasts] = useState([]); - - const addInvalidTimeRangeToastHandler = () => { - const errorToast = { - title: i18n.translate('opensearch.reports.timeRange.invalidTimeRange', { - defaultMessage: 'Invalid time range selected.', - }), - color: 'danger', - iconType: 'alert', - id: 'timeRangeErrorToast', - }; - setToasts(toasts.concat(errorToast)); - }; - - const handleInvalidTimeRangeToast = () => { - addInvalidTimeRangeToastHandler(); - }; - - const removeToast = (removedToast) => { - setToasts(toasts.filter((toast) => toast.id !== removedToast.id)); - }; - - const isValidTimeRange = ( - timeRangeMoment: number | moment.Moment, - limit: string, - handleInvalidTimeRangeToast: any - ) => { - if (limit === 'start') { - if (!timeRangeMoment || !timeRangeMoment.isValid()) { - handleInvalidTimeRangeToast(); - } - } else if (limit === 'end') { - if ( - !timeRangeMoment || - !timeRangeMoment.isValid() || - timeRangeMoment > moment.now() - ) { - handleInvalidTimeRangeToast(); - } - } - }; - - const setDefaultEditTimeRange = (duration, unmounted) => { - let time_difference = moment.now() - duration; - const fromDate = new Date(time_difference); - parseTimeRange(fromDate, end, reportDefinitionRequest); - if (!unmounted) { - setStart(fromDate.toISOString()); - setEnd(end); - } - }; - - // valid time range check for absolute time end date - const checkValidAbsoluteEndDate = (end) => { - let endDate = new Date(end); - let nowDate = new Date(moment.now()); - let valid = true; - if (endDate.getTime() > nowDate.getTime()) { - end = 'now'; - valid = false; - } - return valid; - }; - - useEffect(() => { - let unmounted = false; - // if we are coming from the in-context menu - if (window.location.href.indexOf('?') > -1) { - const url = window.location.href; - const timeFrom = parseInContextUrl(url, 'timeFrom'); - const timeTo = parseInContextUrl(url, 'timeTo'); - parseTimeRange(timeFrom, timeTo, reportDefinitionRequest); - if (!unmounted) { - setStart(timeFrom); - setEnd(timeTo); - } - } else { - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${id}`) - .then(async (response: {}) => { - let duration = - response.report_definition.report_params.core_params - .time_duration; - duration = moment.duration(duration); - setDefaultEditTimeRange(duration, unmounted); - }) - .catch((error) => { - console.error( - 'error in fetching report definition details:', - error - ); - }); - } else { - parseTimeRange(start, end, reportDefinitionRequest); - } - } - return () => { - unmounted = true; - }; - }, []); - - const onTimeChange = ({ start, end }) => { - isValidTimeRange( - dateMath.parse(start), - 'start', - handleInvalidTimeRangeToast - ); - isValidTimeRange( - dateMath.parse(end, { roundUp: true }), - 'end', - handleInvalidTimeRangeToast - ); - - const recentlyUsedRange = recentlyUsedRanges.filter((recentlyUsedRange) => { - const isDuplicate = - recentlyUsedRange.start === start && recentlyUsedRange.end === end; - return !isDuplicate; - }); - const validEndDate = checkValidAbsoluteEndDate(end); - if (!validEndDate) { - handleInvalidTimeRangeToast(); - return; - } - - recentlyUsedRange.unshift({ start, end }); - setStart(start); - setEnd(end); - setRecentlyUsedRanges( - recentlyUsedRange.length > 10 - ? recentlyUsedRange.slice(0, 9) - : recentlyUsedRange - ); - setIsLoading(true); - startLoading(); - parseTimeRange(start, end, reportDefinitionRequest); - }; - - const parseTimeRange = (start, end, reportDefinitionRequest) => { - timeRange.timeFrom = dateMath.parse(start); - timeRange.timeTo = dateMath.parse(end); - const timeDuration = moment.duration( - dateMath.parse(end).diff(dateMath.parse(start)) - ); - reportDefinitionRequest.report_params.core_params.time_duration = timeDuration.toISOString(); - }; - - const startLoading = () => { - setTimeout(stopLoading, 1000); - }; - - const stopLoading = () => { - setIsLoading(false); - }; - - return ( -
-
- - - -
-
- -
-
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/__snapshots__/report_trigger.test.tsx.snap b/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/__snapshots__/report_trigger.test.tsx.snap deleted file mode 100644 index c0973df4..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/__snapshots__/report_trigger.test.tsx.snap +++ /dev/null @@ -1,421 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` panel Render edit on-demand component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; - -exports[` panel render create component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; - -exports[` panel render edit Cron schedule component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; - -exports[` panel render edit recurring 5 hours schedule component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; - -exports[` panel render edit recurring 10 minutes schedule component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; - -exports[` panel render edit recurring daily schedule component 1`] = ` -
-
-
- -
-
-
-
- -
- -
-
- -
- -
-
-
-
-
-
-`; diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/report_trigger.test.tsx b/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/report_trigger.test.tsx deleted file mode 100644 index b8c2f5d3..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/__tests__/report_trigger.test.tsx +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { - render, - waitFor, - waitForElement, - waitForElementToBeRemoved, -} from '@testing-library/react'; -import { ReportTrigger } from '../report_trigger'; -import 'babel-polyfill'; -import 'regenerator-runtime'; -import httpClientMock from '../../../../../test/httpMockClient'; -import { act } from 'react-dom/test-utils'; -import moment from 'moment-timezone'; - -const names = jest.fn(); - -const emptyRequest = { - report_params: { - report_name: '', - report_source: '', - description: '', - core_params: { - base_url: '', - report_format: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: '', - trigger_params: {}, - }, - time_created: 0, - last_updated: 0, - status: '', -}; - -describe(' panel', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - test('render create component', () => { - let createReportDefinitionRequest = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: {}, - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - }); - - // edit test - test('render edit recurring 5 hours schedule component', async () => { - const promise = Promise.resolve(); - let report_definition = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 5, - unit: 'HOURS', - timezone: 'PST8PDT', - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit recurring daily schedule component', async () => { - const promise = Promise.resolve(); - let editReportDefinitionRequest = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 1, - unit: 'DAYS', - start_time: 1114939203, - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition: editReportDefinitionRequest, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit Cron schedule component', async () => { - const promise = Promise.resolve(); - let cronReportDefinitionRequest = { - report_params: { - report_name: 'edit cron schedule component', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Cron based', - schedule: { - cron: { - expression: '30 1 * * *', - timezone: 'PDT', - }, - }, - enabled_time: 1234567890, - enabled: true, - }, - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition: cronReportDefinitionRequest, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('render edit recurring 10 minutes schedule component', async () => { - const promise = Promise.resolve(); - let editReportDefinitionRequest = { - report_params: { - report_name: 'test create report definition trigger', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - schedule_type: 'Recurring', - schedule: { - interval: { - period: 10, - unit: 'MINUTES', - start_time: 1114939203, - }, - }, - enabled_time: 1114939203, - enabled: true, - }, - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition: editReportDefinitionRequest, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); - - test('Render edit on-demand component', async () => { - const promise = Promise.resolve(); - let editReportDefinitionRequest = { - report_params: { - report_name: 'edit cron schedule component', - report_source: 'Dashboard', - description: '', - core_params: { - base_url: '', - report_format: '', - header: '', - footer: '', - time_duration: '', - }, - }, - delivery: { - delivery_type: '', - delivery_params: {}, - }, - trigger: { - trigger_type: 'On demand', - }, - }; - - let timeRange = { - timeFrom: new Date(), - timeTo: new Date(), - }; - - httpClientMock.get = jest.fn().mockResolvedValue({ - report_definition: editReportDefinitionRequest, - }); - - const { container } = render( - - ); - - expect(container.firstChild).toMatchSnapshot(); - await act(() => promise); - }); -}); diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/index.ts b/dashboards-reports/public/components/report_definitions/report_trigger/index.ts deleted file mode 100644 index 99c31037..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export { ReportTrigger } from './report_trigger'; diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger.tsx b/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger.tsx deleted file mode 100644 index 1ab67ebc..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger.tsx +++ /dev/null @@ -1,720 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React, { useEffect, useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { - EuiFormRow, - EuiRadioGroup, - EuiDatePicker, - EuiSelect, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - EuiText, - EuiFieldText, - EuiCheckboxGroup, - EuiTextArea, - EuiLink, - EuiFieldNumber, -} from '@elastic/eui'; -import moment, { Moment } from 'moment'; -import { reportDefinitionParams } from '../create/create_report_definition'; -import { - SCHEDULE_RECURRING_OPTIONS, - INTERVAL_TIME_PERIODS, - WEEKLY_CHECKBOX_OPTIONS, - MONTHLY_ON_THE_OPTIONS, - TRIGGER_TYPE_OPTIONS, - SCHEDULE_TYPE_OPTIONS, - TIMEZONE_OPTIONS, -} from './report_trigger_constants'; -import { TimezoneSelect } from './timezone'; - -type ReportTriggerProps = { - edit: boolean; - editDefinitionId: string; - reportDefinitionRequest: reportDefinitionParams; - httpClientProps: any; - showTriggerIntervalNaNError: boolean; - showCronError: boolean; -}; - -export function ReportTrigger(props: ReportTriggerProps) { - const { - edit, - editDefinitionId, - reportDefinitionRequest, - httpClientProps, - showTriggerIntervalNaNError, - showCronError, - } = props; - - const [reportTriggerType, setReportTriggerType] = useState( - TRIGGER_TYPE_OPTIONS[0].id - ); - - const [scheduleType, setScheduleType] = useState( - SCHEDULE_TYPE_OPTIONS[0].label - ); - //TODO: should read local timezone and display - const [scheduleRecurringFrequency, setScheduleRecurringFrequency] = useState( - 'daily' - ); - const [recurring, setRecurringTime] = useState(moment()); - - const [weeklyCheckbox, setWeeklyCheckbox] = useState({ - ['monCheckbox']: true, - }); - const [monthlySelect, setMonthlySelect] = useState( - MONTHLY_ON_THE_OPTIONS[0].value - ); - - const handleReportTriggerType = (e: string) => { - setReportTriggerType(e); - reportDefinitionRequest.trigger.trigger_type = e; - if (e === 'On demand') { - delete reportDefinitionRequest.trigger.trigger_params; - } - }; - - const handleScheduleType = (e: React.SetStateAction) => { - setScheduleType(e); - if (e === SCHEDULE_TYPE_OPTIONS[1].label) { - delete reportDefinitionRequest.trigger.trigger_params.schedule.interval; - } else if (e === SCHEDULE_TYPE_OPTIONS[0].label) { - delete reportDefinitionRequest.trigger.trigger_params.schedule.cron; - } - }; - - const handleScheduleRecurringFrequency = (e: { - target: { value: React.SetStateAction }; - }) => { - setScheduleRecurringFrequency(e.target.value); - reportDefinitionRequest.trigger.trigger_params.schedule_type = - e.target.value; - }; - - const handleRecurringTime = (e: React.SetStateAction) => { - setRecurringTime(e); - }; - - const handleWeeklyCheckbox = (e) => { - const newCheckboxIdToSelectedMap = { - ...weeklyCheckbox, - ...{ - [e]: !weeklyCheckbox[e], - }, - }; - setWeeklyCheckbox(newCheckboxIdToSelectedMap); - }; - - const handleMonthlySelect = (e: { - target: { value: React.SetStateAction }; - }) => { - setMonthlySelect(e.target.value); - }; - - const RequestTime = () => { - useEffect(() => { - let recurringDaily = { - interval: { - period: 1, - unit: 'DAYS', - start_time: recurring.valueOf(), - }, - }; - reportDefinitionRequest.trigger.trigger_params = { - ...reportDefinitionRequest.trigger.trigger_params, - enabled_time: recurring.valueOf(), - schedule: recurringDaily, - }; - }, []); - - return ( -
- - - - -
- ); - }; - - const RecurringDaily = () => { - const [recurringDailyTime, setRecurringDailyTime] = useState(moment()); - - const handleRecurringDailyTime = (e) => { - setRecurringDailyTime(e); - reportDefinitionRequest.trigger.trigger_params.schedule.interval.start_time = e.valueOf(); - }; - - const setDailyParams = () => { - let recurringDaily = { - interval: { - period: 1, - unit: 'DAYS', - start_time: recurringDailyTime.valueOf(), - }, - }; - reportDefinitionRequest.trigger.trigger_params = { - ...reportDefinitionRequest.trigger.trigger_params, - enabled_time: recurringDailyTime.valueOf(), - schedule: recurringDaily, - }; - }; - - const isDailySchedule = (response) => { - return ( - response.report_definition.trigger.trigger_params.schedule_type === - SCHEDULE_TYPE_OPTIONS[0].id && - response.report_definition.trigger.trigger_params.schedule.interval - .period === 1 && - response.report_definition.trigger.trigger_params.schedule.interval === - 'DAYS' - ); - }; - - useEffect(() => { - let unmounted = false; - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response) => { - // if switching from on demand to schedule - if ( - response.report_definition.trigger.trigger_type === 'On demand' - ) { - setDailyParams(); - } else if (isDailySchedule(response)) { - const date = moment( - response.report_definition.trigger.trigger_params.schedule - .interval.start_time - ); - if (!unmounted) { - setRecurringDailyTime(date); - } - } - // if switching from on-demand to schedule - else if ( - reportDefinitionRequest.trigger.trigger_params.schedule_type === - SCHEDULE_TYPE_OPTIONS[0].id - ) { - setDailyParams(); - } - }); - } else { - setDailyParams(); - } - return () => { - unmounted = true; - }; - }, []); - - return ( -
- - - - -
- ); - }; - - const RecurringInterval = () => { - const [intervalText, setIntervalText] = useState(''); - const [intervalTimePeriod, setIntervalTimePeriod] = useState( - INTERVAL_TIME_PERIODS[0].value - ); - const [recurringIntervalTime, setRecurringIntervalTime] = useState( - moment() - ); - - const handleRecurringIntervalTime = (e) => { - setRecurringIntervalTime(e); - reportDefinitionRequest.trigger.trigger_params.schedule.interval.start_time = e.valueOf(); - }; - - const handleIntervalText = (e: { - target: { value: React.SetStateAction }; - }) => { - setIntervalText(e.target.value); - }; - - const handleIntervalTimePeriod = (e: { - target: { value: React.SetStateAction }; - }) => { - setIntervalTimePeriod(e.target.value); - }; - - useEffect(() => { - let interval = { - interval: { - period: parseInt(intervalText, 10), - unit: intervalTimePeriod, - start_time: recurringIntervalTime.valueOf(), - }, - }; - reportDefinitionRequest.trigger.trigger_params = { - ...reportDefinitionRequest.trigger.trigger_params, - enabled_time: recurringIntervalTime.valueOf(), - schedule: interval, - }; - }, [intervalTimePeriod, intervalText]); - - // second useEffect() only to be triggered before render when on Edit - useEffect(() => { - let unmounted = false; - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response) => { - if ( - response.report_definition.trigger.trigger_params - .schedule_type === SCHEDULE_TYPE_OPTIONS[0].id - ) { - const date = moment( - response.report_definition.trigger.trigger_params.schedule - .interval.start_time - ); - if (!unmounted) { - setRecurringIntervalTime(date); - setIntervalText( - response.report_definition.trigger.trigger_params.schedule.interval.period.toString() - ); - setIntervalTimePeriod( - response.report_definition.trigger.trigger_params.schedule - .interval.unit - ); - } - } - }); - } - return () => { - unmounted = true; - }; - }, []); - - return ( -
- - - - - - - - - - - - - - - -
- ); - }; - - const RecurringWeekly = () => { - return ( -
- - - - - -
- ); - }; - - const RecurringMonthly = () => { - const [monthlyDayNumber, setMonthlyDayNumber] = useState(''); - - const handleMonthlyDayNumber = (e: { - target: { value: React.SetStateAction }; - }) => { - setMonthlyDayNumber(e.target.value); - }; - - return ( -
- - - - - - - - - - - - -
- ); - }; - - const CronExpression = () => { - const [cronExpression, setCronExpression] = useState(''); - - const handleCronExpression = (e: { - target: { value: React.SetStateAction }; - }) => { - setCronExpression(e.target.value); - reportDefinitionRequest.trigger.trigger_params.schedule.cron.expression = - e.target.value; - }; - - const setCronParams = () => { - let cron = { - cron: { - expression: '', - timezone: TIMEZONE_OPTIONS[0].value, - }, - }; - reportDefinitionRequest.trigger.trigger_params = { - ...reportDefinitionRequest.trigger.trigger_params, - enabled_time: Date.now().valueOf(), - schedule: cron, - }; - }; - - useEffect(() => { - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response) => { - // if switching from on demand to schedule - if ( - response.report_definition.trigger.trigger_type === 'On demand' - ) { - setCronParams(); - } else if ( - response.report_definition.trigger.trigger_params - .schedule_type === SCHEDULE_TYPE_OPTIONS[1].id - ) { - setCronExpression( - response.report_definition.trigger.trigger_params.schedule.cron - .expression - ); - } else { - setCronParams(); - } - }); - } else { - setCronParams(); - } - }, []); - - return ( -
- - - Cron help - - - } - > - - - -
- ); - }; - - const ScheduleTriggerRecurring = () => { - const display_daily = - scheduleRecurringFrequency === 'daily' ? : null; - - const display_interval = - scheduleRecurringFrequency === 'byInterval' ? ( - - ) : null; - - const display_weekly = - scheduleRecurringFrequency === 'weekly' ? : null; - - const display_monthly = - scheduleRecurringFrequency === 'monthly' ? : null; - - return ( -
- - - - - {display_daily} - {display_interval} - {display_weekly} - {display_monthly} -
- ); - }; - - const ScheduleTrigger = () => { - const display_recurring = - scheduleType === SCHEDULE_TYPE_OPTIONS[0].id ? ( - - ) : null; - - const display_cron = - scheduleType === SCHEDULE_TYPE_OPTIONS[1].id ? ( -
- - -
- ) : null; - - useEffect(() => { - // Set default trigger_type - SCHEDULE_TYPE_OPTIONS.map((item) => { - if (item.id === scheduleType) { - reportDefinitionRequest.trigger.trigger_params = { - ...reportDefinitionRequest.trigger.trigger_params, - schedule_type: item.id, - //TODO: need better handle - }; - if (!edit) { - reportDefinitionRequest.trigger.trigger_params.enabled = true; - } - if (!('enabled' in reportDefinitionRequest.trigger.trigger_params)) { - reportDefinitionRequest.trigger.trigger_params.enabled = true; - } - } - }); - }, [scheduleType]); - - return ( -
- - - - - {display_recurring} - {display_cron} -
- ); - }; - - const schedule = - reportTriggerType === 'Schedule' ? : null; - - const defaultEditTriggerType = (trigger_type) => { - let index = 0; - for (index; index < TRIGGER_TYPE_OPTIONS.length; ++index) { - if (TRIGGER_TYPE_OPTIONS[index].id === trigger_type) { - setReportTriggerType(TRIGGER_TYPE_OPTIONS[index].id); - } - } - }; - - const defaultEditRequestType = (trigger) => { - let index = 0; - for (index; index < SCHEDULE_TYPE_OPTIONS.length; ++index) { - if ( - SCHEDULE_TYPE_OPTIONS[index].id === trigger.trigger_params.schedule_type - ) { - setScheduleType(SCHEDULE_TYPE_OPTIONS[index].id); - } - } - }; - - const defaultEditScheduleFrequency = (trigger_params) => { - if (trigger_params.schedule_type === SCHEDULE_TYPE_OPTIONS[0].id) { - if ( - trigger_params.schedule.interval.unit === 'Days' && - trigger_params.schedule.interval.period === 1 - ) { - setScheduleRecurringFrequency('daily'); - } else { - setScheduleRecurringFrequency('byInterval'); - } - } - }; - - const defaultConfigurationEdit = (trigger) => { - defaultEditTriggerType(trigger.trigger_type); - if (trigger.trigger_type === 'Schedule') { - defaultEditScheduleFrequency(trigger.trigger_params); - defaultEditRequestType(trigger); - } else if (trigger.trigger_type == 'On demand') { - setReportTriggerType('On demand'); - reportDefinitionRequest.trigger.trigger_type = 'On demand'; - } - }; - - useEffect(() => { - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response) => { - defaultConfigurationEdit(response.report_definition.trigger); - reportDefinitionRequest.trigger = response.report_definition.trigger; - }); - } - // Set default trigger_type for create new report definition - else { - TRIGGER_TYPE_OPTIONS.map((item) => { - if (item.id === reportTriggerType) { - reportDefinitionRequest.trigger.trigger_type = item.id; - } - }); - } - }, []); - - return ( -
- - - - - {schedule} -
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger_constants.tsx b/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger_constants.tsx deleted file mode 100644 index 71905384..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/report_trigger_constants.tsx +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import moment from 'moment-timezone'; -import { i18n } from '@osd/i18n'; - -export const TRIGGER_TYPE_OPTIONS = [ - { - id: 'On demand', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.triggerTypeOptions.onDemand', - { defaultMessage: 'On demand' } - ), - }, - { - id: 'Schedule', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.triggerTypeOptions.schedule', - { defaultMessage: 'Schedule' } - ), - }, -]; - -export const SCHEDULE_TYPE_OPTIONS = [ - { - id: 'Recurring', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.scheduleTypeOptions.recurring', - { defaultMessage: 'Recurring' } - ), - }, - { - id: 'Cron based', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.scheduleTypeOptions.cronBased', - { defaultMessage: 'Cron based' } - ), - }, -]; - -export const SCHEDULE_RECURRING_OPTIONS = [ - { - value: 'daily', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.scheduleRecurringOptions.daily', - { defaultMessage: 'Daily' } - ), - }, - { - value: 'byInterval', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.scheduleRecurringOptions.byInterval', - { defaultMessage: 'By interval' } - ), - }, - // TODO: disable on UI. Add them back once we support - // { - // value: 'weekly', - // text: 'Weekly', - // }, - // { - // value: 'monthly', - // text: 'Monthly', - // }, -]; - -export const INTERVAL_TIME_PERIODS = [ - { - value: 'MINUTES', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.intervalTimePeriods.minutes', - { defaultMessage: 'Minutes' } - ), - }, - { - value: 'HOURS', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.intervalTimePeriods.hours', - { defaultMessage: 'Hours' } - ), - }, - { - value: 'DAYS', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.intervalTimePeriods.days', - { defaultMessage: 'Days' } - ), - }, -]; - -export const WEEKLY_CHECKBOX_OPTIONS = [ - { - id: 'monCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.mon', - { defaultMessage: 'Mon' } - ), - }, - { - id: 'tueCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.tue', - { defaultMessage: 'Tue' } - ), - }, - { - id: 'wedCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.wed', - { defaultMessage: 'Wed' } - ), - }, - { - id: 'thuCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.thu', - { defaultMessage: 'Thu' } - ), - }, - { - id: 'friCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.fri', - { defaultMessage: 'Fri' } - ), - }, - { - id: 'satCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.sat', - { defaultMessage: 'Sat' } - ), - }, - { - id: 'sunCheckbox', - label: i18n.translate( - 'opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.sun', - { defaultMessage: 'Sun' } - ), - }, -]; - -export const MONTHLY_ON_THE_OPTIONS = [ - { - value: 'day', - text: i18n.translate( - 'opensearch.reports.reportTriggerConstants.monthlyOnTheOptions.day', - { defaultMessage: 'Day' } - ), - }, -]; - -export const TIMEZONE_OPTIONS = moment.tz - .names() - .map((tz) => ({ value: tz, text: tz })); diff --git a/dashboards-reports/public/components/report_definitions/report_trigger/timezone.tsx b/dashboards-reports/public/components/report_definitions/report_trigger/timezone.tsx deleted file mode 100644 index aee4ceca..00000000 --- a/dashboards-reports/public/components/report_definitions/report_trigger/timezone.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { EuiFormRow, EuiSelect } from '@elastic/eui'; -import React, { useState, useEffect } from 'react'; -import { i18n } from '@osd/i18n'; -import { TIMEZONE_OPTIONS } from './report_trigger_constants'; - -export function TimezoneSelect(props: { reportDefinitionRequest: any; httpClientProps: any; edit: any; editDefinitionId: any; }) { - const { - reportDefinitionRequest, - httpClientProps, - edit, - editDefinitionId, - } = props; - const [timezone, setTimezone] = useState(TIMEZONE_OPTIONS[0].value); - - const handleTimezone = (e: { target: { value: React.SetStateAction; }; }) => { - setTimezone(e.target.value); - if ( - reportDefinitionRequest.trigger.trigger_params.schedule_type === - 'Cron based' - ) { - reportDefinitionRequest.trigger.trigger_params.schedule.cron.timezone = - e.target.value; - } - }; - - useEffect(() => { - let unmounted = false; - if (edit) { - httpClientProps - .get(`../api/reporting/reportDefinitions/${editDefinitionId}`) - .then(async (response) => { - if ( - !unmounted && - reportDefinitionRequest.trigger.trigger_params.schedule_type === - 'Cron based' - ) { - setTimezone( - response.report_definition.trigger.trigger_params.schedule.cron - .timezone - ); - } - }); - } - return () => { - unmounted = true; - }; - }, []); - - return ( -
- - - -
- ); -} diff --git a/dashboards-reports/public/components/report_definitions/utils/index.ts b/dashboards-reports/public/components/report_definitions/utils/index.ts deleted file mode 100644 index f5e69b95..00000000 --- a/dashboards-reports/public/components/report_definitions/utils/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import Showdown from 'showdown'; - -export const converter = new Showdown.Converter({ - tables: true, - simplifiedAutoLink: true, - strikethrough: true, - tasklists: true, - noHeaderId: true, -}); diff --git a/dashboards-reports/public/components/report_definitions/utils/utils.tsx b/dashboards-reports/public/components/report_definitions/utils/utils.tsx deleted file mode 100644 index cf10f061..00000000 --- a/dashboards-reports/public/components/report_definitions/utils/utils.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { isValidCron } from 'cron-validator'; -import { i18n } from '@osd/i18n'; -import moment from 'moment'; -import { includeDelivery } from '../delivery/delivery'; - -export const definitionInputValidation = async ( - metadata, - error, - setShowSettingsReportNameError, - setSettingsReportNameErrorMessage, - setShowSettingsReportSourceError, - setSettingsReportSourceErrorMessage, - setShowTriggerIntervalNaNError, - timeRange, - setShowTimeRangeError, - setShowCronError -) => { - // check report name - // allow a-z, A-Z, 0-9, (), [], ',' - and _ and spaces - let regexp = /^[\w\-\s\(\)\[\]\,\_\-+]+$/; - if (metadata.report_params.report_name.search(regexp) === -1) { - setShowSettingsReportNameError(true); - if (metadata.report_params.report_name === '') { - setSettingsReportNameErrorMessage('Name must not be empty.'); - } else { - setSettingsReportNameErrorMessage('Invalid characters in report name.'); - } - error = true; - } - - // if recurring by interval and input is not a number - if ( - metadata.trigger.trigger_type === 'Schedule' && - metadata.trigger.trigger_params.schedule_type === 'Recurring' - ) { - let interval = parseInt( - metadata.trigger.trigger_params.schedule.interval.period - ); - if (isNaN(interval)) { - setShowTriggerIntervalNaNError(true); - error = true; - } - } - - // if report source is blank - if (metadata.report_params.core_params.base_url === '') { - setShowSettingsReportSourceError(true); - setSettingsReportSourceErrorMessage( - i18n.translate('opensearch.reports.error.reportSourceMustNotBeEmpty', { - defaultMessage: 'Report source must not be empty.', - }) - ); - error = true; - } - - // if time range is invalid - const nowDate = new Date(moment.now()); - if (timeRange.timeFrom > timeRange.timeTo || timeRange.timeTo > nowDate) { - setShowTimeRangeError(true); - error = true; - } - - // if cron based and cron input is invalid - if ( - metadata.trigger.trigger_type === 'Schedule' && - metadata.trigger.trigger_params.schedule_type === 'Cron based' - ) { - if ( - !isValidCron(metadata.trigger.trigger_params.schedule.cron.expression) - ) { - setShowCronError(true); - error = true; - } - } - return error; -}; diff --git a/dashboards-reports/public/components/utils/settings_service.ts b/dashboards-reports/public/components/utils/settings_service.ts deleted file mode 100644 index 4a15e831..00000000 --- a/dashboards-reports/public/components/utils/settings_service.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { HttpStart, IUiSettingsClient } from '../../../../../src/core/public'; - -let uiSettings: IUiSettingsClient; -let http: HttpStart; - -export const uiSettingsService = { - init: (uiSettingsClient: IUiSettingsClient, httpClient: HttpStart) => { - uiSettings = uiSettingsClient; - http = httpClient; - }, - get: (key: string, defaultOverride?: any) => { - return uiSettings?.get(key, defaultOverride) || ''; - }, - getSearchParams: function () { - const rawTimeZone = this.get('dateFormat:tz'); - const timezone = - !rawTimeZone || rawTimeZone === 'Browser' - ? Intl.DateTimeFormat().resolvedOptions().timeZone - : rawTimeZone; - const dateFormat = this.get('dateFormat'); - const csvSeparator = this.get('csv:separator'); - const allowLeadingWildcards = this.get('query:allowLeadingWildcards'); - return { - timezone, - dateFormat, - csvSeparator, - allowLeadingWildcards, - }; - }, - getHttpClient: () => http, -}; diff --git a/dashboards-reports/public/components/utils/utils.tsx b/dashboards-reports/public/components/utils/utils.tsx deleted file mode 100644 index 2638c993..00000000 --- a/dashboards-reports/public/components/utils/utils.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; - -export const permissionsMissingToast = (action: string) => { - return { - title: 'Error ' + action, - color: 'danger', - iconType: 'alert', - id: 'permissionsMissingErrorToast' + action.replace(' ', ''), - text: ( -

Insufficient permissions. Reach out to your OpenSearch Dashboards administrator.

- ), - }; -}; - -export const permissionsMissingActions = { - CHANGE_SCHEDULE_STATUS: 'changing schedule status.', - DELETE_REPORT_DEFINITION: 'deleting report definition.', - GENERATING_REPORT: 'generating report.', - LOADING_REPORTS_TABLE: 'loading reports table.', - LOADING_DEFINITIONS_TABLE: 'loading report definitions table.', - VIEWING_EDIT_PAGE: 'viewing edit page.', - UPDATING_DEFINITION: 'updating report definition', - CREATING_REPORT_DEFINITION: 'creating new report definition.', -}; - -export const timeRangeMatcher = /time:\(from:(.+?),to:(.+?)\)/; diff --git a/dashboards-reports/public/components/visual_report/assets/report_styles.ts b/dashboards-reports/public/components/visual_report/assets/report_styles.ts deleted file mode 100644 index a78ee8a8..00000000 --- a/dashboards-reports/public/components/visual_report/assets/report_styles.ts +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const reportingStyle = ` -html, -body { - margin: 0; - padding: 0; -} - -iframe, embed, object { - display: none !important; -} - -/* nice padding + matches Kibana default UI colors you could also set this to inherit if - the wrapper gets inserted inside a kibana section. I might also remove the manual text color here as well, potentially */ -.reportWrapper { - padding: 8px; - background-color: #fafbfd; -} - -/* Notice that I'm using an ID of #reportingHeader, and #reportingFooter, instead of a classname (.reportingHeader, .reportingFooter). This is - in order to force specificity here higher in case any other styles would conflict */ -#reportingHeader, -#reportingFooter { - font-family: 'Inter UI', -apple-system, BlinkMacSystemFont, 'Segoe UI', - Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol'; - background-color: #fff; - border: 1px solid #d3dae6; - box-shadow: 0 2px 2px -1px rgba(152, 162, 179, 0.3), - 0 1px 5px -2px rgba(152, 162, 179, 0.3); - border-radius: 4px; - padding: 1em; - margin-bottom: 1em; -} - -#reportingFooter { - margin-top: 1em; -} - -#reportingHeader p, -#reportingFooter p { - max-width: 960px; -} - -/* Adjust the margin when the header is the first item */ -#reportingHeader h1:first-child, -#reportingFooter h1:first-child, -#reportingHeader h2:first-child, -#reportingFooter h2:first-child, -#reportingHeader h3:first-child, -#reportingFooter h3:first-child, -#reportingHeader h4:first-child, -#reportingFooter h4:first-child, -#reportingHeader h5:first-child, -#reportingFooter h5:first-child, -#reportingHeader h6:first-child, -#reportingFooter h6:first-child { - margin-top: 0.25em; -} - -/* nicer list styles */ -#reportingHeader ul, -#reportingFooter ul, -#reportingHeader ol, -#reportingFooter ol { - max-width: 70rem; - margin-bottom: 1em; -} - -#reportingHeader ul li, -#reportingFooter ul li, -#reportingHeader ol li, -#reportingFooter ol li { - margin-bottom: 0.25em; - margin-left: -0.5em; - padding-left: 0.25em; -} - -#reportingHeader ul, -#reportingFooter ul { - list-style-type: disc; -} - -/* here we explicitly set nested paragraphs inside lists to inherit their styles from the list, in case markdown does funky things */ -#reportingHeader ul p, -#reportingFooter ul p, -#reportingHeader ol p, -#reportingFooter ol p { - font-family: inherit; - font-size: inherit; - font-weight: inherit; - /* We only inherit vertical spacing, not horizontal */ - margin-top: inherit; - margin-bottom: inherit; -} - - [eCommerce] Revenue Dashboard - OpenSearch
-
-

-

Dashboard panel: [eCommerce] Markdown[eCommerce] Markdown

Sample eCommerce Data

-

This dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about OpenSearch Dashboards, check our docs.

-

Dashboard panel: [eCommerce] Controls[eCommerce] Controls

Dashboard panel: [eCommerce] Sold Products per Day[eCommerce] Sold Products per Day

Trxns / day
149

Dashboard panel: [eCommerce] Sales by Gender[eCommerce] Sales by Gender

FEMALE (52.89%)MALE (47.11%)

Dashboard panel: [eCommerce] Average Sales Price[eCommerce] Average Sales Price

$74.62per order
average spend

Dashboard panel: [eCommerce] Average Sold Quantity[eCommerce] Average Sold Quantity

2.124per order
average items

Dashboard panel: [eCommerce] Total Revenue[eCommerce] Total Revenue

$78,725.49

Dashboard panel: [eCommerce] Sales by Category[eCommerce] Sales by Category

Sum of total_quantity020406080100
2021-06-17 12:002021-06-18 12:002021-06-19 12:002021-06-20 12:002021-06-21 12:002021-06-22 12:002021-06-23 12:00order_date per 3 hours

Dashboard panel: [eCommerce] Promotion Tracking[eCommerce] Promotion Tracking

  • Revenue Trousers
    $71
  • Revenue Watches
    $239
  • Revenue Bags
    $1,055.781
  • Revenue Cocktail Dresses
    $483.969

Dashboard panel: [eCommerce] Sales Count Map[eCommerce] Sales Count Map

Dashboard panel: [eCommerce] Top Selling Products[eCommerce] Top Selling Products

Lace-up boots - blackAnkle boots - blackBoots - blackPrint T-shirt - blackJumper - blackLace-up boots - resin coffeeDress with Defined Waist

Dashboard panel: [eCommerce] Orders[eCommerce] Orders

-
-
-
- - -
1–50 of 1055
-
-
-
-
- - - - - -
Timecategoryskutaxful_total_pricetotal_quantity
- -Jun 23, 2021 @ 23:56:10.000
Women's Accessories, Women's Clothing
ZO0301903019, ZO0049800498
$43.98
2
- -Jun 23, 2021 @ 23:41:46.000
Men's Clothing
ZO0128701287, ZO0577005770
$49.98
2
- -Jun 23, 2021 @ 23:37:26.000
Men's Clothing
ZO0558005580, ZO0276502765
$18.98
2
- -Jun 23, 2021 @ 23:33:07.000
Women's Accessories, Women's Clothing
ZO0358803588, ZO0179601796
$91.98
2
- -Jun 23, 2021 @ 23:21:36.000
Men's Clothing
ZO0543605436, ZO0425604256
$89.98
2
- -Jun 23, 2021 @ 23:21:36.000
Men's Clothing
ZO0629306293, ZO0578405784
$37.98
2
- -Jun 23, 2021 @ 22:51:22.000
Men's Clothing
ZO0291602916, ZO0292302923
$221.98
2
- -Jun 23, 2021 @ 22:48:29.000
Women's Clothing, Women's Accessories
ZO0262902629, ZO0358703587
$83.98
2
- -Jun 23, 2021 @ 22:29:46.000
Men's Clothing
ZO0474604746, ZO0111701117
$36.98
2
- -Jun 23, 2021 @ 22:12:29.000
Men's Accessories, Men's Shoes
ZO0598005980, ZO0681706817
$75.98
2
- -Jun 23, 2021 @ 22:11:02.000
Women's Clothing, Women's Shoes
ZO0221402214, ZO0677006770
$103.98
2
- -Jun 23, 2021 @ 21:59:31.000
Men's Clothing, Men's Shoes
ZO0579905799, ZO0386403864
$55.98
2
- -Jun 23, 2021 @ 21:55:12.000
Men's Clothing
ZO0474204742, ZO0574005740
$31.98
2
- -Jun 23, 2021 @ 21:48:00.000
Men's Clothing, Men's Shoes
ZO0580905809, ZO0507105071
$41.98
2
- -Jun 23, 2021 @ 21:23:31.000
Women's Clothing
ZO0217002170, ZO0164201642
$27.98
2
- -Jun 23, 2021 @ 21:17:46.000
Women's Shoes, Women's Clothing
ZO0368003680, ZO0173001730
$63.98
2
- -Jun 23, 2021 @ 21:12:00.000
Men's Clothing
ZO0437404374, ZO0293102931
$24.98
2
- -Jun 23, 2021 @ 21:09:07.000
Women's Accessories, Women's Shoes
ZO0085300853, ZO0678506785
$95.98
2
- -Jun 23, 2021 @ 20:56:10.000
Women's Clothing, Women's Shoes
ZO0638706387, ZO0677206772
$92.98
2
- -Jun 23, 2021 @ 20:41:46.000
Women's Shoes, Women's Clothing
ZO0678406784, ZO0712707127
$99.98
2
- -Jun 23, 2021 @ 20:37:26.000
Women's Clothing
ZO0708107081, ZO0500905009
$42.98
2
- -Jun 23, 2021 @ 20:33:07.000
Women's Shoes
ZO0250002500, ZO0675406754
$159.98
2
- -Jun 23, 2021 @ 20:24:29.000
Women's Accessories
ZO0205602056, ZO0356903569
$46.98
2
- -Jun 23, 2021 @ 20:00:00.000
Men's Clothing
ZO0441304413, ZO0561205612
$22.98
2
- -Jun 23, 2021 @ 19:55:41.000
Men's Shoes, Men's Clothing
ZO0691306913, ZO0275502755
$139.98
2
- -Jun 23, 2021 @ 19:32:38.000
Men's Clothing
ZO0295102951, ZO0453304533, ZO0588305883, ZO0411304113
$82.96
4
- -Jun 23, 2021 @ 19:19:41.000
Men's Clothing, Men's Accessories
ZO0296402964, ZO0316203162
$42.98
2
- -Jun 23, 2021 @ 19:18:14.000
Men's Clothing, Men's Shoes
ZO0588005880, ZO0571805718, ZO0403504035, ZO0457504575
$108.96
4
- -Jun 23, 2021 @ 19:15:22.000
Women's Clothing
ZO0051800518, ZO0333303333
$92.98
2
- -Jun 23, 2021 @ 19:06:43.000
Men's Clothing, Men's Shoes
ZO0431904319, ZO0683606836
$149.98
2
- -Jun 23, 2021 @ 19:05:17.000
Women's Clothing, Women's Accessories
ZO0181701817, ZO0095300953
$45.98
2
- -Jun 23, 2021 @ 18:58:05.000
Men's Clothing
ZO0620606206, ZO0454204542
$70.98
2
- -Jun 23, 2021 @ 18:40:48.000
Women's Shoes, Women's Accessories
ZO0670906709, ZO0211302113
$128.98
2
- -Jun 23, 2021 @ 18:30:43.000
Women's Clothing
ZO0263002630, ZO0497904979
$93.98
2
- -Jun 23, 2021 @ 18:27:50.000
Men's Clothing, Men's Shoes
ZO0300603006, ZO0123501235, ZO0399803998, ZO0624206242
$160.96
4
- -Jun 23, 2021 @ 18:13:26.000
Women's Accessories, Women's Shoes
ZO0696806968, ZO0020700207
$66.98
2
- -Jun 23, 2021 @ 18:03:22.000
Women's Clothing, Women's Accessories
ZO0271302713, ZO0703207032
$74.98
2
- -Jun 23, 2021 @ 18:00:29.000
Men's Shoes, Men's Accessories
ZO0403504035, ZO0608606086
$91.98
2
- -Jun 23, 2021 @ 17:46:05.000
Men's Shoes, Men's Clothing
ZO0521405214, ZO0585905859
$64.98
2
- -Jun 23, 2021 @ 17:31:41.000
Women's Clothing
ZO0171101711, ZO0048400484
$74.98
2
- -Jun 23, 2021 @ 17:28:48.000
Women's Accessories
ZO0209302093, ZO0087400874
$47.98
2
- -Jun 23, 2021 @ 17:27:22.000
Women's Accessories
ZO0096100961, ZO0091000910
$53.98
2
- -Jun 23, 2021 @ 17:04:19.000
Men's Clothing
ZO0284802848, ZO0581605816
$49.98
2
- -Jun 23, 2021 @ 17:02:53.000
Men's Shoes
ZO0401004010, ZO0257802578
$119.98
2
- -Jun 23, 2021 @ 16:51:22.000
Men's Shoes, Men's Accessories
ZO0520705207, ZO0397603976, ZO0395003950, ZO0702307023
$207.96
4
- -Jun 23, 2021 @ 16:49:55.000
Women's Shoes, Women's Clothing
ZO0364403644, ZO0150401504
$116.98
2
- -Jun 23, 2021 @ 16:31:12.000
Men's Clothing, Women's Accessories
ZO0554505545, ZO0703407034
$96.98
2
- -Jun 23, 2021 @ 16:25:26.000
Women's Clothing
ZO0263002630
$51.99
1
- -Jun 23, 2021 @ 16:02:24.000
Women's Shoes
ZO0365203652, ZO0383303833
$126.98
2
- -Jun 23, 2021 @ 16:00:58.000
Women's Clothing
ZO0179701797, ZO0496004960
$42.98
2
-
- - -
- - - -
- -
- -
-
\ No newline at end of file diff --git a/dashboards-reports/server/routes/utils/__tests__/metricHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/metricHelper.test.ts deleted file mode 100644 index 3953a724..00000000 --- a/dashboards-reports/server/routes/utils/__tests__/metricHelper.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { checkErrorType } from '../helpers'; - -describe('Test collecting metrics', () => { - // TODO: need more tests - - test('check error type', () => { - const badRequestError = { - statusCode: 400, - }; - const serverError = { - statusCode: 500, - }; - const unknownError = { - statusCode: undefined, - }; - const userErrorType = checkErrorType(badRequestError); - const sysErrorType = checkErrorType(serverError); - const unknownErrorType = checkErrorType(unknownError); - expect(userErrorType).toEqual('user_error'); - expect(sysErrorType).toEqual('system_error'); - expect(unknownErrorType).toEqual('system_error'); - }); -}); diff --git a/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts b/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts deleted file mode 100644 index b1dd44c1..00000000 --- a/dashboards-reports/server/routes/utils/__tests__/savedSearchReportHelper.test.ts +++ /dev/null @@ -1,666 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import 'regenerator-runtime/runtime'; -import { createSavedSearchReport } from '../savedSearchReportHelper'; -import { reportSchema } from '../../../model'; -import { mockLogger } from '../../../../test/__mocks__/loggerMock'; -import _ from 'lodash'; - -/** - * The mock and sample input for saved search export function. - */ -const input = { - query_url: '/app/discover#/view/7adfa750-4c81-11e8-b3d7-01146121b73d', - time_from: 1343576635300, - time_to: 1596037435301, - report_definition: { - report_params: { - report_name: 'test report table order', - report_source: 'Saved search', - description: 'Hi this is your saved search on demand', - core_params: { - base_url: '/app/discover#/view/7adfa750-4c81-11e8-b3d7-01146121b73d', - saved_search_id: 'ddd8f430-f2ef-11ea-8c86-81a0b21b4b67', - report_format: 'csv', - time_duration: 'PT5M', - limit: 10000, - excel: true, - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: 'title', - textDescription: 'text description', - htmlDescription: 'html description', - }, - trigger: { - trigger_type: 'On demand', - }, - }, -}; - -const mockDateFormat = 'MM/DD/YYYY h:mm:ss.SSS a'; - -/** - * Max result window size in OpenSearch index settings. - */ -const maxResultSize = 5; - -describe('test create saved search report', () => { - test('create report with valid input', async () => { - // Check if the assumption of input is up-to-date - reportSchema.validate(input); - }, 20000); - - test('create report with expected file name', async () => { - const hits: Array<{ _source: any }> = []; - const client = mockOpenSearchClient(hits); - const { timeCreated, fileName } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - expect(fileName).toContain(`test report table order_`); - }, 20000); - - test('create report with expected file name extension', async () => { - const csvReport = await createSavedSearchReport( - input, - mockOpenSearchClient([]), - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - expect(csvReport.fileName).toContain('.csv'); - - input.report_definition.report_params.core_params.report_format = 'xlsx'; - const xlsxReport = await createSavedSearchReport( - input, - mockOpenSearchClient([]), - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - expect(xlsxReport.fileName).toContain('.xlsx'); - }, 20000); - - test('create report for empty data set', async () => { - const hits: Array<{ _source: any }> = []; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - expect(dataUrl).toEqual(''); - }, 20000); - - test('create report for small data set by single search', async () => { - const hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - 'c1,Male\n' + - 'c2,Male\n' + - 'c3,Male\n' + - 'c4,Male\n' + - 'c5,Male' - ); - }, 20000); - - test('create report for large data set by scroll', async () => { - const hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - hit({ category: 'c6', customer_gender: 'Female' }), - hit({ category: 'c7', customer_gender: 'Female' }), - hit({ category: 'c8', customer_gender: 'Female' }), - hit({ category: 'c9', customer_gender: 'Female' }), - hit({ category: 'c10', customer_gender: 'Female' }), - hit({ category: 'c11', customer_gender: 'Male' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - 'c1,Male\n' + - 'c2,Male\n' + - 'c3,Male\n' + - 'c4,Male\n' + - 'c5,Male\n' + - 'c6,Female\n' + - 'c7,Female\n' + - 'c8,Female\n' + - 'c9,Female\n' + - 'c10,Female\n' + - 'c11,Male' - ); - }, 20000); - - test('create report with limit smaller than max result size', async () => { - // Assign a smaller limit than default to test - input.report_definition.report_params.core_params.limit = 1; - - const hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual('category,customer_gender\n' + 'c1,Male'); - }, 20000); - - test('create report with limit greater than max result size', async () => { - // Assign a limit just a little greater than max result size (5) - input.report_definition.report_params.core_params.limit = 6; - - const hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - hit({ category: 'c6', customer_gender: 'Female' }), - hit({ category: 'c7', customer_gender: 'Female' }), - hit({ category: 'c8', customer_gender: 'Female' }), - hit({ category: 'c9', customer_gender: 'Female' }), - hit({ category: 'c10', customer_gender: 'Female' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - 'c1,Male\n' + - 'c2,Male\n' + - 'c3,Male\n' + - 'c4,Male\n' + - 'c5,Male\n' + - 'c6,Female' - ); - }, 20000); - - test('create report with limit greater than total result size', async () => { - // Assign a limit even greater than the result size - input.report_definition.report_params.core_params.limit = 10; - - const hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - hit({ category: 'c6', customer_gender: 'Female' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - 'c1,Male\n' + - 'c2,Male\n' + - 'c3,Male\n' + - 'c4,Male\n' + - 'c5,Male\n' + - 'c6,Female' - ); - }, 20000); - - test('create report for data set with comma', async () => { - const hits = [ - hit({ category: ',c1', customer_gender: 'Ma,le' }), - hit({ category: 'c2,', customer_gender: 'M,ale' }), - hit({ category: ',,c3', customer_gender: 'Male,,,' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - '",c1","Ma,le"\n' + - '"c2,","M,ale"\n' + - '",,c3","Male,,,"' - ); - }, 20000); - - test('create report for data set with comma and custom separator', async () => { - const hits = [ - hit({ category: ',c1', customer_gender: 'Ma,le' }), - hit({ category: 'c2,', customer_gender: 'M,ale' }), - hit({ category: ',,c3', customer_gender: 'Male,,,' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - '|', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category|customer_gender\n' + - ',c1|Ma,le\n' + - 'c2,|M,ale\n' + - ',,c3|Male,,,' - ); - }, 20000); - - test('create report for data set with nested fields', async () => { - const hits = [ - hit({ - 'geoip.country_iso_code': 'GB', - 'geoip.location': { lon: -0.1, lat: 51.5 }, - }), - hit({ - 'geoip.country_iso_code': 'US', - 'geoip.city_name': 'New York', - 'geoip.location': { lon: -74, lat: 40.8 }, - }), - ]; - const client = mockOpenSearchClient( - hits, - '"geoip.country_iso_code", "geoip.city_name", "geoip.location"' - ); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'geoip.country_iso_code,geoip.location.lon,geoip.location.lat,geoip.city_name\n' + - 'GB,-0.1,51.5, \n' + - 'US,-74,40.8,New York' - ); - }, 20000); - - test('create report by sanitizing data set for Excel', async () => { - const hits = [ - hit({ category: 'c1', customer_gender: '=Male' }), - hit({ category: 'c2', customer_gender: 'Male=' }), - hit({ category: 'c3', customer_gender: '+Ma,le' }), - hit({ category: ',-c4', customer_gender: 'Male' }), - hit({ category: ',,,@c5', customer_gender: 'Male' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - `c1,'=Male\n` + - `c2,Male=\n` + - `c3,"'+Ma,le"\n` + - `",-c4",Male\n` + - `",,,@c5",Male` - ); - }, 20000); - - test('create report by not sanitizing data set for Excel', async () => { - // Enable Excel escape option - input.report_definition.report_params.core_params.excel = false; - - const hits = [ - hit({ category: 'c1', customer_gender: '=Male' }), - hit({ category: 'c2', customer_gender: 'Male=' }), - hit({ category: 'c3', customer_gender: '+Ma,le' }), - hit({ category: ',-c4', customer_gender: 'Male' }), - hit({ category: ',,,@c5', customer_gender: 'Male' }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + - 'c1,=Male\n' + - 'c2,Male=\n' + - 'c3,"+Ma,le"\n' + - '",-c4",Male\n' + - '",,,@c5",Male' - ); - }, 20000); -}); - -test('create report for data set contains null field value', async () => { - const hits = [ - hit({ category: 'c1', customer_gender: 'Ma' }), - hit({ category: 'c2', customer_gender: 'le' }), - hit({ category: 'c3', customer_gender: null }), - ]; - const client = mockOpenSearchClient(hits); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender\n' + 'c1,Ma\n' + 'c2,le\n' + 'c3, ' - ); -}, 20000); - -test('create report for data set with metadata fields', async () => { - const metadataFields = { _index: 'nameofindex', _id: 'someid' }; - let hits = [ - hit({ category: 'c1', customer_gender: 'Male' }), - hit({ category: 'c2', customer_gender: 'Male' }), - hit({ category: 'c3', customer_gender: 'Male' }), - hit({ category: 'c4', customer_gender: 'Male' }), - hit({ category: 'c5', customer_gender: 'Male' }), - ]; - hits.forEach((i) => { - _.merge(i, metadataFields); - }); - - const client = mockOpenSearchClient( - hits, - '"category", "customer_gender","_index","_id"' - ); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender,_index,_id\n' + - 'c1,Male,nameofindex,someid\n' + - 'c2,Male,nameofindex,someid\n' + - 'c3,Male,nameofindex,someid\n' + - 'c4,Male,nameofindex,someid\n' + - 'c5,Male,nameofindex,someid' - ); -}, 20000); - -test('create report with empty/one/multiple(list) date values', async () => { - const hits = [ - hit( - { category: 'c1', customer_gender: 'Ma', order_date: [] }, - { order_date: [] } - ), - hit( - { - category: 'c2', - customer_gender: 'le', - order_date: ['2021-12-16T14:04:55'], - }, - { order_date: ['2021-12-16T14:04:55'] } - ), - hit( - { - category: 'c3', - customer_gender: 'he', - order_date: ['2021-12-17T14:04:55', '2021-12-18T14:04:55'], - }, - { order_date: ['2021-12-17T14:04:55', '2021-12-18T14:04:55'] } - ), - hit( - { - category: 'c4', - customer_gender: 'te', - order_date: '2021-12-19T14:04:55', - }, - { order_date: ['2021-12-19T14:04:55'] } - ), - ]; - const client = mockOpenSearchClient( - hits, - '"category", "customer_gender", "order_date"' - ); - const { dataUrl } = await createSavedSearchReport( - input, - client, - mockDateFormat, - ',', - true, - undefined, - mockLogger - ); - - expect(dataUrl).toEqual( - 'category,customer_gender,order_date\n' + - 'c1,Ma,[]\n' + - 'c2,le,"[""12/16/2021 2:04:55.000 pm""]"\n' + - 'c3,he,"[""12/17/2021 2:04:55.000 pm"",""12/18/2021 2:04:55.000 pm""]"\n' + - 'c4,te,12/19/2021 2:04:55.000 pm' - ); -}, 20000); - -/** - * Mock Elasticsearch client and return different mock objects based on endpoint and parameters. - */ -function mockOpenSearchClient( - mockHits: Array<{ _source: any }>, - columns = '"category", "customer_gender"' -) { - let call = 0; - const client = jest.fn(); - client.callAsInternalUser = jest - .fn() - .mockImplementation((endpoint: string, params: any) => { - switch (endpoint) { - case 'get': - return { - _source: params.id.startsWith('index-pattern:') - ? mockIndexPattern() - : mockSavedSearch(columns), - }; - case 'indices.getSettings': - return mockIndexSettings(); - case 'count': - return { - count: mockHits.length, - }; - case 'search': - return { - hits: { - hits: mockHits.slice(0, params.size), - }, - }; - case 'scroll': - call++; - return { - hits: { - hits: mockHits.slice( - maxResultSize * call, - maxResultSize * (call + 1) - ), - }, - }; - case 'clearScroll': - return null; - default: - fail('Fail due to unexpected function call on client', endpoint); - } - }); - return client; -} - -/** - * Mock a saved search for opensearch_dashboards_sample_data_ecommerce with 2 default selected fields: category and customer_gender. - */ -function mockSavedSearch(columns = '"category", "customer_gender"') { - return JSON.parse(` - { - "type": "search", - "id": "ddd8f430-f2ef-11ea-8c86-81a0b21b4b67", - "search": { - "title": "Show category and gender", - "description": "", - "hits": 0, - "columns": [ ${columns} ], - "sort": [], - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\\"highlightAll\\":true,\\"version\\":true,\\"query\\":{\\"query\\":\\"\\",\\"language\\":\\"kuery\\"},\\"indexRefName\\":\\"kibanaSavedObjectMeta.searchSourceJSON.index\\",\\"filter\\":[]}" - } - }, - "references": [ - { - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern", - "id": "ff959d40-b880-11e8-a6d9-e546fe2bba5f" - } - ] - } - `); -} - -/** - * Mock index pattern for opensearch_dashboards_sample_data_ecommerce. - */ -function mockIndexPattern() { - return JSON.parse(` - { - "index-pattern": { - "title": "opensearch_dashboards_sample_data_ecommerce", - "timeFieldName": "order_date", - "fields": "[{\\"name\\":\\"_id\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"_id\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":false},{\\"name\\":\\"_index\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"_index\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":false},{\\"name\\":\\"_score\\",\\"type\\":\\"number\\",\\"count\\":0,\\"scripted\\":false,\\"searchable\\":false,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"_source\\",\\"type\\":\\"_source\\",\\"opensearchTypes\\":[\\"_source\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":false,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"_type\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"_type\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":false},{\\"name\\":\\"category\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":2,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"category.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"category\\"}}},{\\"name\\":\\"currency\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"customer_birth_date\\",\\"type\\":\\"date\\",\\"opensearchTypes\\":[\\"date\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"customer_first_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"customer_first_name.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"customer_first_name\\"}}},{\\"name\\":\\"customer_full_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"customer_full_name.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"customer_full_name\\"}}},{\\"name\\":\\"customer_gender\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":2,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"customer_id\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"customer_last_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"customer_last_name.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"customer_last_name\\"}}},{\\"name\\":\\"customer_phone\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"day_of_week\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"day_of_week_i\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"integer\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"email\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"geoip.city_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"geoip.continent_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"geoip.country_iso_code\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"geoip.location\\",\\"type\\":\\"geo_point\\",\\"opensearchTypes\\":[\\"geo_point\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"geoip.region_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"manufacturer\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"manufacturer.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"manufacturer\\"}}},{\\"name\\":\\"order_date\\",\\"type\\":\\"date\\",\\"opensearchTypes\\":[\\"date\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"order_id\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products._id\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"products._id.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"products._id\\"}}},{\\"name\\":\\"products.base_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.base_unit_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.category\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"products.category.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"products.category\\"}}},{\\"name\\":\\"products.created_on\\",\\"type\\":\\"date\\",\\"opensearchTypes\\":[\\"date\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.discount_amount\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.discount_percentage\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.manufacturer\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"products.manufacturer.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"products.manufacturer\\"}}},{\\"name\\":\\"products.min_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.product_id\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"long\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.product_name\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"text\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":false,\\"readFromDocValues\\":false},{\\"name\\":\\"products.product_name.keyword\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true,\\"subType\\":{\\"multi\\":{\\"parent\\":\\"products.product_name\\"}}},{\\"name\\":\\"products.quantity\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"integer\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.sku\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.tax_amount\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.taxful_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.taxless_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"products.unit_discount_amount\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"sku\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"taxful_total_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"taxless_total_price\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"half_float\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"total_quantity\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"integer\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"total_unique_products\\",\\"type\\":\\"number\\",\\"opensearchTypes\\":[\\"integer\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"type\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true},{\\"name\\":\\"user\\",\\"type\\":\\"string\\",\\"opensearchTypes\\":[\\"keyword\\"],\\"count\\":0,\\"scripted\\":false,\\"searchable\\":true,\\"aggregatable\\":true,\\"readFromDocValues\\":true}]", - "fieldFormatMap": "{\\"taxful_total_price\\":{\\"id\\":\\"number\\",\\"params\\":{\\"parsedUrl\\":{\\"origin\\":\\"http://localhost:5601\\",\\"pathname\\":\\"/app/opensearch_dashboards\\",\\"basePath\\":\\"\\"},\\"pattern\\":\\"$0,0.[00]\\"}}}" - } - } - `); -} - -/** - * Mock index settings for opensearch_dashboards_sample_data_ecommerce. - */ -function mockIndexSettings() { - return JSON.parse(` - { - "opensearch_dashboards_sample_data_ecommerce": { - "settings": { - "index": { - "number_of_shards": "1", - "auto_expand_replicas": "0-1", - "provided_name": "opensearch_dashboards_sample_data_ecommerce", - "max_result_window": "${maxResultSize}", - "creation_date": "1594417718898", - "number_of_replicas": "0", - "uuid": "0KnfmEsaTYKg39ONcrA5Eg", - "version": { - "created": "7080099" - } - } - } - } - } - `); -} - -function hit(source_kv: any, fields_kv = {}) { - return { - _source: source_kv, - fields: fields_kv, - }; -} diff --git a/dashboards-reports/server/routes/utils/constants.ts b/dashboards-reports/server/routes/utils/constants.ts deleted file mode 100644 index b8b970d6..00000000 --- a/dashboards-reports/server/routes/utils/constants.ts +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { CountersType } from './types'; -import Showdown from 'showdown'; - -export enum FORMAT { - pdf = 'pdf', - png = 'png', - csv = 'csv', -} - -export enum REPORT_STATE { - created = 'Created', - error = 'Error', - pending = 'Pending', - shared = 'Shared', -} - -export enum REPORT_DEFINITION_STATUS { - active = 'Active', - disabled = 'Disabled', -} - -export enum DELIVERY_CHANNEL { - email = 'Email', - slack = 'Slack', - chime = 'Chime', - opensearchDashboards = 'OpenSearch Dashboards user', -} - -export enum SCHEDULE_TYPE { - recurring = 'Recurring', - cron = 'Cron based', -} - -export enum REPORT_TYPE { - savedSearch = 'Saved search', - dashboard = 'Dashboard', - visualization = 'Visualization', - notebook = 'Notebook', -} - -export enum DATA_REPORT_CONFIG { - excelDateFormat = 'MM/DD/YYYY h:mm:ss.SSS a', -} - -export enum TRIGGER_TYPE { - schedule = 'Schedule', - onDemand = 'On demand', -} - -export enum DELIVERY_TYPE { - opensearchDashboardsUser = 'OpenSearch Dashboards user', - channel = 'Channel', -} - -// https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-request-from-size.html -export const DEFAULT_MAX_SIZE = 10000; - -export const SECURITY_CONSTANTS = { - TENANT_LOCAL_STORAGE_KEY: 'opendistro::security::tenant::show_popup', -}; - -export const EXTRA_HEADERS = [ - 'cookie', - 'x-proxy-user', - 'x-proxy-roles', - 'x-forwarded-for', -]; - -const BLOCKED_KEYWORD = 'BLOCKED_KEYWORD'; -const ipv4Regex = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])/g -const ipv6Regex = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/g; -const localhostRegex = /localhost:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])/g; -const iframeRegex = /iframe/g; - -export const ALLOWED_HOSTS = /^(0|0.0.0.0|127.0.0.1|localhost|(.*\.)?(opensearch.org|aws.a2z.com))$/; - -export const replaceBlockedKeywords = (htmlString: string) => { - // replace : - htmlString = htmlString.replace(ipv4Regex, BLOCKED_KEYWORD); - // replace ipv6 addresses - htmlString = htmlString.replace(ipv6Regex, BLOCKED_KEYWORD); - // replace iframe keyword - htmlString = htmlString.replace(iframeRegex, BLOCKED_KEYWORD); - // replace localhost: - htmlString = htmlString.replace(localhostRegex, BLOCKED_KEYWORD); - return htmlString; -} - - -/** - * Metric constants - */ -export const WINDOW = 3600; -export const INTERVAL = 60; -export const CAPACITY = (WINDOW / INTERVAL) * 2; - -export const GLOBAL_BASIC_COUNTER: CountersType = { - report: { - create: { - total: 0, - }, - create_from_definition: { - total: 0, - }, - download: { - total: 0, - }, - list: { - total: 0, - }, - info: { - total: 0, - }, - }, - report_definition: { - create: { - total: 0, - }, - list: { - total: 0, - }, - info: { - total: 0, - }, - update: { - total: 0, - }, - delete: { - total: 0, - }, - }, - report_source: { - list: { - total: 0, - }, - }, - dashboard: { - pdf: { - download: { - total: 0, - }, - }, - png: { - download: { - total: 0, - }, - }, - }, - visualization: { - pdf: { - download: { - total: 0, - }, - }, - png: { - download: { - total: 0, - }, - }, - }, - notebook: { - pdf: { - download: { - count: 0, - }, - }, - png: { - download: { - count: 0, - }, - }, - }, - saved_search: { - csv: { - download: { - total: 0, - }, - }, - }, -}; - -export const DEFAULT_ROLLING_COUNTER: CountersType = { - report: { - create: { - count: 0, - system_error: 0, - user_error: 0, - }, - create_from_definition: { - count: 0, - system_error: 0, - user_error: 0, - }, - download: { - count: 0, - system_error: 0, - user_error: 0, - }, - list: { - count: 0, - system_error: 0, - user_error: 0, - }, - info: { - count: 0, - system_error: 0, - user_error: 0, - }, - }, - report_definition: { - create: { - count: 0, - system_error: 0, - user_error: 0, - }, - list: { - count: 0, - system_error: 0, - user_error: 0, - }, - info: { - count: 0, - system_error: 0, - user_error: 0, - }, - update: { - count: 0, - system_error: 0, - user_error: 0, - }, - delete: { - count: 0, - system_error: 0, - user_error: 0, - }, - }, - report_source: { - list: { - count: 0, - system_error: 0, - user_error: 0, - }, - }, - dashboard: { - pdf: { - download: { - count: 0, - }, - }, - png: { - download: { - count: 0, - }, - }, - }, - visualization: { - pdf: { - download: { - count: 0, - }, - }, - png: { - download: { - count: 0, - }, - }, - }, - notebook: { - pdf: { - download: { - count: 0, - }, - }, - png: { - download: { - count: 0, - }, - }, - }, - saved_search: { - csv: { - download: { - count: 0, - }, - }, - }, -}; diff --git a/dashboards-reports/server/routes/utils/converters/__tests__/backendToUi.test.ts b/dashboards-reports/server/routes/utils/converters/__tests__/backendToUi.test.ts deleted file mode 100644 index 4877f807..00000000 --- a/dashboards-reports/server/routes/utils/converters/__tests__/backendToUi.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { ReportingConfig } from 'server/config/config'; -import { - BackendReportInstanceType, - BACKEND_DELIVERY_FORMAT, - BACKEND_REPORT_FORMAT, - BACKEND_REPORT_SOURCE, - BACKEND_REPORT_STATE, - BACKEND_TRIGGER_TYPE, -} from '../../../../model/backendModel'; -import { backendToUiReport } from '../backendToUi'; - -const input: BackendReportInstanceType = { - id: 'ScvStHUBQ1Iwo-aR31dV', - lastUpdatedTimeMs: 1605056644321, - createdTimeMs: 1605056520018, - beginTimeMs: 1605054720000, - endTimeMs: 1605056520000, - access: ['roleId'], - reportDefinitionDetails: { - id: 'OMvRtHUBQ1Iwo-aRcFdO', - lastUpdatedTimeMs: 1605056426053, - createdTimeMs: 1605056426053, - access: ['roleId'], - reportDefinition: { - name: 'cron-email', - isEnabled: true, - source: { - description: 'some random', - type: BACKEND_REPORT_SOURCE.dashboard, - origin: 'http://localhost:5601', - id: '722b74f0-b882-11e8-a6d9-e546fe2bba5f', - }, - format: { - duration: 'PT30M', - fileFormat: BACKEND_REPORT_FORMAT.pdf, - header: '

test header

', - footer: '

fake footer

', - }, - trigger: { - triggerType: BACKEND_TRIGGER_TYPE.cronSchedule, - schedule: { - cron: { - expression: '2 17 * * *', - timezone: 'PST8PDT', - }, - }, - }, - delivery: { - title: 'test email subject', - textDescription: '- test\n- optional\n- message', - htmlDescription: - '
    \n
  • test
  • \n
  • optional
  • \n
  • message
  • \n
', - configIds: [], - }, - }, - }, - status: BACKEND_REPORT_STATE.success, -}; - -const sampleServerBasePath = '/test'; - -const output = { - query_url: `${sampleServerBasePath}/app/dashboards#/view/722b74f0-b882-11e8-a6d9-e546fe2bba5f?_g=(time:(from:'2020-11-11T00:32:00.000Z',to:'2020-11-11T01:02:00.000Z'))`, - time_from: 1605054720000, - time_to: 1605056520000, - last_updated: 1605056644321, - time_created: 1605056520018, - state: 'Shared', - report_definition: { - report_params: { - report_name: 'cron-email', - report_source: 'Dashboard', - description: 'some random', - core_params: { - base_url: `${sampleServerBasePath}/app/dashboards#/view/722b74f0-b882-11e8-a6d9-e546fe2bba5f`, - report_format: 'pdf', - header: '

test header

', - footer: '

fake footer

', - time_duration: 'PT30M', - origin: 'http://localhost:5601', - window_width: 1600, - window_height: 800, - }, - }, - trigger: { - trigger_type: 'Schedule', - trigger_params: { - enabled_time: 1605056426053, - enabled: true, - schedule_type: 'Cron based', - schedule: { cron: { expression: '2 17 * * *', timezone: 'PST8PDT' } }, - }, - }, - delivery: { - title: 'test email subject', - textDescription: '- test\n- optional\n- message', - htmlDescription: - '
    \n
  • test
  • \n
  • optional
  • \n
  • message
  • \n
', - configIds: [], - }, - time_created: 1605056426053, - last_updated: 1605056426053, - status: 'Active', - }, -}; - -describe('test backend to ui model conversion', () => { - test('convert backend to ui report', async () => { - const res = backendToUiReport(input, sampleServerBasePath); - expect(res).toEqual(output); - }, 20000); -}); diff --git a/dashboards-reports/server/routes/utils/converters/__tests__/uiToBackend.test.ts b/dashboards-reports/server/routes/utils/converters/__tests__/uiToBackend.test.ts deleted file mode 100644 index a1fbe6d6..00000000 --- a/dashboards-reports/server/routes/utils/converters/__tests__/uiToBackend.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { ReportDefinitionSchemaType } from 'server/model'; -import { - DELIVERY_TYPE, - FORMAT, - REPORT_TYPE, - SCHEDULE_TYPE, - TRIGGER_TYPE, -} from '../../constants'; -import { uiToBackendReportDefinition } from '../uiToBackend'; - -/** - * The mock and sample input. - */ -const input: ReportDefinitionSchemaType = { - report_params: { - report_name: 'test report table order', - report_source: REPORT_TYPE.savedSearch, - description: 'Hi this is your saved search on demand', - core_params: { - base_url: '/app/discover#/view/7adfa750-4c81-11e8-b3d7-01146121b73d', - saved_search_id: 'ddd8f430-f2ef-11ea-8c86-81a0b21b4b67', - report_format: FORMAT.csv, - time_duration: 'PT5M', - limit: 10000, - excel: true, - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, - trigger: { - trigger_type: TRIGGER_TYPE.schedule, - trigger_params: { - schedule_type: SCHEDULE_TYPE.recurring, - schedule: { - interval: { - period: 2, - unit: 'Minutes', - start_time: 1599609062156, - }, - }, - enabled_time: 1599609062156, - enabled: true, - }, - }, -}; - -const output = { - name: 'test report table order', - isEnabled: true, - source: { - description: 'Hi this is your saved search on demand', - type: 'SavedSearch', - id: '7adfa750-4c81-11e8-b3d7-01146121b73d', - origin: 'http://localhost:5601', - }, - format: { duration: 'PT5M', fileFormat: 'Csv', limit: 10000 }, - trigger: { - triggerType: 'IntervalSchedule', - schedule: { - interval: { period: 2, unit: 'Minutes', start_time: 1599609062156 }, - }, - }, - delivery: { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }, -}; - -describe('test ui to backend model conversion', () => { - test('convert ui to backend report instance', async () => { - const res = uiToBackendReportDefinition(input); - expect(res).toEqual(output); - }, 20000); -}); diff --git a/dashboards-reports/server/routes/utils/converters/backendToUi.ts b/dashboards-reports/server/routes/utils/converters/backendToUi.ts deleted file mode 100644 index 0d9b9816..00000000 --- a/dashboards-reports/server/routes/utils/converters/backendToUi.ts +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - DataReportSchemaType, - DeliverySchemaType, - reportDefinitionSchema, - ReportDefinitionSchemaType, - ReportSchemaType, - TriggerSchemaType, - VisualReportSchemaType, -} from '../../../model'; -import { - BackendReportDefinitionDetailsType, - BackendReportInstanceType, - BACKEND_REPORT_FORMAT, - BACKEND_REPORT_SOURCE, - BACKEND_REPORT_STATE, - CronType, - DeliveryType, - IntervalType, - REPORT_FORMAT_DICT, - REPORT_SOURCE_DICT, - REPORT_STATE_DICT, - TRIGGER_TYPE_DICT, - URL_PREFIX_DICT, -} from '../../../model/backendModel'; -import { - DEFAULT_MAX_SIZE, - DELIVERY_TYPE, - FORMAT, - REPORT_DEFINITION_STATUS, - REPORT_STATE, - REPORT_TYPE, - SCHEDULE_TYPE, - TRIGGER_TYPE, -} from '../constants'; -import moment from 'moment'; -import { parse } from 'url'; - -export const backendToUiReport = ( - backendReportInstance: BackendReportInstanceType, - serverBasePath: string -): ReportSchemaType => { - const { - inContextDownloadUrlPath, - beginTimeMs, - endTimeMs, - tenant, - status, - lastUpdatedTimeMs: reportLastUpdatedTimeMs, - createdTimeMs: reportCreatedTimeMs, - reportDefinitionDetails: backendReportDefinitionDetails, - } = backendReportInstance; - - const { - reportDefinition: { - source: { type: sourceType, id: sourceId }, - delivery, - }, - } = backendReportDefinitionDetails; - - const baseUrl = getBaseUrl(sourceType, sourceId); - - let report: ReportSchemaType = { - // inContextDownloadUrlPath may not exist for report instance created from scheduled job - query_url: - inContextDownloadUrlPath || - getUiQueryUrl(baseUrl, beginTimeMs, endTimeMs, tenant), - time_from: beginTimeMs, - time_to: endTimeMs, - last_updated: reportLastUpdatedTimeMs, - time_created: reportCreatedTimeMs, - state: getUiReportState(status, delivery), - report_definition: backendToUiReportDefinition( - backendReportDefinitionDetails, - serverBasePath - ), - }; - - // Add severbasePath back to query_url - report.query_url = serverBasePath + report.query_url; - - return report; -}; - -export const backendToUiReportsList = ( - backendReportsList: BackendReportInstanceType[], - serverBasePath: string -) => { - const res = backendReportsList.map((backendReport) => { - return { - _id: backendReport.id, - _source: backendToUiReport(backendReport, serverBasePath), - }; - }); - return res; -}; - -export const backendToUiReportDefinition = ( - backendReportDefinitionDetails: BackendReportDefinitionDetailsType, - serverBasePath: string -): ReportDefinitionSchemaType => { - const { - lastUpdatedTimeMs, - createdTimeMs, - reportDefinition: { - name, - isEnabled, - source: { type: sourceType, description, id: sourceId, origin }, - format: { fileFormat, duration, header, footer, limit }, - trigger: { triggerType, schedule }, - delivery, - }, - } = backendReportDefinitionDetails; - - const baseUrl = getBaseUrl(sourceType, sourceId); - const reportSource = getUiReportSource(sourceType); - let uiReportDefinition: ReportDefinitionSchemaType = { - report_params: { - report_name: name, - report_source: reportSource, - description: description, - core_params: - reportSource === REPORT_TYPE.savedSearch - ? getDataReportCoreParams( - limit, - sourceId, - fileFormat, - duration, - baseUrl, - origin - ) - : getVisualReportCoreParams( - fileFormat, - header, - footer, - duration, - baseUrl, - origin - ), - }, - trigger: getUiTriggerParams( - triggerType, - schedule, - createdTimeMs, - isEnabled - ), - delivery: getUiDeliveryParams(delivery), //TODO: - time_created: createdTimeMs, - last_updated: lastUpdatedTimeMs, - status: getUiReportDefinitionStatus(isEnabled), - }; - // validate to assign default values to some fields for UI model - uiReportDefinition = reportDefinitionSchema.validate(uiReportDefinition); - uiReportDefinition.report_params.core_params.base_url = - serverBasePath + uiReportDefinition.report_params.core_params.base_url; - return uiReportDefinition; -}; - -export const backendToUiReportDefinitionsList = ( - backendReportDefinitionDetailsList: BackendReportDefinitionDetailsType[], - serverBasePath: string -) => { - const res = backendReportDefinitionDetailsList.map( - (backendReportDefinitionDetails) => { - return { - _id: backendReportDefinitionDetails.id, - _source: { - // TODO: this property can be removed, but need UI changes as well - report_definition: backendToUiReportDefinition( - backendReportDefinitionDetails, - serverBasePath - ), - }, - }; - } - ); - return res; -}; - -const getVisualReportCoreParams = ( - fileFormat: BACKEND_REPORT_FORMAT, - header: string = '', - footer: string = '', - duration: string, - baseUrl: string, - origin: string -): VisualReportSchemaType => { - let res: VisualReportSchemaType = { - base_url: baseUrl, - report_format: getUiReportFormat(fileFormat), - header: header, - footer: footer, - time_duration: duration, - origin: origin, - }; - return res; -}; - -// queryUrl = baseUrl + time range -const getUiQueryUrl = ( - baseUrl: string, - beginTimeMs: number, - endTimeMs: number, - tenant?: string -) => { - const timeFrom = moment(beginTimeMs).toISOString(); - const timeTo = moment(endTimeMs).toISOString(); - let queryUrl = `${baseUrl}?_g=(time:(from:'${timeFrom}',to:'${timeTo}'))`; - if (tenant !== undefined) { - if (tenant === '') { - tenant = 'global'; - } else if (tenant === '__user__') { - tenant = 'private'; - } - queryUrl = addTenantToURL(queryUrl, tenant); - } - - return queryUrl; -}; - -const getBaseUrl = (sourceType: BACKEND_REPORT_SOURCE, sourceId: string) => { - //TODO: AES domain has different prefix, need figure out a general solution - const baseUrl = `${URL_PREFIX_DICT[sourceType]}${sourceId}`; - return baseUrl; -}; - -const getDataReportCoreParams = ( - limit: number = DEFAULT_MAX_SIZE, - sourceId: string, - fileFormat: BACKEND_REPORT_FORMAT, - duration: string, - baseUrl: string, - origin: string -): DataReportSchemaType => { - let res: DataReportSchemaType = { - base_url: baseUrl, - report_format: getUiReportFormat(fileFormat), - limit: limit, - time_duration: duration, - saved_search_id: sourceId, - origin: origin, - }; - return res; -}; - -const getUiScheduleParams = ( - schedule: CronType | IntervalType | undefined, - createdTimeMs: number, - isEnabled: boolean -) => { - let res = { - trigger_params: { - enabled_time: createdTimeMs, - enabled: isEnabled, - schedule_type: - schedule && 'cron' in schedule - ? SCHEDULE_TYPE.cron - : SCHEDULE_TYPE.recurring, - schedule: schedule, - }, - }; - return res; -}; - -const getUiTriggerType = (backendField: string): TRIGGER_TYPE => { - let res: any; - for (let [ui, backendFieldList] of Object.entries(TRIGGER_TYPE_DICT)) { - for (let item of backendFieldList) { - if (item === backendField) { - res = ui; - } - } - } - return res; -}; - -const getUiReportFormat = (backendField: string): FORMAT => { - let res: any; - for (let [ui, backend] of Object.entries(REPORT_FORMAT_DICT)) { - if (backend === backendField) { - res = ui; - } - } - return res; -}; - -const getUiReportState = ( - status: BACKEND_REPORT_STATE, - delivery: any -): REPORT_STATE => { - let res: any; - for (let [ui, backend] of Object.entries(REPORT_STATE_DICT)) { - if (backend === status) { - // distinguish "shared" and "created" - if (status === BACKEND_REPORT_STATE.success && delivery) { - res = REPORT_STATE.shared; - } else { - res = ui; - } - } else if (status === BACKEND_REPORT_STATE.scheduled) { - // corner case - res = REPORT_STATE.pending; - } - } - return res; -}; - -const getUiReportSource = (type: BACKEND_REPORT_SOURCE): REPORT_TYPE => { - let res: any; - for (let [ui, backend] of Object.entries(REPORT_SOURCE_DICT)) { - if (backend === type) { - res = ui; - } - } - return res; -}; - -const getUiReportDefinitionStatus = ( - isEnabled: any -): REPORT_DEFINITION_STATUS => { - return isEnabled - ? REPORT_DEFINITION_STATUS.active - : REPORT_DEFINITION_STATUS.disabled; -}; - -const getUiTriggerParams = ( - triggerType: any, - schedule: CronType | IntervalType | undefined, - createdTimeMs: number, - isEnabled: boolean -): TriggerSchemaType => { - let res: TriggerSchemaType = { - trigger_type: getUiTriggerType(triggerType), - ...(getUiTriggerType(triggerType) === TRIGGER_TYPE.schedule && - getUiScheduleParams(schedule, createdTimeMs, isEnabled)), - }; - - return res; -}; - -// Delivery -const getUiDeliveryParams = ( - delivery: DeliveryType | undefined -): DeliverySchemaType => { - const opensearchDashboardsUserDeliveryParams = { - configIds: [], - title: '', - textDescription: '', - htmlDescription: '' - }; - - let params: any; - if (delivery) { - const { ...rest } = delivery; - params = { - ...rest - }; - } else { - params = opensearchDashboardsUserDeliveryParams; - } - return params; -}; - -// helper function to add tenant info to url(if tenant is available) -const addTenantToURL = (url: string, userRequestedTenant: string) => { - // build fake url from relative url - const fakeUrl = `http://opensearch.com${url}`; - const tenantKey = 'security_tenant'; - const tenantKeyAndValue = - tenantKey + '=' + encodeURIComponent(userRequestedTenant); - - const { pathname, search } = parse(fakeUrl); - const queryDelimiter = !search ? '?' : '&'; - - // The url parser returns null if the search is empty. Change that to an empty - // string so that we can use it to build the values later - if (search && search.toLowerCase().indexOf(tenantKey) > -1) { - // If we for some reason already have a tenant in the URL we skip any updates - return url; - } - - // A helper for finding the part in the string that we want to extend/replace - const valueToReplace = pathname! + (search || ''); - const replaceWith = valueToReplace + queryDelimiter + tenantKeyAndValue; - - return url.replace(valueToReplace, replaceWith); -}; diff --git a/dashboards-reports/server/routes/utils/converters/uiToBackend.ts b/dashboards-reports/server/routes/utils/converters/uiToBackend.ts deleted file mode 100644 index 4a2064cd..00000000 --- a/dashboards-reports/server/routes/utils/converters/uiToBackend.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - ChannelSchemaType, - DeliverySchemaType, - ReportDefinitionSchemaType, - ScheduleSchemaType, - TriggerSchemaType, -} from '../../../model'; -import { - BackendReportDefinitionType, - BACKEND_DELIVERY_FORMAT, - BACKEND_REPORT_FORMAT, - BACKEND_REPORT_SOURCE, - BACKEND_REPORT_STATE, - BACKEND_TRIGGER_TYPE, - DeliveryType, - REPORT_FORMAT_DICT, - REPORT_SOURCE_DICT, - REPORT_STATE_DICT, -} from '../../../model/backendModel'; -import { - DELIVERY_TYPE, - FORMAT, - REPORT_STATE, - REPORT_TYPE, - SCHEDULE_TYPE, -} from '../constants'; - -export const uiToBackendReportDefinition = ( - reportDefinition: ReportDefinitionSchemaType -): BackendReportDefinitionType => { - const { - report_params: { - report_name: reportName, - description, - report_source: reportSource, - core_params: { - base_url: baseUrl, - time_duration: timeDuration, - report_format: reportFormat, - header, - footer, - limit, - origin, - }, - }, - trigger, - delivery, - } = reportDefinition; - - let backendReportDefinition: BackendReportDefinitionType = { - name: reportName, - isEnabled: getBackendIsEnabled(trigger), - source: { - description: description, - type: getBackendReportSource(reportSource), - id: getBackendReportSourceId(baseUrl), - origin: origin, - }, - format: { - duration: timeDuration, - fileFormat: getBackendReportFormat(reportFormat), - ...(limit && { limit: limit }), - ...(header && { header: header }), - ...(footer && { footer: footer }), - }, - trigger: getBackendTrigger(trigger), - ...(getBackendDelivery(delivery) && { - delivery: getBackendDelivery(delivery), - }), - }; - return backendReportDefinition; -}; - -const getBackendIsEnabled = (trigger: TriggerSchemaType) => { - let enabled = true; - if (trigger.trigger_params) { - enabled = trigger.trigger_params.enabled; - } - return enabled; -}; - -const getBackendDelivery = ( - delivery: DeliverySchemaType -): DeliveryType | undefined => { - const { - configIds: configIds, - title: title, - textDescription: textDescription, - htmlDescription: htmlDescription - } = delivery; - let res = { - configIds: configIds, - title: title, - textDescription: textDescription, - htmlDescription: htmlDescription - } - return res; -}; - -const getBackendTrigger = (trigger: TriggerSchemaType) => { - const { trigger_params: scheduleParams } = trigger; - const { schedule } = { ...scheduleParams }; - let res = { - triggerType: scheduleParams - ? getBackendTriggerType(scheduleParams) - : BACKEND_TRIGGER_TYPE.onDemand, - schedule: schedule, - }; - return res; -}; - -const getBackendTriggerType = ( - scheduleParams: ScheduleSchemaType -): BACKEND_TRIGGER_TYPE => { - const { schedule_type: scheduleType } = scheduleParams; - let res; - switch (scheduleType) { - case SCHEDULE_TYPE.cron: - res = BACKEND_TRIGGER_TYPE.cronSchedule; - break; - case SCHEDULE_TYPE.recurring: - res = BACKEND_TRIGGER_TYPE.intervalSchedule; - break; - } - return res; -}; - -const getBackendReportFormat = ( - reportFormat: FORMAT -): BACKEND_REPORT_FORMAT => { - return REPORT_FORMAT_DICT[reportFormat]; -}; - -export const getBackendReportState = ( - reportState: REPORT_STATE -): BACKEND_REPORT_STATE => { - return REPORT_STATE_DICT[reportState]; -}; - -export const getBackendReportSource = ( - reportSource: REPORT_TYPE -): BACKEND_REPORT_SOURCE => { - return REPORT_SOURCE_DICT[reportSource]; -}; -//TODO: tmp solution, we are extracting the id from the baseUrl, e.g. /app/dashboards#/view/ -// since currently dashboard/visualization id are not required in the UI model, will add in the future -const getBackendReportSourceId = (baseUrl: string): string => { - const id = baseUrl.split('/').pop() || ''; - return id; -}; diff --git a/dashboards-reports/server/routes/utils/dataReportHelpers.ts b/dashboards-reports/server/routes/utils/dataReportHelpers.ts deleted file mode 100644 index a7bee2b9..00000000 --- a/dashboards-reports/server/routes/utils/dataReportHelpers.ts +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import esb, { Sort } from 'elastic-builder'; -import converter from 'json-2-csv'; -import _ from 'lodash'; -import moment from 'moment'; -import { DATA_REPORT_CONFIG } from './constants'; -import { - buildOpenSearchQuery, - Filter, - Query, - OpenSearchQueryConfig, -} from '../../../../../src/plugins/data/common'; - -export var metaData = { - saved_search_id: null, - report_format: null, - start: null, - end: null, - fields: null, - type: null, - timeFieldName: null, - sorting: null, - fields_exist: false, - selectedFields: [], - paternName: null, - searchSourceJSON: [], - dateFields: [], -}; - -// Get the selected columns by the user. -export const getSelectedFields = async (columns) => { - const selectedFields = []; - let fields_exist = false; - for (let column of columns) { - if (column !== '_source') { - fields_exist = true; - selectedFields.push(column); - } else { - fields_exist = false; - selectedFields.push('_source'); - } - } - metaData.fields_exist = fields_exist; - metaData.selectedFields = selectedFields; -}; - -// Build the OpenSearch query from the meta data -// is_count is set to 1 if we building the count query but 0 if we building the fetch data query -export const buildRequestBody = (report: any, allowLeadingWildcards: boolean, is_count: number) => { - let esbBoolQuery = esb.boolQuery(); - const searchSourceJSON = report._source.searchSourceJSON; - const savedObjectQuery: Query = JSON.parse(searchSourceJSON).query; - const savedObjectFilter: Filter = JSON.parse(searchSourceJSON).filter; - const savedObjectConfig: OpenSearchQueryConfig = { - allowLeadingWildcards: allowLeadingWildcards, - queryStringOptions: {}, - ignoreFilterIfFieldNotInIndex: false, - } - const QueryFromSavedObject = buildOpenSearchQuery( - undefined, - savedObjectQuery, - savedObjectFilter, - savedObjectConfig, - ); - // Add time range - if (report._source.timeFieldName && report._source.timeFieldName.length > 0) { - esbBoolQuery.must( - esb - .rangeQuery(report._source.timeFieldName) - .format('epoch_millis') - .gte(report._source.start - 1) - .lte(report._source.end + 1) - ); - } - if (is_count) { - return esb.requestBodySearch().query(esbBoolQuery); - } - - // Add sorting to the query - let esbSearchQuery = esb - .requestBodySearch() - .query(esbBoolQuery) - .version(true); - - if (report._source.sorting.length > 0) { - const sortings: Sort[] = report._source.sorting.map((element: string[]) => { - return esb.sort(element[0], element[1]); - }); - esbSearchQuery.sorts(sortings); - } - - // add selected fields to query - if (report._source.fields_exist) { - esbSearchQuery.source({ includes: report._source.selectedFields }); - } - // Add a customizer to merge queries to generate request body - let requestBody = _.mergeWith( - { query: QueryFromSavedObject }, - esbSearchQuery.toJSON(), - (objValue, srcValue) => { - if (_.isArray(objValue)) { - return objValue.concat(srcValue); - } - } - ); - - requestBody = addDocValueFields(report, requestBody); - return requestBody; -}; - -// Fetch the data from OpenSearch -export const getOpenSearchData = ( - arrayHits, - report, - params, - dateFormat: string -) => { - let hits: any = []; - for (let valueRes of arrayHits) { - for (let data of valueRes.hits) { - const fields = data.fields; - // get all the fields of type date and format them to excel format - for (let dateField of report._source.dateFields) { - const dateValue = data._source[dateField]; - if (dateValue && dateValue.length !== 0) { - if (dateValue instanceof Array) { - // loop through array - dateValue.forEach((element, index) => { - data._source[dateField][index] = moment( - fields[dateField][index] - ).format(dateFormat); - }); - } else { - // The fields response always returns an array of values for each field - // https://www.elastic.co/guide/en/elasticsearch/reference/master/search-fields.html#search-fields-response - data._source[dateField] = moment(fields[dateField][0]).format( - dateFormat - ); - } - } - } - delete data['fields']; - if (report._source.fields_exist === true) { - let result = traverse(data, report._source.selectedFields); - hits.push(params.excel ? sanitize(result) : result); - } else { - hits.push(params.excel ? sanitize(data) : data); - } - // Truncate to expected limit size - if (hits.length >= params.limit) { - return hits; - } - } - } - return hits; -}; - -//Convert the data to Csv format -export const convertToCSV = async (dataset, csvSeparator) => { - let convertedData: any = []; - const options = { - delimiter: { field: csvSeparator, eol: '\n' }, - emptyFieldValue: ' ', - }; - await converter.json2csvAsync(dataset[0], options).then((csv) => { - convertedData = csv; - }); - return convertedData; -}; - -function flattenHits(hits, result = {}, prefix = '') { - for (const [key, value] of Object.entries(hits)) { - if (!hits.hasOwnProperty(key)) continue; - if ( - value != null && - typeof value === 'object' && - !Array.isArray(value) && - Object.keys(value).length > 0 - ) { - flattenHits(value, result, prefix + key + '.'); - } else { - result[prefix.replace(/^_source\./, '') + key] = value; - } - } - return result; -} - -//Return only the selected fields -function traverse(data, keys, result = {}) { - data = flattenHits(data); - const sourceKeys = Object.keys(data); - keys.forEach((key) => { - const value = _.get(data, key, undefined); - if (value !== undefined) result[key] = value; - else { - Object.keys(data) - .filter((sourceKey) => sourceKey.startsWith(key + '.')) - .forEach((sourceKey) => (result[sourceKey] = data[sourceKey])); - } - }); - return result; -} - -/** - * Escape special characters if field value prefixed with. - * This is intend to avoid CSV injection in Microsoft Excel. - * @param doc document - */ -function sanitize(doc: any) { - for (const field in doc) { - if (doc[field] == null) continue; - if ( - doc[field].toString().startsWith('+') || - (doc[field].toString().startsWith('-') && - typeof doc[field] !== 'number') || - doc[field].toString().startsWith('=') || - doc[field].toString().startsWith('@') - ) { - doc[field] = "'" + doc[field]; - } - } - return doc; -} - -const addDocValueFields = (report: any, requestBody: any) => { - const docValues = []; - for (const dateType of report._source.dateFields) { - docValues.push({ - field: dateType, - format: 'date_hour_minute_second_fraction', - }); - } - // elastic-builder doesn't provide function to build docvalue_fields with format, - // this is a workaround which appends docvalues field to the request body. - requestBody = { - ...requestBody, - docvalue_fields: docValues, - }; - return requestBody; -}; diff --git a/dashboards-reports/server/routes/utils/helpers.ts b/dashboards-reports/server/routes/utils/helpers.ts deleted file mode 100644 index 5bada6d0..00000000 --- a/dashboards-reports/server/routes/utils/helpers.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { OpenSearchDashboardsResponseFactory } from '../../../../../src/core/server'; -import { v1 as uuidv1 } from 'uuid'; -import { - ILegacyClusterClient, - ILegacyScopedClusterClient, -} from '../../../../../src/core/server'; - -/** - * OpenSearch error response body: - * { - * error: { - * root_cause: [{ type: 'status_exception', reason: 'test exception' }], - * type: 'status_exception', - * reason: 'test exception', - * }, - * status: 404, - * }; - * - */ -export function parseOpenSearchErrorResponse(error: any) { - if (error.response) { - try { - const opensearchErrorResponse = JSON.parse(error.response); - return opensearchErrorResponse.error.reason || error.response; - } catch (parsingError) { - return error.response; - } - } - return error.message; -} - -export function errorResponse(response: OpenSearchDashboardsResponseFactory, error: any) { - return response.custom({ - statusCode: error.statusCode || 500, - body: parseOpenSearchErrorResponse(error), - }); -} - -/** - * Generate report file name based on name and timestamp. - * @param itemName report item name - * @param timeCreated timestamp when this is being created - */ -export function getFileName(itemName: string, timeCreated: Date): string { - return `${itemName}_${timeCreated.toISOString()}_${uuidv1()}`; -} - -/** - * Call OpenSearch cluster function. - * @param client OpenSearch client - * @param endpoint OpenSearch API method - * @param params OpenSearch API parameters - */ -export const callCluster = async ( - client: ILegacyClusterClient | ILegacyScopedClusterClient, - endpoint: string, - params: any, - isScheduledTask: boolean -) => { - let opensearchResp; - if (isScheduledTask) { - opensearchResp = await (client as ILegacyClusterClient).callAsInternalUser( - endpoint, - params - ); - } else { - opensearchResp = await (client as ILegacyScopedClusterClient).callAsCurrentUser( - endpoint, - params - ); - } - return opensearchResp; -}; - -export const checkErrorType = (error: any) => { - if (error.statusCode && Math.floor(error.statusCode / 100) === 4) { - return 'user_error'; - } else { - return 'system_error'; - } -}; - -export const joinRequestParams = ( - queryParams: string | string[] | undefined -) => { - if (Array.isArray(queryParams)) return queryParams.join(','); - if (typeof queryParams === 'string') return queryParams; - return ''; -}; \ No newline at end of file diff --git a/dashboards-reports/server/routes/utils/metricHelper.ts b/dashboards-reports/server/routes/utils/metricHelper.ts deleted file mode 100644 index d58876dc..00000000 --- a/dashboards-reports/server/routes/utils/metricHelper.ts +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { ReportSchemaType } from 'server/model'; -import { - EntityType, - CountersNameType, - CountersType, - ActionType, -} from './types'; -import _ from 'lodash'; -import { - CAPACITY, - DEFAULT_ROLLING_COUNTER, - GLOBAL_BASIC_COUNTER, - INTERVAL, - WINDOW, -} from './constants'; - -export const time2CountWin: Map = new Map(); - -export const addToMetric = ( - entity: EntityType, - action: ActionType, - counter: CountersNameType, - reportMetadata?: ReportSchemaType -) => { - const count = 1; - // remove outdated key-value pairs - trim(); - - const timeKey = getKey(Date.now()); - const rollingCounters = time2CountWin.get(timeKey); - - time2CountWin.set( - timeKey, - updateCounters( - entity, - action, - counter, - rollingCounters || _.cloneDeep(DEFAULT_ROLLING_COUNTER), - count, - reportMetadata - ) - ); -}; - -export const getMetrics = () => { - const preTimeKey = getPreKey(Date.now()); - const rollingCounters = time2CountWin.get(preTimeKey); - const metrics = buildMetrics(rollingCounters); - return metrics; -}; - -const trim = () => { - if (time2CountWin.size > CAPACITY) { - const currentKey = getKey(Date.now() - WINDOW * 1000); - time2CountWin.forEach((_value, key, map) => { - if (key < currentKey) { - map.delete(key); - } - }); - } -}; - -const getKey = (milliseconds: number) => { - return Math.floor(milliseconds / 1000 / INTERVAL); -}; - -const getPreKey = (milliseconds: number) => { - return getKey(milliseconds) - 1; -}; - -const isEntity = (arg: string): arg is EntityType => { - return ( - arg === 'report' || arg === 'report_definition' || arg === 'report_source' - ); -}; - -const buildMetrics = (rollingCounters: CountersType | undefined) => { - if (!rollingCounters) { - rollingCounters = DEFAULT_ROLLING_COUNTER; - } - const basicMetrics = _.merge(rollingCounters, GLOBAL_BASIC_COUNTER); - const overallActionMetrics = { - request_total: 0, - request_count: 0, - success_count: 0, - failed_request_count_system_error: 0, - failed_request_count_user_error: 0, - }; - Object.keys(basicMetrics).forEach((keys) => { - if (isEntity(keys)) { - for (const [action, counters] of Object.entries(basicMetrics[keys])) { - overallActionMetrics.request_count += counters?.count || 0; - overallActionMetrics.request_total += counters?.total || 0; - overallActionMetrics.failed_request_count_system_error += - counters?.system_error || 0; - overallActionMetrics.failed_request_count_user_error += - counters?.user_error || 0; - } - } - }); - overallActionMetrics.success_count = - overallActionMetrics.request_count - - (overallActionMetrics.failed_request_count_system_error + - overallActionMetrics.failed_request_count_user_error); - - return { ...basicMetrics, ...overallActionMetrics }; -}; - -const updateCounters = ( - entity: EntityType, - action: ActionType, - counter: CountersNameType, - rollingCounter: CountersType, - count: number, - reportMetadata?: ReportSchemaType -) => { - // update usage metrics - if (reportMetadata) { - const { - report_definition: { - report_params: { - report_source: source, - core_params: { report_format: format }, - }, - }, - } = reportMetadata; - - // @ts-ignore - rollingCounter[source.toLowerCase().replace(' ', '_')][format]['download'][ - counter - ] += count; - // update basic counter for total request count - if (counter === 'count') { - //@ts-ignore - GLOBAL_BASIC_COUNTER[source.toLowerCase().replace(' ', '_')][format][ - 'download' - ]['total']++; - } - } else { - // update action metric, per API - // @ts-ignore - rollingCounter[entity][action][counter] += count; - if (counter === 'count') { - // @ts-ignore - GLOBAL_BASIC_COUNTER[entity][action]['total']++; - } - } - return rollingCounter; -}; diff --git a/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts b/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts deleted file mode 100644 index b5c58bea..00000000 --- a/dashboards-reports/server/routes/utils/savedSearchReportHelper.ts +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - buildRequestBody, - convertToCSV, - getOpenSearchData, - getSelectedFields, - metaData, -} from './dataReportHelpers'; -import { - ILegacyClusterClient, - ILegacyScopedClusterClient, - Logger, -} from '../../../../../src/core/server'; -import { getFileName, callCluster } from './helpers'; -import { CreateReportResultType } from './types'; -import { RequestParams } from '@elastic/elasticsearch'; -import esb from 'elastic-builder'; - -/** - * Specify how long scroll context should be maintained for scrolled search - */ -const scrollTimeout = '1m'; - -export async function createSavedSearchReport( - report: any, - client: ILegacyClusterClient | ILegacyScopedClusterClient, - dateFormat: string, - csvSeparator: string, - allowLeadingWildcards: boolean, - isScheduledTask: boolean = true, - logger: Logger -): Promise { - const params = report.report_definition.report_params; - const reportFormat = params.core_params.report_format; - const reportName = params.report_name; - - await populateMetaData(client, report, isScheduledTask, logger); - const data = await generateReportData( - client, - params.core_params, - dateFormat, - csvSeparator, - allowLeadingWildcards, - isScheduledTask, - logger - ); - - const curTime = new Date(); - const timeCreated = curTime.valueOf(); - const fileName = getFileName(reportName, curTime) + '.' + reportFormat; - return { - timeCreated, - dataUrl: data, - fileName, - }; -} - -/** - * Populate parameters and saved search info related to meta data object. - * @param client OpenSearch client - * @param report Report input - */ -async function populateMetaData( - client: ILegacyClusterClient | ILegacyScopedClusterClient, - report: any, - isScheduledTask: boolean, - logger: Logger -) { - metaData.saved_search_id = - report.report_definition.report_params.core_params.saved_search_id; - metaData.report_format = - report.report_definition.report_params.core_params.report_format; - metaData.start = report.time_from; - metaData.end = report.time_to; - - // Get saved search info - let resIndexPattern: any = {}; - const ssParams = { - index: '.kibana', - id: 'search:' + metaData.saved_search_id, - }; - const ssInfos = await callCluster(client, 'get', ssParams, isScheduledTask); - - metaData.sorting = ssInfos._source.search.sort; - metaData.type = ssInfos._source.type; - metaData.searchSourceJSON = - ssInfos._source.search.kibanaSavedObjectMeta.searchSourceJSON; - - // Get the list of selected columns in the saved search.Otherwise select all the fields under the _source - await getSelectedFields(ssInfos._source.search.columns); - - // Get index name - for (const item of ssInfos._source.references) { - if (item.name === JSON.parse(metaData.searchSourceJSON).indexRefName) { - // Get index-pattern information - const indexPattern = await callCluster( - client, - 'get', - { - index: '.kibana', - id: 'index-pattern:' + item.id, - }, - isScheduledTask - ); - resIndexPattern = indexPattern._source['index-pattern']; - metaData.paternName = resIndexPattern.title; - (metaData.timeFieldName = resIndexPattern.timeFieldName), - (metaData.fields = resIndexPattern.fields); // Get all fields - // Getting fields of type Date - const dateFields = []; - for (const item of JSON.parse(metaData.fields)) { - if (item.type === 'date') { - dateFields.push(item.name); - } - } - metaData.dateFields = dateFields; - } - } -} - -/** - * Generate CSV data by query and convert OpenSearch data set. - * @param client OpenSearch client - * @param limit limit size of result data set - */ -async function generateReportData( - client: ILegacyClusterClient | ILegacyScopedClusterClient, - params: any, - dateFormat: string, - csvSeparator: string, - allowLeadingWildcards: boolean, - isScheduledTask: boolean, - logger: Logger -) { - let opensearchData: any = {}; - const arrayHits: any = []; - const report = { _source: metaData }; - const indexPattern: string = report._source.paternName; - const maxResultSize: number = await getMaxResultSize(); - const opensearchCount = await getOpenSearchDataSize(); - - const total = Math.min(opensearchCount.count, params.limit); - if (total === 0) { - return ''; - } - - const reqBody = buildRequestBody(report, allowLeadingWildcards, 0); - logger.info( - `[Reporting csv module] DSL request body: ${JSON.stringify(reqBody)}` - ); - if (total > maxResultSize) { - await getOpenSearchDataByScroll(); - } else { - await getOpenSearchDataBySearch(); - } - return convertOpenSearchDataToCsv(); - - // Fetch OpenSearch query max size windows to decide search or scroll - async function getMaxResultSize() { - const settings = await callCluster( - client, - 'indices.getSettings', - { - index: indexPattern, - includeDefaults: true, - }, - isScheduledTask - ); - - let maxResultSize = Number.MAX_SAFE_INTEGER; - for (let indexName in settings) { - // The location of max result window differs if default overridden. - maxResultSize = Math.min( - maxResultSize, - settings[indexName].settings.index.max_result_window || - settings[indexName].defaults.index.max_result_window - ); - } - return maxResultSize; - } - - // Build the OpenSearch Count query to count the size of result - async function getOpenSearchDataSize() { - const countReq = buildRequestBody(report, allowLeadingWildcards, 1); - return await callCluster( - client, - 'count', - { - index: indexPattern, - body: countReq, - }, - isScheduledTask - ); - } - - async function getOpenSearchDataByScroll() { - const searchParams: RequestParams.Search = { - index: report._source.paternName, - scroll: scrollTimeout, - body: reqBody, - size: maxResultSize, - }; - // Open scroll context by fetching first batch - opensearchData = await callCluster( - client, - 'search', - searchParams, - isScheduledTask - ); - arrayHits.push(opensearchData.hits); - - // Start scrolling till the end - const nbScroll = Math.floor(total / maxResultSize); - for (let i = 0; i < nbScroll; i++) { - const resScroll = await callCluster( - client, - 'scroll', - { - scrollId: opensearchData._scroll_id, - scroll: scrollTimeout, - }, - isScheduledTask - ); - if (Object.keys(resScroll.hits.hits).length > 0) { - arrayHits.push(resScroll.hits); - } - } - - // Clear scroll context - await callCluster( - client, - 'clearScroll', - { - scrollId: opensearchData._scroll_id, - }, - isScheduledTask - ); - } - - async function getOpenSearchDataBySearch() { - const searchParams: RequestParams.Search = { - index: report._source.paternName, - body: reqBody, - size: total, - }; - - opensearchData = await callCluster( - client, - 'search', - searchParams, - isScheduledTask - ); - - arrayHits.push(opensearchData.hits); - } - - // Parse OpenSearch data and convert to CSV - async function convertOpenSearchDataToCsv() { - const dataset: any = []; - dataset.push(getOpenSearchData(arrayHits, report, params, dateFormat)); - return await convertToCSV(dataset, csvSeparator); - } -} diff --git a/dashboards-reports/server/routes/utils/types.ts b/dashboards-reports/server/routes/utils/types.ts deleted file mode 100644 index 3f0f21b9..00000000 --- a/dashboards-reports/server/routes/utils/types.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export interface CreateReportResultType { - timeCreated: number; - dataUrl: string; - fileName: string; - reportId: string; - queryUrl: string; -} - -type ReportSourceType = 'dashboard' | 'visualization' | 'saved_search' | 'notebook'; -type ReportFormatType = 'pdf' | 'png' | 'csv'; -type UsageActionType = 'download'; -export type EntityType = 'report' | 'report_definition' | 'report_source'; - -export type CountersNameType = - | 'count' - | 'system_error' - | 'user_error' - | 'total'; -export type ActionType = - | 'info' - | 'list' - | 'delete' - | 'create' - | 'download' - | 'update' - | 'create_from_definition'; - -export type CountersType = ActionCountersType & UsageCountersType; - -type ActionCountersType = { - [entity in EntityType]: { - [action in ActionType]?: { - [counter in CountersNameType]?: number; - }; - }; -}; - -type UsageCountersType = { - [source in ReportSourceType]: { - [format in ReportFormatType]?: { - [action in UsageActionType]: { - [counter in CountersNameType]?: number; - }; - }; - }; -}; diff --git a/dashboards-reports/server/types.ts b/dashboards-reports/server/types.ts deleted file mode 100644 index fbb3a374..00000000 --- a/dashboards-reports/server/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ReportsDashboardsPluginSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ReportsDashboardsPluginStart {} diff --git a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts deleted file mode 100644 index 9bdb4fe0..00000000 --- a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { ReportDefinitionSchemaType, ReportSchemaType } from '../../model'; -import { - DELIVERY_TYPE, - FORMAT, - REPORT_TYPE, - TRIGGER_TYPE, -} from '../../routes/utils/constants'; -import { isValidRelativeUrl, validateReport, validateReportDefinition } from '../validationHelper'; - -const SAMPLE_SAVED_OBJECT_ID = '3ba638e0-b894-11e8-a6d9-e546fe2bba5f'; -const createReportDefinitionInput: ReportDefinitionSchemaType = { - report_params: { - report_name: 'test visual report', - report_source: REPORT_TYPE.dashboard, - description: 'Hi this is your Dashboard on demand', - core_params: { - base_url: `/app/dashboards#/view/${SAMPLE_SAVED_OBJECT_ID}`, - window_width: 1300, - window_height: 900, - report_format: FORMAT.pdf, - time_duration: 'PT5M', - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: 'title', - textDescription: 'text description', - htmlDescription: 'html description' - }, - trigger: { - trigger_type: TRIGGER_TYPE.onDemand, - }, -}; -const createReportInput: ReportSchemaType = { - query_url: `/app/dashboards#/view/${SAMPLE_SAVED_OBJECT_ID}`, - time_from: 1343576635300, - time_to: 1596037435301, - report_definition: createReportDefinitionInput, -}; - -// this is the url format used before notebooks merged into observability -const createReportDefinitionNotebookLegacyInput: ReportDefinitionSchemaType = { - report_params: { - report_name: 'test notebooks report', - report_source: REPORT_TYPE.notebook, - description: 'Hi this is your Notebook on demand', - core_params: { - base_url: `/app/notebooks-dashboards?view=output_only#/${SAMPLE_SAVED_OBJECT_ID}`, - window_width: 1300, - window_height: 900, - report_format: FORMAT.pdf, - time_duration: 'PT5M', - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: 'title', - textDescription: 'text description', - htmlDescription: 'html description' - }, - trigger: { - trigger_type: TRIGGER_TYPE.onDemand, - }, -} - -const createReportDefinitionNotebookInput: ReportDefinitionSchemaType = { - report_params: { - report_name: 'test notebooks report', - report_source: REPORT_TYPE.notebook, - description: 'Hi this is your Notebook on demand', - core_params: { - base_url: `/app/observability-dashboards#/notebooks/${SAMPLE_SAVED_OBJECT_ID}`, - window_width: 1300, - window_height: 900, - report_format: FORMAT.pdf, - time_duration: 'PT5M', - origin: 'http://localhost:5601', - }, - }, - delivery: { - configIds: [], - title: 'title', - textDescription: 'text description', - htmlDescription: 'html description' - }, - trigger: { - trigger_type: TRIGGER_TYPE.onDemand, - }, -} - -describe('test input validation', () => { - test('create report with correct saved object id', async () => { - const savedObjectIds = [`dashboard:${SAMPLE_SAVED_OBJECT_ID}`]; - const client = mockOpenSearchClient(savedObjectIds); - const report = await validateReport(client, createReportInput); - expect(report).toBeDefined(); - }); - - test('create report with non-exist saved object id', async () => { - const savedObjectIds = ['dashboard:fake-id']; - const client = mockOpenSearchClient(savedObjectIds); - await expect( - validateReport(client, createReportInput) - ).rejects.toThrowError( - `saved object with id dashboard:${SAMPLE_SAVED_OBJECT_ID} does not exist` - ); - }); - - test('create report definition with correct saved object id', async () => { - const savedObjectIds = [`dashboard:${SAMPLE_SAVED_OBJECT_ID}`]; - const client = mockOpenSearchClient(savedObjectIds); - const report = await validateReportDefinition( - client, - createReportDefinitionInput - ); - expect(report).toBeDefined(); - }); - - test('create notebook report definition with legacy base url format', async () => { - const savedObjectIds = [`notebook:${SAMPLE_SAVED_OBJECT_ID}`]; - const client = mockOpenSearchClient(savedObjectIds); - const report = await validateReportDefinition( - client, - createReportDefinitionNotebookLegacyInput - ); - expect(report).toBeDefined(); - }); - - test('create notebook report definition with correct base url format', async () => { - const savedObjectIds = [`notebook:${SAMPLE_SAVED_OBJECT_ID}`]; - const client = mockOpenSearchClient(savedObjectIds); - const report = await validateReportDefinition( - client, - createReportDefinitionNotebookInput - ); - expect(report).toBeDefined(); - }); - - test('create report definition with non-exist saved object id', async () => { - const savedObjectIds = ['dashboard:fake-id']; - const client = mockOpenSearchClient(savedObjectIds); - await expect( - validateReportDefinition(client, createReportDefinitionInput) - ).rejects.toThrowError( - `saved object with id dashboard:${SAMPLE_SAVED_OBJECT_ID} does not exist` - ); - }); - - test('validation against query_url', async () => { - const urls: [string, boolean][] = [ - ['/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', true], - [ - '/_plugin/kibana/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', - true, - ], - [ - '/_dashboards/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', - true, - ], - [ - '/_dashboards/app/dashboards#/edit/7adfa750-4c81-11e8-b3d7-01146121b73d?_g=', - true, - ], - [ - '/app/observability-dashboards?security_tenant=private#/notebooks/NYdlPIIB0-fJ8Bh1nLdW?view=output_only', - true, - ], - [ - '/app/notebooks-dashboards?view=output_only&security_tenant=private#/M4dlPIIB0-fJ8Bh1nLc7?security_tenant=private', - true, - ], - [ - '/_dashboards/app/visualize&security_tenant=/.%2e/.%2e/.%2e/.%2e/_dashboards?#/view/id', - false, - ], - ]; - expect(urls.map((url) => isValidRelativeUrl(url[0]))).toEqual( - urls.map((url) => url[1]) - ); - }); -}); - -// TODO: merge this with other mock clients used in testing, to create some mock helpers file -const mockOpenSearchClient = (mockSavedObjectIds: string[]) => { - const client = { - callAsCurrentUser: jest - .fn() - .mockImplementation((endpoint: string, params: any) => { - switch (endpoint) { - case 'exists': - return mockSavedObjectIds.includes(params.id); - default: - fail('Fail due to unexpected function call on client'); - } - }), - }; - - return client; -}; diff --git a/dashboards-reports/server/utils/validationHelper.ts b/dashboards-reports/server/utils/validationHelper.ts deleted file mode 100644 index 2597ee4b..00000000 --- a/dashboards-reports/server/utils/validationHelper.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { RequestParams } from '@elastic/elasticsearch'; -import path from 'path'; -import { ILegacyScopedClusterClient } from '../../../../src/core/server'; -import { - reportDefinitionSchema, - ReportDefinitionSchemaType, - reportSchema, - ReportSchemaType, -} from '../../server/model'; -import { REPORT_TYPE } from '../../server/routes/utils/constants'; - -export const isValidRelativeUrl = (relativeUrl: string) => { - let normalizedRelativeUrl = relativeUrl - if ( - !relativeUrl.includes('observability#/notebooks') && - !relativeUrl.includes('notebooks-dashboards') - ) { - normalizedRelativeUrl = path.posix.normalize(relativeUrl); - } - - // check pattern - // ODFE pattern: /app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g - // AES pattern: /_plugin/kibana/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?_g - const isValid = regexRelativeUrl.test(normalizedRelativeUrl); - return isValid; -}; - -/** - * moment.js isValid() API fails to validate time duration, so use regex - * https://github.com/moment/moment/issues/1805 - **/ -export const regexDuration = /^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; -export const regexEmailAddress = /\S+@\S+\.\S+/; -export const regexReportName = /^[\w\-\s\(\)\[\]\,\_\-+]+$/; -export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability-dashboards|notebooks-dashboards\?view=output_only(&security_tenant=.+)?)(\?security_tenant=.+)?#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; - -export const validateReport = async ( - client: ILegacyScopedClusterClient, - report: ReportSchemaType, - basePath: String -) => { - report.query_url = report.query_url.replace(basePath, ''); - report.report_definition.report_params.core_params.base_url = report.report_definition.report_params.core_params.base_url.replace( - basePath, - '' - ); - // validate basic schema - report = reportSchema.validate(report); - // parse to retrieve data - const { - query_url: queryUrl, - report_definition: { - report_params: { report_source: reportSource }, - }, - } = report; - // Check if saved object actually exists - await validateSavedObject(client, queryUrl, reportSource); - return report; -}; - -export const validateReportDefinition = async ( - client: ILegacyScopedClusterClient, - reportDefinition: ReportDefinitionSchemaType, - basePath: String -) => { - reportDefinition.report_params.core_params.base_url = reportDefinition.report_params.core_params.base_url.replace( - basePath, - '' - ); - // validate basic schema - reportDefinition = reportDefinitionSchema.validate(reportDefinition); - // parse to retrieve data - const { - report_params: { - report_source: reportSource, - core_params: { base_url: baseUrl }, - }, - } = reportDefinition; - // Check if saved object actually exists - await validateSavedObject(client, baseUrl, reportSource); - return reportDefinition; -}; - -const validateSavedObject = async ( - client: ILegacyScopedClusterClient, - url: string, - source: REPORT_TYPE -) => { - const getId = (url: string) => { - return url - .split('/') - .pop() - ?.replace(/\?\S+$/, ''); - }; - const getType = (source: REPORT_TYPE) => { - switch (source) { - case REPORT_TYPE.dashboard: - return 'dashboard'; - case REPORT_TYPE.savedSearch: - return 'search'; - case REPORT_TYPE.visualization: - return 'visualization'; - case REPORT_TYPE.notebook: - return 'notebook'; - } - }; - - let exist = false; - let savedObjectId = ''; - if (getType(source) === 'notebook') { - // no backend check for notebooks because we would just be checking against the notebooks api again - exist = true; - } - else { - savedObjectId = `${getType(source)}:${getId(url)}`; - const params: RequestParams.Exists = { - index: '.kibana', - id: savedObjectId, - }; - exist = await client.callAsCurrentUser('exists', params); - } - if (!exist) { - throw Error(`saved object with id ${savedObjectId} does not exist`); - } -}; diff --git a/dashboards-reports/test/__mocks__/fileMock.js b/dashboards-reports/test/__mocks__/fileMock.js deleted file mode 100644 index 82cb5aa8..00000000 --- a/dashboards-reports/test/__mocks__/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'react-mde-all'; diff --git a/dashboards-reports/test/__mocks__/loggerMock.ts b/dashboards-reports/test/__mocks__/loggerMock.ts deleted file mode 100644 index f3ae7fe0..00000000 --- a/dashboards-reports/test/__mocks__/loggerMock.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -const mockLogger = { - info: jest.fn(), - trace: jest.fn(), - warn: jest.fn(), - debug: jest.fn(), - error: jest.fn(), - fatal: jest.fn(), - log: jest.fn(), - get: jest.fn(), -}; - -export { mockLogger }; diff --git a/dashboards-reports/test/__mocks__/styleMock.js b/dashboards-reports/test/__mocks__/styleMock.js deleted file mode 100644 index f053ebf7..00000000 --- a/dashboards-reports/test/__mocks__/styleMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/dashboards-reports/test/httpMockClient.js b/dashboards-reports/test/httpMockClient.js deleted file mode 100644 index d1560826..00000000 --- a/dashboards-reports/test/httpMockClient.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -const httpClientMock = jest.fn(); - -httpClientMock.delete = jest.fn(() => ({ - then: jest.fn(() => ({ - catch: jest.fn(), - })), -})); -httpClientMock.get = jest.fn(() => ({ - then: jest.fn(() => ({ - then: jest.fn(() => ({ - catch: jest.fn() - })), - catch: jest.fn(), - })), - catch: jest.fn(() => ({ - then: jest.fn(() => ({ - catch: jest.fn() - })), - catch: jest.fn(), - })), -})); -httpClientMock.head = jest.fn(); -httpClientMock.post = jest.fn(() => ({ - then: jest.fn(() => ({ - catch: jest.fn(), - })), -})); -httpClientMock.put = jest.fn(() => ({ - then: jest.fn(() => ({ - catch: jest.fn(), - })), -})); - -export default httpClientMock; diff --git a/dashboards-reports/test/jest.config.js b/dashboards-reports/test/jest.config.js deleted file mode 100644 index a8756693..00000000 --- a/dashboards-reports/test/jest.config.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -//@ts-check - -process.env.TZ = 'UTC'; - -module.exports = { - rootDir: '../', - setupFiles: ['/test/setupTests.ts'], - setupFilesAfterEnv: ['/test/setup.jest.ts'], - roots: [''], - testMatch: ['**/*.test.js', '**/*.test.jsx', '**/*.test.ts', '**/*.test.tsx'], - clearMocks: true, - modulePathIgnorePatterns: ['/offline-module-cache/'], - testPathIgnorePatterns: ['/build/', '/node_modules/', '/public/components/report_definitions/delivery/'], - transformIgnorePatterns: ['/node_modules'], - moduleNameMapper: { - '\\.(css|less|sass|scss)$': '/test/__mocks__/styleMock.js', - '\\.(gif|ttf|eot|svg)$': '/test/__mocks__/fileMock.js', - }, - testEnvironment: 'jsdom', -}; diff --git a/dashboards-reports/test/propsMock.js b/dashboards-reports/test/propsMock.js deleted file mode 100644 index 4c16a766..00000000 --- a/dashboards-reports/test/propsMock.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - const propsMock = { - match: { - params: { - reportId: jest.fn(), - } - } - }; - export default propsMock; diff --git a/dashboards-reports/test/setup.jest.ts b/dashboards-reports/test/setup.jest.ts deleted file mode 100644 index 703f5091..00000000 --- a/dashboards-reports/test/setup.jest.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import '@testing-library/jest-dom/extend-expect'; -import { configure } from '@testing-library/react'; - -configure({ testIdAttribute: 'data-test-subj' }); - -jest.mock('@elastic/eui/lib/components/form/form_row/make_id', () => () => - 'random-id' -); - -jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ - htmlIdGenerator: () => { - return () => 'random_html_id'; - }, -})); diff --git a/dashboards-reports/test/setupTests.ts b/dashboards-reports/test/setupTests.ts deleted file mode 100644 index 5a996f6f..00000000 --- a/dashboards-reports/test/setupTests.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -require('babel-polyfill'); -require('core-js/stable'); diff --git a/dashboards-reports/translations/pl.json b/dashboards-reports/translations/pl.json deleted file mode 100644 index f2d770f0..00000000 --- a/dashboards-reports/translations/pl.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "formats": { - "number": { - "currency": { - "style": "currency" - }, - "percent": { - "style": "percent" - } - }, - "date": { - "short": { - "month": "numeric", - "day": "numeric", - "year": "2-digit" - }, - "medium": { - "month": "short", - "day": "numeric", - "year": "numeric" - }, - "long": { - "month": "long", - "day": "numeric", - "year": "numeric" - }, - "full": { - "weekday": "long", - "month": "long", - "day": "numeric", - "year": "numeric" - } - }, - "time": { - "short": { - "hour": "numeric", - "minute": "numeric" - }, - "medium": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric" - }, - "long": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - }, - "full": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - } - }, - "relative": { - "years": { - "units": "year" - }, - "months": { - "units": "month" - }, - "days": { - "units": "day" - }, - "hours": { - "units": "hour" - }, - "minutes": { - "units": "minute" - }, - "seconds": { - "units": "second" - } - } - }, - "messages": { - "opensearch.reports.app.createReport": "Utwórz Raport", - "opensearch.reports.app.editReportDefinition": "Zmień Definicję Raportu", - "opensearch.reports.app.reportDefinitionDetails": "Szczegóły Definicji Raportu", - "opensearch.reports.app.reportDetails": "Szczegóły Raportu", - "opensearch.reports.app.reportingHomepage": "Centrum Raportów", - "opensearch.reports.categoryName": "OpenSearch", - "opensearch.reports.createReportDefinition.breadcrumb.UtwórzReportDefinition": "Utwórz Definicję Raportu", - "opensearch.reports.createReportDefinition.breadcrumb.reporting": "Raporty", - "opensearch.reports.createReportDefinition.cancel": "Anuluj", - "opensearch.reports.createReportDefinition.create": "Utwórz", - "opensearch.reports.createReportDefinition.error.errorCreating": "Błąd tworzenia definicji raportu.", - "opensearch.reports.createReportDefinition.error.fieldsHaveAnError": "Któreś pole jest błędnie wypełnione.", - "opensearch.reports.createReportDefinition.error.invalidTimeRange": "Nieprawidłowy zakres czasu.", - "opensearch.reports.createReportDefinition.title": "Utwórz definicję raportu", - "opensearch.reports.details.breadcrumb.reportDetails": "Szczegóły Raportu: {name}", - "opensearch.reports.details.breadcrumb.reporting": "Raporty", - "opensearch.reports.details.errorLoadingReportDetails": "Błąd przy wczytywaniu szczegółów Raportu", - "opensearch.reports.details.reportSettings": "Ustawienia Raportu", - "opensearch.reports.details.reportSettings.created": "Utworzono", - "opensearch.reports.details.reportSettings.description": "Opis", - "opensearch.reports.details.reportSettings.fileFormat": "Format pliku", - "opensearch.reports.details.reportSettings.lastUpdated": "Ostatnia aktualizacja", - "opensearch.reports.details.reportSettings.name": "Nazwa", - "opensearch.reports.details.reportSettings.reportFooter": "Stopka", - "opensearch.reports.details.reportSettings.reportHeader": "Nagłówek", - "opensearch.reports.details.reportSettings.source": "Źródło", - "opensearch.reports.details.reportSettings.state": "Stan", - "opensearch.reports.details.reportSettings.timePeriod": "Okres", - "opensearch.reports.details.reportSuccessfullyDownloaded": "Raport pomyślnie pobrany!", - "opensearch.reports.details.reportTrigger": "Wyzwalacz Raportu", - "opensearch.reports.details.reportTrigger.reportType": "Typ raportu", - "opensearch.reports.details.reportTrigger.scheduleDetails": "Zaplanuj harmonogram", - "opensearch.reports.details.reportTrigger.scheduleType": "Typ harmonogramu", - "opensearch.reports.details.title": "Szczegóły Raportu", - "opensearch.reports.editReportDefinition.cancel": "Anuluj", - "opensearch.reports.editReportDefinition.errorDeleting": "Błąd usuwania starego zaplanowanego definicji raportu.", - "opensearch.reports.editReportDefinition.errorLoading": "Błąd ładowania wartości definicji raportu.", - "opensearch.reports.editReportDefinition.errorUpdating": "Błąd aktualizacji definicji raportu.", - "opensearch.reports.editReportDefinition.fieldsHaveAnError": "Któreś pole jest błędnie wypełnione.", - "opensearch.reports.editReportDefinition.save": "Zapisz zmiany", - "opensearch.reports.editReportDefinition.title": "Edytuj definicję raportu.", - "opensearch.reports.error.channelListCannotBeEmpty": "Lista kanałów nie może być pusta.", - "opensearch.reports.error.deliverySubjectCannotBeEmpty": "Temat nie może być pusty.", - "opensearch.reports.error.deliveryTextCannotBeEmpty": "Tekst dostawy nie może być pusty", - "opensearch.reports.error.reportSourceMustNotBeEmpty": "Źródło raportu nie może być puste.", - "opensearch.reports.loading.close": "Zamknij", - "opensearch.reports.loading.generatingReport": "Generowanie raportu.", - "opensearch.reports.loading.preparingYourFile": "Przygotowanie pliku do pobrania.", - "opensearch.reports.loading.youCanClose": "Nie zamykaj tego okna dialogowego podczas generowania raportu.", - "opensearch.reports.main.errorDownloadingReport": "Błąd przy pobieraniu raportu", - "opensearch.reports.main.errorGeneratingReportDefinitionsTable.": "Błąd generowania listy definicji raportów.", - "opensearch.reports.main.errorGeneratingReportsTable.": "Błąd generowania listy raportów.", - "opensearch.reports.main.reportDefinitions.button.create": "Utwórz", - "opensearch.reports.main.reportDefinitions.button.refresh": "Odśwież", - "opensearch.reports.main.reports.button.refresh": "Odśwież", - "opensearch.reports.main.successfullyCreatedReportDefinition": "Pomyślnie utworzono definicję raportu.", - "opensearch.reports.main.successfullyDeletedReportDefinition": "Pomyślnie usunięto definicję raportu.", - "opensearch.reports.main.successfullyDownloadedReport": "Pomyślnie pobrano raport.", - "opensearch.reports.main.successfullyUpdatedReportDefinition": "Pomyślnie zaktualizowano definicję raportu.", - "opensearch.reports.main.title.reportDefinitions": "Definicje raportu", - "opensearch.reports.main.title.reporting": "Raporty", - "opensearch.reports.main.title.reports": "Raporty", - "opensearch.reports.menu.button.reports": "Raporty", - "opensearch.reports.menu.createReportDefinition": "Utwórz definicję raportu", - "opensearch.reports.menu.csv.generateCsv": "Wygeneruj CSV", - "opensearch.reports.menu.csv.generateReport": "Wygeneruj i pobierz", - "opensearch.reports.menu.csv.savePrompt": "Zapisz to wyszukiwanie, aby włączyć raporty CSV.", - "opensearch.reports.menu.csv.view": "Widok", - "opensearch.reports.menu.csv.viewReports": "Zobacz raporty", - "opensearch.reports.menu.csv.waitPrompt": "Generowanie może chwilę trwać, w zależności od rozmiaru danych źródłowych.", - "opensearch.reports.menu.downloadError": "Błąd pobierania", - "opensearch.reports.menu.errorGeneratingReport": "Błąd generowania raportu", - "opensearch.reports.menu.errorGeneratingThisReport": "Wystąpił błąd podczas generowania tego raportu.", - "opensearch.reports.menu.insufficientPermissions": "Niewystarczające uprawnienia. Skontaktuj się z administratorem Kibany.", - "opensearch.reports.menu.name": "Raporty", - "opensearch.reports.menu.newNotificationAppears": "Pojawiło się nowe powiadomienie", - "opensearch.reports.menu.progress.generatingReport": "Generowanie raportu", - "opensearch.reports.menu.progress.preparingYourFile": "Przygotowanie pliku do pobrania", - "opensearch.reports.menu.progress.youCanClose": "Nie zamykaj tego okna dialogowego podczas generowania raportu.", - "opensearch.reports.menu.scheduleAndShare": "Wygeneruj i udostępnij", - "opensearch.reports.menu.successfullyGenerated": "Pomyślnie wygenerowano raport.", - "opensearch.reports.menu.visual.createReportDefinition": "Utwórz definicję raportu.", - "opensearch.reports.menu.visual.downloadPdf": "Pobierz PDF", - "opensearch.reports.menu.visual.downloadPng": "Pobierz PNG.", - "opensearch.reports.menu.visual.generateReport": "Generuj raport", - "opensearch.reports.menu.visual.savePrompt": "Zapisz tę wizualizację, aby włączyć raporty PDF / PNG.", - "opensearch.reports.menu.visual.scheduleAndShare": "Wygeneruj i udostępnij", - "opensearch.reports.menu.visual.view": "Widok", - "opensearch.reports.menu.visual.viewReports": "Przeglądaj raporty", - "opensearch.reports.menu.visual.waitPrompt": "Generowanie może chwilę trwać, w zależności od rozmiaru danych źródłowych.", - "opensearch.reports.pluginName": "Raporty", - "opensearch.reports.reportDefinitionsDetails.button.delete.cancel": "Anuluj", - "opensearch.reports.reportDefinitionsDetails.button.delete.confirm": "Usuń", - "opensearch.reports.reportDefinitionsDetails.button.delete.query": "Czy na pewno chcesz usunąć \"{Name}\"?", - "opensearch.reports.reportDefinitionsDetails.button.delete.title": "Usuń definicję raportu.", - "opensearch.reports.reportDefinitionsDetails.deleteReportDefinitionButton": "Usuń", - "opensearch.reports.reportDefinitionsDetails.editReportDefinitionButton": "Zmień", - "opensearch.reports.reportDefinitionsDetails.fields.created": "Utworzony", - "opensearch.reports.reportDefinitionsDetails.fields.description": "Opis", - "opensearch.reports.reportDefinitionsDetails.fields.fileFormat": "Format pliku", - "opensearch.reports.reportDefinitionsDetails.fields.lastUpdated": "Ostatnio zaktualizowany", - "opensearch.reports.reportDefinitionsDetails.fields.name": "Nazwa", - "opensearch.reports.reportDefinitionsDetails.fields.reportFooter": "Stopka", - "opensearch.reports.reportDefinitionsDetails.fields.reportHeader": "Nagłówek", - "opensearch.reports.reportDefinitionsDetails.fields.reportTrigger": "Wyzwalacz Raportu", - "opensearch.reports.reportDefinitionsDetails.fields.source": "Źródło", - "opensearch.reports.reportDefinitionsDetails.fields.timePeriod": "Okres", - "opensearch.reports.reportDefinitionsDetails.reportSettings": "Ustawienia raportu.", - "opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.error": "Błąd podczas pobierania szczegółów definicji raportu: {Błąd}", - "opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.reportDefinitionDetails": "Szczegóły Definicji Reportu: {Name}", - "opensearch.reports.reportDefinitionsDetails.schedule.breadcrumb.reporting": "Raporty", - "opensearch.reports.reportDefinitionsDetails.schedule.byInterval": "Okresowo, co {okres} {jednostka}, zaczynając od {czas}", - "opensearch.reports.reportDefinitionsDetails.schedule.cronBased": "Oparte na Cron: {Expression} ({TimeZone})", - "opensearch.reports.reportDefinitionsDetails.schedule.dailyAt": "Codziennie o {czas}", - "opensearch.reports.reportDefinitionsDetails.schedule.triggerSection.scheduleDetails": "Szczegóły harmonogramu", - "opensearch.reports.reportDefinitionsDetails.schedule.triggerSection.status": "Stan", - "opensearch.reports.reportDefinitionsDetails.schedule.triggerSection.triggerType": "Typ wyzwalania", - "opensearch.reports.reportDefinitionsDetails.title": "Szczegóły Definicji Raportu", - "opensearch.reports.reportDefinitionsDetails.toast.errorDeletingReport definition. ": "Błąd usuwania definicji raportu", - "opensearch.reports.reportDefinitionsDetails.toast.errorDisablingSchedule. ": "Błąd podczas wyłączania harmonogramu", - "opensearch.reports.reportDefinitionsDetails.toast.errorEnablingSchedule. ": "Błąd podczas włączania harmonogramu.", - "opensearch.reports.reportDefinitionsDetails.toast.errorGeneratingReport. ": "Błąd generowania raportu", - "opensearch.reports.reportDefinitionsDetails.toast.errorLoadingReportDefinitionDetails. ": "Błąd podczas wczytywania definicji raportu", - "opensearch.reports.reportDefinitionsDetails.toast.successfullyDisabledSchedule. ": "Pomyślnie wyłączono harmonogram.", - "opensearch.reports.reportDefinitionsDetails.toast.successfullyEnabledSchedule. ": "Pomyślnie włączono harmonogram.", - "opensearch.reports.reportDefinitionsDetails.toast.successfullyGeneratedReport. ": "Pomyślnie wygenerowano raport.", - "opensearch.reports.reportDefinitionsTable.columns.lastUpdated": "Ostatnia aktualizacja", - "opensearch.reports.reportDefinitionsTable.columns.name": "Nazwa", - "opensearch.reports.reportDefinitionsTable.columns.scheduleDetails": "Szczegóły harmonogramu", - "opensearch.reports.reportDefinitionsTable.columns.source": "Źródło", - "opensearch.reports.reportDefinitionsTable.columns.status": "Stan", - "opensearch.reports.reportDefinitionsTable.columns.type": "Rodzaj", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.createANewDefinition": "Aby rozpocząć, utwórz definicję raportu", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.createReportDefinition": "Utwórz definicję raportu.", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.getStarted": "Zacznij pracę z Reportami w Kibanie", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.noDefinitionsFound": "Żadna definicja raportu nie pasuje do kryteriów wyszukiwania.", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.noReportDefinitions": "Brak definicji raportu do wyświetlenia", - "opensearch.reports.reportDefinitionsTable.emptyMessageReports.toLearnMore": "Aby dowiedzieć się więcej, zobacz", - "opensearch.reports.reportSettingProps.fileFormat": "Format pliku", - "opensearch.reports.reportSettingProps.footer": "Stopka", - "opensearch.reports.reportSettingProps.form.description": "Opis (opcjonalny)", - "opensearch.reports.reportSettingProps.form.fileFormat": "Format pliku", - "opensearch.reports.reportSettingProps.form.help.name": "Dozwolone znaki to A-Z, A-Z, 0-9, (), [], _ (podkreślenie), - (łącznik) i (przestrzeń).", - "opensearch.reports.reportSettingProps.form.name": "Nazwa", - "opensearch.reports.reportSettingProps.form.placeholder.description": "Opisz ten raport (np. raport tygodniowy)", - "opensearch.reports.reportSettingProps.form.placeholder.reportName": "Nazwa raportu", - "opensearch.reports.reportSettingProps.form.placeholder.selectASavedSearch": "Wybierz zapisane wyszukiwanie", - "opensearch.reports.reportSettingProps.form.placeholder.selectAVisualization": "Wybierz wizualizację", - "opensearch.reports.reportSettingProps.form.reportSettings": "Ustawienia raportu.", - "opensearch.reports.reportSettingProps.form.reportSource": "Źródło raportu.", - "opensearch.reports.reportSettingProps.form.selectSavedSearch": "Wybierz Zapisane wyszukiwanie", - "opensearch.reports.reportSettingProps.form.selectVisualization": "Wybierz wizualizację", - "opensearch.reports.reportSettingProps.header": "nagłówek", - "opensearch.reports.reportSettingProps.headerAndFooter": "Nagłówek i stopka", - "opensearch.reports.reportSettingProps.placeholder.selectDashboard": "Wybierz pulpit", - "opensearch.reports.reportSettingProps.selectDashboard": "Wybierz pulpit.", - "opensearch.reports.reportsTable.emptyMessageReports.createAReportDefinition": "Utwórz definicję raportu lub udostępnij / pobierz raport z pulpitu nawigacyjnego, zapisane wyszukiwanie lub wizualizację.", - "opensearch.reports.reportsTable.emptyMessageReports.getStarted": "Zacznij od raportowania Kibany", - "opensearch.reports.reportsTable.emptyMessageReports.noReportsToDisplay": "Brak raportów do wyświetlenia", - "opensearch.reports.reportsTable.emptyMessageReports.toLearnMore": "Aby dowiedzieć się więcej, zobacz", - "opensearch.reports.reportsTable.reportsListSearch.noRreportsMatch": "Żaden raport nie pasuje nie pasuje do kryteriów wyszukiwania.", - "opensearch.reports.reportsTable.reportsListSearch.State": "Stan", - "opensearch.reports.reportsTable.reportsListSearch.Type": "Rodzaj", - "opensearch.reports.reportsTable.reportsTableColumns.creationTime": "Czas utworzenia", - "opensearch.reports.reportsTable.reportsTableColumns.Generate": "Wygeneruj", - "opensearch.reports.reportsTable.reportsTableColumns.Name": "Nazwa", - "opensearch.reports.reportsTable.reportsTableColumns.Source": "Źródło", - "opensearch.reports.reportsTable.reportsTableColumns.State": "Stan", - "opensearch.reports.reportsTable.reportsTableColumns.Type": "Rodzaj", - "opensearch.reports.reportTrigger.cron.customCronExpression": "Niestandardowe wyrażenie Cron.", - "opensearch.reports.reportTrigger.cron.placeholder.formula": "np. 0 12 * * * (Uruchamia o 12:00 każdego dnia)", - "opensearch.reports.reportTrigger.form.requestTime": "czas oczekiwania", - "opensearch.reports.reportTrigger.form.triggerType": "Typ wyzwalania", - "opensearch.reports.reportTrigger.monthly.onThe": "na", - "opensearch.reports.reportTrigger.monthly.placeholder.dayOfMonth": "Dzień miesiąca", - "opensearch.reports.reportTrigger.recurring.every": "każdy", - "opensearch.reports.reportTrigger.recurring.intervalMustBeANumber": "Interwał musi być liczbą.", - "opensearch.reports.reportTrigger.recurring.placeholder.mustBeANumber": "Musi być liczbą", - "opensearch.reports.reportTrigger.recurring.startTime": "czas rozpoczęcia", - "opensearch.reports.reportTrigger.schedule.requestTime": "czas oczekiwania", - "opensearch.reports.reportTrigger.scheduleTrigger.requestTime": "czas oczekiwania", - "opensearch.reports.reportTrigger.scheduleTriggerRecurring.frequency": "częstotliwość", - "opensearch.reports.reportTrigger.timezone": "Strefa czasowa", - "opensearch.reports.reportTrigger.title.reportTrigger": "Raport Wyzwalacz.", - "opensearch.reports.reportTrigger.weekly.every": "każdy", - "opensearch.reports.reportTriggerConstants.intervalTimePeriods.days": "Dni", - "opensearch.reports.reportTriggerConstants.intervalTimePeriods.hours": "godziny", - "opensearch.reports.reportTriggerConstants.intervalTimePeriods.minutes": "Minuty", - "opensearch.reports.reportTriggerConstants.monthlyOnTheOptions.day": "Dzień", - "opensearch.reports.reportTriggerConstants.scheduleRecurringOptions.byInterval": "Przez interwał", - "opensearch.reports.reportTriggerConstants.scheduleRecurringOptions.daily": "Codziennie", - "opensearch.reports.reportTriggerConstants.scheduleTypeOptions.cronBased": "Oparty na Cron.", - "opensearch.reports.reportTriggerConstants.scheduleTypeOptions.recurring": "Powtarzające się", - "opensearch.reports.reportTriggerConstants.triggerTypeOptions.onDemand": "Na żądanie", - "opensearch.reports.reportTriggerConstants.triggerTypeOptions.schedule": "Harmonogram", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.fri": "Pt", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.mon": "Pon", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.sat": "Sob", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.sun": "Nie", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.thu": "Wt", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.tue": "Czw", - "opensearch.reports.reportTriggerConstants.weeklyCheckboxOptions.wed": "Sr", - "opensearch.reports.settings.constants.commonTimeRanges.monthToDate": "Do tej pory w miesiącu", - "opensearch.reports.settings.constants.commonTimeRanges.todaySoFar": "Do tej pory dzisiaj", - "opensearch.reports.settings.constants.commonTimeRanges.weekToDate": "Od początku tygodnia", - "opensearch.reports.settings.constants.commonTimeRanges.yearToDate": "Rok do tej pory", - "opensearch.reports.settings.constants.headerFooterCheckbox.addFooter": "Dodaj stopkę", - "opensearch.reports.settings.constants.headerFooterCheckbox.addHeader": "Dodaj nagłówek", - "opensearch.reports.settings.constants.reportSourceRadios.dashboard": "Pulpit", - "opensearch.reports.settings.constants.reportSourceRadios.savedSearch": "Zapisane wyszukiwanie", - "opensearch.reports.settings.constants.reportSourceRadios.visualization": "Wizualizacja", - "opensearch.reports.timeRange.help.timeRange": "Zakres czasu jest w stosunku do daty tworzenia raportu na wyzwalaniu raportu.", - "opensearch.reports.timeRange.invalidTimeRange": "Wybrano nieprawidłowy zakres czasu", - "opensearch.reports.timeRange.label.timeRange": "Zakres czasu", - "opensearch.reports.utils.errorTitle": "Błąd generowania raportu.", - "opensearch.reports.utils.errorText": { - "text": "Zbyt długo trwa generowanie raportu ID {reportId}. Spróbuj później.", - "comment": "Error number toast" - } - } -} diff --git a/dashboards-reports/translations/zh-CN.json b/dashboards-reports/translations/zh-CN.json deleted file mode 100644 index 25e95ca7..00000000 --- a/dashboards-reports/translations/zh-CN.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "formats": { - "number": { - "currency": { - "style": "currency" - }, - "percent": { - "style": "percent" - } - }, - "date": { - "short": { - "month": "numeric", - "day": "numeric", - "year": "2-digit" - }, - "medium": { - "month": "short", - "day": "numeric", - "year": "numeric" - }, - "long": { - "month": "long", - "day": "numeric", - "year": "numeric" - }, - "full": { - "weekday": "long", - "month": "long", - "day": "numeric", - "year": "numeric" - } - }, - "time": { - "short": { - "hour": "numeric", - "minute": "numeric" - }, - "medium": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric" - }, - "long": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - }, - "full": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - } - }, - "relative": { - "years": { - "units": "year" - }, - "months": { - "units": "month" - }, - "days": { - "units": "day" - }, - "hours": { - "units": "hour" - }, - "minutes": { - "units": "minute" - }, - "seconds": { - "units": "second" - } - } - }, - "messages": { - } -} diff --git a/dashboards-reports/tsconfig.json b/dashboards-reports/tsconfig.json deleted file mode 100644 index 58c31ede..00000000 --- a/dashboards-reports/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - // extend OpenSearch Dashboards's tsconfig, or use your own settings - "extends": "../../tsconfig.json", - "compilerOptions": { - "jsx": "react", - "allowJs": true, - "baseUrl": ".", - "target": "esnext", - "module": "commonjs", - "outDir": "./target", - "noEmit": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "allowUnusedLabels": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "alwaysStrict": false, - "noImplicitUseStrict": false, - "types": ["jest", "node"] - }, - "include": [ - "test/**/*", - "index.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "common/**/*.ts", - "../../typings/**/*" - ], - "exclude": ["node_modules", "*/node_modules/"] -} diff --git a/dashboards-reports/yarn.lock b/dashboards-reports/yarn.lock deleted file mode 100644 index 1974c64d..00000000 --- a/dashboards-reports/yarn.lock +++ /dev/null @@ -1,7052 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@^7.1.0": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.12.3": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - -"@babel/generator@^7.12.1", "@babel/generator@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" - integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== - dependencies: - "@babel/types" "^7.12.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" - integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-module-imports@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-imports@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" - integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== - dependencies: - "@babel/types" "^7.12.5" - -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" - integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-simple-access" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/helper-validator-identifier" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-replace-supers@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" - integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" - -"@babel/helper-simple-access@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" - integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helpers@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" - integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" - -"@babel/helpers@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" - integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" - integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== - -"@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" - integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/runtime@7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.0.tgz#49dcbcd637099a55d3a61e590a00d6861393b1b5" - integrity sha512-2xsuyZ0R0RBFwjgae5NpXk8FcfH4qovj5cEM5VEeB7KXnKqzaisIu2HSV/mCEISolJJuR4wkViUGYujA8MH9tw== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.13": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" - integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.10.4", "@babel/template@^7.3.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" - integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.5" - "@babel/types" "^7.12.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.12.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" - integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.16.7", "@babel/types@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@cypress/listr-verbose-renderer@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - -"@cypress/request@^2.88.5": - version "2.88.5" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" - integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -"@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== - dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" - -"@elastic/eslint-import-resolver-kibana@link:../../packages/osd-eslint-import-resolver-opensearch-dashboards": - version "0.0.0" - uid "" - -"@emotion/cache@^10.0.27": - version "10.0.29" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" - integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== - dependencies: - "@emotion/sheet" "0.9.4" - "@emotion/stylis" "0.8.5" - "@emotion/utils" "0.11.3" - "@emotion/weak-memoize" "0.2.5" - -"@emotion/core@^10.0.14": - version "10.0.35" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" - integrity sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/cache" "^10.0.27" - "@emotion/css" "^10.0.27" - "@emotion/serialize" "^0.11.15" - "@emotion/sheet" "0.9.4" - "@emotion/utils" "0.11.3" - -"@emotion/css@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" - integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== - dependencies: - "@emotion/serialize" "^0.11.15" - "@emotion/utils" "0.11.3" - babel-plugin-emotion "^10.0.27" - -"@emotion/hash@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": - version "0.11.16" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" - integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== - dependencies: - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/unitless" "0.7.5" - "@emotion/utils" "0.11.3" - csstype "^2.5.7" - -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== - -"@emotion/stylis@0.8.5": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== - -"@emotion/weak-memoize@0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" - integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@react-navigation/core@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.7.7.tgz#398b23836928f96d23eb60a10f8be77b160f1284" - integrity sha512-0EYy7Hyip42Fua71w+Hti39u9tKzyNjdHZSWahWoZOZnEIgFwHmW3oT4A18Xv2l/rC2LOyfiddhp/Y1GIrV/3g== - dependencies: - hoist-non-react-statics "^3.3.2" - path-to-regexp "^1.8.0" - query-string "^6.13.1" - react-is "^16.13.0" - -"@react-navigation/native@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.8.1.tgz#c3b13468a4729b0c60d2be9383e21a6860e020c4" - integrity sha512-EUOV7Ac09iMqphKidpLGnzn7pJr+XmDxJc4bGEKtMH/m/EpJYN93llzu9aPJxDJymMQsc/tyPIjJw2vKFcfNFQ== - dependencies: - hoist-non-react-statics "^3.3.2" - react-native-safe-area-view "^0.14.9" - -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== - dependencies: - any-observable "^0.3.0" - -"@types/babel__core@^7.0.0": - version "7.1.12" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" - integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - -"@types/cheerio@*": - version "0.22.22" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.22.tgz#ae71cf4ca59b8bbaf34c99af7a5d6c8894988f5f" - integrity sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA== - dependencies: - "@types/node" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/dompurify@^2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-2.3.3.tgz#c24c92f698f77ed9cc9d9fa7888f90cf2bfaa23f" - integrity sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w== - dependencies: - "@types/trusted-types" "*" - -"@types/enzyme-adapter-react-16@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz#8aca7ae2fd6c7137d869b6616e696d21bb8b0cec" - integrity sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg== - dependencies: - "@types/enzyme" "*" - -"@types/enzyme@*": - version "3.10.8" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.8.tgz#ad7ac9d3af3de6fd0673773123fafbc63db50d42" - integrity sha512-vlOuzqsTHxog6PV79+tvOHFb6hq4QZKMq1lLD9MaWD1oec2lHTKndn76XOpSwCA0oFTaIbKVPrgM3k78Jjd16g== - dependencies: - "@types/cheerio" "*" - "@types/react" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" - integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@26.x": - version "26.0.13" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.13.tgz#5a7b9d5312f5dd521a38329c38ee9d3802a0b85e" - integrity sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/jsdom@^16.2.3": - version "16.2.5" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.5.tgz#74ebad438741d249ecb416c5486dcde4217eb66c" - integrity sha512-k/ZaTXtReAjwWu0clU0KLS53dyqZnA8mm+jwKFeFrvufXgICp+VNbskETFxKKAguv0pkaEKTax5MaRmvalM+TA== - dependencies: - "@types/node" "*" - "@types/parse5" "*" - "@types/tough-cookie" "*" - -"@types/node@*": - version "14.6.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224" - integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/parse5@*": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" - integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/raf@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@types/raf/-/raf-3.4.0.tgz#2b72cbd55405e071f1c4d29992638e022b20acc2" - integrity sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw== - -"@types/react-addons-test-utils@^0.14.25": - version "0.14.25" - resolved "https://registry.yarnpkg.com/@types/react-addons-test-utils/-/react-addons-test-utils-0.14.25.tgz#09cf7f7128d497d23d6e73da5a09406a74438c2b" - integrity sha512-Z3FdgnPHwjqj3DO2OyyXkiEHCTmuwio5ENVafw9MvGQWWs1lQsbasTXO9deZDGKCtqpP8h7oFBil9Ovs08xWnw== - dependencies: - "@types/react" "*" - -"@types/react-dom@^16.9.8": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== - dependencies: - "@types/react" "*" - -"@types/react-test-renderer@^16.9.1": - version "16.9.3" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-16.9.3.tgz#96bab1860904366f4e848b739ba0e2f67bcae87e" - integrity sha512-wJ7IlN5NI82XMLOyHSa+cNN4Z0I+8/YaLl04uDgcZ+W+ExWCmCiVTLT/7fRNqzy4OhStZcUwIqLNF7q+AdW43Q== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "16.9.49" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872" - integrity sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^16.14.23": - version "16.14.24" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.24.tgz#f2c5e9fa78f83f769884b83defcf7924b9eb5c82" - integrity sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/set-interval-async@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/set-interval-async/-/set-interval-async-1.0.0.tgz#7769973e0ded3faee36018795a92b6ba239d668e" - integrity sha512-4twO6B7/dcd+lMyIHwUm/S1RMvVOsgZf0sCevNNCnwyAxn7t9mxLfuZxIGFimYCPhLjJYccsvo4HhXxp4UDoBg== - -"@types/showdown@^1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@types/showdown/-/showdown-1.9.3.tgz#eaa881b03a32d3720184731754d3025fc450b970" - integrity sha512-akvzSmrvY4J5d3tHzUUiQr0xpjd4Nb3uzWW6dtwzYJ+qW/KdWw5F8NLatnor5q/1LURHnzDA1ReEwCVqcatRnw== - -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" - integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== - -"@types/sizzle@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== - -"@types/tough-cookie@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" - integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== - -"@types/trusted-types@*": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-1.0.6.tgz#569b8a08121d3203398290d602d84d73c8dcf5da" - integrity sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw== - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.5: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== - -airbnb-prop-types@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" - integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== - dependencies: - array.prototype.find "^2.1.1" - function.prototype.name "^1.1.2" - is-regex "^1.1.0" - object-is "^1.1.2" - object.assign "^4.1.0" - object.entries "^1.1.2" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.13.1" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-find@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.find@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" - integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.4" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async@^3.2.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-emotion@^10.0.27: - version "10.0.33" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" - integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/serialize" "^0.11.16" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - escape-string-regexp "^1.0.5" - find-root "^1.1.0" - source-map "^0.5.7" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.0.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -blob-util@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.5.5, bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.17.5: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== - dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@1.x, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== - -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.0" - -call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001317: - version "1.0.30001322" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" - integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== - -canvg@^3.0.6: - version "3.0.10" - resolved "https://registry.yarnpkg.com/canvg/-/canvg-3.0.10.tgz#8e52a2d088b6ffa23ac78970b2a9eebfae0ef4b3" - integrity sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q== - dependencies: - "@babel/runtime" "^7.12.5" - "@types/raf" "^3.4.0" - core-js "^3.8.3" - raf "^3.4.1" - regenerator-runtime "^0.13.7" - rgbcolor "^1.0.1" - stackblur-canvas "^2.0.0" - svg-pathdata "^6.0.3" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-table3@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== - dependencies: - object-assign "^4.1.0" - string-width "^4.2.0" - optionalDependencies: - colors "^1.1.2" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-js@^3.6.0, core-js@^3.8.3: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e" - integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cron-validator@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.1.1.tgz#0a27bb75508c7bc03c8b840d2d9f170eeacb5615" - integrity sha512-vfZb05w/wezuwPZBDvdIBmJp2BvuJExHeyKRa5oBqD2ZDXR61hb3QgPc/3ZhBEQJlAy8Jlnn5XC/JCT3IDqxwg== - -cross-fetch@^3.0.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-line-break@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0" - integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w== - dependencies: - utrie "^1.0.2" - -css-what@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^2.5.7: - version "2.6.13" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f" - integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A== - -csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" - integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== - -cypress@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" - integrity sha512-cs5vG3E2JLldAc16+5yQxaVRLLqMVya5RlrfPWkC72S5xrlHFdw7ovxPb61s4wYweROKTyH01WQc2PFzwwVvyQ== - dependencies: - "@cypress/listr-verbose-renderer" "^0.4.1" - "@cypress/request" "^2.88.5" - "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" - "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" - bluebird "^3.7.2" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-table3 "~0.6.0" - commander "^5.1.0" - common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" - executable "^4.1.1" - extract-zip "^1.7.0" - fs-extra "^9.0.1" - getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" - lazy-ass "^1.6.0" - listr "^0.14.3" - lodash "^4.17.19" - log-symbols "^4.0.0" - minimist "^1.2.5" - moment "^2.27.0" - ospath "^1.2.2" - pretty-bytes "^5.4.1" - ramda "~0.26.1" - request-progress "^3.0.0" - supports-color "^7.2.0" - tmp "~0.2.1" - untildify "^4.0.0" - url "^0.11.0" - yauzl "^2.10.0" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.1: - version "10.4.2" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" - integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== - -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -deeks@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/deeks/-/deeks-2.2.6.tgz#7fc4c07c4251e1deb7e919fd14734fea151dc8b2" - integrity sha512-KlfWy96oUxxfAEC8q8QVoik++6yWsTYT9Cm5S6nUddLciZaOy7WDfcFbVCyeHKFO44ptWxtz7sQd9Upm4SGf4g== - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -doc-path@2.0.4, doc-path@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/doc-path/-/doc-path-2.1.2.tgz#08344d188619a6ff7c6631e462362dd720e4e81f" - integrity sha512-saM17czrIb4jYLsS5728OKbCa/WQ3xVctkGiMixOHz3X1VYsRn/Q5xPMxE1A5WN+XHHLWak34mMMjmAKRgMLeA== - -dom-helpers@^5.0.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" - integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dom-serializer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.0.1.tgz#79695eb49af3cd8abc8d93a73da382deb1ca0795" - integrity sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^3.0, domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== - dependencies: - domelementtype "^2.0.1" - -dompurify@^2.2.0, dompurify@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631" - integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA== - -domutils@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.2.0.tgz#f3ce1610af5c30280bde1b71f84b018b958f32cf" - integrity sha512-0haAxVr1PR0SqYwCH7mxMpHZUwjih9oPPedqpR/KufsnxPyZ9dyVw1R5093qnJF3WXSbjBkdzRWLw/knJV/fAg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^3.0.0" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -elastic-builder@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/elastic-builder/-/elastic-builder-2.7.1.tgz#46657831eb93f4c1f42dce1779479a1c98e1bcb7" - integrity sha512-tBhrNDiP5ef+xdKMU5Xp1ssaHONxnIAjs0S7W2BNPJxKcGTxcFLgErRJTZS//Go5RwyQrrvDyGoSrfDqwXLMng== - dependencies: - babel-runtime "^6.26.0" - lodash.has "^4.5.2" - lodash.hasin "^4.5.2" - lodash.head "^4.0.1" - lodash.isempty "^4.4.0" - lodash.isnil "^4.0.0" - lodash.isobject "^3.0.2" - lodash.isstring "^4.0.1" - lodash.omit "^4.5.0" - -electron-to-chromium@^1.4.84: - version "1.4.101" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.101.tgz#71f3a10065146d7445ba5d4c06ba2cc063b0817a" - integrity sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw== - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enhanced-resolve@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - -entities@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - -enzyme-adapter-react-16@^1.15.5: - version "1.15.6" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" - integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== - dependencies: - enzyme-adapter-utils "^1.14.0" - enzyme-shallow-equal "^1.0.4" - has "^1.0.3" - object.assign "^4.1.2" - object.values "^1.1.2" - prop-types "^15.7.2" - react-is "^16.13.1" - react-test-renderer "^16.0.0-0" - semver "^5.7.0" - -enzyme-adapter-utils@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" - integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== - dependencies: - airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.3" - has "^1.0.3" - object.assign "^4.1.2" - object.fromentries "^2.0.3" - prop-types "^15.7.2" - semver "^5.7.1" - -enzyme-shallow-equal@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" - integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== - dependencies: - has "^1.0.3" - object-is "^1.1.2" - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.17.4: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.4.tgz#79a95527af382eb276075627e53762393ce8b57a" - integrity sha512-flV8e5g9/xulChMG48Fygk1ptpo4lQRJ0eJYtxJFgi7pklLx7EFcOJ34jnvr8pbWlaFN/AT1cZpe0hiFel9Hqg== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-import-resolver-node@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== - dependencies: - debug "^2.6.9" - resolve "^1.5.0" - -eslint-import-resolver-webpack@0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz#fcf1fd57a775f51e18f442915f85dd6ba45d2f26" - integrity sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg== - dependencies: - array-find "^1.0.0" - debug "^2.6.8" - enhanced-resolve "~0.9.0" - find-root "^1.1.0" - has "^1.0.1" - interpret "^1.0.0" - lodash "^4.17.4" - node-libs-browser "^1.0.0 || ^2.0.0" - resolve "^1.10.0" - semver "^5.3.0" - -eslint-plugin-babel@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" - integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g== - dependencies: - eslint-rule-composer "^0.3.0" - -eslint-plugin-no-unsanitized@^3.0.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.2.tgz#a54724e0b81d43279bb1f8f5e1d82c97da78c858" - integrity sha512-KPShfliA3Uy9qqwQx35P1fwIOeJjZkb0FbMMUFztRYRposzaynsM8JCEb952fqkidROl1kpqY80uSvn+TcWkQQ== - -eslint-plugin-prefer-object-spread@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-object-spread/-/eslint-plugin-prefer-object-spread-1.2.1.tgz#27fb91853690cceb3ae6101d9c8aecc6a67a402c" - integrity sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw= - -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fflate@^0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae" - integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA== - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" - integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - functions-have-names "^1.2.0" - -function.prototype.name@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" - integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== - -functions-have-names@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" - integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-all@^3.2.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.3.1.tgz#6be2d5d8276902319f640fbf839fbe15b35e7667" - integrity sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q== - dependencies: - glob "^7.2.3" - yargs "^15.3.1" - -glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.0, glob@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^2.3.1: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== - -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-to-react@^1.3.4: - version "1.4.3" - resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.3.tgz#1430a1cb581ef29533892ec70a2fdc4554b17ffd" - integrity sha512-txe09A3vxW8yEZGJXJ1is5gGDfBEVACmZDSgwDyH5EsfRdOubBwBCg63ZThZP0xBn0UE4FyvMXZXmohusCxDcg== - dependencies: - domhandler "^3.0" - htmlparser2 "^4.1.0" - lodash.camelcase "^4.3.0" - ramda "^0.27" - -html2canvas@1.4.1, html2canvas@^1.0.0-rc.5: - version "1.4.1" - resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" - integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA== - dependencies: - css-line-break "^2.1.0" - text-segmentation "^1.0.3" - -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -i18n-js@3.0.11: - version "3.0.11" - resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.0.11.tgz#f9e96bdb641c5b9d6be12759d7c422089987ef02" - integrity sha512-v7dG3kYJTQTyox3NqDabPDE/ZotWntyMI9kh4cYi+XlCSnsIR+KBTS2opPyObL8WndnklcLzbNU92FP/mLge3Q== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -identity-obj-proxy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - -import-fresh@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.4, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" - integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== - dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-regex@^1.1.0, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-dom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jest-dom/-/jest-dom-4.0.0.tgz#94eba3cbc6576e7bd6821867c92d176de28920eb" - integrity sha512-gBxYZlZB1Jgvf2gP2pRfjjUWF8woGBHj/g5rAQgFPB/0K2atGuhVcPO+BItyjWeKg9zM+dokgcMOH01vrWVMFA== - -jest-fetch-mock@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" - integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== - dependencies: - cross-fetch "^3.0.4" - promise-polyfill "^8.1.3" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-util@26.x: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" - integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== - dependencies: - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jquery@^3.5.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" - integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.0.tgz#9e453505600cc5a70b385750d35256f380730cc4" - integrity sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ== - dependencies: - abab "^2.0.5" - acorn "^8.0.5" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "6.0.1" - request "^2.88.2" - request-promise-native "^1.0.9" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.4.4" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-2-csv@^3.7.6: - version "3.7.6" - resolved "https://registry.yarnpkg.com/json-2-csv/-/json-2-csv-3.7.6.tgz#2a88b323b8986f31dcd4ef785b3bfb3521d42899" - integrity sha512-um9bT7CgI77f/m5G/V5uRKz9UruFQFijD5Fh+EAnr5QowOJpdIk1ya37KSq1MxjBnJgvmpqCnI7ZjsvyTYiW0w== - dependencies: - deeks "2.2.6" - doc-path "2.0.4" - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3, json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@2.x, json5@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jspdf@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-2.5.1.tgz#00c85250abf5447a05f3b32ab9935ab4a56592cc" - integrity sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA== - dependencies: - "@babel/runtime" "^7.14.0" - atob "^2.1.2" - btoa "^1.2.1" - fflate "^0.4.8" - optionalDependencies: - canvg "^3.0.6" - core-js "^3.6.0" - dompurify "^2.2.0" - html2canvas "^1.0.0-rc.5" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.2.3, loader-utils@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.has@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" - integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= - -lodash.hasin@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.hasin/-/lodash.hasin-4.5.2.tgz#f91e352378d21ef7090b9e7687c2ca35c5b4d52a" - integrity sha1-+R41I3jSHvcJC552h8LKNcW01So= - -lodash.head@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.head/-/lodash.head-4.0.1.tgz#e2aa322d3ec40cd6aae186082977d993b354ed9c" - integrity sha1-4qoyLT7EDNaq4YYIKXfZk7NU7Zw= - -lodash.isempty@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= - -lodash.isnil@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c" - integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw= - -lodash.isobject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.omit@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= - -lodash.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - -lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdast-add-list-metadata@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" - integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA== - dependencies: - unist-util-visit-parents "1.1.2" - -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-create-react-context@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz#df60501c83151db69e28eac0ef08b4002efab040" - integrity sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA== - dependencies: - "@babel/runtime" "^7.5.5" - tiny-warning "^1.0.3" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@1.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^0.5.4: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -moment@^2.27.0, moment@^2.29.4: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nan@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -"node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" - integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - -object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-is@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" - integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.1, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" - -object.fromentries@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@^1.7.0, path-to-regexp@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-bytes@^5.4.1: - version "5.5.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" - integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== - -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-polyfill@^8.1.3: - version "8.1.3" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" - integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== - -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^6.13.1: - version "6.13.2" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.2.tgz#3585aa9412c957cbd358fd5eaca7466f05586dda" - integrity sha512-BMmDaUiLDFU1hlM38jTFcRt7HYiGP/zt1sRzrIWm5zpeEuO1rkbPS0ELI3uehoLuuhHDCS8u8lhFN3fEN4JzPQ== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -ramda@^0.27: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -react-addons-test-utils@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156" - integrity sha1-wStu/cIkfBDae4dw0YUICnsEcVY= - -react-id-generator@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/react-id-generator/-/react-id-generator-3.0.1.tgz#30ec683954b3c0a5aa0732c4b98ed0f88fd85d00" - integrity sha512-YxorMaYxB8ItXA3Cuadcl/8ZaquU9Tzrrr5ogFL8tNqevF96cmCtx3LZLXYqBEj3BxoV9aBIK5yJjIuX/XHQ1A== - -react-is@^16.12.0, react-is@^16.13.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-markdown@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f" - integrity sha512-HQlWFTbDxTtNY6bjgp3C3uv1h2xcjCSi1zAEzfBW9OwJJvENSYiLXWNXN5hHLsoqai7RnZiiHzcnWdXk2Splzw== - dependencies: - html-to-react "^1.3.4" - mdast-add-list-metadata "1.0.1" - prop-types "^15.7.2" - react-is "^16.8.6" - remark-parse "^5.0.0" - unified "^6.1.5" - unist-util-visit "^1.3.0" - xtend "^4.0.1" - -react-mde@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-mde/-/react-mde-10.2.1.tgz#6debedbbed224155f5f4c025ae0c1655a41d385c" - integrity sha512-rq99Y6xQknZRQSzUpkY5KJRl3cE7GpiC+bSG2L10T2m1p6Y90zQxC060TWk1yoeXtGtveao1NXEV1UcpvOhRsQ== - -react-native-base64@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/react-native-base64/-/react-native-base64-0.0.2.tgz#c28463c2c6779ac3ec5fdd12979ebc8c5f9b410a" - integrity sha512-Fu/J1a2y0X22EJDWqJR2oEa1fpP4gTFjYxk8ElJdt1Yak3HOXmFJ7EohLVHU2DaQkgmKfw8qb7u/48gpzveRbg== - -react-native-i18n@^2.0.15: - version "2.0.15" - resolved "https://registry.yarnpkg.com/react-native-i18n/-/react-native-i18n-2.0.15.tgz#09b5a9836116fa7dbd0054c46e2d1014c1ef3c65" - integrity sha512-V8VwUP0TLda3oJvgt5tdnFaOV7WXPhTjCTLO7sXI3C2SHggSbD4bCUryMzNJhesimJidH21V2Owvj4zAylHoQQ== - dependencies: - i18n-js "3.0.11" - -react-native-safe-area-view@^0.14.9: - version "0.14.9" - resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.9.tgz#90ee8383037010d9a5055a97cf97e4c1da1f0c3d" - integrity sha512-WII/ulhpVyL/qbYb7vydq7dJAfZRBcEhg4/UWt6F6nAKpLa3gAceMOxBxI914ppwSP/TdUsandFy6lkJQE0z4A== - dependencies: - hoist-non-react-statics "^2.3.1" - -react-navigation@^4.3.9: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.4.1.tgz#7511b5d46bba8e52fc2f426144127a012454c84f" - integrity sha512-E0TJHLS8mcdliubPjbIfyplZG1oQhHYzH3cHKMSVXWE4dhSSf1x//r+92kW9LbS62v51Nj3Bxw2cJMHw0xP9Kw== - dependencies: - "@react-navigation/core" "^3.7.7" - "@react-navigation/native" "^3.8.1" - -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.1" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-test-renderer@^16.0.0-0, react-test-renderer@^16.12.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - -react-toast-notifications@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-toast-notifications/-/react-toast-notifications-2.4.0.tgz#6213730bd1fe158fc01aeef200687ea94c5c5b24" - integrity sha512-8tkrbNh7LxkiFmtqAL/AiI55efIeI+fBk3c6ImsiZ0VObb4yvOq0cqYuJHyUiv9fuD2aBxvXGVH+n4Snt8qoWA== - dependencies: - "@emotion/core" "^10.0.14" - react-transition-group "^4.3.0" - -react-transition-group@^4.3.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" - integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.5.4, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -replace-in-file@^6.3.5: - version "6.3.5" - resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-6.3.5.tgz#ff956b0ab5bc96613207d603d197cd209400a654" - integrity sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg== - dependencies: - chalk "^4.1.2" - glob "^7.2.0" - yargs "^17.2.1" - -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= - dependencies: - throttleit "^1.0.0" - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.10.0, resolve@^1.5.0, resolve@^1.7.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.12.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.3.2: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rgbcolor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d" - integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw== - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - -rxjs@^6.3.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -semver@7.x: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^5.3.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-interval-async@1.0.33: - version "1.0.33" - resolved "https://registry.yarnpkg.com/set-interval-async/-/set-interval-async-1.0.33.tgz#f9a0a2ad7d8fb62cd6eac0ce088a6d631602089c" - integrity sha512-cKV9rLl707sWirvrZEL8XxyOxaPowueFRYKruRRj2cKHRd+M0JGg6IPqoUZVXkvaOZxvM3ulqDdNJuG5MmngxA== - dependencies: - "@babel/runtime" "7.5.0" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -showdown@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/showdown/-/showdown-1.9.1.tgz#134e148e75cd4623e09c21b0511977d79b5ad0ef" - integrity sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA== - dependencies: - yargs "^14.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -stackblur-canvas@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz#aa87bbed1560fdcd3138fff344fc6a1c413ebac4" - integrity sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ== - -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0, supports-color@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svg-pathdata@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac" - integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw== - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-segmentation@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" - integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== - dependencies: - utrie "^1.0.2" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tiny-warning@^1.0.0, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== - -trim@0.0.1, trim@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim/-/trim-1.0.0.tgz#fd1f30b878bdd2d8435fa0f2cc9cbb55f518be7d" - integrity sha512-UgtES1lYpE+f4WiGY5lyJlHchuGhTa/xMPH96g/B7gc+pEQPiL41s6ECm7Ky3hkhARG/u1SHGFcleJodAvQOKQ== - -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - -ts-jest@^26.1.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9" - integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q== - dependencies: - "@types/jest" "26.x" - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - jest-util "26.x" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "18.x" - -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - -unified@^6.1.5: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unist-util-is@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" - integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== - -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - -unist-util-visit-parents@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" - integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q== - -unist-util-visit-parents@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" - integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== - dependencies: - unist-util-is "^3.0.0" - -unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== - dependencies: - unist-util-visit-parents "^2.0.0" - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utrie@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" - integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw== - dependencies: - base64-arraybuffer "^1.0.2" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.41.5: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.4, ws@^7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0, y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@18.x, yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^14.2: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^17.2.1: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" diff --git a/reports-scheduler/detekt.yml b/detekt.yml similarity index 100% rename from reports-scheduler/detekt.yml rename to detekt.yml diff --git a/reports-scheduler/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from reports-scheduler/gradle/wrapper/gradle-wrapper.jar rename to gradle/wrapper/gradle-wrapper.jar diff --git a/reports-scheduler/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from reports-scheduler/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties diff --git a/reports-scheduler/gradlew b/gradlew similarity index 100% rename from reports-scheduler/gradlew rename to gradlew diff --git a/reports-scheduler/gradlew.bat b/gradlew.bat similarity index 100% rename from reports-scheduler/gradlew.bat rename to gradlew.bat diff --git a/reports-scheduler/release-notes/create_release_notes.py b/release-notes/create_release_notes.py similarity index 100% rename from reports-scheduler/release-notes/create_release_notes.py rename to release-notes/create_release_notes.py diff --git a/reports-scheduler/.gitignore b/reports-scheduler/.gitignore deleted file mode 100644 index 59dc2666..00000000 --- a/reports-scheduler/.gitignore +++ /dev/null @@ -1,301 +0,0 @@ -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Kotlin ### -# Compiled class file - -# Log file - -# BlueJ files - -# Mobile Tools for Java (J2ME) - -# Package Files # - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml - -### Gradle ### -.gradle -build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Cache of project -.gradletasknamecache - -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties - -### Gradle Patch ### -**/build/ - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -Thumbs.db:encryptable -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -.idea/artifacts -.idea/compiler.xml -.idea/jarRepositories.xml -.idea/modules.xml -.idea/*.iml -.idea/modules -*.iml -*.ipr - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# AWS plugin -.idea/aws.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - -# Android studio 3.1+ serialized cache file -.idea/caches/build_file_checksums.ser - -### Intellij Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -# https://plugins.jetbrains.com/plugin/7973-sonarlint -.idea/**/sonarlint/ - -# SonarQube Plugin -# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin -.idea/**/sonarIssues.xml - -# Markdown Navigator plugin -# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced -.idea/**/markdown-navigator.xml -.idea/**/markdown-navigator-enh.xml -.idea/**/markdown-navigator/ - -# Cache file creation bug -# See https://youtrack.jetbrains.com/issue/JBR-2257 -.idea/$CACHE_FILE$ - -# CodeStream plugin -# https://plugins.jetbrains.com/plugin/12206-codestream -.idea/codestream.xml - - -### Maven ### -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar -.mvn/wrapper/maven-wrapper.jar - - -### Eclipse ### -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# CDT- autotools -.autotools - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Annotation Processing -.apt_generated/ -.apt_generated_test/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -# Uncomment this line if you wish to ignore the project description file. -# Typically, this file would be tracked if it contains build/dependency configurations: -#.project - -### Eclipse Patch ### -# Spring Boot Tooling -.sts4-cache/ - -local-test -.local-* - -/artifacts/ diff --git a/reports-scheduler/scripts/build.sh b/scripts/build.sh similarity index 100% rename from reports-scheduler/scripts/build.sh rename to scripts/build.sh diff --git a/reports-scheduler/settings.gradle b/settings.gradle similarity index 100% rename from reports-scheduler/settings.gradle rename to settings.gradle diff --git a/reports-scheduler/src/main/config/reports-scheduler.yml b/src/main/config/reports-scheduler.yml similarity index 100% rename from reports-scheduler/src/main/config/reports-scheduler.yml rename to src/main/config/reports-scheduler.yml diff --git a/reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/BasicCounter.java b/src/main/java/org/opensearch/reportsscheduler/metrics/BasicCounter.java similarity index 100% rename from reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/BasicCounter.java rename to src/main/java/org/opensearch/reportsscheduler/metrics/BasicCounter.java diff --git a/reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/Counter.java b/src/main/java/org/opensearch/reportsscheduler/metrics/Counter.java similarity index 100% rename from reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/Counter.java rename to src/main/java/org/opensearch/reportsscheduler/metrics/Counter.java diff --git a/reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/Metrics.java b/src/main/java/org/opensearch/reportsscheduler/metrics/Metrics.java similarity index 100% rename from reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/Metrics.java rename to src/main/java/org/opensearch/reportsscheduler/metrics/Metrics.java diff --git a/reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/RollingCounter.java b/src/main/java/org/opensearch/reportsscheduler/metrics/RollingCounter.java similarity index 100% rename from reports-scheduler/src/main/java/org/opensearch/reportsscheduler/metrics/RollingCounter.java rename to src/main/java/org/opensearch/reportsscheduler/metrics/RollingCounter.java diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt b/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/ReportsSchedulerPlugin.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/CreateReportDefinitionAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/DeleteReportDefinitionAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportDefinitionsAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/GetAllReportInstancesAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportDefinitionAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/GetReportInstanceAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/InContextReportCreateAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/OnDemandReportCreateAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/PluginBaseAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/ReportDefinitionActions.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/ReportInstanceActions.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportDefinitionAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt b/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/action/UpdateReportInstanceStatusAction.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt b/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/index/ReportDefinitionsIndex.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt b/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/index/ReportInstancesIndex.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/BaseResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/BaseResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/BaseResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/BaseResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetails.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsDoc.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsDoc.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsDoc.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsDoc.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinitionDetailsSearchResults.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstance.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceDoc.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceDoc.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceDoc.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceDoc.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/ReportInstanceSearchResults.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/RestTag.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/RestTag.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/RestTag.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/RestTag.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/SearchResults.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequest.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt b/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponse.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/PluginBaseHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionListRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportDefinitionRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceListRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportInstanceRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/ReportStatsRestHandler.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/resthandler/RestResponseToXContentListener.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt b/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobParser.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt b/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/scheduler/ReportDefinitionJobRunner.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt b/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/security/SecurityAccess.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt b/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/security/UserAccessManager.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt b/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/Helpers.kt b/src/main/kotlin/org/opensearch/reportsscheduler/util/Helpers.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/Helpers.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/util/Helpers.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/OpenForTesting.kt b/src/main/kotlin/org/opensearch/reportsscheduler/util/OpenForTesting.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/OpenForTesting.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/util/OpenForTesting.kt diff --git a/reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/SecureIndexClient.kt b/src/main/kotlin/org/opensearch/reportsscheduler/util/SecureIndexClient.kt similarity index 100% rename from reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/util/SecureIndexClient.kt rename to src/main/kotlin/org/opensearch/reportsscheduler/util/SecureIndexClient.kt diff --git a/reports-scheduler/src/main/plugin-metadata/plugin-security.policy b/src/main/plugin-metadata/plugin-security.policy similarity index 100% rename from reports-scheduler/src/main/plugin-metadata/plugin-security.policy rename to src/main/plugin-metadata/plugin-security.policy diff --git a/reports-scheduler/src/main/resources/META-INF/services/org.opensearch.jobscheduler.spi.JobSchedulerExtension b/src/main/resources/META-INF/services/org.opensearch.jobscheduler.spi.JobSchedulerExtension similarity index 100% rename from reports-scheduler/src/main/resources/META-INF/services/org.opensearch.jobscheduler.spi.JobSchedulerExtension rename to src/main/resources/META-INF/services/org.opensearch.jobscheduler.spi.JobSchedulerExtension diff --git a/reports-scheduler/src/main/resources/notifications/template/email_content_template.html b/src/main/resources/notifications/template/email_content_template.html similarity index 100% rename from reports-scheduler/src/main/resources/notifications/template/email_content_template.html rename to src/main/resources/notifications/template/email_content_template.html diff --git a/reports-scheduler/src/main/resources/notifications/template/logo.png b/src/main/resources/notifications/template/logo.png similarity index 100% rename from reports-scheduler/src/main/resources/notifications/template/logo.png rename to src/main/resources/notifications/template/logo.png diff --git a/reports-scheduler/src/main/resources/report-definitions-mapping.yml b/src/main/resources/report-definitions-mapping.yml similarity index 100% rename from reports-scheduler/src/main/resources/report-definitions-mapping.yml rename to src/main/resources/report-definitions-mapping.yml diff --git a/reports-scheduler/src/main/resources/report-definitions-settings.yml b/src/main/resources/report-definitions-settings.yml similarity index 100% rename from reports-scheduler/src/main/resources/report-definitions-settings.yml rename to src/main/resources/report-definitions-settings.yml diff --git a/reports-scheduler/src/main/resources/report-instances-mapping.yml b/src/main/resources/report-instances-mapping.yml similarity index 100% rename from reports-scheduler/src/main/resources/report-instances-mapping.yml rename to src/main/resources/report-instances-mapping.yml diff --git a/reports-scheduler/src/main/resources/report-instances-settings.yml b/src/main/resources/report-instances-settings.yml similarity index 100% rename from reports-scheduler/src/main/resources/report-instances-settings.yml rename to src/main/resources/report-instances-settings.yml diff --git a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java b/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java similarity index 100% rename from reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java rename to src/test/java/org/opensearch/reportsscheduler/metrics/BasicCounterTests.java diff --git a/reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java b/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java similarity index 100% rename from reports-scheduler/src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java rename to src/test/java/org/opensearch/reportsscheduler/metrics/RollingCounterTests.java diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt b/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt rename to src/test/kotlin/org/opensearch/integTest/IntegTestHelpers.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt b/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt rename to src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt b/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt rename to src/test/kotlin/org/opensearch/integTest/ReportsSchedulerPluginIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt b/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt rename to src/test/kotlin/org/opensearch/integTest/bwc/ReportsSchedulerBackwardsCompatibilityIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt b/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt rename to src/test/kotlin/org/opensearch/integTest/rest/InContextMenuReportGenerationIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt b/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt rename to src/test/kotlin/org/opensearch/integTest/rest/OnDemandReportGenerationIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt b/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt rename to src/test/kotlin/org/opensearch/integTest/rest/ReportDefinitionIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt b/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt rename to src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/TestHelpers.kt b/src/test/kotlin/org/opensearch/reportsscheduler/TestHelpers.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/TestHelpers.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/TestHelpers.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/CreateReportDefinitionResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/DeleteReportDefinitionResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportDefinitionsResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportDefinitionResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/GetReportInstanceResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/InContextReportCreateResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/OnDemandReportCreateResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportDefinitionResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequestTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequestTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequestTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusRequestTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponseTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponseTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/model/UpdateReportInstanceStatusResponseTests.kt diff --git a/reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt similarity index 100% rename from reports-scheduler/src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt rename to src/test/kotlin/org/opensearch/reportsscheduler/util/HelpersTests.kt diff --git a/reports-scheduler/src/test/resources/bwc/job-scheduler/.gitignore b/src/test/resources/bwc/job-scheduler/.gitignore similarity index 100% rename from reports-scheduler/src/test/resources/bwc/job-scheduler/.gitignore rename to src/test/resources/bwc/job-scheduler/.gitignore diff --git a/reports-scheduler/src/test/resources/bwc/reports-scheduler/.gitignore b/src/test/resources/bwc/reports-scheduler/.gitignore similarity index 100% rename from reports-scheduler/src/test/resources/bwc/reports-scheduler/.gitignore rename to src/test/resources/bwc/reports-scheduler/.gitignore diff --git a/reports-scheduler/src/test/resources/job-scheduler/.gitignore b/src/test/resources/job-scheduler/.gitignore similarity index 100% rename from reports-scheduler/src/test/resources/job-scheduler/.gitignore rename to src/test/resources/job-scheduler/.gitignore diff --git a/reports-scheduler/src/test/resources/security/sample.pem b/src/test/resources/security/sample.pem similarity index 100% rename from reports-scheduler/src/test/resources/security/sample.pem rename to src/test/resources/security/sample.pem diff --git a/reports-scheduler/src/test/resources/security/test-kirk.jks b/src/test/resources/security/test-kirk.jks similarity index 100% rename from reports-scheduler/src/test/resources/security/test-kirk.jks rename to src/test/resources/security/test-kirk.jks From b5ea7fff2daf8f62f0a3e951ed601a5231d52a8d Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 9 Jan 2023 13:55:27 -0800 Subject: [PATCH 37/38] Remove unnecessary scripts after repo split (#622) Signed-off-by: Joshua Li --- build.gradle | 8 +---- scripts/build.sh | 82 ------------------------------------------------ 2 files changed, 1 insertion(+), 89 deletions(-) delete mode 100755 scripts/build.sh diff --git a/build.gradle b/build.gradle index bf4cf9ba..ff0dbb84 100644 --- a/build.gradle +++ b/build.gradle @@ -385,12 +385,6 @@ task updateVersion { println "Setting version to ${newVersion}." // String tokenization to support -SNAPSHOT ant.replaceregexp(file:'build.gradle', match: '"opensearch.version", "\\d.*"', replace: '"opensearch.version", "' + newVersion.tokenize('-')[0] + '-SNAPSHOT"', flags:'g', byline:true) - ant.replaceregexp(file:'../.github/workflows/dashboards-reports-test-and-build-workflow.yml', match:'OPENSEARCH_PLUGIN_VERSION: \\d+.\\d+.\\d+.\\d+', replace:'OPENSEARCH_PLUGIN_VERSION: ' + newVersion.tokenize('-')[0] + '.0', flags:'g', byline:true) - ant.replaceregexp(file:'../.github/workflows/draft-release-notes-workflow.yml', match:'version: \\d+.\\d+.\\d+.\\d+', replace:'version: ' + newVersion.tokenize('-')[0] + '.0', flags:'g', byline:true) - // Match key version in JSON files. - ant.replaceregexp(file:'../dashboards-reports/opensearch_dashboards.json', match:'"version": "\\d+.\\d+.\\d+.\\d+', replace:'"version": ' + '"' + newVersion.tokenize('-')[0] + '.0', flags:'g', byline:true) - ant.replaceregexp(file:'../dashboards-reports/package.json', match:'"version": "\\d+.\\d+.\\d+.\\d+', replace:'"version": ' + '"' + newVersion.tokenize('-')[0] + '.0', flags:'g', byline:true) - // Match key opensearchDashboardsVersion in JSON files. - ant.replaceregexp(file:'../dashboards-reports/opensearch_dashboards.json', match:'"opensearchDashboardsVersion": "\\d+.\\d+.\\d+', replace:'"opensearchDashboardsVersion": ' + '"' + newVersion.tokenize('-')[0], flags:'g', byline:true) + ant.replaceregexp(file:'./.github/workflows/draft-release-notes-workflow.yml', match:'version: \\d+.\\d+.\\d+.\\d+', replace:'version: ' + newVersion.tokenize('-')[0] + '.0', flags:'g', byline:true) } } diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index 4b2893f3..00000000 --- a/scripts/build.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# -# Copyright OpenSearch Contributors -# SPDX-License-Identifier: Apache-2.0 -# - -set -ex - -function usage() { - echo "Usage: $0 [args]" - echo "" - echo "Arguments:" - echo -e "-v VERSION\t[Required] OpenSearch version." - echo -e "-q QUALIFIER\t[Optional] Version qualifier." - echo -e "-s SNAPSHOT\t[Optional] Build a snapshot, default is 'false'." - echo -e "-p PLATFORM\t[Optional] Platform, ignored." - echo -e "-a ARCHITECTURE\t[Optional] Build architecture, ignored." - echo -e "-o OUTPUT\t[Optional] Output path, default is 'artifacts'." - echo -e "-h help" -} - -while getopts ":h:v:q:s:o:p:a:" arg; do - case $arg in - h) - usage - exit 1 - ;; - v) - VERSION=$OPTARG - ;; - q) - QUALIFIER=$OPTARG - ;; - s) - SNAPSHOT=$OPTARG - ;; - o) - OUTPUT=$OPTARG - ;; - p) - PLATFORM=$OPTARG - ;; - a) - ARCHITECTURE=$OPTARG - ;; - :) - echo "Error: -${OPTARG} requires an argument" - usage - exit 1 - ;; - ?) - echo "Invalid option: -${arg}" - exit 1 - ;; - esac -done - -if [ -z "$VERSION" ]; then - echo "Error: You must specify the OpenSearch version" - usage - exit 1 -fi - -[[ ! -z "$QUALIFIER" ]] && VERSION=$VERSION-$QUALIFIER -[[ "$SNAPSHOT" == "true" ]] && VERSION=$VERSION-SNAPSHOT -[ -z "$OUTPUT" ] && OUTPUT=artifacts - -mkdir -p $OUTPUT - -./gradlew assemble --no-daemon --refresh-dependencies -DskipTests=true -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER - -zipPath=$(find . -path \*build/distributions/*.zip) -distributions="$(dirname "${zipPath}")" - -echo "COPY ${distributions}/*.zip" -mkdir -p $OUTPUT/plugins -cp ${distributions}/*.zip ./$OUTPUT/plugins - -./gradlew publishPluginZipPublicationToZipStagingRepository -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER -mkdir -p $OUTPUT/maven/org/opensearch -cp -r ./build/local-staging-repo/org/opensearch/. $OUTPUT/maven/org/opensearch From e36c23228a281b32eca05922d296c656429cff72 Mon Sep 17 00:00:00 2001 From: Rupal Mahajan Date: Mon, 9 Jan 2023 23:32:20 +0000 Subject: [PATCH 38/38] Include integration tests in windows workflow (#624) Signed-off-by: Rupal Mahajan Signed-off-by: Rupal Mahajan --- .../reports-scheduler-test-and-build-workflow.yml | 4 ++-- build-tools/esplugin-coverage.gradle | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index 0e3f6b12..00d4bf45 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -61,7 +61,7 @@ jobs: - name: Build with Gradle run: | - ./gradlew.bat build -x integTest -x jacocoTestReport + ./gradlew.bat build - name: Create Artifact Path run: | @@ -94,7 +94,7 @@ jobs: - name: Build with Gradle run: | - ./gradlew build -x integTest -x jacocoTestReport + ./gradlew build - name: Create Artifact Path run: | diff --git a/build-tools/esplugin-coverage.gradle b/build-tools/esplugin-coverage.gradle index 31be46fd..3e8815fe 100644 --- a/build-tools/esplugin-coverage.gradle +++ b/build-tools/esplugin-coverage.gradle @@ -17,6 +17,9 @@ * break if there are multiple nodes in the integTestCluster. But for now... it sorta works. */ +import org.apache.tools.ant.taskdefs.condition.Os +apply plugin: 'jacoco' + // Get gradle to generate the required jvm agent arg for us using a dummy tasks of type Test. Unfortunately Elastic's // testing tasks don't derive from Test so the jacoco plugin can't do this automatically. def jacocoDir = "${buildDir}/jacoco" @@ -61,7 +64,12 @@ allprojects{ jacocoTestReport.dependsOn integTest testClusters.integTest { - jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}".replace('javaagent:','javaagent:/') + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + // Replacing build with absolute path to fix the error "error opening zip file or JAR manifest missing : /build/tmp/expandedArchives/..../jacocoagent.jar" + jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}".replace('build',"${buildDir}") + } else { + jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}".replace('javaagent:','javaagent:/') + } systemProperty 'com.sun.management.jmxremote', "true" systemProperty 'com.sun.management.jmxremote.authenticate', "false" systemProperty 'com.sun.management.jmxremote.port', "7777"