diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..2142f13f09
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,27 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+version: 2
+updates:
+ - package-ecosystem: "maven" # See documentation for possible values
+ directory: "/" # Location of package manifests
+ schedule:
+ interval: "weekly"
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-major", "version-update:semver-minor"]
+
+ - package-ecosystem: "npm" # See documentation for possible values
+ directory: "/addons/content-browse" # Location of package manifests
+ schedule:
+ interval: "weekly"
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-major", "version-update:semver-minor"]
+
+ - package-ecosystem: "github-actions" # Also update Github actions
+ directory: "/"
+ schedule:
+ # Check for updates to GitHub Actions every week
+ interval: "weekly"
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-push.yml
similarity index 66%
rename from .github/workflows/maven-build.yml
rename to .github/workflows/maven-push.yml
index ef3c59662f..4f5fbe632c 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-push.yml
@@ -17,74 +17,57 @@
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
-name: build on maven
+name: maven push
on:
- watch:
- types: [started]
- pull_request:
- types: [opened, reopened, edited, synchronize, ready_for_review]
push:
branches:
- - main
- - master
- - '**'
+ - 'master'
+ paths:
+ - 'addons/**'
+ - 'api/**'
+ - 'bin/**'
+ - 'bindings/**'
+ - 'boot/**'
+ - 'core/**'
+ - 'db/**'
+ - 'deployments/**'
+ - 'embedder/**'
+ - 'filers/**'
+ - 'ftests/**'
+ - 'rest/**'
+ - 'scripts/**'
+ - 'subsys/**'
+ - 'test/**'
+ - 'tools/**'
+ - 'pom.xml'
+ - 'toolchains.xml'
- workflow_dispatch:
jobs:
- verify:
- name: verify with maven
- runs-on: ubuntu-latest
- env:
- MAVEN_OPTS: "-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=4096m -Xss8m"
- SKIP_NPM_CONFIG: false
- NPMREGISTRY: https://registry.npmjs.org
- steps:
- - uses: actions/checkout@v4
-
- - name: Set up JDK 8 & 11 for x64
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- architecture: x64
- java-version: |
- 8
- 11
-
- - uses: s4u/maven-settings-action@v2.8.0
- with:
- sonatypeSnapshots: true
-
- - name: Build the Maven verify phase
- run: mvn -B -V clean verify -Prun-its -Pci --global-toolchains .github/workflows/toolchains.xml
-
build:
name: Build and push
- runs-on: ubuntu-latest
- needs: verify
- if: ${{ github.event_name == 'push' }}
+ runs-on: ubuntu-22.04
env:
MAVEN_OPTS: "-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=4096m -Xss8m"
SKIP_NPM_CONFIG: false
NPMREGISTRY: https://registry.npmjs.org
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- - name: Set up JDK 8 & 11 for x64
- uses: actions/setup-java@v3
+ - name: Set up JDK 11 for x64
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
architecture: x64
java-version: |
- 8
11
- - uses: s4u/maven-settings-action@v2.8.0
+ - uses: s4u/maven-settings-action@v4.0.0
with:
servers: |
[{
- "id": "sonatype-nexus-snapshots",
+ "id": "central-portal-snapshots",
"username": "${{ secrets.SONATYPE_BOT_USERNAME }}",
"password": "${{ secrets.SONATYPE_BOT_TOKEN }}"
}]
@@ -92,11 +75,11 @@ jobs:
- name: Build with toolchains
run: mvn -B -V clean install -DskipNpmConfig=false --global-toolchains .github/workflows/toolchains.xml
- - name: Deploy the artifact
- run: mvn help:effective-settings -B -V -DskipTests=true -DskipNpmConfig=false deploy -e --global-toolchains .github/workflows/toolchains.xml
+# - name: Deploy the artifact
+# run: mvn help:effective-settings -B -V -DskipTests=true -DskipNpmConfig=false deploy -e --global-toolchains .github/workflows/toolchains.xml
- name: Checkout tools repo
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
repository: Commonjava/commonjava-images
path: commonjava-images
diff --git a/.github/workflows/maven-verify.yml b/.github/workflows/maven-verify.yml
new file mode 100644
index 0000000000..455bfbbb17
--- /dev/null
+++ b/.github/workflows/maven-verify.yml
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2011-2023 Red Hat, Inc. (https://github.com/Commonjava/indy)
+#
+# 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.
+#
+
+# This workflow will build a Java project with Maven
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+
+name: maven verify
+
+on: [pull_request]
+
+jobs:
+ verify:
+ name: verify with maven
+ runs-on: ubuntu-22.04
+ if: ${{ github.event_name != 'push' }}
+ env:
+ MAVEN_OPTS: "-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=4096m -Xss8m"
+ SKIP_NPM_CONFIG: false
+ NPMREGISTRY: https://registry.npmjs.org
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Set up JDK 11 for x64
+ uses: actions/setup-java@v5
+ with:
+ distribution: 'temurin'
+ architecture: x64
+ java-version: |
+ 11
+
+ - uses: s4u/maven-settings-action@v4.0.0
+ with:
+ sonatypeSnapshots: true
+
+ - name: Build the Maven verify phase
+ run: mvn -B -V clean verify -Prun-its -Pci --global-toolchains .github/workflows/toolchains.xml
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 416a0b3bd9..0000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,129 +0,0 @@
-def artifact_glob="deployments/launcher/target/*.tar.gz"
-def artifact="deployments/launcher/target/*-skinny.tar.gz"
-def data_artifact="deployments/launcher/target/*-data.tar.gz"
-
-def ocp_map = '/mnt/ocp/jenkins-openshift-mappings.json'
-def bc_section = 'build-configs'
-
-def my_bc = null
-
-pipeline {
- agent { label 'maven-jdk11' }
- stages {
- stage('Prepare') {
- steps {
- sh 'printenv'
- }
- }
- stage('Build & Functional Test') {
- when {
- expression { env.CHANGE_ID != null } // Pull request
- }
- steps {
- withEnv(['JAVA_HOME=/usr/lib/jvm/java-11-openjdk', 'JAVA_11_HOME=/usr/lib/jvm/java-11-openjdk', 'SKIP_NPM_CONFIG=false']){
- sh 'mvn -B -V clean verify -Prun-its -Pci --global-toolchains toolchains.xml'
- }
- }
- }
- stage('Load OCP Mappings') {
- when {
- allOf {
- expression { env.CHANGE_ID == null } // Not pull request
- }
- }
- steps {
- echo "Load OCP Mapping document"
- script {
- def exists = fileExists ocp_map
- if (exists){
- def jsonObj = readJSON file: ocp_map
- if (bc_section in jsonObj){
- if (env.GIT_URL in jsonObj[bc_section]) {
- echo "Found BC for Git repo: ${env.GIT_URL}"
- if (env.BRANCH_NAME in jsonObj[bc_section][env.GIT_URL]) {
- my_bc = jsonObj[bc_section][env.GIT_URL][env.BRANCH_NAME]
- } else {
- my_bc = jsonObj[bc_section][env.GIT_URL]['default']
- }
-
- echo "Using BuildConfig: ${my_bc}"
- }
- else {
- echo "Git URL: ${env.GIT_URL} not found in BC mapping."
- }
- }
- else {
- "BC mapping is invalid! No ${bc_section} sub-object found!"
- }
- }
- else {
- echo "JSON configuration file not found: ${ocp_map}"
- }
-
- // if ( my_bc == null ) {
- // error("No valid BuildConfig reference found for Git URL: ${env.GIT_URL} with branch: ${env.BRANCH_NAME}")
- // }
- }
- }
- }
- stage('Build') {
- when {
- allOf {
- expression { my_bc != null }
- expression { env.CHANGE_ID == null } // Not pull request
- }
- }
- steps {
- withEnv(['JAVA_HOME=/usr/lib/jvm/java-11-openjdk']){
- sh 'mvn -B -V clean install -DskipNpmConfig=false --global-toolchains toolchains.xml'
- }
- }
- }
- stage('Deploy') {
- when {
- allOf {
- expression { my_bc != null }
- expression { env.CHANGE_ID == null } // Not pull request
- }
- }
- steps {
- echo "Deploy"
- withEnv(['JAVA_HOME=/usr/lib/jvm/java-11-openjdk', 'JAVA_11_HOME=/usr/lib/jvm/java-11-openjdk']){
- sh 'mvn help:effective-settings -B -V -DskipTests=true -DskipNpmConfig=false deploy -e --global-toolchains toolchains.xml'
- }
- }
- }
- stage('Archive') {
- steps {
- echo "Archive"
- archiveArtifacts artifacts: "$artifact_glob", fingerprint: true
- }
- }
- stage('Build & Push Image') {
- when {
- allOf {
- expression { my_bc != null }
- expression { env.CHANGE_ID == null } // Not pull request
- }
- }
- steps {
- script {
- def artifact_file = sh(script: "ls $artifact", returnStdout: true)?.trim()
- def tarball_url = "${BUILD_URL}artifact/$artifact_file"
- openshift.withCluster() {
- openshift.withProject() {
- echo "Starting image build: ${openshift.project()}:${my_bc}"
- def bc = openshift.selector("bc", my_bc)
-
- def data_artifact_file = sh(script: "ls $data_artifact", returnStdout: true)?.trim()
- def data_tarball_url = "${BUILD_URL}artifact/$data_artifact_file"
-
- def buildSel = bc.startBuild("-e tarball_url=${tarball_url} -e data_tarball_url=${data_tarball_url}")
- buildSel.logs("-f")
- }
- }
- }
- }
- }
- }
-}
diff --git a/addons/content-browse/common/pom.xml b/addons/content-browse/common/pom.xml
index 65647a9091..e233003216 100644
--- a/addons/content-browse/common/pom.xml
+++ b/addons/content-browse/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-content-browse-common
Indy :: Add-Ons :: Directory Content Browse :: Common
diff --git a/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java b/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
index 8dc6087782..a9b7d83873 100644
--- a/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
+++ b/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
@@ -23,7 +23,6 @@
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.util.RequestContextHelper;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
@@ -70,7 +69,6 @@ public ContentBrowseController( final StoreDataManager storeManager, final Conte
this.contentManager = contentManager;
}
- @Measure
public ContentBrowseResult browseContent( final StoreKey storeKey, final String path, final String browseBaseUri,
final String contentBaseUri, final UriFormatter uriFormatter,
EventMetadata eventMetadata )
diff --git a/addons/content-browse/ftests/pom.xml b/addons/content-browse/ftests/pom.xml
index b280060bd0..7db5c212a6 100644
--- a/addons/content-browse/ftests/pom.xml
+++ b/addons/content-browse/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-ftests-content-browse
diff --git a/addons/content-browse/jaxrs/pom.xml b/addons/content-browse/jaxrs/pom.xml
index 06e5bb0eea..f7956063e7 100644
--- a/addons/content-browse/jaxrs/pom.xml
+++ b/addons/content-browse/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-content-browse-jaxrs
diff --git a/addons/content-browse/pom.xml b/addons/content-browse/pom.xml
index a7ab8f23a1..754563866e 100644
--- a/addons/content-browse/pom.xml
+++ b/addons/content-browse/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-content-browse
Indy :: Add-Ons :: Directory Content Browse :: Parent
diff --git a/addons/content-browse/ui/package-lock.json b/addons/content-browse/ui/package-lock.json
index 177cf3ce45..5bf91c4f07 100644
--- a/addons/content-browse/ui/package-lock.json
+++ b/addons/content-browse/ui/package-lock.json
@@ -20,8 +20,8 @@
"@babel/preset-env": "^7.22.20",
"@babel/preset-react": "^7.22.15",
"babel-loader": "^9.1.3",
- "terser-webpack-plugin": "^5.3.7",
- "webpack": "^5.88.2",
+ "terser-webpack-plugin": "^5.4.0",
+ "webpack": "^5.94.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
}
@@ -95,20 +95,6 @@
"node": ">=8"
}
},
- "node_modules/@babel/cli/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@babel/cli/node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -148,20 +134,6 @@
"node": ">= 6"
}
},
- "node_modules/@babel/cli/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@babel/cli/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -215,17 +187,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@babel/cli/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
"node_modules/@babel/cli/node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -261,20 +222,6 @@
"node": ">=6"
}
},
- "node_modules/@babel/cli/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/@babel/code-frame": {
"version": "7.22.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
@@ -2193,34 +2140,33 @@
}
},
"node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
- "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
@@ -2234,14 +2180,13 @@
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@leichtgewicht/ip-codec": {
@@ -2301,32 +2246,10 @@
"@types/node": "*"
}
},
- "node_modules/@types/eslint": {
- "version": "8.4.10",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
- "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz",
- "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true
},
"node_modules/@types/express": {
@@ -2447,9 +2370,9 @@
}
},
"node_modules/@webassemblyjs/ast": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
- "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
"dev": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.11.6",
@@ -2469,9 +2392,9 @@
"dev": true
},
"node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
- "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
"dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
@@ -2492,15 +2415,15 @@
"dev": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
- "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/wasm-gen": "1.12.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
@@ -2528,28 +2451,28 @@
"dev": true
},
"node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
- "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-opt": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6",
- "@webassemblyjs/wast-printer": "1.11.6"
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
- "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
"@webassemblyjs/leb128": "1.11.6",
@@ -2557,24 +2480,24 @@
}
},
"node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
- "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6"
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
- "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-api-error": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
@@ -2583,12 +2506,12 @@
}
},
"node_modules/@webassemblyjs/wast-printer": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
- "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.12.1",
"@xtuc/long": "4.2.2"
}
},
@@ -2675,10 +2598,10 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"dev": true,
"peerDependencies": {
"acorn": "^8"
@@ -2864,6 +2787,76 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/body-parser": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/body-parser/node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/bonjour-service": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz",
@@ -2888,6 +2881,18 @@
"concat-map": "0.0.1"
}
},
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/browserslist": {
"version": "4.22.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
@@ -2927,9 +2932,9 @@
"dev": true
},
"node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2937,14 +2942,19 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3067,24 +3077,55 @@
}
},
"node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
"debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
+ "node_modules/compression/node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -3103,11 +3144,10 @@
}
},
"node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -3118,6 +3158,15 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
@@ -3183,6 +3232,23 @@
"node": ">= 10"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -3203,6 +3269,16 @@
"node": ">= 0.6"
}
},
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
"node_modules/detect-node": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
@@ -3233,9 +3309,8 @@
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true,
- "license": "MIT"
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.576",
@@ -3244,19 +3319,18 @@
"dev": true
},
"node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -3279,6 +3353,27 @@
"node": ">=4"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
@@ -3369,9 +3464,8 @@
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -3418,38 +3512,37 @@
}
},
"node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
+ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
"dev": true,
- "license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.1",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.5.0",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.2.0",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
- "qs": "6.11.0",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -3481,41 +3574,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/express/node_modules/body-parser": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
- "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.1",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/express/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/express/node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -3529,52 +3587,11 @@
"node": ">= 0.6"
}
},
- "node_modules/express/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "node_modules/express/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/express/node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
"engines": {
"node": ">= 0.8"
}
@@ -3594,7 +3611,6 @@
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -3610,8 +3626,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true,
- "license": "ISC"
+ "dev": true
},
"node_modules/express/node_modules/ipaddr.js": {
"version": "1.9.1",
@@ -3623,26 +3638,6 @@
"node": ">= 0.10"
}
},
- "node_modules/express/node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/express/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/express/node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -3653,29 +3648,6 @@
"node": ">= 0.6"
}
},
- "node_modules/express/node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/express/node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -3690,38 +3662,6 @@
"node": ">= 0.10"
}
},
- "node_modules/express/node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/express/node_modules/raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -3743,78 +3683,21 @@
],
"license": "MIT"
},
- "node_modules/express/node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/express/node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/express/node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true,
- "license": "ISC"
+ "dev": true
},
"node_modules/express/node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
- "node_modules/express/node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -3852,6 +3735,45 @@
"node": ">=0.8.0"
}
},
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/find-cache-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
@@ -3968,9 +3890,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.4",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
- "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"dev": true,
"funding": [
{
@@ -3990,9 +3912,8 @@
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -4018,12 +3939,28 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "license": "MIT"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
@@ -4036,15 +3973,19 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
- "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4088,8 +4029,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true,
- "license": "BSD-2-Clause"
+ "dev": true
},
"node_modules/globals": {
"version": "11.12.0",
@@ -4100,12 +4040,23 @@
"node": ">=4"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
- "license": "ISC"
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
},
"node_modules/handle-thing": {
"version": "2.0.1",
@@ -4136,12 +4087,35 @@
"node": ">=4"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -4149,6 +4123,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
@@ -4239,32 +4225,6 @@
}
}
},
- "node_modules/http-proxy-middleware/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/http-proxy-middleware/node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -4288,16 +4248,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/http-proxy-middleware/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
"node_modules/http-proxy-middleware/node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -4312,19 +4262,6 @@
"node": ">=8.6"
}
},
- "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -4340,7 +4277,6 @@
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -4435,6 +4371,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
"node_modules/is-plain-obj": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
@@ -4661,9 +4606,8 @@
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -4682,11 +4626,13 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
"dev": true,
- "license": "MIT"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge-stream": {
"version": "2.0.0",
@@ -4705,6 +4651,18 @@
"node": ">= 0.6"
}
},
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -4746,9 +4704,9 @@
"license": "ISC"
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -4797,9 +4755,9 @@
"license": "MIT"
},
"node_modules/node-forge": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
- "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz",
+ "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==",
"dev": true,
"license": "(BSD-3-Clause OR GPL-2.0)",
"engines": {
@@ -4826,11 +4784,13 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
"dev": true,
- "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -4842,10 +4802,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4950,11 +4922,10 @@
}
},
"node_modules/parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -4997,11 +4968,10 @@
"license": "MIT"
},
"node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true,
- "license": "MIT"
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "dev": true
},
"node_modules/picocolors": {
"version": "1.0.0",
@@ -5010,9 +4980,9 @@
"dev": true
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5062,14 +5032,19 @@
"node": ">=6"
}
},
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "safe-buffer": "^5.1.0"
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/range-parser": {
@@ -5082,6 +5057,67 @@
"node": ">= 0.6"
}
},
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/raw-body/node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -5300,8 +5336,7 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/scheduler": {
"version": "0.23.0",
@@ -5312,19 +5347,19 @@
}
},
"node_modules/schema-utils": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
- "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
- "ajv": "^8.8.0",
+ "ajv": "^8.9.0",
"ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.0.0"
+ "ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
@@ -5397,14 +5432,89 @@
"semver": "bin/semver"
}
},
- "node_modules/serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "node_modules/send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
- "license": "BSD-3-Clause",
"dependencies": {
- "randombytes": "^2.1.0"
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/serve-index": {
@@ -5426,6 +5536,38 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
@@ -5489,15 +5631,18 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5703,13 +5848,13 @@
}
},
"node_modules/terser": {
- "version": "5.16.6",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz",
- "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==",
+ "version": "5.31.6",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
+ "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
"dev": true,
"dependencies": {
- "@jridgewell/source-map": "^0.3.2",
- "acorn": "^8.5.0",
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
@@ -5721,16 +5866,16 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
- "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz",
+ "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.5"
+ "schema-utils": "^4.3.0",
+ "terser": "^5.31.1"
},
"engines": {
"node": ">= 10.13.0"
@@ -5754,25 +5899,6 @@
}
}
},
- "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
- "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -5789,16 +5915,40 @@
"node": ">=4"
}
},
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.6"
}
},
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -5842,9 +5992,8 @@
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -5927,11 +6076,10 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -5951,34 +6099,33 @@
}
},
"node_modules/webpack": {
- "version": "5.89.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
- "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.0",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
- "browserslist": "^4.14.5",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
+ "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.7",
- "watchpack": "^2.4.0",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"bin": {
@@ -6052,11 +6199,10 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
- "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
+ "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"colorette": "^2.0.10",
"memfs": "^3.4.3",
@@ -6158,19 +6304,6 @@
"node": ">=8"
}
},
- "node_modules/webpack-dev-server/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/webpack-dev-server/node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -6199,19 +6332,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/webpack-dev-server/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/webpack-dev-server/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -6261,16 +6381,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/webpack-dev-server/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
"node_modules/webpack-dev-server/node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -6294,19 +6404,6 @@
"node": ">=8.10.0"
}
},
- "node_modules/webpack-dev-server/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/webpack-merge": {
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
@@ -6405,9 +6502,9 @@
"license": "ISC"
},
"node_modules/ws": {
- "version": "8.14.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
- "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"engines": {
"node": ">=10.0.0"
diff --git a/addons/content-browse/ui/package.json b/addons/content-browse/ui/package.json
index a4812111e7..f707df813b 100644
--- a/addons/content-browse/ui/package.json
+++ b/addons/content-browse/ui/package.json
@@ -17,10 +17,10 @@
"@babel/plugin-transform-class-properties": "^7.22.5",
"@babel/plugin-transform-modules-commonjs": "^7.23.0",
"babel-loader": "^9.1.3",
- "webpack": "^5.88.2",
+ "webpack": "^5.94.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
- "terser-webpack-plugin": "^5.3.7"
+ "terser-webpack-plugin": "^5.4.0"
},
"scripts": {
"webpack": "node node_modules/webpack/bin/webpack.js",
diff --git a/addons/content-browse/ui/pom.xml b/addons/content-browse/ui/pom.xml
index 8e2f7219dc..c2fdc6cdfe 100644
--- a/addons/content-browse/ui/pom.xml
+++ b/addons/content-browse/ui/pom.xml
@@ -20,7 +20,7 @@
indy-content-browse
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/diagnostics/common/pom.xml b/addons/diagnostics/common/pom.xml
index 14c93dc701..27373bd9d6 100644
--- a/addons/diagnostics/common/pom.xml
+++ b/addons/diagnostics/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-diagnostics-common
Indy :: Add-Ons :: Diagnostic Tools :: Common
diff --git a/addons/diagnostics/ftests/pom.xml b/addons/diagnostics/ftests/pom.xml
index e3c21007d6..be9dd84141 100644
--- a/addons/diagnostics/ftests/pom.xml
+++ b/addons/diagnostics/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-ftests-diagnostics
diff --git a/addons/diagnostics/jaxrs/pom.xml b/addons/diagnostics/jaxrs/pom.xml
index 9e06aab585..c8f41e2a70 100644
--- a/addons/diagnostics/jaxrs/pom.xml
+++ b/addons/diagnostics/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-diagnostics-jaxrs
diff --git a/addons/diagnostics/pom.xml b/addons/diagnostics/pom.xml
index 1bc94a36c9..cbbc2f7c46 100644
--- a/addons/diagnostics/pom.xml
+++ b/addons/diagnostics/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-diagnostics
Indy :: Add-Ons :: Diagnostic Tools :: Parent
diff --git a/addons/event-publisher/common/pom.xml b/addons/event-publisher/common/pom.xml
index 22e2a8bcfe..c44a752ce3 100644
--- a/addons/event-publisher/common/pom.xml
+++ b/addons/event-publisher/common/pom.xml
@@ -20,7 +20,7 @@
indy-event-publisher
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/event-publisher/common/src/main/java/org/commonjava/indy/event/publisher/KafkaEventPublisher.java b/addons/event-publisher/common/src/main/java/org/commonjava/indy/event/publisher/KafkaEventPublisher.java
index 02be6e5332..dbad8f08dc 100644
--- a/addons/event-publisher/common/src/main/java/org/commonjava/indy/event/publisher/KafkaEventPublisher.java
+++ b/addons/event-publisher/common/src/main/java/org/commonjava/indy/event/publisher/KafkaEventPublisher.java
@@ -50,6 +50,7 @@
import java.util.Date;
import java.util.Map;
+import static org.commonjava.indy.core.content.ContentMetadataGenerator.FORCE_CHECKSUM_AND_WRITE;
import static org.commonjava.maven.galley.util.LocationUtils.ATTR_PATH_ENCODE;
import static org.commonjava.maven.galley.util.LocationUtils.PATH_ENCODE_BASE64;
@@ -156,6 +157,7 @@ private void transformFileEvent( org.commonjava.maven.galley.event.FileEvent gal
fileEvent.setTimestamp( new Date() );
+ galleyMetadata.set( FORCE_CHECKSUM_AND_WRITE, Boolean.FALSE );
TransferMetadata artifactData = contentDigester.digest( affectedStore, path, galleyMetadata );
fileEvent.setMd5( artifactData.getDigests().get( ContentDigest.MD5 ) );
fileEvent.setSha1( artifactData.getDigests().get( ContentDigest.SHA_1 ) );
diff --git a/addons/event-publisher/pom.xml b/addons/event-publisher/pom.xml
index 035e993aa0..bcec98fa7d 100644
--- a/addons/event-publisher/pom.xml
+++ b/addons/event-publisher/pom.xml
@@ -20,7 +20,7 @@
indy-addons
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/folo/common/pom.xml b/addons/folo/common/pom.xml
index de0d9943e0..79d124a764 100644
--- a/addons/folo/common/pom.xml
+++ b/addons/folo/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-folo-common
Indy :: Add-Ons :: Folo Usage Tracker :: Common
diff --git a/addons/folo/ftests/pom.xml b/addons/folo/ftests/pom.xml
index 2f4c9d69a2..e8eccc0abb 100644
--- a/addons/folo/ftests/pom.xml
+++ b/addons/folo/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-ftests-folo
diff --git a/addons/folo/jaxrs/pom.xml b/addons/folo/jaxrs/pom.xml
index 63fdbba4cb..de4f6daae6 100644
--- a/addons/folo/jaxrs/pom.xml
+++ b/addons/folo/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-folo-jaxrs
diff --git a/addons/folo/pom.xml b/addons/folo/pom.xml
index 5d692f4942..10f516f3e5 100644
--- a/addons/folo/pom.xml
+++ b/addons/folo/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-folo
Indy :: Add-Ons :: Folo Usage Tracker :: Parent
diff --git a/addons/koji/common/pom.xml b/addons/koji/common/pom.xml
index a2208a548a..c8b45451ac 100644
--- a/addons/koji/common/pom.xml
+++ b/addons/koji/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-koji-common
Indy :: Add-Ons :: Koji Integration :: Common
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
index 0706a58cac..1a02ad632b 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
@@ -28,7 +28,6 @@
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.koji.conf.IndyKojiConfig;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
@@ -137,7 +136,6 @@ public boolean isAuthorized( String path, EventMetadata eventMetadata, ProjectRe
return isAuthorized( path, eventMetadata, ref, build, session, new HashMap<>() );
}
- @Measure
public boolean isAuthorized( String path, EventMetadata eventMetadata, ProjectRef ref, KojiBuildInfo build,
KojiSessionInfo session, Map seenBuildArchives )
throws KojiClientException
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
index df4d29f638..28dcb71329 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
@@ -43,7 +43,6 @@
import org.commonjava.maven.galley.model.Transfer;
import org.commonjava.maven.galley.model.TransferOperation;
import org.commonjava.maven.galley.spi.nfc.NotFoundCache;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -129,7 +128,6 @@ public abstract class KojiContentManagerDecorator
private KojiPathPatternFormatter pathFormatter;
@Override
- @Measure
public boolean exists( ArtifactStore store, String path )
throws IndyWorkflowException
{
@@ -165,7 +163,6 @@ public Transfer retrieve( final ArtifactStore store, final String path )
}
@Override
- @Measure
public Transfer retrieve( final ArtifactStore store, final String path, final EventMetadata eventMetadata )
throws IndyWorkflowException
{
@@ -251,7 +248,6 @@ public Transfer getTransfer( final ArtifactStore store, final String path, final
return result;
}
- @Measure
private T findKojiBuildAnd( ArtifactStore store, String path, EventMetadata eventMetadata, T defValue, KojiBuildAction action )
throws IndyWorkflowException
{
@@ -566,13 +562,13 @@ private Group adjustTargetGroup( final RemoteRepository buildRepo, final Group s
"Adding remote repository for Koji build: "
+ buildRepo.getMetadata( NVR ) );
- storeDataManager.storeArtifactStore( targetGroup, changeSummary, false, true, new EventMetadata() );
+ // storeDataManager.storeArtifactStore( targetGroup, changeSummary, false, true, new EventMetadata() );
+ // Use repo service API to append the member of group instead of to override during target group update.
+ storeDataManager.addConstituentToGroup( targetGroup.getKey(), buildRepo.getKey() );
}
- catch ( IndyDataException e )
+ catch ( IndyWorkflowException e )
{
- wfEx.set( new IndyWorkflowException( "Cannot store target-group: %s changes for: %s. Error: %s", e,
- targetGroup.getName(), buildRepo.getMetadata( NVR ),
- e.getMessage() ) );
+ wfEx.set( e );
return null;
}
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
index 12c67af69a..aaaa63610e 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
@@ -59,7 +59,6 @@
import org.commonjava.maven.galley.model.ConcreteResource;
import org.commonjava.maven.galley.model.Transfer;
import org.commonjava.maven.galley.spi.nfc.NotFoundCache;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.infinispan.Cache;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.annotation.ClientCacheEntryExpired;
@@ -266,7 +265,6 @@ private void clearPaths( final Set affected, final String path )
}
@Override
- @Measure
public Metadata getMetadata( StoreKey targetKey, String path )
{
Logger logger = LoggerFactory.getLogger( getClass() );
@@ -378,7 +376,6 @@ public Metadata getMetadata( StoreKey targetKey, String path )
}
- @Measure
private Metadata executeKojiMetadataLookup(ProjectRef ga, String path )
throws KojiClientException, IndyWorkflowException
{
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
index 2cf8d75995..6fa3bd7bf8 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
@@ -82,17 +82,15 @@ public Set getPatterns( final StoreKey inStore, ArtifactRef artifactRef,
if ( pattern != null )
{
patterns.add( pattern );
- }
- }
- if ( !patterns.isEmpty() )
- {
- String meta = getMetaString( artifactRef ); // Add metadata.xml to path mask patterns
- if ( meta != null )
- {
- patterns.add( meta );
+ String meta = getMetaString( ar ); // Add metadata.xml of the koji archive to path mask patterns
+ if ( meta != null )
+ {
+ patterns.add( meta );
+ }
}
}
+
return patterns;
}
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRepairManager.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRepairManager.java
index 4f13febe10..fc9882b59c 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRepairManager.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRepairManager.java
@@ -635,6 +635,128 @@ public KojiRepairResult repairMetadataTimeout( KojiRepairRequest request, String
return repairMetadataTimeout( request, user, false );
}
+ public KojiMultiRepairResult repairAllVol( final String user, boolean isDryRun )
+ throws KojiRepairException, IndyWorkflowException
+ {
+ KojiMultiRepairResult result = new KojiMultiRepairResult();
+
+ if ( opLock.tryLock() )
+ {
+ try
+ {
+ List kojiRemotes = getAllKojiRemotes();
+
+ final String newStorageRoot = config.getStorageRootUrl();
+ if ( newStorageRoot == null || newStorageRoot.trim().isEmpty() )
+ {
+ throw new KojiRepairException( "Storage root URL is not configured." );
+ }
+
+ DrainingExecutorCompletionService repairService =
+ new DrainingExecutorCompletionService<>( repairExecutor );
+
+ detectOverloadVoid( () -> kojiRemotes.forEach( r -> repairService.submit( () -> {
+ logger.info( "Attempting to repair volume URL in Koji remote: {}", r.getKey() );
+
+ try
+ {
+ return repairRepositoryVol( r, user, isDryRun, newStorageRoot );
+ }
+ catch ( KojiRepairException e )
+ {
+ logger.error( "Failed to execute repair for: " + r.getKey(), e );
+ }
+
+ return null;
+ } ) ) );
+
+ List results = new ArrayList<>();
+ try
+ {
+ repairService.drain( r -> {
+ if ( r != null )
+ {
+ results.add( r );
+ }
+ } );
+ }
+ catch ( InterruptedException | ExecutionException e )
+ {
+ logger.error( "Failed to repair volume URLs.", e );
+ }
+
+ result.setResults( results );
+ }
+ catch ( IndyDataException e )
+ {
+ throw new KojiRepairException( "Failed to list Koji remote repositories for repair. Reason: %s", e, e.getMessage() );
+ }
+ finally
+ {
+ opLock.unlock();
+ }
+ }
+ else
+ {
+ throw new KojiRepairException( "Koji repair manager is busy." );
+ }
+
+ return result;
+ }
+
+ private KojiRepairResult repairRepositoryVol( RemoteRepository repository, String user, boolean isDryRun, String newStorageRoot )
+ throws KojiRepairException
+ {
+ StoreKey storeKey = repository.getKey();
+ KojiRepairRequest request = new KojiRepairRequest( storeKey, isDryRun );
+ KojiRepairResult ret = new KojiRepairResult( request );
+
+ String oldUrl = repository.getUrl();
+
+ // Find /brewroot/ and replace everything before it with the new storage root
+ int brewrootIndex = oldUrl.indexOf( "/brewroot/" );
+ if ( brewrootIndex == -1 )
+ {
+ String error = String.format( "Repository URL does not contain '/brewroot/': %s", oldUrl );
+ logger.warn( error );
+ return ret.withError( error );
+ }
+
+ // Get the part after /brewroot (e.g., /vol/... or /packages/...)
+ String suffix = oldUrl.substring( brewrootIndex + "/brewroot".length() );
+ String newUrl = newStorageRoot + suffix;
+
+ boolean changed = !oldUrl.equals( newUrl );
+ if ( changed )
+ {
+ KojiRepairResult.RepairResult repairResult = new KojiRepairResult.RepairResult( storeKey );
+ repairResult.withPropertyChange( "url", oldUrl, newUrl );
+ ret.withResult( repairResult );
+
+ if ( !isDryRun )
+ {
+ try
+ {
+ repository.setUrl( newUrl );
+ ChangeSummary changeSummary = new ChangeSummary( user, "Repair " + storeKey + " volume URL to use new storage root" );
+ boolean fireEvents = false;
+ boolean skipIfExists = false;
+ storeManager.storeArtifactStore( repository, changeSummary, skipIfExists, fireEvents, new EventMetadata() );
+ }
+ catch ( IndyDataException e )
+ {
+ throw new KojiRepairException( "Failed to repair store: %s. Reason: %s", e, storeKey, e.getMessage() );
+ }
+ }
+ }
+ else
+ {
+ ret.withNoChange( storeKey );
+ }
+
+ return ret;
+ }
+
private List getAllKojiRemotes()
throws IndyDataException
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
index f6ec48b726..5d09b4e75d 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
@@ -24,9 +24,7 @@
import org.commonjava.indy.action.ShutdownAction;
import org.commonjava.indy.action.StartupAction;
import org.commonjava.indy.koji.conf.IndyKojiConfig;
-import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.atlas.maven.ident.ref.ProjectRef;
-import org.commonjava.o11yphant.metrics.api.MetricRegistry;
import org.commonjava.util.jhttpc.auth.MemoryPasswordManager;
import org.commonjava.util.jhttpc.auth.PasswordManager;
import org.commonjava.util.jhttpc.auth.PasswordType;
@@ -57,12 +55,6 @@ public class KojijiProvider
private Locker versionMetadataLocks;
- @Inject
- private IndyMetricsConfig indyMetricsConfig;
-
- @Inject
- private MetricRegistry metricRegistry;
-
@Inject
@WeftManaged
@ExecutorConfig( named = "koji-queries", threads = 4 )
@@ -117,14 +109,7 @@ public void start() throws IndyLifecycleException
try
{
- if ( indyMetricsConfig.isKojiMetricEnabled() )
- {
- kojiClient = new KojiClient( config, kojiPasswordManager, kojiExecutor, metricRegistry );
- }
- else
- {
- kojiClient = new KojiClient( config, kojiPasswordManager, kojiExecutor );
- }
+ kojiClient = new KojiClient( config, kojiPasswordManager, kojiExecutor );
}
catch ( KojiClientException e )
{
diff --git a/addons/koji/common/src/test/java/org/commonjava/indy/koji/content/KojiMavenMetadataProviderTest.java b/addons/koji/common/src/test/java/org/commonjava/indy/koji/content/KojiMavenMetadataProviderTest.java
index 963d524cb5..3bd14c1c20 100644
--- a/addons/koji/common/src/test/java/org/commonjava/indy/koji/content/KojiMavenMetadataProviderTest.java
+++ b/addons/koji/common/src/test/java/org/commonjava/indy/koji/content/KojiMavenMetadataProviderTest.java
@@ -333,16 +333,16 @@ private void initKojiClient( String exchangeName, boolean verifyArtifacts )
GalleyCore galley = new GalleyCoreBuilder(
new FileCacheProviderFactory( temp.newFolder( "cache" ) ) ).withEnabledTransports(
new HttpClientTransport( new HttpImpl( new org.commonjava.maven.galley.auth.MemoryPasswordManager() ),
- new IndyObjectMapper( true ), new GlobalHttpConfiguration(), null, null ) ).build();
+ new IndyObjectMapper( true ), new GlobalHttpConfiguration().getGlobalProxyConfig()) ).build();
WeftExecutorService rescanService =
- new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
DownloadManager downloadManager = new DefaultDownloadManager( storeDataManager, galley.getTransferManager(),
new IndyLocationExpander( storeDataManager ), rescanService );
WeftExecutorService contentAccessService =
- new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
DirectContentAccess directContentAccess = new DefaultDirectContentAccess( downloadManager, contentAccessService );
@@ -357,7 +357,7 @@ private void initKojiClient( String exchangeName, boolean verifyArtifacts )
contentDigester, directContentAccess, cacheManager );
WeftExecutorService kojiMDService =
- new PoolWeftExecutorService( "test-koji-metadata-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-koji-metadata-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
provider = new KojiMavenMetadataProvider( this.cache, kojiClient, buildAuthority, kojiConfig, kojiMDService, cacheManager );
}
diff --git a/addons/koji/common/src/test/java/org/commonjava/indy/koji/util/PathMaskCheckerTest.java b/addons/koji/common/src/test/java/org/commonjava/indy/koji/util/PathMaskCheckerTest.java
new file mode 100644
index 0000000000..dd5f7d0638
--- /dev/null
+++ b/addons/koji/common/src/test/java/org/commonjava/indy/koji/util/PathMaskCheckerTest.java
@@ -0,0 +1,103 @@
+/**
+ * Copyright (C) 2011-2023 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * 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.
+ */
+package org.commonjava.indy.koji.util;
+
+import org.commonjava.indy.core.content.PathMaskChecker;
+import org.commonjava.indy.model.core.HostedRepository;
+import org.commonjava.indy.model.core.RemoteRepository;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.junit.Assert.*;
+
+public class PathMaskCheckerTest
+{
+
+ @Test
+ public void extractGroupIdPath() throws Exception
+ {
+ List> metadataFiles = List.of(
+ Map.entry("com/github/fge/msg-simple/maven-metadata.xml", "com/github/fge/"),
+ Map.entry("org/jboss/eap/jboss-eap-parent/maven-metadata.xml", "org/jboss/eap/"),
+ Map.entry("org/apache/lucene/lucene-core/maven-metadata.xml", "org/apache/lucene/"),
+ Map.entry("org/wildfly/security/wildfly-elytron/maven-metadata.xml", "org/wildfly/security/"),
+ Map.entry("io/dropwizard/metrics/metrics-core/maven-metadata.xml", "io/dropwizard/metrics/"),
+ Map.entry("org/jboss/spec/javax/el/jboss-el-api_3.0_spec/maven-metadata.xml", "org/jboss/spec/javax/el/")
+ );
+
+ for (var entry : metadataFiles)
+ {
+ assertEquals( entry.getValue(), PathMaskChecker.extractGroupIdPath(entry.getKey()) );
+ }
+ }
+
+ @Test
+ public void checkListingMask() throws Exception
+ {
+ HostedRepository hostedRepository = new HostedRepository(
+ "mvn-hosted"
+ );
+
+ RemoteRepository mrrcRepo = new RemoteRepository(
+ "mrrc-ga",
+ "http://example.url"
+ );
+ mrrcRepo.setPathMaskPatterns(
+ Set.of("r|.+[-.]redhat[-_]\\d+.*|")
+ );
+
+ RemoteRepository repositoryMatched = new RemoteRepository(
+ "koji-org.infinispan-infinispan-parent-9.4.2.Final_redhat_00001-2",
+ "http://example.url"
+ );
+ repositoryMatched.setPathMaskPatterns(
+ Set.of("r|org\\/infinispan\\/.+\\/9.4.2.Final-redhat-00001\\/.+|",
+ "org/infinispan/infinispan-query-dsl/maven-metadata.xml",
+ "r|org\\/infinispan\\/server\\/.+\\/9.4.2.Final-redhat-00001\\/.+|"));
+
+ RemoteRepository repositoryUnMatched = new RemoteRepository(
+ "koji-org.jboss.eap-jboss-eap-parent-7.2.0.GA_redhat_00002-2",
+ "http://example.url"
+ );
+ repositoryUnMatched.setPathMaskPatterns(
+ Set.of("r|org\\/jboss\\/eap\\/.+\\/7.2.0.GA-redhat-00002\\/.+|",
+ "org/jboss/eap/jboss-eap-parent/maven-metadata.xml"));
+
+ RemoteRepository repositoryWithMultipleGroupIds = new RemoteRepository(
+ "koji-com.sun.mail-all-1.6.1.redhat_1-1",
+ "http://example.url"
+ );
+ repositoryWithMultipleGroupIds.setPathMaskPatterns(
+ Set.of("javax/mail/javax.mail-api/maven-metadata.xml",
+ "com/sun/mail/javax.mail-api/maven-metadata.xml",
+ "r|javax\\/mail\\/.+\\/1.6.1.redhat-1\\/.+|",
+ "r|com\\/sun\\/mail\\/.+\\/1.6.1.redhat-1\\/.+|"));
+
+ assertTrue(PathMaskChecker.checkListingMask(repositoryMatched, "org/"));
+ assertTrue(PathMaskChecker.checkListingMask(repositoryMatched, "org/infinispan/"));
+ assertTrue(PathMaskChecker.checkListingMask(repositoryMatched, "org/infinispan/infinispan-component-annotations/"));
+ assertTrue(PathMaskChecker.checkListingMask(repositoryWithMultipleGroupIds, "com/sun/mail/"));
+ assertTrue(PathMaskChecker.checkListingMask(repositoryWithMultipleGroupIds, "javax/mail/"));
+ assertFalse(PathMaskChecker.checkListingMask(repositoryUnMatched, "org/infinispan/"));
+
+ assertTrue(PathMaskChecker.checkListingMask(hostedRepository, "org/infinispan/"));
+ assertTrue(PathMaskChecker.checkListingMask(mrrcRepo, "org/infinispan/"));
+ }
+
+}
diff --git a/addons/koji/jaxrs/pom.xml b/addons/koji/jaxrs/pom.xml
index 4364d1d711..2f10c311ea 100644
--- a/addons/koji/jaxrs/pom.xml
+++ b/addons/koji/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-koji-jaxrs
diff --git a/addons/koji/jaxrs/src/main/java/org/commonjava/indy/koji/bind/jaxrs/KojiRepairResource.java b/addons/koji/jaxrs/src/main/java/org/commonjava/indy/koji/bind/jaxrs/KojiRepairResource.java
index 13c7424f0c..a4b3f81db8 100644
--- a/addons/koji/jaxrs/src/main/java/org/commonjava/indy/koji/bind/jaxrs/KojiRepairResource.java
+++ b/addons/koji/jaxrs/src/main/java/org/commonjava/indy/koji/bind/jaxrs/KojiRepairResource.java
@@ -208,4 +208,33 @@ public KojiMultiRepairResult repairAllMetadataTimeout( final @Context HttpServle
return null;
}
+ @ApiOperation(
+ "Repair koji repository remote url /vol for all koji remote repositories by replacing the storage root URL." )
+ @ApiImplicitParam( name = "isDryRun", paramType = "query",
+ value = "boolean value to specify if this request is a dry run request", defaultValue = "false",
+ dataType = "java.lang.Boolean" )
+ @ApiResponse( code = 200, message = "Operation finished (consult response content for success/failure).",
+ response = KojiMultiRepairResult.class )
+ @POST
+ @Path( "/vol/all" )
+ @Consumes( ApplicationContent.application_json )
+ public KojiMultiRepairResult repairAllVolumes( final @Context HttpServletRequest servletRequest,
+ final @QueryParam( "isDryRun" ) Boolean isDryRun,
+ final @Context SecurityContext securityContext )
+ {
+ String user = securityManager.getUser( securityContext, servletRequest );
+ final boolean dryRun = isDryRun == null ? false : isDryRun;
+ try
+ {
+ return repairManager.repairAllVol( user, dryRun );
+ }
+ catch ( KojiRepairException | IndyWorkflowException e )
+ {
+ logger.error( e.getMessage(), e );
+ responseHelper.throwError( e );
+ }
+
+ return null;
+ }
+
}
diff --git a/addons/koji/pom.xml b/addons/koji/pom.xml
index 414eddbc09..07a5f80660 100644
--- a/addons/koji/pom.xml
+++ b/addons/koji/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-koji
Indy :: Add-Ons :: Koji Integration :: Parent
diff --git a/addons/path-mapped/common/pom.xml b/addons/path-mapped/common/pom.xml
index 20d66d7f2e..3c7ec43862 100644
--- a/addons/path-mapped/common/pom.xml
+++ b/addons/path-mapped/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-path-mapped-common
diff --git a/addons/path-mapped/common/src/main/java/org/commonjava/indy/pathmapped/cache/PathMappedMavenGACache.java b/addons/path-mapped/common/src/main/java/org/commonjava/indy/pathmapped/cache/PathMappedMavenGACache.java
index 434ff86ef7..6348906c3d 100644
--- a/addons/path-mapped/common/src/main/java/org/commonjava/indy/pathmapped/cache/PathMappedMavenGACache.java
+++ b/addons/path-mapped/common/src/main/java/org/commonjava/indy/pathmapped/cache/PathMappedMavenGACache.java
@@ -18,8 +18,10 @@
import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.ResultSetFuture;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
+import com.datastax.driver.core.exceptions.NoHostAvailableException;
import com.google.common.collect.Lists;
import org.commonjava.indy.action.IndyLifecycleException;
import org.commonjava.indy.action.StartupAction;
@@ -302,7 +304,7 @@ private void update( String ga, Set set )
BoundStatement bound = preparedStoresIncrement.bind();
bound.setSet( 0, set );
bound.setString( 1, ga );
- session.execute( bound );
+ executeSession( bound );
inMemoryCache.remove( ga ); // clear to force reloading
}
@@ -313,11 +315,11 @@ public void reduce( String ga, Set set, boolean isAsync )
bound.setString( 1, ga );
if ( isAsync )
{
- session.executeAsync( bound );
+ executeSession ( bound, true, ResultSetFuture.class );
}
else
{
- session.execute( bound );
+ executeSession( bound );
}
inMemoryCache.remove( ga ); // clear to force reloading
}
@@ -393,7 +395,7 @@ public Set getStoresContaining( String gaPath )
}
// query db
BoundStatement bound = preparedQueryByGA.bind( gaPath );
- ResultSet result = session.execute( bound );
+ ResultSet result = executeSession( bound );
Row row = result.one();
if ( row != null )
{
@@ -426,4 +428,41 @@ public boolean matchAny( List concreteStores )
}
return false;
}
+
+ private ResultSet executeSession ( BoundStatement bind )
+ {
+ return executeSession ( bind, false, ResultSet.class );
+ }
+
+ private T executeSession ( BoundStatement bind, boolean isAsync, Class type )
+ {
+ boolean exception = false;
+ T trackingRecord = null;
+ try
+ {
+ if ( session == null || session.isClosed() )
+ {
+ cassandraClient.close();
+ cassandraClient.init();
+ this.init();
+ }
+ trackingRecord = type.cast( isAsync ? session.executeAsync( bind ) : session.execute( bind ) );
+ }
+ catch ( NoHostAvailableException e )
+ {
+ exception = true;
+ logger.error( "Cannot connect to host, reconnect once more with new session.", e );
+ }
+ finally
+ {
+ if ( exception )
+ {
+ cassandraClient.close();
+ cassandraClient.init();
+ this.init();
+ trackingRecord = type.cast( isAsync ? session.executeAsync( bind ) : session.execute( bind ) );
+ }
+ }
+ return trackingRecord;
+ }
}
diff --git a/addons/path-mapped/jaxrs/pom.xml b/addons/path-mapped/jaxrs/pom.xml
index 356b504e9e..0c44b5000e 100644
--- a/addons/path-mapped/jaxrs/pom.xml
+++ b/addons/path-mapped/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-path-mapped-jaxrs
diff --git a/addons/path-mapped/model-java/pom.xml b/addons/path-mapped/model-java/pom.xml
index 5899fba836..5c8de70fea 100644
--- a/addons/path-mapped/model-java/pom.xml
+++ b/addons/path-mapped/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-path-mapped-model-java
diff --git a/addons/path-mapped/pom.xml b/addons/path-mapped/pom.xml
index d4be7b83f2..f99ce65c0d 100644
--- a/addons/path-mapped/pom.xml
+++ b/addons/path-mapped/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
indy-path-mapped
Indy :: Add-Ons :: Path Mapped :: Parent
diff --git a/addons/pkg-maven/common/pom.xml b/addons/pkg-maven/common/pom.xml
index 677df78a1d..da17cd9f40 100644
--- a/addons/pkg-maven/common/pom.xml
+++ b/addons/pkg-maven/common/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
index e04f642599..e916e27568 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
@@ -38,8 +38,6 @@
import org.apache.commons.lang3.StringUtils;
import org.commonjava.atlas.maven.ident.util.SnapshotUtils;
import org.commonjava.atlas.maven.ident.version.part.SnapshotPart;
-import org.commonjava.o11yphant.metrics.api.Timer;
-import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.maven.galley.event.EventMetadata;
import org.commonjava.maven.galley.io.AbstractTransferDecorator;
import org.commonjava.maven.galley.model.Location;
@@ -70,9 +68,6 @@ public class MavenContentsFilteringTransferDecorator
{
private final Logger logger = LoggerFactory.getLogger( this.getClass() );
- @Inject
- private DefaultMetricsManager metricsManager;
-
@Override
public OverriddenBooleanValue decorateExists( final Transfer transfer, final EventMetadata metadata )
{
@@ -96,7 +91,7 @@ public OutputStream decorateWrite( final OutputStream stream, final Transfer tra
if ( loc instanceof HttpLocation && ( !allowsSnapshots || !allowsReleases ) && transfer.getFullPath()
.endsWith( "maven-metadata.xml" ) )
{
- return new MetadataFilteringOutputStream( stream, allowsSnapshots, allowsReleases, transfer, metricsManager );
+ return new MetadataFilteringOutputStream( stream, allowsSnapshots, allowsReleases, transfer );
}
else
{
@@ -186,8 +181,6 @@ private boolean isArtifact( final String element, final String artifactId, final
private static class MetadataFilteringOutputStream
extends IdempotentCloseOutputStream
{
- private static final String TIMER = "io.maven.metadata.out.filter";
-
private final Logger logger = LoggerFactory.getLogger( this.getClass() );
private static final String LATEST = "([^<]+)";
@@ -206,17 +199,13 @@ private static class MetadataFilteringOutputStream
private Transfer transfer;
- private DefaultMetricsManager metricsManager;
-
private MetadataFilteringOutputStream( final OutputStream stream, final boolean allowsSnapshots,
- final boolean allowsReleases, Transfer transfer,
- final DefaultMetricsManager metricsManager )
+ final boolean allowsReleases, Transfer transfer )
{
super( stream );
this.allowsSnapshots = allowsSnapshots;
this.allowsReleases = allowsReleases;
this.transfer = transfer;
- this.metricsManager = metricsManager;
}
private String filterMetadata()
@@ -227,7 +216,6 @@ private String filterMetadata()
return "";
}
- Timer.Context timer = metricsManager == null ? null : metricsManager.startTimer( TIMER );
try
{
// filter versions from GA metadata
@@ -268,13 +256,6 @@ private String filterMetadata()
transfer.getPath() );
return buffer.toString();
}
- finally
- {
- if ( timer != null )
- {
- metricsManager.stopTimer( TIMER );
- }
- }
}
private List fetchVersions()
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
index b39aac5cd3..f862c908cb 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
@@ -42,7 +42,6 @@
import org.commonjava.indy.core.content.AbstractMergedContentGenerator;
import org.commonjava.indy.core.content.group.GroupMergeHelper;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
@@ -92,6 +91,7 @@
import static org.commonjava.atlas.maven.ident.util.SnapshotUtils.LOCAL_SNAPSHOT_VERSION_PART;
import static org.commonjava.atlas.maven.ident.util.SnapshotUtils.generateUpdateTimestamp;
import static org.commonjava.atlas.maven.ident.util.SnapshotUtils.getCurrentTimestamp;
+import static org.commonjava.indy.core.content.PathMaskChecker.checkMask;
import static org.commonjava.indy.core.content.PathMaskChecker.checkMavenMetadataMask;
import static org.commonjava.indy.core.content.group.GroupMergeHelper.GROUP_METADATA_EXISTS;
import static org.commonjava.indy.core.content.group.GroupMergeHelper.GROUP_METADATA_GENERATED;
@@ -99,7 +99,6 @@
import static org.commonjava.maven.galley.io.SpecialPathConstants.HTTP_METADATA_EXT;
import static org.commonjava.maven.galley.util.PathUtils.normalize;
import static org.commonjava.maven.galley.util.PathUtils.parentPath;
-import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan;
public class MavenMetadataGenerator
extends AbstractMergedContentGenerator
@@ -172,7 +171,7 @@ public class MavenMetadataGenerator
// don't need to inject since it's only used internally
private final Locker mergerLocks = new Locker<>();
- private static final int THREAD_WAITING_TIME_SECONDS = 300;
+ private static final int THREAD_WAITING_TIME_SECONDS = 240;
protected MavenMetadataGenerator()
{
@@ -208,7 +207,6 @@ public void clearAllMerged( ArtifactStore store, String...paths )
}
@Override
- @Measure
public Transfer generateFileContent( final ArtifactStore store, final String path, final EventMetadata eventMetadata )
throws IndyWorkflowException
{
@@ -376,7 +374,6 @@ public List generateDirectoryContent( final ArtifactStore store,
* @throws IndyWorkflowException
*/
@Override
- @Measure
public Transfer generateGroupFileContent( final Group group, final List members, final String path,
final EventMetadata eventMetadata )
throws IndyWorkflowException
@@ -627,7 +624,9 @@ private Metadata generateGroupMetadata( final Group group, final List generateMissing( ArtifactStore store, String toMergePath )
{
return ()->{
- addFieldToActiveSpan( "storekey", store.getKey().toString() );
- addFieldToActiveSpan( "path", toMergePath );
- addFieldToActiveSpan( "activity", "generateMissing" );
-
try
{
logger.trace( "Starting metadata generation: {}:{}", store.getKey(), toMergePath );
@@ -665,9 +660,6 @@ private Callable generateMissing( ArtifactStore store, String to
}
catch ( final Exception e )
{
- addFieldToActiveSpan( "error", e.getClass().getSimpleName() );
- addFieldToActiveSpan( "error.message", e.getMessage() );
-
String msg = String.format( "EXCLUDING Failed generated metadata: %s:%s. Reason: %s", store.getKey(),
toMergePath, e.getMessage() );
logger.error( msg, e );
@@ -677,6 +669,8 @@ private Callable generateMissing( ArtifactStore store, String to
logger.trace( "Ending metadata generation: {}:{}", store.getKey(), toMergePath );
}
+ logger.warn( "Transfer {}:{} not existed during maven metadata generator generateMissing.", store.getKey(),
+ toMergePath );
return new MetadataResult( store, null );
};
}
@@ -702,10 +696,6 @@ private void clearObsoleteFiles( Transfer item )
private Callable retrieveCached( final ArtifactStore store, final String toMergePath )
{
return ()->{
- addFieldToActiveSpan( "storekey", store.getKey().toString() );
- addFieldToActiveSpan( "path", toMergePath );
- addFieldToActiveSpan( "activity", "retrieveCached" );
-
Metadata memberMeta;
memberMeta = getMetaFromCache( store.getKey(), toMergePath );
@@ -809,6 +799,8 @@ private Metadata mergeProviderMetadata( final Group group, final Metadata master
detectOverloadVoid( () -> metadataProviders.forEach( provider -> svc.submit( ()->{
try
{
+ logger.info("Start to get metadata {} from the provider: {}", toMergePath, provider.getClass().getSimpleName());
+
return provider.getMetadata( group.getKey(), toMergePath );
}
catch ( IndyWorkflowException e )
@@ -827,6 +819,8 @@ private Metadata mergeProviderMetadata( final Group group, final Metadata master
svc.drain( metadata -> {
if ( metadata != null )
{
+ logger.info("Merging the metadata {} from the provider.", toMergePath);
+
merger.merge( master, metadata, group, toMergePath );
}
} );
@@ -846,14 +840,16 @@ private Metadata mergeProviderMetadata( final Group group, final Metadata master
private Callable downloadMissing( ArtifactStore store, String toMergePath )
{
return () -> {
- addFieldToActiveSpan( "storekey", store.getKey().toString() );
- addFieldToActiveSpan( "path", toMergePath );
- addFieldToActiveSpan( "activity", "downloadMissing" );
try
{
logger.trace( "Starting metadata download: {}:{}", store.getKey(), toMergePath );
+ if ( !checkMask( store, toMergePath ) )
+ {
+ logger.debug( "Transfer {}:{} skipped due to checkMask during maven metadata generator downloadMissing.",
+ store.getKey(), toMergePath );
+ return null;
+ }
Transfer memberMetaTxfr = fileManager.retrieveRaw( store, toMergePath, new EventMetadata() );
-
if ( exists( memberMetaTxfr ) )
{
final MetadataXpp3Reader reader = new MetadataXpp3Reader();
@@ -867,6 +863,8 @@ private Callable downloadMissing( ArtifactStore store, String to
}
else
{
+ logger.warn( "Transfer {}:{} not existed during maven metadata generator downloadMissing.",
+ store.getKey(), toMergePath );
return new MetadataResult( store, null );
}
}
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
index 247af8c908..0511e839d7 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
@@ -17,7 +17,6 @@
import org.commonjava.indy.content.DirectContentAccess;
import org.commonjava.indy.content.MergedContentAction;
-import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.slf4j.Logger;
@@ -50,7 +49,6 @@ public class MetadataMergeListener
* if that path of file changed in the member of #originatingStore
*/
@Override
- @Measure
public void clearMergedPath( ArtifactStore originatingStore, Set affectedGroups, String path )
{
logger.debug( "Clear merged path {}, origin: {}, affected: {}", path, originatingStore, affectedGroups );
diff --git a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
index 1fe2277b2c..96ec4038db 100644
--- a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
+++ b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
@@ -18,26 +18,24 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils;
import org.commonjava.indy.test.fixture.core.HttpTestFixture;
-import org.commonjava.maven.galley.config.TransportMetricConfig;
import org.commonjava.maven.galley.event.EventMetadata;
import org.commonjava.maven.galley.model.ConcreteResource;
-import org.commonjava.maven.galley.model.Location;
import org.commonjava.maven.galley.model.Transfer;
import org.commonjava.maven.galley.model.TransferOperation;
+import org.commonjava.maven.galley.proxy.NoOpProxySitesCache;
import org.commonjava.maven.galley.transport.htcli.internal.HttpDownload;
import org.commonjava.maven.galley.transport.htcli.model.SimpleHttpLocation;
-import org.commonjava.o11yphant.metrics.DefaultMetricRegistry;
import org.hamcrest.CoreMatchers;
import org.junit.Rule;
import org.junit.Test;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
-import static org.commonjava.o11yphant.metrics.util.MetricUtils.newDefaultMetricRegistry;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -47,33 +45,6 @@ public class MavenContentFilteringTransferDecoratorTest
@Rule
public HttpTestFixture fixture = new HttpTestFixture( "test", new MavenContentsFilteringTransferDecorator() );
- private static DefaultMetricRegistry metricRegistry = newDefaultMetricRegistry();
-
- private static TransportMetricConfig metricConfig = new TransportMetricConfig()
- {
- @Override
- public boolean isEnabled()
- {
- return true;
- }
-
- @Override
- public String getNodePrefix()
- {
- return null;
- }
-
- @Override
- public String getMetricUniqueName( Location location )
- {
- if ( location.getName().equals( "test" ) )
- {
- return location.getName();
- }
- return null;
- }
- };
-
@Test
public void metadataFilteringWhenSnapshotsNotAllowed() throws Exception
{
@@ -154,7 +125,7 @@ private Transfer getTestHttpTransfer(final String path, final String content) th
assertThat( transfer.exists(), equalTo( false ) );
HttpDownload dl = new HttpDownload( url, location, transfer, new HashMap<>(), new EventMetadata(),
- fixture.getHttp().getHttp(), new ObjectMapper(), true, metricRegistry, metricConfig );
+ fixture.getHttp().getHttp(), new ObjectMapper(), true, new ArrayList<>(), new NoOpProxySitesCache() );
return dl.call().getTransfer();
}
diff --git a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
index 6a50824eed..dc98d50366 100644
--- a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
+++ b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
@@ -100,7 +100,7 @@ public void setup()
final ExpiringMemoryNotFoundCache nfc = new ExpiringMemoryNotFoundCache( config );
WeftExecutorService rescanService =
- new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
final DownloadManager downloads = new DefaultDownloadManager( stores, fixture.getTransferManager(), locations, null, nfc, rescanService );
@@ -110,11 +110,11 @@ public void setup()
final GroupMergeHelper helper = new GroupMergeHelper( downloads );
WeftExecutorService contentAccessService =
- new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
DefaultDirectContentAccess contentAccess = new DefaultDirectContentAccess( downloads, contentAccessService );
WeftExecutorService mdService =
- new PoolWeftExecutorService( "test-md-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-md-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
generator = new MavenMetadataGenerator( contentAccess, stores, xml, types, merger, helper, new MemoryNotFoundCache(), mdService );
diff --git a/addons/pkg-maven/common/src/test/resources/logback-test.xml b/addons/pkg-maven/common/src/test/resources/logback-test.xml
index c9fe8e7810..4ccad076bd 100644
--- a/addons/pkg-maven/common/src/test/resources/logback-test.xml
+++ b/addons/pkg-maven/common/src/test/resources/logback-test.xml
@@ -63,7 +63,6 @@
-
diff --git a/addons/pkg-maven/ftests/pom.xml b/addons/pkg-maven/ftests/pom.xml
index 784a4f9c9e..229512aff8 100644
--- a/addons/pkg-maven/ftests/pom.xml
+++ b/addons/pkg-maven/ftests/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithHangRemoteTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithHangRemoteTest.java
new file mode 100644
index 0000000000..8b4ab2f387
--- /dev/null
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithHangRemoteTest.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (C) 2011-2023 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * 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.
+ */
+package org.commonjava.indy.pkg.maven.content;
+
+import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
+import org.commonjava.indy.model.core.Group;
+import org.commonjava.indy.model.core.HostedRepository;
+import org.commonjava.indy.model.core.RemoteRepository;
+import org.junit.Test;
+
+import java.io.InputStream;
+
+public class GroupMetadataMergeWithHangRemoteTest
+ extends AbstractContentManagementTest
+{
+ private static final String GROUP_G1_NAME = "G1";
+
+ private static final String GROUP_G2_NAME = "G2";
+
+ private static final String GROUP_G3_NAME = "G3";
+
+ private static final String REMOTE_A1_NAME = "A1";
+
+ private static final String REMOTE_A2_NAME = "A2";
+
+ private static final String REMOTE_A3_NAME = "A3";
+
+ private static final String HOSTED_B_NAME = "B";
+
+ private static final String B_VERSION = "1.0";
+
+ private static final String METADATA_PATH = "/org/foo/bar/maven-metadata.xml";
+
+ private static final String REPO_METADATA_TEMPLATE =
+ "\n" + "\n" + " org.foo\n"
+ + " bar\n" + " \n" + " %version%\n"
+ + " %version%\n" + " \n" + " %version%\n"
+ + " \n" + " 20150722164334\n" + " \n"
+ + "\n";
+ /* @formatter:on */
+
+ private static final String GROUP_METADATA_CONTENT =
+ "\n" + "\n" + " org.foo\n"
+ + " bar\n" + " \n" + " 1.0\n"
+ + " 1.0\n" + " \n" + " 1.0\n"
+ + " \n" + " 20150722164334\n" + " \n"
+ + "\n";
+ /* @formatter:on */
+
+ @Test
+ public void remoteWith408Response()
+ throws Exception
+ {
+ String message = "test metadata merge";
+
+ RemoteRepository remote = new RemoteRepository( REMOTE_A1_NAME, server.formatUrl( REMOTE_A1_NAME ) );
+ remote.setTimeoutSeconds( 600 );
+ RemoteRepository a = client.stores().create( remote, message, RemoteRepository.class );
+ server.expect( "GET", server.formatUrl( REMOTE_A1_NAME, METADATA_PATH ), 408, "Request Time-out" );
+
+ HostedRepository b =
+ client.stores().create( new HostedRepository( HOSTED_B_NAME ), message, HostedRepository.class );
+ deployContent( b, METADATA_PATH, REPO_METADATA_TEMPLATE, B_VERSION );
+
+ Group g = client.stores().create( new Group( GROUP_G1_NAME, a.getKey(), b.getKey() ), message, Group.class );
+
+ assertContent( g, METADATA_PATH, GROUP_METADATA_CONTENT );
+ }
+
+ @Test
+ public void remoteWithUpstreamTimeout()
+ throws Exception
+ {
+ String message = "test metadata merge";
+
+ RemoteRepository remote = new RemoteRepository( REMOTE_A2_NAME, server.formatUrl( REMOTE_A2_NAME ) );
+ remote.setTimeoutSeconds( 2 );
+
+ RemoteRepository a = client.stores().create( remote, message, RemoteRepository.class );
+ server.expect( "GET", server.formatUrl( REMOTE_A2_NAME, METADATA_PATH ), 200,
+ new DelayInputStream( 1000 * 5 ) );
+
+ HostedRepository b =
+ client.stores().create( new HostedRepository( HOSTED_B_NAME ), message, HostedRepository.class );
+ deployContent( b, METADATA_PATH, REPO_METADATA_TEMPLATE, B_VERSION );
+
+ Group g = client.stores().create( new Group( GROUP_G2_NAME, a.getKey(), b.getKey() ), message, Group.class );
+
+ assertContent( g, METADATA_PATH, GROUP_METADATA_CONTENT );
+ }
+
+ // @Test
+ // This is used to test the hanging remote so need time cost, also need to enlarge the indy client RequestTimeoutSeconds
+ public void remoteWithSlowResponse()
+ throws Exception
+ {
+ String message = "test metadata merge";
+
+ RemoteRepository remote = new RemoteRepository( REMOTE_A3_NAME, server.formatUrl( REMOTE_A3_NAME ) );
+ remote.setTimeoutSeconds( 600 );
+
+ RemoteRepository a = client.stores().create( remote, message, RemoteRepository.class );
+ server.expect( "GET", server.formatUrl( REMOTE_A3_NAME, METADATA_PATH ), 200,
+ new DelayInputStream( 1000 * 60 * 3 ) );
+
+ HostedRepository b =
+ client.stores().create( new HostedRepository( HOSTED_B_NAME ), message, HostedRepository.class );
+ deployContent( b, METADATA_PATH, REPO_METADATA_TEMPLATE, B_VERSION );
+
+ Group g = client.stores().create( new Group( GROUP_G3_NAME, a.getKey(), b.getKey() ), message, Group.class );
+
+ assertContent( g, METADATA_PATH, GROUP_METADATA_CONTENT );
+ }
+
+ public class DelayInputStream
+ extends InputStream
+ {
+ private final long transferTime;
+
+ public DelayInputStream( long transferTime )
+ {
+ this.transferTime = transferTime;
+ }
+
+ @Override
+ public int read()
+ {
+ try
+ {
+ Thread.sleep( transferTime );
+ }
+ catch ( final InterruptedException e )
+ {
+ }
+
+ return -1;
+ }
+ }
+}
diff --git a/addons/pkg-maven/jaxrs/pom.xml b/addons/pkg-maven/jaxrs/pom.xml
index e329faaed9..b3613082f0 100644
--- a/addons/pkg-maven/jaxrs/pom.xml
+++ b/addons/pkg-maven/jaxrs/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-maven/pom.xml b/addons/pkg-maven/pom.xml
index cb8283d030..0735b5ba35 100644
--- a/addons/pkg-maven/pom.xml
+++ b/addons/pkg-maven/pom.xml
@@ -20,7 +20,7 @@
indy-addons
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/common/pom.xml b/addons/pkg-npm/common/pom.xml
index 89d6f8f9cd..0e1a023896 100644
--- a/addons/pkg-npm/common/pom.xml
+++ b/addons/pkg-npm/common/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
index 24d90ea5fb..75e3f98e91 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
@@ -15,8 +15,6 @@
*/
package org.commonjava.indy.pkg.npm.content;
-import org.commonjava.o11yphant.metrics.api.Timer;
-import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
import org.commonjava.maven.galley.event.EventMetadata;
@@ -47,9 +45,6 @@ public class NPMPackageMaskingTransferDecorator
{
private final Logger logger = LoggerFactory.getLogger( this.getClass() );
- @Inject
- private DefaultMetricsManager metricsManager;
-
public NPMPackageMaskingTransferDecorator()
{
}
@@ -87,34 +82,28 @@ public InputStream decorateRead( final InputStream stream, final Transfer transf
StoreKey key = keyedLocation.getKey();
String contextURL = UrlUtils.buildUrl( baseURI, key.getType().name(), key.getName() );
logger.debug( "Use contextURL: {}", contextURL );
- return new PackageMaskingInputStream( stream, contextURL, metricsManager );
+ return new PackageMaskingInputStream( stream, contextURL );
}
private static class PackageMaskingInputStream
extends IdempotentCloseInputStream
{
- private static final String TIMER = "io.npm.metadata.in.filter";
-
final Logger logger = LoggerFactory.getLogger( this.getClass() );
int position;
private String contextURL;
- private DefaultMetricsManager metricsManager;
-
private byte[] bytes;
boolean masked;
private static final int SIZE = 1024;
- private PackageMaskingInputStream( final InputStream stream, final String contextURL,
- final DefaultMetricsManager metricsManager )
+ private PackageMaskingInputStream( final InputStream stream, final String contextURL )
{
super( stream );
this.contextURL = contextURL;
- this.metricsManager = metricsManager;
}
@Override
@@ -160,36 +149,25 @@ public synchronized int read( byte[] b, int off, int len ) throws IOException
private void mask( String contextURL ) throws IOException
{
- Timer.Context timer = metricsManager == null ? null : metricsManager.startTimer( TIMER );
- try
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ int read;
{
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- int read;
+ byte[] buffer = new byte[SIZE];
+ while ( ( read = super.read(buffer, 0, buffer.length) ) >= 0 )
{
- byte[] buffer = new byte[SIZE];
- while ( ( read = super.read(buffer, 0, buffer.length) ) >= 0 )
- {
- bos.write( buffer, 0, read );
- }
+ bos.write( buffer, 0, read );
}
- byte[] rawBytes = bos.toByteArray();
- String raw = new String( rawBytes, UTF_8 );
+ }
+ byte[] rawBytes = bos.toByteArray();
+ String raw = new String( rawBytes, UTF_8 );
- logger.trace( "Mask for raw:\n{}", raw );
+ logger.trace( "Mask for raw:\n{}", raw );
- String s = updatePackageJson( raw, contextURL );
+ String s = updatePackageJson( raw, contextURL );
- logger.trace( "Masked:\n{}", s );
- bytes = s.getBytes();
- masked = true;
- }
- finally
- {
- if ( timer != null )
- {
- metricsManager.stopTimer( TIMER );
- }
- }
+ logger.trace( "Masked:\n{}", s );
+ bytes = s.getBytes();
+ masked = true;
}
}
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
index f490a103a7..f8289bf14b 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
@@ -321,11 +321,19 @@ private boolean writePackageMetadata( List firstLevelFiles, Artif
}
// Generate tarball url if missing
+ String tarball = "http://indy/" + packagePath.getTarPath(); // here we use mock host. indy will amend it with the right hostname
if ( versionMetadata.getDist() == null )
{
- String tarball = "http://indy/" + packagePath.getTarPath(); // here we use mock host. indy will amend it with the right hostname
//logger.debug( "Generate dist tarball: {}", tarball );
- versionMetadata.setDist( new Dist( tarball ) );
+ versionMetadata.setDist( new Dist( tarball ) );
+ } else {
+ // Detect bad tarball and replace with correct one
+ if ( versionMetadata.getDist().getTarball() == null || !versionMetadata.getDist().getTarball().endsWith(packagePath.getTarPath()) )
+ {
+ Dist dist = versionMetadata.getDist();
+ dist.setTarball( tarball );
+ versionMetadata.setDist( dist );
+ }
}
}
catch ( IOException e )
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackagePath.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackagePath.java
index 7ad485b486..40f4f03fd4 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackagePath.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackagePath.java
@@ -24,7 +24,7 @@ public class PackagePath
private String tarPath;
- private Boolean isScoped;
+ private Boolean scoped;
private String packageName;
@@ -43,7 +43,7 @@ private void init()
String[] pathParts = tarPath.split( "/" );
if ( tarPath.startsWith( "@" ) )
{
- isScoped = Boolean.TRUE;
+ scoped = Boolean.TRUE;
scopedName = pathParts[0];
packageName = pathParts[1];
if ( pathParts.length == 4 && "-".equals( pathParts[2] ) )
@@ -58,7 +58,7 @@ else if ( pathParts.length == 3 )
}
else
{
- isScoped = Boolean.FALSE;
+ scoped = Boolean.FALSE;
packageName = pathParts[0];
if ( pathParts.length == 3 && "-".equals( pathParts[1] ) )
{
@@ -84,12 +84,12 @@ public void setTarPath( String tarPath )
public Boolean isScoped()
{
- return isScoped;
+ return scoped;
}
public void setScoped( Boolean scoped )
{
- isScoped = scoped;
+ this.scoped = scoped;
}
public String getPackageName()
@@ -150,7 +150,7 @@ else if ( path.startsWith( "@" ) && parts.length < 3 )
@Override
public String toString()
{
- return "PackagePath{" + "tarPath='" + tarPath + '\'' + ", isScoped=" + isScoped + ", packageName='"
+ return "PackagePath{" + "tarPath='" + tarPath + '\'' + ", scoped=" + scoped + ", packageName='"
+ packageName + '\'' + ", version='" + version + '\'' + ", scopedName='" + scopedName + '\''
+ '}';
}
diff --git a/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGeneratorTest.java b/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGeneratorTest.java
index bf11f8db4b..5a9cc6096c 100644
--- a/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGeneratorTest.java
+++ b/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGeneratorTest.java
@@ -15,6 +15,7 @@
*/
package org.commonjava.indy.pkg.npm.content;
+import org.apache.commons.io.IOUtils;
import org.commonjava.cdi.util.weft.PoolWeftExecutorService;
import org.commonjava.cdi.util.weft.WeftExecutorService;
import org.commonjava.indy.audit.ChangeSummary;
@@ -92,7 +93,7 @@ public void setup() throws Exception
final ExpiringMemoryNotFoundCache nfc = new ExpiringMemoryNotFoundCache( config );
WeftExecutorService rescanService =
- new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false,null, null );
+ new PoolWeftExecutorService( "test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
final LocationExpander locations = new IndyLocationExpander( stores );
final PackageMetadataMerger merger = new PackageMetadataMerger( );
@@ -101,7 +102,7 @@ public void setup() throws Exception
final DownloadManager
downloads = new DefaultDownloadManager( stores, core.getTransferManager(), locations, null, nfc, rescanService );
WeftExecutorService contentAccessService =
- new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null );
+ new PoolWeftExecutorService( "test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false);
DefaultDirectContentAccess contentAccess = new DefaultDirectContentAccess( downloads, contentAccessService );
final GroupMergeHelper helper = new GroupMergeHelper( downloads );
@@ -154,18 +155,18 @@ public void testSingleBinFieldWhenGenerateFromTarball() throws Exception
final KeyedLocation location = LocationUtils.toLocation( hostedRepository );
- storeFile( location, "jquery/-/jquery-9.0.5.tgz", "tarball/version-bin-1.tgz");
- storeFile( location, "jquery/-/jquery-9.0.6.tgz", "tarball/version-bin-2.tgz");
- storeFile( location, "jquery/9.0.5", "metadata/version-bin-1.json" );
- storeFile( location, "jquery/9.0.6", "metadata/version-bin-2.json" );
+ storeFile( location, "json/-/json-9.0.5.tgz", "tarball/version-bin-1.tgz");
+ storeFile( location, "json/-/json-9.0.6.tgz", "tarball/version-bin-2.tgz");
+ storeFile( location, "json/9.0.5", "metadata/version-bin-1.json" );
+ storeFile( location, "json/9.0.6", "metadata/version-bin-2.json" );
- final String jqueryMetadataPath = "jquery/package.json";
+ final String jsonMetadataPath = "json/package.json";
// Check the package metadata before generation.
- Transfer before = fileManager.retrieve( hostedRepository, jqueryMetadataPath );
+ Transfer before = fileManager.retrieve( hostedRepository, jsonMetadataPath );
assertNull(before);
- Transfer metadataFile = generator.generateFileContent( hostedRepository, jqueryMetadataPath, new EventMetadata( ) );
+ Transfer metadataFile = generator.generateFileContent( hostedRepository, jsonMetadataPath, new EventMetadata( ) );
assertNotNull(metadataFile);
final IndyObjectMapper mapper = new IndyObjectMapper( true );
@@ -175,14 +176,14 @@ public void testSingleBinFieldWhenGenerateFromTarball() throws Exception
assertNotNull( packageMetadata );
assertEquals( 2, packageMetadata.getVersions().size() );
- assertEquals( 1, packageMetadata.getVersions().get( "9.0.5" ).getBin().size() );
- assertEquals( 1, packageMetadata.getVersions().get( "9.0.6" ).getBin().size() );
- assertEquals("./lib/json.js", packageMetadata.getVersions().get("9.0.5").getBin().get( "json" ));
- assertEquals("./lib/json.js", packageMetadata.getVersions().get("9.0.6").getBin().get( "json" ));
+ assertNotNull( packageMetadata.getVersions().get( "9.0.5" ).getBin() );
+ assertNotNull( packageMetadata.getVersions().get( "9.0.6" ).getBin() );
+ assertEquals("./lib/json.js", packageMetadata.getVersions().get("9.0.5").getBin().toString() );
+ assertEquals("{json=./lib/json.js}", packageMetadata.getVersions().get("9.0.6").getBin().toString() );
}
// Check the package metadata after generation.
- Transfer after = fileManager.retrieve( hostedRepository, jqueryMetadataPath );
+ Transfer after = fileManager.retrieve( hostedRepository, jsonMetadataPath );
assertNotNull(after);
}
diff --git a/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/group/PackageMetadataMergerTest.java b/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/group/PackageMetadataMergerTest.java
index da8fd0d526..eadfae461b 100644
--- a/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/group/PackageMetadataMergerTest.java
+++ b/addons/pkg-npm/common/src/test/java/org/commonjava/indy/pkg/npm/content/group/PackageMetadataMergerTest.java
@@ -155,6 +155,9 @@ public void mergeTwoSimplePackageMetadataFiles() throws Exception
assertThat( keywords, notNullValue() );
assertThat( keywords.size(), equalTo( 4 ) );
assertThat( keywords.contains( "javascript" ), equalTo( true ) );
+
+ assertThat( merged.getVersions().get( "1.5.1" ).getBin().toString(), equalTo( "./lib/jquery.js" ) );
+ assertThat( merged.getVersions().get( "1.6.2" ).getBin().toString(), equalTo( "{jquery=./lib/jquery.js}" ) );
}
@Test
diff --git a/addons/pkg-npm/common/src/test/resources/metadata/package-1-decorated.json b/addons/pkg-npm/common/src/test/resources/metadata/package-1-decorated.json
index 5e5b645b08..cc823ce48f 100644
--- a/addons/pkg-npm/common/src/test/resources/metadata/package-1-decorated.json
+++ b/addons/pkg-npm/common/src/test/resources/metadata/package-1-decorated.json
@@ -29,6 +29,7 @@
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
+ "bin": "./lib/jquery.js",
"_id": "jquery@1.5.1",
"engines": {
"node": "*"
diff --git a/addons/pkg-npm/common/src/test/resources/metadata/package-1.json b/addons/pkg-npm/common/src/test/resources/metadata/package-1.json
index dee92c7ba4..074cb7df7f 100644
--- a/addons/pkg-npm/common/src/test/resources/metadata/package-1.json
+++ b/addons/pkg-npm/common/src/test/resources/metadata/package-1.json
@@ -29,6 +29,7 @@
"lib": "lib",
"main": "./dist/node-jquery.js",
"version": "1.5.1",
+ "bin": "./lib/jquery.js",
"_id": "jquery@1.5.1",
"engines": {
"node": "*"
diff --git a/addons/pkg-npm/common/src/test/resources/metadata/package-2.json b/addons/pkg-npm/common/src/test/resources/metadata/package-2.json
index 7c49d101ca..ff1a0099b8 100644
--- a/addons/pkg-npm/common/src/test/resources/metadata/package-2.json
+++ b/addons/pkg-npm/common/src/test/resources/metadata/package-2.json
@@ -35,6 +35,7 @@
"contributors": false,
"serverjs": false
},
+ "bin": { "jquery": "./lib/jquery.js" },
"_id": "jquery@1.6.2",
"devDependencies": {},
"engines": {
diff --git a/addons/pkg-npm/common/src/test/resources/metadata/version-bin-2.json b/addons/pkg-npm/common/src/test/resources/metadata/version-bin-2.json
index 9f7785c42c..7eb2ce0af9 100644
--- a/addons/pkg-npm/common/src/test/resources/metadata/version-bin-2.json
+++ b/addons/pkg-npm/common/src/test/resources/metadata/version-bin-2.json
@@ -9,7 +9,7 @@
"author": "Trent Mick (http://trentm.com)",
"main": "./lib/json.js",
"man": ["./man/man1/json.1"],
- "bin": "./lib/json.js",
+ "bin": { "json": "./lib/json.js" },
"scripts": {
"test": "make test"
},
diff --git a/addons/pkg-npm/common/src/test/resources/tarball/version-bin-2.tgz b/addons/pkg-npm/common/src/test/resources/tarball/version-bin-2.tgz
index f6d43d6f0f..c8274d1e51 100644
Binary files a/addons/pkg-npm/common/src/test/resources/tarball/version-bin-2.tgz and b/addons/pkg-npm/common/src/test/resources/tarball/version-bin-2.tgz differ
diff --git a/addons/pkg-npm/ftests/pom.xml b/addons/pkg-npm/ftests/pom.xml
index 8b94c402f5..8595949c1b 100644
--- a/addons/pkg-npm/ftests/pom.xml
+++ b/addons/pkg-npm/ftests/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupVersionContentMergeRetrieveTest.java b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupVersionContentMergeRetrieveTest.java
index 70f8e0ee06..a25ee8c85a 100644
--- a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupVersionContentMergeRetrieveTest.java
+++ b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupVersionContentMergeRetrieveTest.java
@@ -110,7 +110,7 @@ public void test()
// This public group version metadata in package metadata will follow npmjs remote
VersionMetadata publicVersion = mergedPublic.getVersions().get( "0.2.2" );
assertThat( publicVersion, notNullValue() );
- assertThat( publicVersion.getBin().get( "locktt" ), equalTo( "dist/index.js" ) );
+ assertThat( publicVersion.getBin().toString(), equalTo( "{locktt=dist/index.js}" ) );
assertThat( publicVersion.getMaintainers().size(), equalTo( 4 ) );
assertThat(
publicVersion.getDist().getTarball().contains( "lock-treatment-tool/-/lock-treatment-tool-0.2.2.tgz" ),
@@ -168,7 +168,7 @@ public void test()
mapper.readValue( IOUtils.toString( sharedGroupInput2 ), PackageMetadata.class );
VersionMetadata mergedVersion2 = mergedShared2.getVersions().get( "0.2.2" );
assertThat( mergedVersion2, notNullValue() );
- assertThat( mergedVersion2.getBin().get( "locktt" ), equalTo( "dist/index.js" ) );
+ assertThat( mergedVersion2.getBin().toString(), equalTo( "{locktt=dist/index.js}" ) );
assertThat( mergedVersion2.getMaintainers().size(), equalTo( 4 ) );
assertThat(
mergedVersion2.getDist().getTarball().contains( "lock-treatment-tool/-/lock-treatment-tool-0.2.2.tgz" ),
diff --git a/addons/pkg-npm/jaxrs/pom.xml b/addons/pkg-npm/jaxrs/pom.xml
index 76e9a821f5..21e2c03a90 100644
--- a/addons/pkg-npm/jaxrs/pom.xml
+++ b/addons/pkg-npm/jaxrs/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/jaxrs/src/main/java/org/commonjava/indy/pkg/npm/jaxrs/NPMContentAccessHandler.java b/addons/pkg-npm/jaxrs/src/main/java/org/commonjava/indy/pkg/npm/jaxrs/NPMContentAccessHandler.java
index 9b1c8d0ba3..e3ba92c549 100644
--- a/addons/pkg-npm/jaxrs/src/main/java/org/commonjava/indy/pkg/npm/jaxrs/NPMContentAccessHandler.java
+++ b/addons/pkg-npm/jaxrs/src/main/java/org/commonjava/indy/pkg/npm/jaxrs/NPMContentAccessHandler.java
@@ -15,6 +15,8 @@
*/
package org.commonjava.indy.pkg.npm.jaxrs;
+import com.fasterxml.jackson.core.StreamReadConstraints;
+import com.fasterxml.jackson.core.exc.StreamConstraintsException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.codec.binary.Base64;
@@ -120,6 +122,13 @@ public Response doCreate( String packageType, String type, String name, String p
// generate .http-metadata.json for hosted repo to resolve npm header requirements
generateHttpMetadataHeaders( metadataFile, generated, request, response );
}
+ catch ( final StreamConstraintsException e )
+ {
+ logger.error( String.format(
+ "Failed to upload due to violation of Jackson stream constraint: %s to: %s. Reason: %s", path, name,
+ e.getMessage() ), e );
+ response = responseHelper.formatResponse( e, builderModifier );
+ }
catch ( final IndyWorkflowException | IOException e )
{
logger.error( String.format( "Failed to upload: %s to: %s. Reason: %s", path, name, e.getMessage() ), e );
@@ -354,7 +363,7 @@ else if ( item.isDirectory() && StoreType.remote != st )
InputStream in = openInputStreamSafe( item, eventMetadata );
final Response.ResponseBuilder builder =
- Response.ok( new TransferStreamingOutput( in, metricsManager, metricsConfig ) );
+ Response.ok( new TransferStreamingOutput( in ) );
responseHelper.setInfoHeaders( builder, item, sk, path, false, getNPMContentType( path ),
contentController.getHttpMetadata( item ) );
@@ -460,6 +469,7 @@ private Object replaceOrigin( String baseUri, String proxyOrigin )
}
private List generateNPMContentsFromTransfer( final Transfer transfer, final EventMetadata eventMetadata )
+ throws StreamConstraintsException
{
if ( transfer == null || !transfer.exists() )
{
@@ -475,6 +485,10 @@ private List generateNPMContentsFromTransfer( final Transfer transfer,
try
{
ObjectMapper mapper = new ObjectMapper();
+ // Enlarge the max length for a single string value inside of the json
+ mapper.getFactory()
+ .setStreamReadConstraints(
+ StreamReadConstraints.builder().maxStringLength( Integer.MAX_VALUE ).build() );
JsonNode root = mapper.readTree( transfer.openInputStream( true ) );
String versionPath = null;
@@ -521,9 +535,18 @@ private List generateNPMContentsFromTransfer( final Transfer transfer,
tarballTarget = transfers.getCacheReference( new ConcreteResource( resource.getLocation(), tarballPath ) );
}
+ catch ( final StreamConstraintsException e )
+ {
+ // Refer to https://www.javadoc.io/static/com.fasterxml.jackson.core/jackson-core/2.15.2/com/fasterxml/jackson/core/exc/StreamConstraintsException.html
+ logger.error( String.format(
+ "[NPM] Json node parse failed due to violation of Jackson stream constraint: %s. Reason: %s",
+ resource, e.getMessage() ), e );
+ throw e;
+ }
catch ( final IOException e )
{
- logger.error( String.format( "[NPM] Json node parse failed for resource: %s. Reason: %s", resource, e.getMessage() ), e );
+ logger.error( String.format( "[NPM] Json node parse failed for resource: %s. Reason: %s", resource,
+ e.getMessage() ), e );
}
if ( versionTarget == null || tarballTarget == null )
diff --git a/addons/pkg-npm/model-java/pom.xml b/addons/pkg-npm/model-java/pom.xml
index b698abd7b8..305e6e45f3 100644
--- a/addons/pkg-npm/model-java/pom.xml
+++ b/addons/pkg-npm/model-java/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 3.3.5-SNAPSHOT
+ 3.5.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Directories.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Directories.java
index aad4adacbe..e8dc4241cf 100644
--- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Directories.java
+++ b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Directories.java
@@ -35,83 +35,83 @@ public class Directories
private static final String TEST = "test";
- private Map directoriesMap = new HashMap();
+ private Map directoriesMap = new HashMap();
protected Directories()
{
}
- public String getLib()
+ public Object getLib()
{
return directoriesMap.get( LIB );
}
- public void setLib( String lib )
+ public void setLib( Object lib )
{
directoriesMap.put( LIB, lib );
}
- public String getBin()
+ public Object getBin()
{
return directoriesMap.get( BIN );
}
- public void setBin( String bin )
+ public void setBin( Object bin )
{
directoriesMap.put( BIN, bin );
}
- public String getMan()
+ public Object getMan()
{
return directoriesMap.get( MAN );
}
- public void setMan( String man )
+ public void setMan( Object man )
{
directoriesMap.put( MAN, man );
}
- public String getDoc()
+ public Object getDoc()
{
return directoriesMap.get( DOC );
}
- public void setDoc( String doc )
+ public void setDoc( Object doc )
{
directoriesMap.put( DOC, doc );
}
- public String getExample()
+ public Object getExample()
{
return directoriesMap.get( EXAMPLE );
}
- public void setExample( String example )
+ public void setExample( Object example )
{
directoriesMap.put( EXAMPLE, example );
}
- public String getTest()
+ public Object getTest()
{
return directoriesMap.get( TEST );
}
- public void setTest( String test )
+ public void setTest( Object test )
{
directoriesMap.put( TEST, test );
}
- public Map fetchDirectoriesMap()
+ public Map fetchDirectoriesMap()
{
return directoriesMap;
}
- public String getDirectory( String name )
+ public Object getDirectory( String name )
{
return directoriesMap.get( name );
}
- public void putDirectory( String name, String value )
+ public void putDirectory( String name, Object value )
{
directoriesMap.put( name, value );
}
diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java
index cf0ae0c680..4d70edbfce 100644
--- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java
+++ b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/Dist.java
@@ -25,7 +25,7 @@ public class Dist
private final String shasum;
- private final String tarball;
+ private String tarball;
private final String integrity;
@@ -69,6 +69,11 @@ public String getTarball()
return tarball;
}
+ public void setTarball( String tarball )
+ {
+ this.tarball = tarball;
+ }
+
public String getIntegrity()
{
return integrity;
diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/VersionMetadata.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/VersionMetadata.java
index 44a3f82f2d..3112e4a0d5 100644
--- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/VersionMetadata.java
+++ b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/VersionMetadata.java
@@ -19,15 +19,12 @@
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import org.commonjava.indy.pkg.npm.model.converter.ObjectToBinConverter;
import org.commonjava.indy.pkg.npm.model.converter.ObjectToLicenseConverter;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
-import static org.commonjava.indy.pkg.npm.model.converter.ObjectToBinConverter.SINGLE_BIN;
-
@ApiModel( description = "Specify all the corresponding versions metadata for the package." )
public class VersionMetadata
implements Serializable, Comparable
@@ -78,8 +75,7 @@ public class VersionMetadata
private Map devDependencies;
- @JsonDeserialize( converter = ObjectToBinConverter.class )
- private Map bin;
+ private Object bin;
private Map jsdomVersions;
@@ -320,23 +316,12 @@ public void setDevDependencies( Map devDependencies )
this.devDependencies = devDependencies;
}
- public Map getBin()
+ public Object getBin()
{
- if ( null == bin )
- {
- return null;
- }
- String value = bin.get( SINGLE_BIN );
- if ( null != value )
- {
- bin.remove( SINGLE_BIN );
- // ref https://docs.npmjs.com/cli/v7/configuring-npm/package-json#bin
- bin.put( name, value );
- }
return bin;
}
- public void setBin( Map bin )
+ public void setBin( Object bin )
{
this.bin = bin;
}
diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/converter/ObjectToBinConverter.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/converter/ObjectToBinConverter.java
deleted file mode 100644
index 19274bdc9a..0000000000
--- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/converter/ObjectToBinConverter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (C) 2011-2023 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * 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.
- */
-package org.commonjava.indy.pkg.npm.model.converter;
-
-import com.fasterxml.jackson.databind.util.StdConverter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ObjectToBinConverter
- extends StdConverter